Vấn đề của một số các doanh nghiệp còn đang tồn tại rất rõ ràng, các hệ thống cũ của họ xây dựng theo theo kiến trúc một khối truyền thống, tất cả các tính năng đều được đóng gói trong m
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI - 2018
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS Nguyễn Thị Thu Trang
HÀ NỘI - 2018
Trang 3LỜI CẢM ƠN
Để có thể hoàn thành luận văn tốt nghiệp này, em xin chân thành cảm ơn cô hướng dẫn luận văn tốt nghiệp, Tiến sĩ Nguyễn Thị Thu Trang, Bộ môn Công nghệ phần mềm, Trường Đại học Bách Khoa Hà Nội Cô đã nhiệt tình hướng dẫn, truyền đạt những kiến thức cần thiết và định hướng cho em trong quá trình thực hiện đề tài
Em cũng chân thành cảm ơn thầy, cô Viện Công nghệ Thông tin và Truyền thông
- Trường Đại học Bách Khoa Hà Nội đã truyền đạt kiến thức, định hướng trong quá trình học tại trường
Em xin chân thành cảm ơn thầy Nguyễn Thanh Hùng - Trưởng Bộ môn Công nghệ phần mềm đã cho phép, tạo điều kiện thuận lợi để em được làm luận văn tại phòng Labs của công ty Vbee Đồng thời em cũng xin gởi lời cảm ơn chân thành đến các bạn làm việc tại phòng Labs của công ty Vbee đã giúp đỡ rất nhiều về mặt
kỹ thuật trong suốt thời gian làm luận văn
Dù đã cố gắng nhưng luận văn chắc chắn không tránh khỏi nhiều thiếu sót, em rất mong nhận được ý kiến đóng góp của các thầy cô
Em xin chân thành cảm ơn!
Trang 4LỜI CAM ĐOAN
Tôi - Nguyễn Mạnh Cường - cam kết luận văn là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Nguyễn Thị Thu Trang
Các kết quả nêu trong luận văn là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác
Hà Nội, ngày 20 tháng 10 năm 2018
Học viên
Nguyễn Mạnh Cường
Trang 5LỜI CAM ĐOAN ii
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ v
DANH MỤC HÌNH vii
DANH MỤC BẢNG ix
MỞ ĐẦU 1
Nội dung của luận văn 3
CHƯƠNG 1: Khảo sát và phân tích yêu cầu hệ thống sách nói 4
1.1Khảo sát hiện trạng 4
1.2 Tổng quan các dịch vụ của hệ thống 6
1.2.1 Dịch vụ quản lý xác thực người dùng SSO 9
1.2.2 Dịch vụ quản lý sách 10
1.2.3 Dịch vụ quản lý phân quyền người dùng 11
1.3 Đặc tả các chức năng 12
1.3.1 Đặc tả use case “Đăng nhập” 13
1.3.2 Đặc tả use case “Quản lý sách” 14
1.3.3 Đặc tả use case “Quản lý phân quyền” 19
1.4 Kết chương 23
CHƯƠNG 2: Thiết kế kiến trúc MSA và các công nghệ sử dụng 24
2.1 Kiến trúc Microservices 24
2.2 Xác thực SSO 32
2.3 Công nghệ NodeJS 32
2.4 Công nghệ Java 33
2.5 Công nghệ ReactJS 36
2.6 Cơ sở dữ liệu MongoDB 37
2.7 Kết chương 40
CHƯƠNG 3: Các giải pháp msa nổi bật và phát triển ứng dụng sách nói 41
3.1Giải pháp MSA của hệ thống sách nói 41
3.1.1 Thiết kế kiến trúc tổng quan 42
3.1.2 Thiết kế dịch vụ quản lý sách nói 44
Trang 63.1.3 Thiết kế dịch vụ quản lý phân quyền 45
3.1.4 Dịch vụ xác thực người dùng SSO 47
3.1.5 Cổng trung gian 48
3.1.6 TTS Engine 50
3.2Giải pháp phân quyền động 50
3.3 Phát triển ứng dụng 52
3.3.1 Thiết kế cơ sở dữ liệu 52
3.3.2 Xây dựng phần mềm 55
3.3.2.1 Cấu trúc chương trình dịch vụ quản lý sách 55
3.3.2.2 Cấu trúc chương trình dịch vụ phân quyền 56
3.3.2.3 Cấu trúc chương trình xác thực người dùng SSO 58
3.3.2.4 Các API sử dụng cho các dịch vụ 58
3.3.3 Giao diện web 60
3.3.4 Triển khai 64
3.4 Kết chương 64
KẾT LUẬN 66
DANH MỤC CÁC TÀI LIỆU THAM KHẢO 68
Trang 7DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ
Từ viết tắt, thuật ngữ Từ viết đầy đủ
MSA MicroServices Architecture
API Application Programming Interface REST Representational State Transfer
SOA Services Orient Achitecture
CRM Customer Relationship Management ERP Enterprise Resource Planning
CAP Consistency, Availability, Partition tolerance
ESB Enterprise Service Bus
CDN Content delivery network SOAP Simple Object Access Protocol
CORBA Common Object Request Broker Architecture
JMS Java Message Service JSON JavaScript Object Notation JVM Java Virtual Machine JMI Java remote method invocation IoC Inverstion Of Control
Trang 8CRUD Create, Read, Update, Delete
Java EE Java Enterprise Edition
URI Uniform Resource Identifier ReactJS JavaScript library build User interfaces
ECMAScript European Computer Manufacturers Association
Script
Trang 9DANH MỤC HÌNH
Hình 1.1 Tổng quan chức năng 6
Hình 1.2 Biểu đồ Use case tổng quan 7
Hình 1.3 Biểu đồ cho use case đăng nhập hệ thống 9
Hình 1.4 Biểu đồ cho use case dịch vụ quản lý sách 10
Hình 1.5 Biểu đồ cho use case dịch vụ quản lý phân quyền 12
Hình 2.1 Ứng dụng gồm nhiều dịch vụ 24
Hình 2.2 Kiến trúc Microservices 26
Hình 2.3 Sử dụng REST API cho microservices 27
Hình 2.4 Tất cả microservices được xuất qua API Gateway 28
Hình 2.5 Bộ chứa đảo ngược quyền điều khiển và ứng dụng 35
Hình 2.6 Các thành phần trong ứng dụng ReactJS 36
Hình 2.7 Cơ chế hoạt động Sharding 39
Hình 3.1 Kiến trúc tổng quan của hệ thống sách 43
Hình 3.2 Thiết kế dịch vụ quản lý sách 45
Hình 3.3 Thiết kế dịch vụ quản lý phân quyền 46
Hình 3.4 Thiết kế dịch vụ xác thực người dùng SSO 47
Hình 3.5 Tương tác xác thực người dùng 48
Hình 3.6 Thiết kế cổng trung gian 49
Hình 3.7 Thuật toán phân quyền động 52
Hình 3.8 Cơ sở dữ liệu dịch vụ quản lý sách và dịch vụ quản lý phân quyền 54
Hình 3.9 Cơ sở dữ liệu SSO 54
Hình 3.10 Cấu trúc dịch vụ sách 56
Hình 3.11 Cấu trúc giao diện quản lý sách 56
Hình 3.12 Cấu trúc dịch vụ quản lý phân quyền 57
Hình 3.13 Cấu trúc giao diện quản lý phân quyền 57
Hình 3.14 Cấu trúc xác thực SSO 58
Hình 3.15 Giao diện đăng nhập hệ thống 61
Hình 3.16 Trang dịch vụ sách 61
Trang 10Hình 3.17 Trang quản lý thể loại sách 61
Hình 3.18 Trang quản lý sách 62
Hình 3.19 Trang quản lý tác giả 62
Hình 3.20 Trang quản lý người dùng 63
Hình 3.21 Trang quản lý trang 63
Hình 3.22 Trang quản lý vai trò 63
Hình 3.23 Trang quản lý tính năng 64
Trang 11DANH MỤC BẢNG
Bảng 1.1 Danh sách các use case của hệ thống 12
Bảng 1.2 Đặc tả use case “Đăng nhập” 13
Bảng 1.3 Đặc tả use case “Quản lý sách” 14
Bảng 3.1 API dịch vụ quản lý phân quyền 58
Bảng 3.2 API dịch vụ quản lý sách 59
Bảng 3.3 API dịch vụ đăng nhập xác thực tài khoản 60
Bảng 3.4 Các tên miền của ứng dụng 64
Trang 12MỞ ĐẦU
- Lý do chọn đề tài:
Trong những năm gần đây, cuộc sống xã hội (công nghiệp, nông nghiệp, văn hóa, tri thức ) tăng nhanh về mọi mặt dẫn đến nhu cầu sử dụng phần mềm như là nền tảng vận hành hệ thống của các công ty, doanh nghiệp tăng cao Các kiến trúc phần mềm được các nhà sản xuất phần mềm cải tiến liên tục để đáp ứng để việc bảo trì, phù hợp với mục đích dễ mở rộng kinh doanh cho của các doanh nghiệp
Vấn đề của một số các doanh nghiệp còn đang tồn tại rất rõ ràng, các hệ thống cũ của họ xây dựng theo theo kiến trúc một khối truyền thống, tất cả các tính năng đều được đóng gói trong mô hình Monolithic Architecture nguyên khối, để mã nguồn của ứng dụng hoạt động thì tất cả các thành phần của ứng dụng phải có tại thời điểm hoạt động, với ứng dụng 3 tầng giao diện người dùng, cơ sở dữ liệu và ứng dụng phía máy chủ, lúc này ứng dụng chia thành 3 lớp, lớp trình bày, lớp dịch vụ và lớp
dữ liệu Bất cứ một thay đổi nhỏ về mã nguồn cũng yêu cầu toàn bộ ứng dụng được xây dựng và triển khai lại
Một mô hình kiến trúc khác hướng dịch vụ SOA có các dịch vụ độc lập, các dịch
vụ không phụ thuộc vào hệ thống và mạng cụ thể và có các dịch vụ có khả năng tương tác với nhau để đáp ứng với sự thay đổi về yêu cầu giao dịch, nhưng nhược điểm khi xây dựng ứng dụng tổng hợp từ nhiều dịch vụ với tính tái sử dụng cao về bảo mật, phân quyền, xác thực thì phần mềm trở nên rất phức tạp, việc sửa lỗi, mở rộng rất khó khăn, đòi hỏi giải quyết bằng phương pháp tiếp cận mới Chính vì vậy việc nghiên cứu một hướng tiếp cận xây dựng phần mềm mới theo kiến trúc Microservices giúp giải quyết khó khăn tồn tại trong kiến trúc Monolithic
Sách điện tử rõ ràng đã đem đến rất nhiều ưu điểm so với hình thức đọc sách truyền thống, tuy nhiên để đọc sách điện tử, người đọc cần tiếp xúc nhiều với các màn hình của các thiết bị điện tử máy tính, máy tính bảng, điện thoại gây mỏi mắt dẫn đến các triệu chứng và các bệnh về mắt, việc đọc sách bị cản trở khi cách tiếp cận với nó bị giới hạn
Trang 13Với tình hình thực tế như trên, chúng ta hoàn toàn có thể chuyển các bộ sách, bộ truyện từ dạng giấy hay sách điện tử sang dạng âm thanh Việc đọc sách vì thế có một cách tiếp cận mới với nhiều ưu điểm hơn, giúp chúng ta vừa có thể nắm bắt được nội dung của sách mà lại không lo ngại đến các vấn đề về mắt Hệ thống sách nói xây dựng có nội dung dưới dạng âm thanh được tạo ra từ công nghệ tổng hợp tiếng nói trợ giúp cho người đọc và người khiếm thị có thể nghe và nắm bắt được nội dung sách thông qua việc nghe các văn bản do hệ thống phần mềm xử lý mà không phải đọc trực tiếp bằng mắt Do vậy, em chọn đề tài “Kiến trúc Microservices và hệ thống sách nói trực tuyến” để giải quyết vấn đề nêu trên
- Mục đích nghiên cứu của luận văn
Để việc tiếp cận sách hệ thống sách nói thông qua hình thức nghe và phục vụ việc quản lý và xác thực người dùng, mục đích của luận văn nghiên cứu thay đổi sử dụng từ mô hình hướng dịch vụ SOA sang mô hình MSA Về định hướng phát triển,
để tiếp cận được với hầu hết người dùng bằng các thiết bị di động phần mềm xây dựng ứng dụng trên nền tảng Web mà các thiết bị di động và máy tính có sẵn hoặc việc cài đặt đơn giản và không phụ thuộc vào nền tảng thiết bị của người dùng, ứng dụng kiến trúc MSA để xây dựng hệ thống sách nói bao gồm các Dịch vụ quản lý xác thực người dùng, Dịch vụ Quản lý sách nói, Dịch vụ phân quyền người dùng
- Tóm tắt luận điểm cơ bản và đóng góp mới của tác giả
Các luận điểm cơ bản: Hướng đến một hệ thống thông tin ứng dụng mang tính tổng quát và gọn nhẹ, tinh gọn trong quá trình triển khai, ứng dụng MSA tạo ra các ứng dụng trực tuyến mạnh mẽ và có khả năng linh hoạt để mở rộng, dễ xây dựng
mã và bảo trì mã, việc triển khai dễ dàng
Đóng góp mới của luận văn như sau:
Thứ nhất: luận văn xây dựng các dịch vụ ứng dụng hệ thống quản lý sách nói theo mô hình MSA
Thứ hai: luận văn xây dựng dịch vụ phân quyền người dùng động, dịch vụ này có thể ứng dụng vào các hệ thống quản lý khác bên ngoài hệ thống quản lý sách nói
- Phương pháp nghiên cứu:
Trang 14Nghiên cứu lý thuyết: thu thập thông tin thông qua đọc các bài báo, tài liệu ebook điện tử, việc tham khảo các tài liệu để có cái nhìn tổng thể, từ đó tổng hợp lại những mối quan hệ giữa các thông tin từ lý thuyết đã thu thập được nhằm mục đích tìm chọn những khái niệm cơ bản làm cơ sở cho đề tài sau đó đưa ra các đối tượng và những thuộc tính của đối tượng nghiên cứu và thiết kế cấu trúc phù hợp với mô hình bài toán ban đầu
Phương pháp mô hình hóa giúp phản ảnh những mặt xung quanh đối tượng, mô hình hóa đối tượng nghiên cứu dưới dạng trực quan, xây dựng mô hình các đối tượng nghiên cứu các thông tin về gồm cấu trúc, thuộc tính, chức năng, luồng dữ liệu
Nghiên cứu theo định hướng theo mục đích ứng dụng quản lý sách nói và quản lý phân quyền người dùng
Nội dung của luận văn
Nội dung luận văn bao gồm 4 chương:
CHƯƠNG 1: KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU HỆ THỐNG SÁCH NÓI
Khảo sát hiện trạng, mô tả các chức năng tổng quan hệ thống, đặc tả chi tiết các chức năng
CHƯƠNG 2: KIẾN TRÚC THIẾT KẾ MSA VÀ CÁC CÔNG NGHỆ SỬ DỤNG
Kiến trúc Microservices, Công nghệ NodeJS, Công nghệ Java, Spring
Framework, SSO Công nghệ ReactJS, Cơ sở dữ liệu MongoDB
CHƯƠNG 3: CÁC GIẢI PHÁP MSA NỔI BẬT VÀ PHÁT TRIỂN HỆ THỐNG SÁCH NÓI
Kiến trúc Microservices của hệ thống sách nói, thuật toán dịch vụ phân quyền
động Thiết kế kiến trúc hệ thống, xây dựng ứng dụng, triển khai, giao diện của chương trình
Kết luận
Đóng góp và định hướng
Trang 15CHƯƠNG 1: KHẢO SÁT VÀ PHÂN TÍCH YÊU CẦU HỆ THỐNG SÁCH
NÓI
Chương mở đầu của luận văn, phần 1.1 trình bày khảo hiện trạng đọc sách, phần 1.2 trình bày tổng quan về các dịch vụ hệ thống xây dựng, phần 1.3 đặc tả chi tiết các chức năng trong hệ thống
1.1 Khảo sát hiện trạng
Việc đọc sách luôn được coi trọng trong cuộc sống hàng ngày và sách là kho tàng tri thức của con người, sách cung cấp cho chúng ta vô số kiến thức cũng như kinh nghiệm quý báu sau nhiều năm nghiên cứu của người viết, từ dân tộc này tới dân tộc khác, từ nền văn hóa này tới nền văn hóa khác Bên cạnh đó sách, truyện cũng là một trong những phương tiện mang tính giải trí rất hiệu quả và luôn luôn được các nhà trường, các cơ sở giáo dục hay những danh nhân khuyến khích đọc Hiện nay, công nghệ thông tin đã phát triển tới mức đi sâu vào hầu hết các lĩnh vực của đời sống - xã hội, văn hóa, kinh tế, giáo dục,… Công nghệ thông tin phát triển mang đến thay đổi, về việc đọc sách, truyện trên các thiết bị điện tử Ngày nay, thay vì việc mua sách giấy với chi phí không hề rẻ và đôi khi khó khăn trong việc tìm kiếm,
xu hướng đọc thường tìm đến sách điện tử - là một nguồn tài liệu đồ sộ, dễ tìm kiếm
và chi phí sử dụng thông thường không đắt như sách giấy, bên cạnh đó sách điện tử
dễ dàng lưu trữ và dễ mang theo khi chỉ cần có một thiết bị điện tử như điện thoại, máy tính bảng hay máy vi tính là ta đã có thể chứa được hàng ngàn quyển sách khác nhau Tuy nhiên, với điện tử người đọc phải tiếp xúc với các màn hình của thiết bị điện tử Đó có thể là một màn hình máy tính, một màn hình máy tính bảng hay phổ biến nhất là màn hình điện thoại Ở bất kỳ đâu hay bất kỳ lúc nào, thực sự không khó để bắt gặp những hình ảnh ai đó đang “cắm mặt” vào các loại màn hình điện tử Việc đọc sách điện tử thông qua việc tiếp xúc bằng mắt với các thiết bị ở cự ly gần, thời gian dài có thể gây ra các bệnh về mắt như lão hóa mắt, các triệu chứng mỏi mắt đau mắt và dẫn đến cận thị
Những ảnh hưởng đến việc đọc sách bằng mắt có thể được giảm thiểu và giải quyết với sự phát triển ngày càng hoàn thiện của công nghệ tổng hợp tiếng nói,
Trang 16chúng ta có thể chuyển từ các đoạn văn bản có nội dung trên sách và thiết bị điện tử sang dạng âm thanh để có thể nghe bằng tai, vì thế tiếp cận việc đọc sách được có nhiều ưu điểm hơn, không phải ngồi cố định một chỗ mà có thể nghe sách trong lúc
di chuyển trên tầu hoặc xe
Trên nền tảng hệ thống tổng hợp sách nói gồm hệ thống ứng dụng công nghệ tổng hợp tiếng nói đầu vào là một file dạng text của cuốn sách, đầu ra của hệ thống
xử lý là file audio của sách, hiện tại hệ thống sách nói các đối tượng là các đại lý quản lý sách và sách bao gồm tên sách, thể loại sách và các tác giả viết sách, với thực trạng này sau khi sách giấy được chuyển thành dạng text để đưa vào hệ thống
xử lý tiếng nói, các nhân viên phải chỉnh sửa và chuẩn hóa các file sách, những cuốn sách được xử lý sau đó sẽ được lưu thông tin về tên, tác giả, năm xuất bản, thể loại sách… trong các file excel nặng nề khó xem và quản lý khi số lượng sách tăng cao, đồng thời các nhân viên khác nhau của đại lý có các chức năng nhiệm vụ như quản lý và nhân viên khi sử dụng các file sửa đổi sẽ phải được tổng hợp lại sẽ mất nhiều thời gian để thống nhất dữ liệu từ nhiều nguồn nhân viên Với thực trạng đó
đề tài đề xuất xây dựng Dịch vụ quản lý sách nói lưu giữ và khai thác các thông tin
về sách nói dựa vào đó các đại lý và nhân viên của họ dễ dàng thống nhất hơn trong việc quản lý, giảm thiểu thời gian thực hiện lưu trữ, truy xuất tìm kiếm thông tin
Để bảo mật thông tin của các đại lý sách không để lộ ấn phẩm hoặc bản quyền quan trọng, phần mềm yêu cầu mỗi người dùng cần phải đăng nhập vào hệ thống, việc đăng nhập để xác thực danh tính, bảo mật thông tin của phần mềm, cũng như
tránh những xâm phạm không nhìn thấy từ bên ngoài, luận văn xây dựng Dịch vụ
đăng nhập, xác thực SSO bằng thư điện tử và mật khẩu cho từng người dùng trong
hệ thống
Thêm vào đó một công ty hay đại lý sách luôn có các quản lý là người sở hữu cửa hàng và các nhân viên của họ làm việc cho đại lý đó, người quản lý cửa hàng có trách nhiệm phân công công việc của cửa hàng cho nhân viên cấp dưới, hệ thống tài khoản của đại lý sách có các người dùng là quản lý và nhân viên cũng sẽ được phân quyền phù hợp với chức năng của họ, theo hướng này Nói cách khác với nhu cầu cấp
Trang 17thiết thực tế, ứng dụng cần thiết kế và xây dựng một dịch vụ quản lý người dùng linh hoạt, với các tài khoản được tạo ra mỗi tài khoản sẽ được gán vai trò, các quyền cho
tài khoản đó Luận văn xây dựng Dịch vụ phân quyền cho các người dùng có các
quyền tùy chỉnh sửa, xóa, thêm mới, xem hoặc không được xem một trang trong hệ thống quản lý sách nói hoặc không được sử dụng một vài chức năng trong trang Với người dùng là quản lý hệ thống quản lý các tài khoản họ tạo ra đồng thời được phân
có quyền tạo và gán cho một người dùng thấp hơn các quyền phù hợp với các công việc họ được giao
1.2 Tổng quan các dịch vụ của hệ thống
Luồng hoạt động của hệ thống đầu tiên từ người sử dụng dịch vụ tạo một tài khoản từ giao diện đăng ký, sau khi quản trị viên của hệ thống xác nhận, người dùng mới sẽ được gán vai trò, phân các quyền truy cập và sử dụng dịch vụ quản lý sách nói Hình 1.1 mô tả các chức năng được xây dựng trong ứng dụng
Phân cấp chức năng hệ thống:
Hình 1.1 Tổng quan chức năng Biểu đồ use case tổng quan:
Trang 18Hình 1.2 Biểu đồ Use case tổng quan Hình 1.2 mô tả hệ thống gồm 5 tác nhân là Editor, Quản lý đại lý, Quản trị viên
hệ thống, SSO, TTS Engine và tương tác của tác nhân với hệ thống;
a Editor:
- Editor là nhân viên đại lý sách
- Nhân viên đại lý có thể đăng ký để thành thành viên của hệ thống, Editor có thể
sử dụng hầu hết tính năng cơ bản của dịch vụ quản lý sách nói bao gồm thêm các thông tin chi tiết sách, cập nhật các chi tiết mới của sách, tìm kiếm sách, chỉnh sửa, chuẩn hóa nội dung của một quyển sách
Trang 19- Và cuối cùng, kết thúc mỗi phiên làm việc, quản lý đại lý có thể đăng xuất khỏi
hệ thống nếu muốn
c Quản trị viên hệ thống:
- Quản trị viên hệ thống là người quản trị hệ thống sách nói, giữ vai trò điều khiển các hoạt động duy trì trang web, quản trị viên hệ thống cũng thực hiện việc chuẩn hóa sách từ file word sau đó tổng hợp sách
- Để có thể thực hiện các thao tác quản trị của trang web, dĩ nhiên quản trị viên cần có các chức năng như đăng nhập và đăng xuất Quản trị có thể quản lý các tài khoản của đại lý sách bao gồm tài khoản của nhân viên - Editor và quản lý đại lý; quản lý phân quyền cho các tài khoản sử dụng hệ thống
d SSO:
SSO được dùng trong hệ thống có nhiều website và ứng dụng, là một cơ chế xác thực yêu cầu người dùng đăng nhập vào chỉ một lần với một tài khoản và mật khẩu để truy cập vào một hệ thống hay nhiều hệ thống kết nối với nhau
mà không cần sử dụng nhiều tên đăng nhập và mật khẩu khác nhau của từng
hệ thống trong 1 phiên làm việc
e TTS Engine:
- TTS Engine là một hệ thống tổng hợp tiếng nói, có vai trò tiền xử lý nội dung đầu vào là file word đã được chuẩn hóa sau đó chuyển từ dạng văn bản sang dạng tiếng nói dưới định dạng tệp âm thanh theo các giọng đọc tùy chọn
Trang 20- Trong hệ thống đọc sách, TTS Engine đóng vai trò là nơi cung cấp đầu vào, các sách, đã tổng hợp cho hệ thống Các sách có trong hệ thống không thể thêm vào một cách tùy tiện mà chỉ có thể lấy được thông qua TTS Engine
1.2.1 Dịch vụ quản lý xác thực người dùng SSO
Mô tả:
Các ứng dụng có các hệ thống nhận diện khác nhau sẽ gây khó khăn cho người dùng khi sử dụng các ứng dụng mà còn khiến đại lý khó kiểm soát và liên kết các tài khoản Dịch vụ SSO cho phép một đại lý đăng ký tài khoản thông qua tài khoản thư điện tử và mật khẩu, việc đăng nhập và xác thực tập trung và lưu thông tin về người dùng Sau khi đăng ký, đại lý sách cần phải gọi điện xác nhận với quản trị viên hệ thống, nếu tài khoản được quản trị viên chấp nhận, đại lý dùng tài khoản này để đăng nhập sử dụng các dịch vụ trong hệ thống sách nói Chức năng chính của dịch vụ xác thực người dùng SSO là đăng nhập một lần sau đó sử dụng tài khoản này để đăng nhập các dịch vụ quản lý sách và dịch vụ quản lý phân quyền Hình 1.3 mô tả tương tác người dùng, quản trị viên đến dịch vụ xác thực người dùng SSO
Hình 1.3 Biểu đồ cho use case đăng nhập hệ thống Xác thực người dùng: Khi người dùng đăng nhập bằng thông tin tài khoản thành công, client sẽ lấy được access_token được tạo ra từ máy chủ xác thực, token này sẽ được lưu vào trong cookie và tạo thời gian hết hạn cho nó, mỗi khi người dùng có
Trang 21yêu cầu bất kỳ đến máy chủ nào thì access_token sẽ được gửi kèm trong yêu cầu đến máy chủ đó thực hiện xác thực tài khoản
Hai tác nhân chính của dịch vụ quản lý đăng ký, xác thực người dùng là Người dùng có thể là Nhân viên đại lý hoặc là Quản lý đại lý và Quản trị hệ thống
Tác nhân Người dùng: được phép đăng ký, đăng nhập, đổi mật khẩu, hệ thống xác nhận mật khẩu
Tác nhân Quản trị hệ thống tác động vào dịch vụ thay đổi thông tin người dùng
Hình 1.4 Biểu đồ cho use case dịch vụ quản lý sách Hai chức năng quan trọng trong dịch vụ này là kết nối tới TTS Engine là chuẩn hóa sách và tổng hợp sách Chức năng chuẩn hóa sách tìm các từ và đoạn văn có khả năng lỗi, chức năng tổng hợp sách gọi đến hệ thống TTS Engine chuyển từ file text nội dung sách sang file tiếng nói định dạng mp3
Trang 22Hai tác nhân chính trong chức năng quản lý sách là Quản lý đại lý và Nhân viên Tác nhân Nhân viên: có thể thêm thông tin sách, sửa, xóa Sách, tạo Thể loại sách, sửa xóa Thể loại sách, thêm tác giả, sửa, xóa Tác giả, tìm kiếm theo tên sách, thể loại sách, tác giả, ngày xuất bản sách và chuẩn hóa sách
Tác nhân Quản lý đại lý: có chức năng tạo mới thông tin, nội dung một quyển sách thêm sửa xóa Sách, thêm sửa xóa Thể loại sách, thêm sửa xóa Tác giả, tìm kiếm sách theo tên sách, thể loại, tác giả, thực hiện hai chức năng chính trong hệ thống sách nói là tổng hợp và chuẩn hóa sách
1.2.3 Dịch vụ quản lý phân quyền người dùng:
Mô tả
Dịch vụ quản lý và phân quyền giới hạn quyền truy cập và thao tác của một đối tượng người dùng trên ứng dụng, kết hợp đối tượng người dùng và các hành động được phép của họ trên ứng dụng sẽ tạo ra những quyền cụ thể Sau khi đại lý đăng
ký một tài khoản tại dịch vụ đăng nhập và xác thực, người quản lý đại lý sẽ được quyền đăng nhập vào dịch vụ quản lý phân quyền, tài khoản này sẽ có chức năng phân cho nhân viên sử dụng hệ thống được sử dụng những tài nguyên nào, tài khoản
được tạo mới các vai trò, các trang, phân quyền cho người dùng là nhân viên đại lý
sử dụng tất cả quyền hay một phần quyền trong đó Dịch vụ Quản lý phân quyền cho phép thêm sửa xóa các vai trò, thêm sửa xóa các quyền cho người dùng, thêm sửa xóa các quyền trên một Trang trong dịch vụ quản lý sách nói Hinh 1.5 mô tả
tương tác giữa quản lý đại lý và dịch vụ phân quyền người dùng
Trang 23Hình 1.5 Biểu đồ cho use case dịch vụ quản lý phân quyền
Tác nhân Quản lý đại lý: có đầy đủ các quyền trong dịch vụ quản lý sách, có các chức năng thêm sửa xóa thông tin Editor, thêm sửa xóa một vai trò, thêm sửa xóa các quyền cho Editor, thêm sửa xóa các quyền trên một trang thuộc dịch vụ quản lý sách, phân quyền cho Editor trên một trang, tìm kiếm
1.3 Đặc tả các chức năng
Dưới đây là bảng danh sách đầy đủ các chức năng use case của hệ thống
Bảng 1.1 Danh sách các use case của hệ thống:
Use case cha Mã use case Tên use case
UC002 Đăng nhập bằng email, mật khẩu UC003 Thay đổi mật khẩu
UC004 Đặt lại mật khẩu UC005 Xác thực
Trang 24Quản lý sách
UC006 CRUD sách UC007 CRUD thể loại UC008 CRUD tác giả UC009 Chuẩn hóa chương UC010 Tổng hợp
UC011 Tìm kiếm Quản lý phân quyền UC012 RUD Editor
UC013 CRUD vai trò UC014 CRUD phân quyền UC015 CRUD trang UC016 Tìm kiếm
1.3.1 Đặc tả use case “Đăng nhập”
Bảng 1.2 Đặc tả use case “Đăng nhập”:
Ở use case này em trình bày 2 chức năng Thay đổi mật khẩu và Xác thực người dùng, 2 chức năng đơn giản Đăng nhập và Đăng ký em không trình bày
Thay đổi mật khẩu:
Mã Use case UC001 - UC005 Tên use case Đăng nhập
Tác nhân Editor, Quản lý đại lý
Tiền điều kiện Không có
Trang 252 Hệ thống kiểm tra Token tồn tại hay không
3
Hệ thống
nếu yêu cầu không tồn tại, sẽ không làm gì Nếu tồn tại hệ thống sẽ kiểm tra quyền tương ứng của yêu cầu
4
Hệ thống
kiểm tra chính xác thông tin đã nhập, thông báo đổi mật khẩu thành công hoặc phải nhập lại thông tin do không trùng lặp
1.3.2 Đặc tả use case “Quản lý sách”
Bảng 1.3 Đặc tả use case “Quản lý sách”:
Mã Use case UC006 - UC011 Tên use case Quản lý sách
Tác nhân Editor, Quản lý đại lý
Tiền điều kiện Tài khoản đăng nhập hệ thống
Trang 26truy cập vào trang quản lý sách nói, nhấn chuột vào Tag Sách
2
Hệ thống hiển thị giao diện trang thông tin tất cả
sách
3 Editor, Quản lý đại lý
nhấn chuột vào thêm sách mới
4 Hệ thống hiển thị trang thông tin thêm sách
5 Editor, Quản lý đại lý, Quản trị viên
bước 1 chọn Choose File thêm thông tin sách, sau đó chọn nhập
bước 2 chọn choose File thêm nội dung sách file, sau đó chọn nhập
6 Hệ thống lưu thông tin và nội dung sách
truy cập vào trang quản lý sách nói, nhấn chuột vào Tag Sách, chọn sách cần sửa
2 Hệ thống hiển thị giao diện trang các quyển sách
3 Editor, Quản lý đại lý
nhấn chuột vào sửa sách
4 Hệ thống hiển thị giao diện sửa sách
5 Editor, Quản lý đại lý
xóa và cập nhật thêm thông tin cần thiết sau đó nhấn nút lưu thay đổi thông tin
Trang 27Thêm mới thể loại sách:
truy cập vào trang quản lý sách nói, nhấn chuột vào Tag Các Thể loại sách
2
Hệ thống hiển thị giao diện trang thông tin tất cả thể
loại
3 Editor, Quản lý đại lý
nhấn chuột vào dấu cộng thêm thể loại sách
4 Hệ thống mở cửa sổ thể mới thể loại sách
5 Editor, Quản lý thêm thể loại sách và mô tả, nhấp vào tạo
Hệ thống hiển thị ô nhập tên thể loại có thể sửa và
danh sách các sách trong thể loại sách
Trang 28chọn xem chi tiết thể loại sách
4 Hệ thống hiển thị tên thể loại và danh sách các sách
trong thể loại sách thuộc thể loại đã chọn
5 Người dùng nhập nút xóa thể loại
6 Hệ thống thông báo xác nhận xóa thẻ loại
chọn dấu cộng để thêm mới
4 Hệ thống hiển thị giao diện thêm mới tác giả,
5 Người dùng thêm mới tên tác giả, mô tả, năm sinh tác
giả, nhấp nút Tạo mới
6 Hệ thống thêm mới thành công
Trang 29Sửa tác giả:
Xóa tác giả: tương tự như luồng sửa tác giả, bước thực hiện 5 của người dùng sẽ nhấp nút xóa tác giả, bước 6 hệ thống báo xóa tác giả thành công và quay về trang tác giả
Chuẩn hóa Chương:
truy cập vào trang https://services.vbee.vn/authors
2 Hệ thống hiển thị giao diện quản lý tác giả
3 Editor, Quản lý đại lý
chọn chi tiết tác giả
4 Hệ thống hiển thị giao diện sửa tác giả,
5 Người dùng sửa thông tin tác giả, nhấp nút Lưu thay
4 Hệ thống hiển thị giao diện sách
5 Người dùng chọn chuẩn hóa Chương
Trang 30Tổng hợp sách:
Các bước thực hiện giống luồng chuẩn hóa chương bước 5 người dùng sẽ nhấp vào nút tổng hợp sách, bước 6 hệ thống gọi tác nhân ngoài TTS Engine thực hiện chuyển file word thành file âm thanh mp3
2 Hệ thống hiển thị giao diện trang tìm kiếm sách
3 Editor, Quản lý
đại lý
nhập từ khóa cần tìm, tác giả, chọn thể loại, trạng thái, cách sắp xếp kết quả tìm kiếm, nhấn nút Search
4 Hệ thống hiển thị giao diện kết quả tìm kiếm
1.3.3 Đặc tả use case “Quản lý phân quyền”
Bảng 1.4 Đặc tả use case “Phân quyền người dùng”
Mã Use case UC011 - UC015 Tên use case Quản lý phân quyền
Tác nhân Quản lý đại lý, Quản trị viên hệ thống
Tiền điều kiện Tài khoản đăng nhập hệ thống
Trang 31nhấp nút thêm Add role
4 Hệ thống hiển thị bảng Add role, ô Name,
đăng nhập trang chủ nhấp vào Tag Role
2 Hệ thống hiển thị vai danh sách vai trò
Trang 32Thêm mới Page:
2 Hệ thống hiển thị vai danh sách các Page
3 Quản lý đại lý, Quản trị viên
chọn dấu ba chấm trong bảng Page để sửa vai trò
4 Hệ thống hiển thị bảng Edit Page
đăng nhập trang chủ nhấp vào Tag Page
2 Hệ thống hiển thị vai danh sách các Page
Trang 335 Quản lý đại lý, Quản trị viên chọn ok
6 Hệ thống hiển thị lại trang quản lý Trang
2 Hệ thống hiển thị vai danh sách các feature
3
Quản lý đại lý, Quản trị viên
chọn dấu ba chấm trong bảng Page để sửa Feature
4 Hệ thống hiển thị bảng Edit Feature
2 Hệ thống hiển thị vai danh sách các Feature
3 Quản lý đại lý, Quản trị viên
chọn Add feature chọn dấu ba chấm trong bảng Page để sửa vai trò
4 Hệ thống hiển thị bảng Add Feature
5 Quản lý đại lý, Quản trị viên chọn ok
6 Hệ thống hiển thị trang quản lý Feature
Trang 34phân quyền cho người dùng Đặc tả các chức năng cụ thể của ứng dụng
Trang 35CHƯƠNG 2: THIẾT KẾ KIẾN TRÚC MSA VÀ CÁC CÔNG NGHỆ SỬ
DỤNG
Chương 2 trình bày các công nghệ sử dụng phát triển ứng dụng, phần 2.1 Kiến trúc hệ thống MSA, so sánh với kiến trúc một khối truyền thống Ba công nghệ xây
dựng Back end là phần 2.2 Xác thực SSO, phần 2.3 Công nghệ Nodejs, phần 2.4
Công nghệ Java Công nghệ xây dựng giao diện phần 2.5 Công nghệ ReactJS và phần 2.6 Cơ sở dữ liệu MongoDB
2.1 Kiến trúc Microservices
Kiến trúc một khối truyền thống Monolithic Architecture
Ứng dụng phần mềm doanh nghiệp được thiết kế để đáp ứng nhiều yêu cầu kinh doanh của doanh nghiệp Do đó, các phần mềm cung cấp hàng trăm các tính năng
và tất cả những tính năng này đều được gói trong một ứng dụng monolithic Ví dụ: ứng dụng hỗ trợ lên kế hoạch và sắp xếp tài nguyên ERPs, ứng dụng quản lý mối quan hệ với khách hàng CRMs hay nhiều phần mềm khác chứa hàng trăm tính năng Việc triển khai, sửa lỗi, mở rộng và nâng cấp những phần mềm khổng lồ này trở thành một cơn ác mộng
Kiến trúc hướng dịch vụ SOA được thiết kể để giải quyết một phần của vấn đề bằng cách giới thiệu khái niệm "service" Một dịch vụ là một nhóm tổng hợp các tính năng tương tự trong một ứng dụng Do đó trong SOA, ứng dụng phần mềm được thiết kế như một tổ hợp của các dịch vụ Tuy nhiên, với SOA, giới hạn hay phạm vi của một dịch vụ khá là rộng và được định nghĩa khá "thô" (coarse-grained) Việc này khiến các services cũng có thể trở nên quá to và phức tạp
Hình 2.1 Ứng dụng gồm nhiều dịch vụ
Trang 36Trong phần lớn trường hợp, dịch vụ trong SOA là độc lập nhưng chúng lại được triển khai chung Tương tự như ứng dụng monolithic, những dịch vụ này to và phức tạp lên theo thời gian vì thường xuyên thêm các tính năng Và thế là những ứng dụng này lại trở thành một mớ các dịch vụ monolithic, cũng không còn khác mấy so với kiến trúc một khối thông thường Hình 2.1 thể hiện một ứng dụng gồm nhiều services Những services này được triển khai cùng một lúc vào 1 ứng dụng lớn Dù bên trong có gồm các services thì đây là một ứng dụng monolithic Một số tính chất của kiến trúc một khối:
Được thiết kế, phát triển và triển khai theo một khối duy nhất
Ứng dụng monolithic phức tạp và to gây khó khăn cho việc bảo trì, nâng cấp
và thêm tính năng mới
Khó áp dụng phát triển kiểu agile
Phải triển khai lại toàn bộ hệ thống dù chỉ cập nhật hay nâng cấp một phần
Mở rộng: phải mở rộng cả khối ứng dụng, gặp khó khăn nếu có các yêu cầu về tài nguyên khác nhau (ví dụ một service yêu cầu thêm CPU, service khác lại yêu cầu nhiều memory)
Độ tin cậy: một service không ổn định có thể sập cả hệ thống
Khó đổi mới: ứng dụng monolithic phải sử dụng chung công nghệ nên khó thay đổi hay áp dụng công nghệ mới
Chính vì những lí do thiết kế giới hạn như trên việc ứng dụng kiến trúc một khối hay SOA cho hệ thống sách nói là không đảm bảo được phát triển, đề tài hướng tới
sự phát triển của kiến trúc dịch vụ nhỏ MSA
Kiến trúc dịch vụ nhỏ - MSA
Nền tảng cả kiến trúc microservices là xây dựng một ứng dụng mà ứng dụng này
là tổng hợp của nhiều services nhỏ và độc lập có thể chạy riêng biệt, phát triển và triển khai độc lập
Một số khái niệm về microservices nói về quá trình chia tách ứng dụng monolithic thành nhóm các services độc lập Tuy nhiên, theo quan điểm nghiên cứu
Trang 37của đề tài, microservices không chỉ về chia tách các servcies sẵn có trong monolithic
Ý tưởng quan trọng chính là nhìn vào các tính năng trong một ứng dụng monolithic, ta có thể nhận biết, xác định các yêu cầu và khả năng cần thiết để đáp ứng một nghiệp vụ Sau đó từng năng lực nghiệp vụ này sẽ được xây dựng thành những service nhỏ, độc lập Những services này có thể sử dụng các nền tảng công nghệ khác nhau và phục vụ một mục đích cụ thể và có giới hạn, cũng theo đó các nghiệp vụ của luận văn được tách nhỏ thành nghiệp vụ sách, phân quyền, xác thực Theo đó, ví dụ về hệ thống trong hình 2.1 có thể được chia theo microservices như trong hình 2.2 Đây có thể là một ứng dụng phần mềm bán hàng, với kiến trúc microservices, mỗi chức năng kinh doanh hay trong doanh nghiệp được tách thành một microservices Trong kiến trúc microservices, một service mới được tạo ra từ những services gốc trong kiến trúc monolithic
Hình 2.2 Kiến trúc Microservices
Liên lạc giữa Microservices
Trong ứng dụng monolithic, các chức năng khác nhau nằm trong các component khác nhau được kết nối bằng cách gọi hàm hay phương thức Trong SOA, việc này được chuyển sang một chế độ tách rời hơn với kiểu nhắn tin qua các dịch vụ web web service messaging, phần lớn dùng SOAP trên nền phương thức HTTP, JMS Những webservices này khá phức tạp Với microservices, yêu cầu là phải có một cơ chế truyền tin đơn giản và nhẹ
Gửi tin đồng bộ - REST
Với truyền tin đồng bộ người gửi - client sẽ chờ một khoảng thời gian để nhận kết quả từ service, REST là sự lựa chọn hàng đầu vì nó cung cấp hệ thống truyền tin
Trang 38đơn giản qua giao thức HTTP dạng request - response Do đó, nhiều microservices
sử dụng HTTP với API Mỗi chức năng hệ thống được xuất ra API, hình 2.3
REST thích ứng tốt với các công nghệ web mới, dễ dàng sử dụng và bảo trì, gần gũi với công nghệ web hiện đại, dễ học, ưu việt trong các ứng dụng hướng tài nguyên, thiên về các CRUD actions mô hình client-server, chỉ giao tiếp thông qua các phương thức HTTP và phương thức xác định, định dạng tên hoặc tài nguyên URI
Hình 2.3 Sử dụng REST API cho microservices
Kết nối giao tiếp giữa các Services trong kiến trúc Microservices
Trong kiến trúc microservices, ứng dụng phần mềm được cấu thành từ các dịch
vụ độc lập Để hoàn thành một tác vụ của người dùng trên phần mềm, kết nối và giao tiếp giữa các microservices là cần thiết vì tác vụ gồm nhiều tác động khác nhau lên các services Vì vậy, giao tiếp giữa các microservices là một vấn đề cực kì quan trọng
Khi áp dụng SOA, giao tiếp giữa các services được tiến hành bởi một ESB và phần lớn logic nằm trong tầng trung gian này là định tuyến cho tin nhắn, chuyền đổi
và điều phối tin nhắn Tuy nhiên, kiến trúc microservices thúc đẩy việc loại trừ một tầng giao tiếp trung gian tập trung/ ESB và chuyển phần logic nghiệp vụ (business logic) sang các services (dạng Smart Endpoints)
Bởi vì microservices sử dụng giao thức tiêu chuẩn HTTP, JSON, , yêu cầu để kết nối một giao thức khác biệt được tối giản Một lựa chọn khác cho giao tiếp giữa microservices là sử dụng một message bus nhẹ hay gateway với khả năng định tuyến tối thiểu hoạt động như những đường truyền đơn thuần không xử lý business
Trang 39logic gì hết (dump pipe) Dựa vào những phong cách này, có một số kiểu mẫu giao tiếp trong microservices như dưới đây
API-Gateway
Ý tưởng chính của API Gateway là sử dụng một cổng truyền tin gọn nhẹ như một
điểm vào chính cho tất cả khác hàng, người dùng và triển khai những chức năng chung mà không liên quan đến nghiệp vụ đặc thù ở cấp Gateway này Nhìn chung, một API Gateway cho phép sử dụng một API được quản lý qua REST/HTTP Vì thế, chúng ta có thể cung cấp tất cả các chức năng nghiệp vụ được phát triển thành microservices qua API Gateway như một APIs tập trung được quản lý, hình 2.4
Hình 2.4 Tất cả microservices được xuất qua API Gateway
Trong ví dụ bán hàng, tất cả microservices đều được xuất qua API Gateway và đây là một chốt đầu vào duy nhất cho người dùng Nếu một microservices muốn giao tiếp với một microservice khác thì cần đi qua API Gateway
API Gateway cung cấp các lợi thế dưới đây:
Cung cấp một lớp trừu tượng hóa các microservices Ví dụ thay vì cung cấp một API cho tất cả khách hàng, API gateway có thể xuất ra hay hiển thị API khác nhau cho mỗi khách hàng
Định tuyến và chuyển đổi tin nhắn gọn nhẹ ở cấp gateway
Một điểm tập trung cho các chức năng chung không mang tính nghiệp vụ kinh doanh như bảo mật, giám sát và điều tiết
Với API Gateway, microservices trở nên càng gọn nhẹ vì các chức năng chung không mang tính nghiệp vụ đều chuyển sang Gateway
Trang 40API Gateway có thể là kiểu mẫu được sử dụng rộng rãi nhất trong triển khai microservices
Với các thiết kế như trên có thể đưa ra ưu điểm của Microservices ứng dụng trong luận văn:
1- Giảm thiểu sự gia tăng phức tạp rối rắm hệ thống lớn
2- Chia nhỏ ứng dụng một khối cồng kềnh thành các dịch vụ nhỏ dễ quản lý, bảo trì nâng cấp, tự do chọn, nâng cấp công nghệ mới
3- Mỗi dịch vụ nhỏ sẽ định ra ranh giới rõ ràng dưới dạng RPC hay API hướng thông điệp
4- Microservices thúc đẩy tách rạch ròi các khối chức năng (loose coupling - high cohesion), điều rất khó thực hiện với ứng dụng một khối Nếu muốn loose coupling - high cohesion trong ứng dụng một khối, sẽ phải thiết kế theo Design Pattern và liên tục tái cấu trúc – refactor
Mỗi dịch vụ nhỏ sẽ phát triển dễ hơn, nhanh hơn, dễ viết mã kiểm thử tự động Một số dịch vụ có thuê ngoài phát triển mà vẫn bảo mật hệ thống - mã nguồn phần dịch vụ còn lại Đội phát triển có nhiều lựa chọn công nghệ mới, framework, CSDL mới, đa dạng để nâng cấp từng dịch vụ nhỏ, chọn môi trường tối ưu nhất để chạy Các dịch vụ có thể bật tắt để kiểm nghiệm so sánh A|B, tăng tốc quá trình cải tiến giao diện Triển khai đều đặn khả thi với microservices Dịch vụ nhỏ đóng gói trong Docker container có thể 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, không phải copy file quá lớn
Nhược điểm của microservices
Nhược điểm đầu tiên của microservices cũng chính từ tên gọi của nó Microservices nhấn mạnh kích thước nhỏ gọn của dịch vụ Một số lập trình viên đề xuất dịch vụ siêu nhỏ cỡ dưới 100 dòng code Chia quá nhiều sẽ dẫn đến manh mún, vụn vặt, khó kiểm soát Việc lưu dữ liệu cục bộ bên trong những dịch vụ quá nhỏ sẽ khiến dữ liệu phân tán quá mức cần thiết
Nhược điểm tiếp của microservice đến từ đặc điểm hệ thống phân tán DS: