<!-- Event snippet for Page View conversion page -->

Tổng quan về Microservices (Phần 1)

Giới thiệu tổng quan về microservice, lợi ích khi xây dựng dự án sử dụng kiến trúc microservice, các nguyên lý khi xây dựng microservice, điểm mạnh điểm yếu của microservices, đồng thời giới thiệu series thực chiến xây dựng hệ thống microservices.

Tổng quan về Microservices (Phần 1)

1. Microservices là gì?  
 

  • Microservices là một kiến trúc phần mềm bao gồm nhiều services nhỏ (micro-service). Ý tưởng của microservices là chia bài toán lớn thành nhiều bài toán nhỏ.  
     
  • Kiến trúc microservices khá phổ biến hiện nay và được nhiều công ty lớn sử dụng như: Netflix, eBay, Amazon, Twitter, PayPal,...  
     
  • Mỗi service trong kiến trúc này là mỗi module độc lập giúp dễ dàng phát triển, kiểm thử, mở rộng và triển khai…  
     

 

 

2. Lợi ích của microservices?

 

 

  • Linh động: các services được tổ chức thành các modules độc lập phân tán giúp dễ dàng phát triển, tích hợp và triển khai từng phần (CI/CD).  
     
  • Nhiều lựa chọn về công nghệ: có thể lựa chọn các kiến trúc, công nghệ, ngôn ngữ, cơ sở dữ liệu cho từng service.

Ví dụ: có thể tận dụng nguồn lực thế mạnh của nhiều team để áp dụng công nghệ phù hợp cho mỗi service. Service này sử dụng .net, sql server, service khác sử dụng nodejs, mongodb, cosmosdb...

  • Khả năng chịu lỗi: Khi một hoặc một vài service xảy ra lỗi thì các services khác không hoặc ít bị ảnh hưởng. Đảm bảo toàn hệ thống vẫn vận hành được. Khi sửa lỗi chỉ sửa lỗi ở đúng service đó do các service được thiết kế độc lập, ít phụ thuộc vào nhau nhất có thể.  
     
  • Tối ưu hiệu quả về chi phí: tối ưu và chia nhỏ chi phí cho từng service nhỏ thay vì một ứng dụng lớn.   
    Ví dụ: service cần lưu trữ dung lượng database, file.. thì ta sẽ scale trên riêng service đó, hoặc đôi lúc có thể tận dụng nhiều công nghệ miễn phí cho các service nhỏ.  

     

3. So sánh monolithic và microservices  
 

  • Monolithic  

    • Tập trung toàn bộ vào một ứng dụng lớn, dự án lớn thì team size và soure code sẽ phình to ra.  
       
    • Việc triển khai (deployment) sẽ đơn giản do toàn bộ tập trung vào một dự án.  
       
    • Kiến trúc truyền thống, dễ tiếp cận.  
       
    • Quá trình deployment không linh hoạt, thời gian build ứng dụng sẽ lâu, khi có một thay đổi nhỏ cũng phải build lại toàn bộ ứng dụng.  
       
    • Khó khăn trong việc kiểm tra lỗi và bảo trì do các modules, services trong dự án phụ thuộc chặt chẽ vào nhau (coupling code).  
       
    • Gặp vấn đề về khả năng chịu lỗi. Khi bị bất kỳ một lỗi nào thì có khả năng toàn bộ ứng dụng bị chết.  
       
    • Khả năng mở rộng hạn chế do tập trung một khối lớn.  
       
    • Khó áp dụng nhiều công nghệ vào dự án.

 

 

  • Microservices  

    • Chia nhỏ ứng dụng thành các services nhỏ hơn. Ý tưởng của microservices là chia bài toán lớn thành các bài toán nhỏ.  
       
    • Các services được xây dựng độc lập, có khả năng phát triển, kiểm lỗi và triển khai độc lập.  
       
    • Các team làm việc độc lập trên từng services, từng features.  
       
    •  Áp dụng các công nghệ, ngôn ngữ khác nhau vào từng services.  
       
    • Khả năng chịu lỗi tốt do các service độc lập, một service bị lỗi thì toàn hệ thống có khả năng vẫn hoạt động được và dễ dàng sửa lỗi đúng service đó.

