1. Giới thiệu Microservices
- Microservices là kiến trúckhá phổ biến được sử dụng nhiều hiện nay.
- Kiến trúc này được các công ty lớn sử dụng: Netflix, Google, Twitter...
- Kiến trúc này dùng cho các dự án lớn giúp chia nhỏ thành nhiều service nhỏ dễ phát triển và quản lý.
- Mỗi module độc lập và dễ dàng phát triển với mục đích riêng.
2. Lợi ích của Microservices
- Nhanh nhạy: các service độc lập và phân tán dễ dàng phát triển, tích hợp và triển khai từng phần
- Linh động ngôn ngữ: có thể lựa chọn nhiều công nghệ, ngôn ngữ và dữ liệu cho từng service.
- Dễ dàng xử lý lỗi cho mỗi service, khi một service bị lỗi thì các services khác không hoặc ít ảnh hưởng. Toàn hệ thống vẫn vận hành được. Nếu sửa thì sửa service lỗi.
- Tính hiệu quả: tối ưu và chia nhỏ chi phí cho từng service thay vì một ứng dụng lớn. Ví dụ: Có thể tận dụng nhiều công nghệ miễn phí cho các service nhỏ.
3. Monolithic và Microservices
-
Monolithic:
- Tập trung toàn bộ vào một ứng dụng lớn, dễ hiểu để làm.
- Kiến trúc truyền thống và quen thuộc.
- Phù hợp với dự án nhỏ. (codebase và team nhỏ).
- Phát triển nhanh và đưa sản phẩm ra thị trường nhanh.
- Không phụ thuộc vào các service khác quá nhiều.
-
Microservices:
- Xây dựng các service độc lập, có khả năng deploy độc lập, các team làm việc độc lập với từng service, từng features.
- Các phần thực hiện service (component) sẽ làm việc qua interface hoặc api.
- Ví dụ: khi lựa chọn send mail có thể lựa chọn công nghệ khác nhau. Nhưng interface sẽ giống nhau khi các service khác xài service send mail.
-
Tư tưởng microservices là chia bài toán lớn thành nhiều bài toán nhỏ.
4. Điểm mạnh và điểm yếu của microservices
-
Điểm mạnh:
- Kiến trúc phù hợp ứng dụng lớn.
- Lâu dài thì dễ quản lý, phát triển và mở rộng
- Dễ để học khi tham gia vào dự án, chia nhỏ thành service nên chỉ cần học service liên quan.
- Kiểm soát lỗi độc lập và dễ mở rộng.
-
Điểm yếu:
- Kiến trúc phức tạp
- Khó để integration test
- Khó để đồng bộ và thống nhất giữa các service
5. Service-oriented architecture (SOA)
A Service-Oriented Architecture or SOA is a design pattern which is designed to build distributed systems that deliver services to other applications through the protocol. It is only a concept and not limited to any programming language or platform.
-
SOA là một kiến trúc phần mềm làm cho các thành phần (component) có thể tái sử dụng thông qua interface và sử dụng một common communication language và có thể giao tiếp qua internet.
-
SOA là một hướng tiếp cận và thiết kế phần mềm theo hướng module, mỗi module không phụ thuộc quá chặt chẽ, có thể mở rộng. Và các module có thể giao tiếp với nhau và giao tiếp với hệ thống khác. Vô cùng linh hoạt.
6. Các nguyên lý trong microservices
- Một service trong microservices chỉ xử lý một nhiệm vụ. (A microservices has a single concern)
- Mỗi service phải độc lập, được đóng gói và deploy độc lập. (A microservices is a discrete)
- Mỗi service có thể di chuyển từ môi trường này sang môi trường khác để dễ dàng deploy và tích hợp với ứng dụng. (A microservices is transportable) Ví dụ sử dụng docker để đóng gói service.
- Mỗi service chỉ nên chưa dữ liệu của chính nó, không nên chứa data của service khác (A microservice carries its own data). Để chia sẻ dữ liệu thì các service giao tiếp qua các public interface.
- Một service có thể được tạo ra, hủy đi và tạo lại theo yêu cầu. Một service bị lỗi sẽ không ảnh hưởng đến toàn bộ hệ thống. (A microservices is ephemeral)
7. Các services giao tiếp với nhau như thế nào?
- Sử dụng giao thức HTTP/HTTPS để giao tiếp với nhau. Client gửi một request qua http và chờ response từ service. Client vẫn phải chờ kết quả trả về mới có thể tiếp tục làm tiếp công việc.
- Sử dụng giao thức AMQP, sử dụng các message queque như RabbitMQ hay Kafka. Client gửi message và không phải chờ response trả về.
Tham khảo:
- https://tedu.com.vn/
- https://viblo.asia/p/doi-net-ve-microservice-architecture-va-monolithic-architecture-XL6lAAvrlek
- https://www.udemy.com/course/net-core-microservices/
- https://www.pluralsight.com/paths/net-microservices
- https://www.javatpoint.com/service-oriented-architecture
- https://aita.gov.vn/tiep-can-chuyen-doi-so-su-dung-kien-truc-microservice
- https://learn.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-microservice-architecture