1. Trang chủ
  2. » Luận Văn - Báo Cáo

(LUẬN văn THẠC sĩ) phát triển phần mềm dựa trên microservices

55 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM THỊ VÂN PHÁT TRIỂN PHẦN MỀM DỰA TRÊN MICROSERVICES LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM THỊ VÂN PHÁT TRIỂN PHẦN MỀM DỰA TRÊN 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 NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS.TRƢƠNG ANH HOÀNG Hà Nội - 2015 TIEU LUAN MOI download : skknchat@gmail.com 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 TIEU LUAN MOI download : skknchat@gmail.com 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 ln 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 tơi nhiều q 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 q báu cho tơi 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, tơi 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 TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices MỤC LỤC MỞ ĐẦU Chƣơng Tổng quan kiến trúc microservices 11 1.1 Dịch vụ 11 1.2 Kiến trúc monolithic 12 1.3 Kiến trúc microservices 13 1.4 Mẫu thiết kế microservices 16 1.5 Lợi ích microservices 20 1.6 Thực trạng ứng dụng kiến trúc microservices 21 Chƣơng Xây dựng ứng dụng SOML microservices .24 2.1 Giới thiệu SOML 24 2.1.1 SOML 24 2.1.2 Các chức SOML 24 2.2 Mơ hình hoá micoservice SOML 29 2.2.1 Xác định microservice cho SOML .29 2.2.2 Mô hình tổng quan SOML 31 2.2.3 Kiến trúc hệ thống SOML 34 2.2.4 Cơ chế kết nối SOML .38 2.2.5 Xây dựng cổng API 41 2.3 Triển khai 41 2.3.1 Đóng gói microservice 41 2.3.2 Cấu hình cho máy chủ 42 2.4 Kiểm thử microservices 44 2.4.1 Mô hình kiểm thử kim tự tháp Mike Cohn 44 2.4.2 Kiểm thử đơn vị 45 2.4.3 Kiểm thử dịch vụ 46 2.4.4 Kiểm thử đầu cuối 47 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 2.4.5 Kiểm thử tích hợp .48 Chƣơng Đánh giá microservices 50 3.1 Ưu điểm microservices 50 3.2 Nhược điểm micoservices 51 3.3 Đánh giá 52 KẾT LUẬN 54 TÀI LIỆU THAM KHẢO 55 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 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 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1.1 Các thành phần dịch vụ 11 Hình 1.2 Các thành phần kiến trúc Monolithic 12 Hình 1.3.Ví dụ kiến trúc microservices 14 Hình 1.4 Mơ hình kiến trúc microservices (7) 15 Hình 1.5 Cổng API ứng dụng quản lý sản phẩm 17 Hình 1.6 Cơ chếphát phía máy trạm (client-side discovery) 18 Hình 1.7 Cơ chế phát dịch vụ phía máychủ (server-side discovery) 19 Hình 1.8 Cơ chế tự đăng ký dịch vụ(self-registration) 20 Hình 1.9 Cơ chế đăng ký dịch vụ qua bên thứ ba (third-party registration) 20 Hình 2.1 Mơ hình hoạt động SOML 25 Hình 2.2 Sơ đồ ca sử dụng tổng thể củaSOML 26 Hình 2.3 Sơ đồ ca sử dụng quản lý người dùng 27 Hình 2.4 Sơ đồ ca sử dụng quản lý Story 27 Hình 2.5 Sơ đồ ca sử dụng quản lý Photo 28 Hình 2.6 Sơ đồ ca sử dụng quản lý Comment 29 Hình 2.7 Phân vùng hành vi SOML 30 Hình 2.8 Mơ hình tổng quan SOML 31 Hình 2.9 Các thành phần Docker 33 Hình 2.10 Kiến trúc hệ thống SOML 35 Hình 2.11 Tạo tài khoản người dùng 39 Hình 2.12 Tạo tài khoản người dùng 39 Hình 2.13 Tạo Story SOML 40 Hình 2.14 Tạo Photo SOML 40 Hình 2.15 Đóng gói microservice SOML 42 Hình 2.16 Nhiều microservice máy chủ 43 Hình 2.17 Mỗi microservice máy chủ 43 Hình 2.18 Mơ hình kiểm thử kim tự tháp Mike Cohn (14) 44 Hình 2.19 Kiểm thử đơn vị Stories service 46 Hình 2.20 Kiểm thử dịch vụ Stories service 47 Hình 2.21 Kiểm thử đầu cuối Stories service 48 Hình 2.22 Kiểm thử tích hợp 48 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 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ệ (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 10 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 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 41 service thực tạo Photo vào PhotosDB gửi HTTP response có mã mã trạng thái 201 đến máy trạm để thông báo việc tạo Photo thành công 2.2.5 Xây dựng cổng API Cổng API thành phần quan trọng hệ thống xây dựng kiến trúc microservices Tất yêu cầu máy trạm đến microservice hệ thống phải qua cổng API mà lại khơng thể tính xác ngày có lượt yêu cầu qua cổng API nên xây dựng cổng API điều quan trọng hiệu tính mở rộng cổng API Hiện có nhiều cơng nghệ khác để thực việc mở rộng cổng API bật xây dựng cổng API dựa tảng hỗ trợ xử lý bất đồng chế non-blocking I/O (Input/Output) Một cổng API không kết nối máy trạm đến microservice mà cổng API định tuyến yêu cầu gửi từ máy trạm đến microservice để thực xử lý yêu cầu Sau cổng API lại tổng hợp kết từ microservice lại để phản hồi cho máy trạm Vì thi thiết kế xây dựng cổng API ta nên xây dựng cổng API có khả thực yêu cầu đồng thời lúc để giảm thời gian phản hồi tăng hiệu hệ thống Các microservice kiến trúc microservices nằm phân tán khắp nơi mạng Internet nên kết nối đến microservice xảy số lỗi kết nối Cổng API phải không bị chặn yêu cầu kết nối đến microservice bị kết nối có phản hồi chậm Để làm điều cổng API nên có nhớ đệm tạm thời để lưu trữ thơng tin thay đổi cho trường hợp microservice kết nối có phản hồi chậm có thông báo lỗi cho máy trạm biết microservice kết nối bị kết nối Có nhiều cổng API phổ biến Kong10 – kiểu cổng API mã nguồn mở, Cloud Endpoints11 Google API Gateway12 Amazon, …Trong SOML, sử dụng API Gateway Amazon để làm cổng API 2.3 Triển khai 2.3.1 Đóng gói microservice Trong kiến trúc microservices để đảm bảo tính độc lập cho microservice đóng gói microservice ta nên đóng gói micservice khối (Container) Hiện nay, có nhiều cơng nghệ khác để đóng gói dịch 10 https://getkong.org/about/ https://cloud.google.com/appengine/docs/java/endpoints/ 12 http://aws.amazon.com/api-gateway/ 11 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 42 vụ Docker, CoreOS13, … SOML tơi sử dụng Docker để đóng gói 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 2.3.2 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ủ 13 https://coreos.com/ (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 43 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ủ (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 44 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, 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ơi đặ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ố 2.4 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 ln ổ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 2.4.1 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) Hình 2.18.Mơ hình kiểm thử kim tự tháp Mike Cohn (14) (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 45 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 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 tơi thực kiểm thử tích hợp hệ thống 2.4.2 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ị Stories services thực kiểm thử đơn vị hành vi (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 46 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 2.4.3 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 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 47 Hình 2.20.Kiểm thử dịch vụ Stories service Theo hình 2.20, SOML tơi 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 2.4.4 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) (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 48 Hình 2.21.Kiểm thử đầu cuối Stories service 2.4.5 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 tồn hệ thống Việc kiểm thử đầu cuối cho microservice đơn giản tích hợp (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 49 chúng lại lại khó khăn, đặc biệt với hệ thống lớn có nhiều 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 đư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 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 50 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 3.1 Ƣu điểm microservices Từ chương chương ta thấy kiến trúc microservices cịn 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 q 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 mà khơng gây ảnh hưởng đến hệ thống (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 51 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 3.2 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 sử dụng chế bất đồng khó khăn việc cấp quyền để kết 14 http://netty.io/ http://mvnrepository.com/artifact/io.apiman/apiman-gateway-platforms-vertx/1.1.5.Final 16 https://spring.io/ 17 http://undertow.io/ 15 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 52 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 khơng thể 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 3.3 Đánh giá Như thấy kiến trúc microservices có nhiều ưu điểm để thỏa (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 53 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 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices 54 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 (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices TIEU LUAN MOI download : skknchat@gmail.com (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices (LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices(LUAN.van.THAC.si).phat.trien.phan.mem.dua.tren.microservices

Ngày đăng: 17/12/2023, 01:58