4. Ưu và nhược điểm của microservices  
 

Ưu điểm

  • Chia nhỏ hệ thống lớn thành các services nhỏ độc lập nên dễ dàng phát triển, bảo trì và triển khai độc lập.
  • Dễ dàng cho các thành viên mới khi tham gia vào dự án, chỉ cần học các service nhỏ.
  • Khả năng kiểm soát lỗi tốt, một hoặc vài services bị lỗi thị hệ thống không bị crash.
  • Có thể lựa chọn nhiều công nghệ khác nhau cho từng services.
  • Khả năng mở rộng linh hoạt, khi cần scale module, feature nào thì scale service tương ứng.

Nhược điểm

  • Kiến trúc phức tạp, đòi hỏi phải có kiến thức chuyên sâu về devops (CI/CD) để có thể triển khai các services nhỏ trong một hệ thống lớn
  • Khó để đồng bộ và thống nhất giữa các services (dữ liệu, mã nguồn, con người trong các team..), cần phải chú ý việc giao tiếp giữa các services sao cho hiệu quả.
  • Khó đảm bảo sự toàn vẹn và nhất quán dữ liệu giữa các services do mỗi service sử dụng một database riêng.  

     

5. Các nguyên lý khi xây dựng service trong microservices 

  • Một service chỉ nên xử lý một nhiệm vụ chính duy nhất.  
     
  • Mỗi service phải độc lập, có khả năng đóng gói và triển khai độc lập. (CI/CD)  
     
  • Có thể di chuyển các services từ môi trường này sang môi trường khác dễ dàng, thuận tiện cho việc tích hợp và triển khai.  
     
  • Mỗi service nên có dữ liệu của riêng nó, không nên chứa dữ liệu của các service khác. Nếu các service muốn chia sẻ dữ liệu thì nên giao tiếp qua các public interface.  
     
  • Khi một service bị lỗi thì không ảnh hưởng đến toàn hệ thống. Có thể dễ dàng hủy và tạo lại service theo yêu cầu.  

     

6. Giới thiệu về series thực chiến xây dựng hệ thống microservices

  • Phần 1 chủ yếu lý thuyết tổng quan về kiến trúc microservices. Hiểu được khái niệm và tư tưởng.
  • Phần 2 sẽ giới thiệu cấu trúc dự án microservices. Đồng thời xây dựng 2 services đầu tiên là product (.net 6 + mySql) và customer (.net 6 Minimal API + PostgreSQL)

  • Phần 3 nội dung về Clean Architecture và CQRS pattern. Đồng thời xây dựng 3 service: basket service (.net 6 + redis), order service (.net 6 + sql server) và email service.

  • Phần 4 nội dung tập trung vào cách các micro service giao tiếp với nhau. Phần này mình sẽ giới thiệu về RabbitMQ và Kaffka. Tích hợp RabbitMQ vào hệ thống hiện tại cho quy trình đặt hàng - 2 services Basket và Order sẽ giao tiếp với nhau.

  • Phần 5 về API Gateway (Ocelot) trong microservices  
  • Phần cuối là một số nội dung khác về micorservices như quản lý transaction giữa các services, xử lý logging cho các request giữa các service, health check và retry (polly),.…

7. Tổng kết  
 

  • Vậy là chúng ta đã đi qua tổng quan về microservices và giới thiệu về nội dung tiếp theo trong series thực chiến xây dựng hệ thống microservices.
  • Cảm ơn mọi người đã xem bài viết. Chúc mọi người một cuối tuần vui vẻ.
  • Nếu có thắc mắc về các phần trong bài này mọi người có thể inbox qua mail: long.nguyendh@saigontechnology.com. Mình sẽ giải đáp thắc mắc trong tầm hiểu biết. Cảm ơn mọi người.

 

References


saigon technology careers

0


Leave a comment

Submit with


Comments (0)

career_saigon_technology
saigontechnology-great-plage-to-work-partner
saigontechnology-best-workplaces
saigontechnology-microsoft-partner
iso_9001iso_27001
sao_khue
50_leading

© Copyright 2025 by STS Software Technology JSC, Leading Software Development Company in Vietnam. All Rights Reserved.

We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.