Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
1,19 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM THỊ VÂN PHẠM THỊ VÂN PHÁT TRIỂN TRIỂN PHẦN PHẦN MỀM MỀM DỰA DỰA TRÊN TRÊN PHÁT MICROSERVICES MICROSERVICES Ngành: Công nghệ Thông tin Chuyên ngành:Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS.TRƯƠNG ANH HOÀNG Hà Nội - 2015 LỜI CAM ĐOAN Tôi xin cam đoan kết đạt luận văn sản phẩm riêng cá nhân tôi, không chép lại người khác Trong toàn nội dung luận văn, điều trình bày cá nhân tôi tổng hợp từ nhiều nguồn tài liệu Tất nguồn tài liệu tham khảo có xuất xứ rõ ràng trích dẫn hợp pháp Tơi xin chịu tồn trách nhiệm chịu hình thức kỷ luật theo quy định cho lời cam đoan Hà Nội, tháng 10 năm 2015 Phạm Thị Vân LỜI CẢM ƠN Tôi xin chân thành cảm ơn hướng dẫn bảo tận tình PGS.TS Trương Anh Hồng – người kiên nhẫn hướng dẫn, quan tâm, động viên, thông cảm, tạo điều kiện thuận lợi cho nhiều trình thực luận văn Các định hướng hiểu biết khoa học thầy tiền đề để tơi hồn thành luận văn Đồng thời, xin gửi lời cảm ơn đến thầy cô giáo khoa Công nghệ thông tin trường Đại học Công nghệ – Đại học Quốc Gia Hà Nội giảng dạy truyền đạt kiến thức, kinh nghiệm quý báu cho suốt khóa học Tơi xin cảm ơn tác giả cơng trình nghiên cứu, tài liệu, báo tơi sử dụng, trích dẫn luận văn cung cấp nguồn tư liệu quý báu kiến thức liên quan để thực luận văn Đặc biệt, xin cảm ơn gia đình, bạn bè anh chị em đồng nghiệp – người động viên, hỗ trợ mặt tinh thần giúp đỡ, tạo điều kiện để tơi hồn thành luận văn kế hoạch Hà Nội, ngày 30 tháng 10 năm 2015 Phạm Thị Vân MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Từ viết đầy đủ Diễn giải HTML Hyper Text Markup Language Ngôn ngữ đánh dấu văn API Application Program Interface Giao diện lập trình ứng dụng JavaScript Object Notation Một cú pháp javascript dùng để lưu trữ trao đổi thông tin văn SOML Story Of My Life Tên ứng dụng cho phép người dùng chia sẻ câu chuyện sống hình ảnh XML eXtensible Markup Language Ngơn ngữ đánh dấu mở rộng SOAP Simple Object Access Protocol Giao thức trao đổi thông tin RoR Ruby on Rails Một framework để xây dựng ứng dụng ngôn ngữ Ruby IPC Inter-Process Communication Liên lạc liên tiến trình HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn URL Uniform Resource Locator Địa web hay liên kết mạng JSON, JSONb DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ MỞ ĐẦU Dịch vụ (service) đời ngày phát triển giúp nhà xây dựng phát triển phần mềm tạo hệ thống có khả thích ứng cao với nhiều mơi trường khác nhau, tăng khả tái sử dụng Các hệ thống phát triển nhanh chóng giảm phức tạp, hạ giá thành xây dựng triển khai Tuy nhiên việc khơng quan tâm đến kích thước dịch vụ hệ thống đặt tốn khó cho nhà xây dựng phát triển phần mềm giảm chi phí xây dựng hệ thống với dịch vụ, tránh ảnh hưởng đến hệ thống muốn thay đổi số chức hệ thống … Phạm vi dịch vụ lớn hệ thống trở lên phức tạp, khó phát triển, kiểm thử bảo trì Chính điều làm cho việc xây dựng phát triển hệ thống phần mềm dựa dịch vụ vượt khỏi khả kiểm soát kiểu kiến trúc phần mềm có cần phải có kiểu kiến trúc để giải vấn đề Kiến trúc microservices kiểu kiến trúc phần mềm phát triển Trong dịch vụ chia nhỏ để thực chức hệ thống Việc chia nhỏ dịch vụ kiến trúc microservices giúp cho hệ thống đơn giản hơn, dễ phát triển hơn, giảm chi phí xây dựng, tăng khả thích ứng cơng nghệ Kiến trúc microservices coi lời giải ưu việt cho toán xây dựng phát triển hệ thống dựa dịch vụ Nó nghiên cứu ứng dụng rộng rãi công ty lớn Netflix, Ebay, Amazon, Twitter, Paypal, Gilt, Soundcloud, …Đặc biệt sản phẩm phần mềm đóng gói dần thay phần mềm dịch vụ kiến trúc microservices đề tài ngày quan tâm Xuất phát từ ý nghĩa thực tiễn vậy, thực đề tài luận văn “Phát triển phần mềm dựa Microservices” để tìm hiểu áp dụng kiến trúc microservices việc xây dựng phát triển ứng dụng cụ thể - SOML (Story Of My Life) dạng mạng xã hội cho phép người dùng chia sẻ câu chuyện sống họ thông qua ảnh Dựa việc áp dụng kiến trúc microservices thực tế từ đưa phân tích, đánh giá rút ưu nhược điểm kiến trúc microservices Luận văn tổ chức sau: Chương 1: Giới thiệu kiến trúc microservices, tảng, định nghĩa, đặc điểm, lợi ích mẫu thiết kế kiến trúc microservices Chương 2: Trình bày bước xây dựng hệ thống dựa kiến trúc microservices xác định, triển khai kiểm thử microservice cho hệ thống Từ áp dụng vào thiết kế, xây dựng triển khai ứng dụng mạng xã hội SOML Chương 3: Đánh giá kiến trúc microservices, đưa ưu nhược điểm cách khắc phục nhược điểm kiến trúc microservices Chương Tổng quan kiến trúc microservices Mở đầu chương trình bày khái niệm tảng kiến trúc microservices: dịch vụ, kiến trúc monolithic định nghĩa kiến trúc microservices Phần trình bày mẫu thiết kế kiến trúc microservices Phần cuối chương trình bày lợi ích kiến trúc microservices thực trạng sử dụng kiến trúc microservices 1.1 Dịch vụ Dịch vụ phần mềm thành phần ứng dụng thực nhiều chức hệ thống mà không cần giao diện cho người dùng (1) Các ứng dụng chạy môi trường khác sử dụng dịch vụ để thực một vài chức hệ thống Dịch vụ phải có khả tái sử dụng, thích ứng với mơi trường khác tự động phát toàn hệ thống, đám mây, … Mỗi dịch vụ thực xử lý yêu cầu từ phía máy trạm gửi lại câu trả lời theo chuẩn quy ước, đồng thời dịch vụ kết nối đến để thực vài chức hệ thống để tổ hợp thành dịch vụ khác Một dịch vụ bao gồm ba thành phần giao diện (interface), ràng buộc (contract) cài đặt (implementation) (Hình 1.1) Hình 1.1 Các thành phần dịch vụ Giao diện định nghĩa phương thức để nhà cung cấp dịch vụ (service provider) thực yêu cầu người dùng dịch vụ (service consumer) Các ràng buộc quy định chuẩn cho phép nhà cung cấp dịch vụ người dùng dịch vụ giao tiếp với Thành phần cài đặt thực chức dịch vụ 10 1.2 Kiến trúc monolithic Trong phần mềm, kiến trúc monolithic kiểu kiến trúc cho phép xây dựng hệ thống thành khối nhất, bao gồm ba thành phần: giao diện người dùng, xử lý nghiệp vụ logic phần truy cập liệu (2) (Hình 1.2) Hình 1.2 Các thành phần kiến trúc Monolithic • Giao diện người dùng: thông qua thẻ HTML javascript để giao tiếp người dùng hệ thống • Nghiệp vụ logic: thực nghiệp vụ logic để thực yêu cầu HTTP đồng thời tổng hợp thông tin từ sở liệu dạng HTML javascript để trả giao diện người dùng • Dữ liệu truy cập: thực thao tác để chỉnh sửa, cập nhật sở liệu Một hệ thống xây dựng kiến trúc monolithic hệ thống hồn tồn khép kín, độc lập với hệ thống khác xây dựng tảng nhất, hệ thống xây dựng monolithic dễ xây dựng, dễ quản lý Cũng mà hệ thống xây dựng kiến trúc monolithic có nhược điểm lớn có thay đổi dù nhỏ trong ba thành phần hệ thống khiến đội ngũ phát triển phải tạo phiên cho hệ thống Ví dụ người dùng muốn thay đổi màu sắc nút ngồi giao diện người dùng hệ thống phải điều 40 microservice Docker cho phép đóng gói microservice cách nhúng file Dockerfile vào microservice Dockerfile file dạng văn chứa tất lệnh mà ta phải dùng để lắp ráp Docker image Docker (Hình 2.15) Hình 2.15.Đóng gói microservice SOML Mỗi microservice muốn đóng gói Docker phải có file Dockerfile Docker Engine đóng gói thành Container Sau Container đẩy (push) lên Docker Hub để lưu trữ dạng Docker image.Và Docker Hub quản lý, điều phối Container để giúp Container chạy 1.1.7 Cấu hình cho máy chủ Có hai phương pháp để cấu hình máy chủ cho hệ thống kiến trúc microservices nhiều microservice máy chủ microservice máy chủ 41 Hình 2.16.Nhiều microservice máy chủ Hình 2.16 thể phương pháp nhiều microservice máy chủ Đây phương pháp cho phép chạy nhiều microservice khác máy chủ Ưu điểm phương pháp đơn giản, dễ quản lý microservice hệ thống, tiết kiệm chi phí triển khai Tuy nhiên phương pháp có khó khăn việc theo dõi kiểm tra micoservice, microservice chạy máy chủ nên khó khăn để theo dõi, kiểm tra microservice Đồng thời phương pháp mang lại khơng rủi ro máy chủ gặp cố microservice chạy máy chủ ngừng hoạt động theo làm hệ thống bị ảnh hưởng, máy chủ bị hacker cơng hệ thống bị dừng hoạt động Phương pháp thứ hai triển khai microservice máy chủ (Hình 2.17) Hình 2.17.Mỗi microservice máy chủ 42 Phương pháp cho phép microservice triển khai máy chủ Nó khắc phục khó khăn phương pháp triển khai nhiều microservice máy chủ Nhưng đổi lại chi phí để triển khai theo mơ hình lớn Trong SOML, tơi chọn phương pháp triển khai nhiều microservice máy chủ để tiết kiệm chi phí triển khai Để tránh việc máy chủ có cố gây ảnh hưởng đến hệ thống, đặt chế độ lưu hệ thống liệu cho SOML hàng tuần Điều giúp cho hệ thống phục hồi lại cách nhanh máy chủ gặp cố 1.10 Kiểm thử microservices Các microservice kiến trúc microservices thực chức hệ thống, điều đảm bảo microservice hệ thống ổn định, có thay đổi kiểm thử kiến trúc microservices ta cần kiểm thử nhiều môi trường khác Sử dụng kiểm thử tự động giải pháp tối ưu cho hệ thống xây dựng kiến trúc microservices Kiểm thử tự động trình kiểm tra hệ thống với liệu đầu vào đầu xác định trước cách tự động Việc áp dụng kiểm thử tự động mang lại nhiều ưu điểm nâng cao hiệu quả, tăng độ tin cậy, cải thiện chất lượng sản phẩm, tốc độ kiểm thử nhanh đặc biệt giảm chi phí cho hệ thống khâu kiểm thử Kiến trúc microservices áp dụng mơ hình kiểm thử kim tự tháp Mike Cohn để kiểm thử tự động hệ thống xây dựng 1.1.8 Mơ hình kiểm thử kim tự tháp Mike Cohn Mơ hình kiểm thử kim tự tháp Mike Cohn đề xuất vào năm 2010 nhằm liệt kê mức kiểm thử cần để thực trình kiểm thử tự động hệ thống (Hình 2.18) 43 Hình 2.18.Mơ hình kiểm thử kim tự tháp Mike Cohn (14) Theo mơ hình kiểm thử kim tự tháp Mike Cohn có ba mức để kiểm thử tự động hệ thống, là: giao diện (UI), dịch vụ (service) đơn vị (unit) Theo Mike Cohn có hai chiến lược để kiểm thực kiểm thử mơ hình kiểm thử kim tự tháp từ xuống (Top-Down) từ lên (Bottom Up) Chiến lược kiểm thử từ xuống thực kiểm thử từ mức giao diện người dùng đến mức dịch vụ cuối kiểm thử đơn vị Áp dụng chiến lược giúp hệ thống nhanh chóng có phiên kiểm thử chức thẩm định tính dùng hệ thống sớm Tuy nhiên chiến lược kiểm thử từ xuống thích hợp cho hệ thống độc lập hệ thống có mối liên hệ với áp dụng kiểm thử từ xuống khó mơ tả dịch vụ mức thấp Chiến lược kiểm thử từ lên có trình tự thực mức kiểm thử ngược lại so với chiến lược kiểm thử từ xuống Trong chiến lược kiểm thử này, Mike Cohn đề xuất việc kiểm thử mức thấp kim tự tháp kiểm thử đơn vị sau di chuyển lên kiểm thử dịch vụ cuối giao diện người dùng Ưu điểm chiến lược tăng tính tin cậy cho kiểm thử tự động, khắc phục nhược điểm chiến lược kiểm thử từ xuống Trong SOML thực kiểm thử microservice SOML dựa chiến lược kiểm thử từ lên mơ hình kiểm thử kim tự tháp Mike Cohn Sau tơi thực hiển kiểm thử tích hợp microservice SOML Để kiểm thử microservice SOML, kiểm thử đơn vị cho hành vi microservice sau kiểm thử microservice mà chưa gắn giao diện người dùng vào micoservice Cuối tơi dùng kiểm thử đầu cuối (end to end) để kiểm thử microservice có giao diện người dùng Việc kiểm thử đầu cuối lặp lại thực kiểm thử tích hợp hệ thống 1.1.9 Kiểm thử đơn vị Kiểm thử đơn vị thực đồng thời với trình xây dựng microservice kiến trúc microservices Tại microservice, kiểm thử đơn vị kiểm thử hành vi microservice Vì việc viết mã kiểm thử cho kiểm thử đơn vị nhanh chóng dễ dàng Trong SOML mã kiểm thử đơn vị gắn trực tiếp vào misrocervice để kiểm thử hàm nhỏ Ví dụ để kiểm thử đơn vị 44 Stories services thực kiểm thử đơn vị hành vi microservice Các hành vi bao gồm: tạo story (create), sửa story (edit, update), xóa story (delete), hiển thị story (show) hiển thị danh sách story (list) (Hình 2.19) Hình 2.19.Kiểm thử đơn vị Stories service 1.1.10 Kiểm thử dịch vụ Kiểm thử dịch vụ thực kiểm thử dịch vụ mà không quan tâm đến giao diện người dùng dịch vụ Trong microservices ta thực kiểm thử dịch vụ cho microservice cách độc lập việc kiểm thử nhanh chóng xác định sửa lỗi microservice 45 Hình 2.20.Kiểm thử dịch vụ Stories service Theo hình 2.20, SOML tiến hành kiểm thử dịch vụ cho microservice cách độc lập Mỗi microservice kiểm thử mức dịch vụ mà không cần quan tâm đến giao diện người dùng microservice Tuy nhiên, microservice SOML cần phải kiểm thử lại với liệu thật tình tín hiệu mạng thấp thời gian dành cho kiểm thử dịch vụ bị tăng lên 1.1.11 Kiểm thử đầu cuối Kiểm thử đầu cuối kiểm thử mức giao diện mơ hình kiểm thử kim tự tháp Kiểm thử đầu cuối thực kiểm thử hoạt động tổng thể ứng dụng cách kiểm thử trình thực chức từ đầu đến cuối trình xử lý, từ giao diện đến giao tiếp với nguồn liệu Trong microservices việc áp dụng kiểm thử đầu cuối cho microservice tiến hành kiểm thử tất trình thực microservice từ API đến thao tác sở liệu chúng Như phạm vi microservice thấy kiểm thử đầu cuối kiểm thử hệ thống cho microservice (Hình 2.21) 46 Hình 2.21.Kiểm thử đầu cuối Stories service 1.1.12 Kiểm thử tích hợp Trong kiến trúc microservices ta sử dụng phương pháp kiểm thử đầu cuối để kiểm thử tích hợp microservice hệ thống (Hình 2.22) Hình 2.22.Kiểm thử tích hợp Sau kiểm thử cho microservice hệ thống tiến hành kiểm thử tích hợp cách kiểm thử đầu cuối cho toàn hệ thống Việc kiểm thử đầu cuối cho microservice đơn giản tích hợp chúng lại lại khó khăn, đặc biệt với hệ thống lớn có nhiều 47 microservice Để khắc phục điều SOML, tơi thực q trình tích hợp liên tục (continuous integration) để thực kiểm thử tích hợp Mỗi hồn thành microservice tơi thực triển khai tích hợp vào hệ thống thực kiểm thử tích hợp microserice với micorservice mà phụ thuộc hệ thống Ưu điểm phương pháp nhanh chóng phát lỗi lại cần phải có thêm đội ngũ nhân viên để thực việc mối quan hệ microservice hệ thống phải xác định rõ ràng từ đầu Ở chương 2, tơi trình bày bước thiết kế, xây dựng hệ thống kiến trúc microservices từ mơ hình hóa microservice, triển khai kiểm thử áp dụng vào thiết kế, xây dựng ứng dụng mạng xã hội SOML Chương tiếp theo, dựa kiến thức kiến trúc microservices kinh nghiệm xây dựng ứng dụng SOML kiến trúc microservice tơi đưa số phân tích, đánh giá ưu nhược điểm kiến trúc microservices khả áp dụng kiến trúc microservices xây dựng phát triển phần mềm 48 Chương Đánh giá microservices Từ kiến thức tơi tìm hiểu trình ứng dụng thực tế, chương tơi trình bày ưu, nhược điểm đánh giá nên dùng kiến trúc microservices 1.11 Ưu điểm microservices Từ chương chương ta thấy kiến trúc microservices kiểu kiến trúc lại có nhiều ưu điểm, xu hướng xây dựng phần mềm dịch vụ (SaaS – Software as a Service) ngày phát triển mạnh mẽ Việc áp dụng kiến trúc microservices khiến cho microservice kiến trúc microservices xác định phạm vi chức giúp ta dễ dàng quản lý, bảo trì nâng cấp cho microservice cần thiết Đặc biệt microservice lại hoàn toàn độc lập với nên nhà phát triển phần mềm tự lựa chọn cơng nghệ thích hợp cho microservice Điều giúp nâng cao hiệu suất hệ thống Các microservice xác định ranh rới rõ ràng, tập trung vào chức giúp nhà phát triển dễ dàng xây dựng, kiểm thử phát triển Chính chuyên biệt microservice khiến hoạt động ổn định, có thay đổi chức năng, có có khả loại bỏ hẳn chức Do xây dựng hệ thống dựa kiến trúc microservices ta hạn chế việc thay đổi chỉnh sửa hệ thống, có khơng ảnh hưởng đến hệ thống, giúp hệ thống hoạt động ổn định, tiết kiệm chi phí vận hành Các microservice có phạm vi nhỏ so với dịch vụ kiểu kiến trúc khác nên triển khai ta cần triển khai phạm vi nhỏ Trong trình triển khai có vấn đề xảy ta lập phục hồi lại cách nhanh chóng Các microservice kiến trúc microservices tồn độc lập với nên có số microservice ngừng hoạt động hệ thống hoạt động, hệ thống bị chức mà microservice thực Mỗi microservice kiến trúc microservices hoàn toàn độc lập lại kết nối với thơng qua API, điều đảm bảo tính kết nối lỏng lẻo cho microservice hệ thống Điều đảm bảo cho kiến trúc microservices nhà phát triển phần mềm muốn muốn nâng cấp, sửa đổi microservice họ cần chỉnh sửa, kiểm thử lại microservice 49 mà khơng gây ảnh hưởng đến hệ thống Các máy trạm kết nối đến microservice hệ thống phải thông qua cổng API Cổng API giúp hệ thống che giấu kiến trúc bên trong, tăng độ an toàn bảo mật cho hệ thống Đối với việc dùng dịch vụ thuê, mua từ bên thứ ba, hệ thống đảm bảo tính bảo mật dịch vụ phải thông qua cổng API để truy cập đến microservice khác hệ thống Các microservice đóng gói chuyển từ môi trường phát triển sang môi trường chạy thật khơng phải cấu hình thủ cơng lại Điều giúp nhà phát triển phần mềm triển khai hệ thống xây dựng kiến trúc microservices cách nhanh chóng, rủi ro, tỷ lệ thành công cao 1.12 Nhược điểm micoservices Nhược điểm microservices từ cổng API, tất yêu cầu từ phía máy trạm đến microservie phải qua cổng API cổng API trở thành nút thắt cổ chai hệ thống Để tránh vấn đề xây dựng hệ thống kiến trúc microservices nên thiết kế xây dựng cổng API có khả mở rộng áp dụng chế bất đồng để kết nối máy trạm tới cổng API, từ cổng API đến microservice ngược lại Hiện có nhiều tảng để xây dựng cổng API thỏa mãn tiêu chí vây Netty14, Vertx15, Spring Reactor16 Jboss Undertow17 Kiến trúc microservices nhấn mạnh kích thước nhỏ gọn microservice Một số nhà phát triển phần mềm đề xuất microservice siêu nhỏ cỡ 100 dòng code Việc chia microservice nhỏ dẫn đến hệ thống trở lên manh mún, khó kiểm sốt Việc lưu trữ liệu bên microservice nhỏ khiến liệu bị phân tán mức cần thiết Các microservice kiến trúc microservices triển khai phân tán khắp nơi mạng Internet kiến trúc microservices bị ảnh hưởng nhược điểm hệ phân tán: • Để kết nối microservice đến microservice khác chúng xa khiến hệ thống nhiều thời gian chúng gần nhau, điều khiến cho hiệu suất hệ thống bị giảm xuống Để khắc phục điều sử dụng chế kết nối không đồng để kết nối microservice hệ thống Tuy nhiên mặt trái 14http://netty.io/ 15http://mvnrepository.com/artifact/io.apiman/apiman-gateway-platforms-vertx/1.1.5.Final 16https://spring.io/ 17http://undertow.io/ 50 sử dụng chế bất đồng khó khăn việc cấp quyền để kết nối • Các kết nối microservice kiến trúc microservices thất bại lúc xảy cố kết nối chậm, lỗi thông điệp không gửi thơng điệp gửi đến nhiều đích đến vào thời điểm khác Điều khiến độ tin cậy hệ thống bị giảm xuống • Các microservice hệ thống phân tán khắp nơi mạng Internet đồng nghĩa với việc liệu hệ thống bị phân tán Theo nguyên tắc CAP (CAP theorem) giao dịch phân tán thỏa mãn điều kiện: o Tính quán (consistency): liệu điểm khác mạng phải giống o Tính sẵn sàng (availablity): yêu cầu gửi phải có phúc đáp o Khắc phục lỗi phần (partition tolerance): hệ thống hoạt động mạng bị lỗi Tuy nhiên công nghệ sở liệu phi quan hệ (NoSQL) hay môi giới thông điệp (message broker) tốt chưa vượt qua nguyên tắc CAP Kiểm thử tự động microservice kiến trúc microservices yêu cầu phải chạy microservice khác mà phụ thuộc Vì việc kiểm thử trở lên khó khăn việc phát lỗi Để khắc phục điều này, xác định microservice cho hệ thống nên khoanh vùng chức phụ thuộc vào microservice, đảm bảo tính kết nối lỏng lẻo cho microservice hệ thống Hệ thống có hai microservice có kết nối API chúng, ba microservice có ba kết nối, có bốn microservice phải có sáu kết nối Như với hệ thống có n microservice có n! /((n-2)! * 2!) kết nối API Điều khiến cho hệ thống có nhiều microservice khơng thể theo dõi kết nối microservice hệ thống Hệ thống bị chậm tắc nghẽn kết nối mà ta khơng thể tìm kết nối gây tắc nghẽn Để tránh tình trạng này, xây dựng hệ thống kiến trúc microservices cần phải có quy tắc phân luồng, quản lý, đo đếm, theo dõi microservice hệ thống 1.13 Đánh giá 51 Như thấy kiến trúc microservices có nhiều ưu điểm để thỏa mãn yêu cầu việc xây dựng phát triển phần mềm dịch vụ Ưu điểm lớn kiến trúc microservices độc lập microservice hệ thống giúp cho microservice dễ dàng áp dụng công nghệ phù hợp cho giúp hệ thống dễ quản lý, bảo trì phát triển Bên cạnh ưu điểm bật kiến trúc microservices mang lại khơng thách thức cho nhà phát triển phần mềm Việc áp dụng kiến trúc microservices bắt buộc nhà phát triển phải có kiến thức thiết kế hướng miền (DDD – Domain-Driven Design) để phân vùng xác chức có ràng buộc với miền từ xác định biên microservice cho hệ thống Việc xác định sai biên cho microservice kéo theo nhiều hạn chế cho kiến trúc mivroservices mà tơi trình bày phần 3.2 Tuy nhiên áp dụng kiến trúc microservices cách đắn từ khâu xác định microservice đến việc phân luồng, quản lý, đo đếm, theo dõi microservice kiến trúc microservices đáp án tối ưu cho việc xây dựng phần mềm hướng dịch vụ Đặc biệt, việc áp dụng kiến trúc microservices hiệu quả, phù hợp cho ứng dụng phức tạp, đòi hỏi phải phát triển liên tục 52 KẾT LUẬN Luận văn tìm hiểu kiến trúc microservices việc xây dựng ứng dụng, hệ thống phần mềm, bước để xây dựng, triển khai ứng dụng, hệ thống dựa kiến trúc microservices Việc áp dụng kiến trúc microservices để xây dựng ứng dụng mạng xã hội SOML cho thấy nhiều ưu điểm hệ thống hệ thống xây dựng microservices trở lên đơn giản, dễ quản lý Việc chỉnh sửa, thay đổi cập nhật công nghệ cho microservice hệ thống trở lên dễ dàng so với kiểu kiến trúc phần mềm đại khác Bên cạnh việc áp dụng kiến trúc microservices mang lại khơng khó khăn việc hợp liệu phân tán, giải tắc nghẽn kết nối micorservice hệ thống Hầu hết nhược điểm áp dụng kiến trúc microservices xuất phát từ việc nhà phát triển xác định sai microservice hệ thống, nhà phát triển phần mềm muốn áp dụng kiến trúc microservices cần có kiến thức thiết kế hướng miền (Domain-Driven Design) cần phải có quy tắc phân luồng, quản lý, đo đếm, theo dõi microservice rõ ràng Thực điều giúp cho áp dụng kiến trúc microservices cách đắn mang lại hiệu cao xây dựng phát triển hệ thống microservices Kiến trúc microservices xuất vài năm gần nhiều công ty lớn đưa vào nghiên cứu áp dụng, điều chứng tỏ lợi ích mà kiến trúc microservices mang lại to lớn Đặc biệt ngày nay, mà sản phẩm phần mềm dịch vụ ngày phổ biến thay sản phẩm phần mềm đóng gói việc áp dụng kiến trúc microservices xây dựng phát triển phần mềm yêu cầu cần thiết Tuy nhiên kiến trúc microservices có phải kiểu kiến trúc cho tương lai hay khơng vấn đề gây nhiều tranh cãi cho nhà phát triển phần mềm, vấn đề bảo mật sở liệu micrservices vấn đề khó khăn áp dụng kiến trúc microservices Hướng phát triển luận văn nghiên cứu thử nghiệm phương pháp để bảo mật phương pháp để quản lý liệu phân tán kiến trúc microservices 53 TÀI LIỆU THAM KHẢO Tiếng Anh Eric Newcomer, Greg Lomow Understanding SOA with Web Services 2004 ICCI Monolithic Applications Retrieved 2007 Martin Fowler Microservices 2014 Stefan BorsjeJuly How we build microservices at Karma 2014 Toby Clemson Testing Strategies in a Microservice Architecture 2014 Sam Newman Building Microservice 2015 Nikola Stjelja Microservices architecture models - How to document and think about microservices based architecture models 2015 Joachim Rohde Amazon Architecture 2007 Sudhir Tonse & Nitesh Kant MicroServices at NETFLIX 2014 10 Eric Evans Domain-Driven Design 2003 11 Sam Ruby Agile Web Development with Rails 2013 12 Peter Shaw Postgres Succinctly 2013 13 Clément Nedelcu Nginx HTTP Server - Second Edition 2013 14 Mike Cohn Succeeding with Agile 2010 15 James Turnbull The Docker Book 2014 Website http://microservices.io/ http://www.statista.com/statistics/272014/global-social-networks-ranked-bynumber-of-users/ https://www.docker.com/what-docker https://aws.amazon.com/ https://www.rabbitmq.com/ http://kafka.apache.org/ http://activemq.apache.org/ https://getkong.org/about/ https://cloud.google.com/appengine/docs/java/endpoints/ 10 http://aws.amazon.com/api-gateway/ 11 https://coreos.com/ 54 ... biệt sản phẩm phần mềm đóng gói dần thay phần mềm dịch vụ kiến trúc microservices đề tài ngày quan tâm Xuất phát từ ý nghĩa thực tiễn vậy, thực đề tài luận văn Phát triển phần mềm dựa Microservices ... thành phần, tương tác, thử lỗi đầu cuối để nhà phát triển phần mềm khắc phục khó khăn q trình xây dựng phần mềm dựa kiến trúc microservices Kiến trúc microservices kiểu kiến trúc phần mềm dành... dựng phát triển phần mềm mà tránh rủi ro gây Việc áp dụng microservices giảm chi phí, tăng độ thích nghi đơn giản hóa hệ thống cho nhà phát triển phần mềm 1.6 Thực trạng ứng dụng kiến trúc microservices