Định nghĩa
Microservices là tên gọi các dịch vụ nhỏ thuộc dạng tách biệt đại diện cho 1 phần nhỏ tương ứng bên trong các Business domain của lập trình viên. Với kiến trúc Monolithic thì các bạn sẽ sở hữu một server lớn với khả năng chịu mọi trách nhiệm giải quyết hầu hết các requests. Và việc này sẽ gây ra khó khăn trong tất cả requests.
Chính vị vậy Microservices được xem như là giải pháp có thể cân bằng được tất cả các traffic dựa theo yêu cầu của doanh nghiệp. Và nếu như bạn đang nhận một lương lớn các thanh toán thì hầu hết bạn có thể scale up thiết bị thanh toán và giữ cho các dịch vụ nằm ở mức sử dụng 1 lượng nhỏ hơn so với các services.
Kiến trúc
Bên trong kiến trúc của Microservices thì các services sẽ tồn tại độc lập nhau về xử lý, lưu trữ và cả request. Và cấu trúc cụ thể của nó sẽ như hình sau:
Ví dụ: Nếu bạn cần xây dựng một hệ thống bán hàng dựa trên Microservices thì giả sử đơn hàng sẽ cần tối thiếu 4 service với database độc lập như sau:
- Employee service ( sử dụng table tc_employee )
- Store serice (sử dụng table tc_store )
- Inventory service (sử dụng table tc_warehouse)
- Order service (sử dụng table tc_order) Và trong số đó thì table tc_order sẽ chỉ chứa khóa ngoại chính là ID của nhân viên tại cửa hàng và ID của kho theo đúng tinh thần thiết kế chuẩn hóa database.
Ưu và nhược của Microservices
Ưu điểm:
- Microservices cho phép dễ dàng continuous delivery và deployment các ứng dụng lớn và phức tạp hơn.
- Vì các service tương đối nhỏ nên dễ hiểu, dễ thay đổi làm tăng khả năng bảo trì.
- Nhờ các service nhỏ mà khả năng testing cũng sẽ dễ hơn.
- Các services thường tiện lợi cho việc triển khai độc lập.
- Cho phép các team phát triển nhanh chóng services vì mỗi team đều được phát triển, thử nghiệm và triển khai cũng như mở rộng được quy mô service của mình một cách độc lập nhất với tất cả các team.
- Nếu như có một service nào đó bị lỗi thì chỉ services đó bị ảnh hưởng. Trong khi đó, mỗi một thành phần như Monolithic thì điều đó sẽ làm ảnh hưởng cả một hệ thống.
- Developer có thể thay đổi dễ dàng bằng cách sử dụng công nghệ mới khi triển khai các service. Tương tự như khi có thay đổi lớn thì các service đều có thể thực hiện và bạn dễ dàng thay đổi được công nghệ hơn. Nhược điểm:
- Các developers thường xuyên phải đối phó với sự phức tạp khi tạo ra một hệ thống phân tán.
- Cần phải implement việc communication giữa các inter-services.
- Handle partial failure rất phức tạp bởi vì luồng xử lý cần phải đi qua nhiều service khác nhau.
- Khi thực hiện các requests trên nhiều service khó khăn thì điều này cần sự phối hợp của các team.
- Thường rất khó khăn trong việc đảm bảo toàn vẹn cho CSDL nếu như triển khai theo các cấu trúc CSDL dạng phân vùng.
Lợi ích lớn của Microservices
- Source code gọn: Bởi vì được cấu thành từ các dự án nhỏ, mỗi dự án đều tập trung vào 1 hoặc vài nghiệp vụ chính. Vì thế nên code base và độ phức tạp của chúng đều không cao. Nhờ vậy mang lại tính gọn nhẹ, dễ bảo trì và mở rộng hơn.
- Tối ưu bảo mật cho source code: Khi nhân viên làm việc ở các dự án thì chỉ truy cập được vào một source code của dự án đó.
- Tồn tại độc lập: Bởi vì là các dự án nhỏ khác nhau nên chúng có thể có cách deploy riêng biệt và một service nào đó chết thì các service khác vẫn sẽ hoạt động một cách bình thường.
- Scale hoàn toàn độc lập: Tùy thuộc vào nhu cầu sử dụng hệ thống mà bạn có thể scale cho service đó. Ví dụ như service đơn hàng thường xuyên hoạt động thì bạn có thể chạy từ 2 đến 3 server để tăng performance.
Tóm lại
Bài viết đã tóm gọn các ý về microservices, nếu bạn cần đọc rõ thêm thì hãy tham khảo bài viết ở dưới nhé. Hy vọng bài viết sẽ giúp ích một phần nhỏ cho bạn, cảm ơn vì đã đọc, have a nice day .
Bài viết đã tham khảo: