Trong kỹ thuật phần mềm, kiến trúc microservices là một mẫu kiến trúc sắp xếp ứng dụng thành một tập hợp các dịch vụ tách rời, nhỏ gọn, giao tiếp thông qua các giao thức nhẹ. Một trong những mục tiêu của nó là cho phép các nhóm phát triển và triển khai dịch vụ của họ một cách độc lập. Do đó, các tổ chức có thể phát triển phần mềm với tốc độ tăng trưởng và khả năng mở rộng nhanh chóng, cũng như sử dụng các dịch vụ có sẵn dễ dàng hơn.
1. Microservices là gì
Microservices là một kiến trúc phần mềm trong đó một ứng dụng được xây dựng dưới dạng tập hợp của nhiều dịch vụ nhỏ, mỗi dịch vụ thực hiện một chức năng riêng biệt và có thể hoạt động độc lập với nhau. Mỗi microservice có thể được phát triển, triển khai, và mở rộng một cách riêng lẻ, thường giao tiếp với nhau thông qua các giao thức nhẹ như HTTP/HTTPS hoặc các hệ thống messages như RabbitMQ hoặc Kafka.
Microservices có thể được viết bằng nhiều ngôn ngữ lập trình và framework khác nhau, và mỗi dịch vụ hoạt động như một ứng dụng nhỏ độc lập.
2. Microservices hoạt động như thế nào?
Microservices hoạt động bằng cách chia nhỏ một ứng dụng phức tạp thành các phần nhỏ, độc lập, giao tiếp và làm việc cùng nhau, cung cấp tính linh hoạt, khả năng mở rộng, và dễ bảo trì.
2.1 Cấu trúc module
Kiến trúc microservices chia nhỏ các ứng dụng lớn, nguyên khối thành các dịch vụ nhỏ hơn và độc lập nhau.
Mỗi dịch vụ là một mô-đun chứa với một khả năng hoặc chức năng cụ thể.
Cấu trúc mô-đun này thúc đẩy tính linh hoạt, dễ phát triển và bảo trì đơn giản.
2.2 Chức năng độc lập
Mỗi microservice được thiết kế để xử lý một chức năng cụ thể.
Ví dụ, một dịch vụ có thể quản lý xác thực người dùng, trong khi một dịch vụ khác xử lý các chức năng danh mục sản phẩm.
Sự độc lập này cho phép phát triển và bảo trì chuyên biệt cho từng dịch vụ.
2.3 Giao tiếp
Microservices giao tiếp với nhau, yêu cầu, trao đổi thông qua các API.
Sự giao tiếp tiêu chuẩn hóa này cho phép tính tương tác và linh hoạt trong việc tích hợp các dịch vụ.
2.4 Độc lập và cập nhật
Microservices hoạt động độc lập, cho phép cập nhật hoặc sửa đổi một dịch vụ mà không ảnh hưởng đến toàn bộ hệ thống.
Sự tách rời các dịch vụ này giảm rủi ro gián đoạn toàn hệ thống trong quá trình cập nhật, giúp dễ dàng triển khai các thay đổi và cải tiến.
Ngoài ra, Microservices góp phần tăng độ bền của hệ thống bằng cách đảm bảo rằng nếu một dịch vụ gặp vấn đề hoặc sự cố, nó không làm sập toàn bộ hệ thống.
2.5 Khả năng mở rộng
Microservices cung cấp khả năng mở rộng bằng cách cho phép thêm các phiên bản của các dịch vụ cụ thể.
Nếu một chức năng cụ thể yêu cầu thêm tài nguyên, các phiên bản bổ sung của microservice đó có thể được triển khai để xử lý nhu cầu tăng lên.
Khả năng mở rộng này rất quan trọng để thích ứng với các khối lượng công việc thay đổi.
2.6 Cải tiến liên tục
Tính chất mô-đun của microservices tạo điều kiện cho cải tiến liên tục.
Các nhóm phát triển có thể làm việc độc lập và phát hành các bản cập nhật cho các dịch vụ tương ứng của họ.
Sự linh hoạt này cho phép hệ thống phát triển nhanh chóng và đáp ứng các yêu cầu hoặc nhu cầu thay đổi của người dùng.
3. Các thành phần chính của microservices
Kiến trúc microservices bao gồm nhiều thành phần làm việc cùng nhau. Các thành phần chính của microservices bao gồm:
API Gateway: API Gateway là điểm vào trung tâm cho các khách hàng bên ngoài tương tác với các microservices. Nó quản lý các yêu cầu, xử lý xác thực và định tuyến các yêu cầu đến các microservices phù hợp.
Service Registry and Discovery: Thành phần này theo dõi các vị trí và địa chỉ mạng của tất cả các microservices trong hệ thống. Service discovery đảm bảo rằng các dịch vụ có thể định vị và giao tiếp với nhau một cách flexible.
Load Balancer: Bộ cân bằng tải phân phối lưu lượng mạng đến nhiều phiên bản của các microservices. Điều này đảm bảo rằng khối lượng công việc được phân phối đều, tối ưu hóa việc sử dụng tài nguyên và ngăn chặn bất kỳ dịch vụ nào trở thành điểm tắc nghẽn.
Containerization: Các container, như Docker, bao bọc các microservices và các phụ thuộc của chúng. Các công cụ điều phối, như Kubernetes, quản lý việc triển khai, mở rộng và vận hành các container, đảm bảo việc sử dụng tài nguyên hiệu quả.
Event Bus/Message Broker: Một bus sự kiện hoặc message broker tạo điều kiện giao tiếp và phối hợp giữa các microservices. Nó cho phép các dịch vụ xuất bản và đăng ký các sự kiện, hỗ trợ giao tiếp không đồng bộ và tách rời.
Centralized Logging and Monitoring: Các công cụ logging và monitoring tập trung giúp theo dõi hiệu suất và tình trạng của các microservices. Chúng cung cấp cái nhìn sâu sắc về hành vi hệ thống, phát hiện các vấn đề và hỗ trợ trong việc khắc phục sự cố.
Database per Microservice: Mỗi microservice thường có cơ sở dữ liệu riêng, đảm bảo tính tự trị của dữ liệu. Điều này cho phép các dịch vụ quản lý và mở rộng lưu trữ dữ liệu của mình một cách độc lập theo các yêu cầu cụ thể của chúng.
Caching: Các cơ chế caching có thể được triển khai để cải thiện hiệu suất bằng cách lưu trữ dữ liệu được truy cập thường xuyên gần hơn với các microservices. Điều này giảm nhu cầu phải truy xuất lại cùng một dữ liệu từ các cơ sở dữ liệu.
Fault Tolerance and Resilience Components: Việc triển khai các thành phần để chịu lỗi, như circuit breakers và cơ chế thử lại, đảm bảo rằng hệ thống có thể xử lý sự cố trong các microservices một cách tối ưu và phục hồi mà không ảnh hưởng đến toàn bộ chức năng.
One Reply to “Giới thiệu về kiến trúc microservices – Phần 1”