- vừa được xem lúc

Microservices

0 0 26

Người đăng: Nguyễn Xuân Quang

Theo Viblo Asia

Đị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:

image.png

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:

  1. Employee service ( sử dụng table tc_employee )
  2. Store serice (sử dụng table tc_store )
  3. Inventory service (sử dụng table tc_warehouse)
  4. 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.

image.png

Ư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

  1. 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.
  2. 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 đó.
  3. 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.
  4. 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:

Microservices là gì? Kiến thức tổng quan về Microservices

Bình luận

Bài viết tương tự

- vừa được xem lúc

Performance Optimization 102: Scalability và câu chuyện về ảo tưởng distributed

Performance, scalability cùng câu chuyện nỗi ám ảnh và những ảo tưởng của một developer về cái gọi là hệ thống distributed. .

0 0 63

- vừa được xem lúc

Microservices là gì?

Chào các bạn, sau một thời gian dài bận bịu với các dự án sử dụng các công nghệ cũ, hoặc các công nghệ do khách hàng chọn lựa từ trước, mình bỗng nhiên ngỡ ngàng khi nghe phong phanh dự án mới sẽ làm

0 0 45

- vừa được xem lúc

Tìm hiểu về Microservices - Phần 1: Microservices là gì?

Hiện nay kiến trúc Microservices đang là chủ đề được cộng đồng Developer vô cùng quan tâm. Bạn có thể tìm thấy khá nhiều tài nguyên giới thiệu và nói về tính chất cũng như lợi ích của Microservices tu

0 0 55

- vừa được xem lúc

Keycloak Secure any application

In life, there are many problems posed to the software industry . But most of the software that we create has a security and decentralization mechanism and user management.

0 0 49

- vừa được xem lúc

Microservices: Những sai lầm và chiến lược chuyển đổi từ Monolith

Thay vì viết một bài hoặc một seri về Microservices, mình nghĩ nên recap luôn những vấn đề, thách thức, khó khăn khi chuyển đổi hệ thống Monolith lên Microservices. Microservices là gì.

0 0 68

- vừa được xem lúc

Tìm hiểu về Service Mesh

Mở đầu. Kiến trúc Microservice ngày càng trở nên phổ biến và trở thành lựa chọn hàng đầu trong quá trình phát triển phần mềm.

0 0 42