Giống như cái tên của nó, kiến trúc microservices là một phương pháp tiếp cận để xây dựng một ứng dụng máy chủ theo một tập hợp của nhiều các service nhỏ. Điều đó có nghĩa là kiến trúc microservices chủ yếu hướng đến back-end, mặc dù cách tiếp cận này cũng đang được áp dụng cho front-end. Mỗi dịch vụ chạy trong một quy trình riêng của nó và giao tiếp với các quy trình khác bằng các giao thức như HTTP / HTTPS, WebSockets hoặc AMQP. Mỗi microservice triển khai một end-to-end domain cụ thể hoặc năng lực kinh doanh trong một ranh giới ngữ cảnh nhất định và mỗi microservice phải được phát triển riêng biệt và có thể triển khai một cách độc lập. Cuối cùng, mỗi microservice phải sở hữu mô hình domain data và domain logic (chủ quyền và quản lý dữ liệu phi tập trung) liên quan và có thể dựa trên những công nghệ lưu trữ dữ liệu khác nhau (SQL, NoSQL) và các ngôn ngữ lập trình khác nhau.
Kích thước của một microservice là bao nhiêu? Khi phát triển một microservice, kích thước không phải là điểm quan trọng. Thay vào đó, điểm quan trọng là phải tạo ra các service kết hợp rời rạc để bạn có quyền tự chủ về mặt phát triển, triển khai và mở rộng cho từng service. Tất nhiên là khi xác định và thiết kế microservices, bạn nên cố gắng làm cho chúng càng nhỏ càng tốt miễn là không có quá nhiều phụ thuộc trực tiếp với các microservices khác. Quan trọng hơn kích thước của microservice đó là sự gắn kết nội bộ mà nó phải có sự độc lập của nó với các service khác.
Tại sao lại là kiến trúc microservices? Nói một cách ngắn gọn thì nó cung cấp tính linh hoạt lâu dài. Microservices cho phép khả năng bảo trì tốt hơn trong các hệ thống phức tạp, lớn và có khả năng mở rộng cao bằng cách cho phép bạn tạo các ứng dụng dựa trên nhiều dịch vụ có thể triển khai độc mà mỗi dịch vụ đó đều có vòng đời chi tiết và độc lập.
Thêm một lợi ích khác đó là microservices có thể mở rộng một cách độc lập. Thay vì có một ứng dụng nguyên khối và bạn phải mở rộng quy của chúng theo kiểu một unit (đơn vị), thì bây giờ bạn có thể mở rộng quy mô theo các dịch vụ nhỏ cụ thể. Bằng cách đó, bạn chỉ việc mở rộng khu vực chức năng cần thêm khả năng xử lý hoặc băng thông mạng để đáp ứng nhu cầu, thay vì mở rộng các khu vực không cần thiết khác của ứng dụng. Điều đó đồng nghĩa với việc chi phí được tiết kiệm hơn vì bạn cần ít phần cứng hơn.
Hình ảnh: Triển khai nguyên khối so với cách triển khai microservices
Như hình ở trên cho thấy rằng trong cách tiếp cận nguyên khối truyền thống, một ứng dụng sẽ mở rộng quy mô bằng cách sao chép toàn bộ ứng dụng trong một số máy chủ hoặc VM. Đối với cách tiếp cận microservices, chức năng được tách biệt trong các service nhỏ hơn, vì vậy mỗi dịch vụ có thể mở rộng quy mô một cách độc lập. Phương pháp tiếp cận microservices cho phép thay đổi linh hoạt và lặp lại nhanh chóng từng microservice, vì bạn có thể thay đổi từng khu vực nhỏ, cụ thể của các ứng dụng lớn và phức tạp.
Kiến trúc các ứng dụng dựa trên các microservice tách biệt cho phép tích hợp liên tục và áp dụng phân phối liên tục. Cấu tạo tách biệt của các ứng dụng cho phép bạn chạy và kiểm tra các microservice một cách cô lập và phát triển chúng một cách riêng biệt trong khi vẫn duy trì mối liên kết rõ ràng giữa chúng. Miễn là bạn không thay đổi bề mặt chung và mối liên kết giữa chúng, bạn có thể thay đổi việc triển khai nội bộ của bất kỳ microservice nào hặc thêm chức năng mới mà không phá vỡ các microservices khác.
Sau đây là các khía cạnh quan trọng để tạo nên thành công trong việc đi vào sản xuất với hệ thống dựa trên microservices: