Chào các bạn!! Microservices là một trong những từ thông dụng lớn nhất trong những năm gần đây. Dù đã có kha khá nhiều bài viết về nó nhưng mình đoán được các bạn cũng có thể chưa hình dung ra Microservices là cái quái gì? Giờ mình sẽ cùng các bạn tìm hiểu về nó thông qua những khái niểm đơn giản và trực quan nhất nhé.
Microservices là gì?
Trên thực tế có rất nhiều định nghĩa khác nhau về Microservices. Hiểu một cách đơn giản thì nó là một kiểu Kiến trúc phần mềm (Software Achitectural Patern). Nó cho phép tách ứng dụng lớn thành các phần độc lập nhỏ hơn, với mỗi phần có phạm vi trách nhiệm riêng. Đồng nghĩa nó dễ dàng nâng cấp và scale ứng dụng!
Microservices dùng để làm gì?
- Thông thường, Microservices được sử dụng để tăng tốc độ phát triển ứng dụng, được xây dựng bằng Java rất phổ biến, đặc biệt là Spring Boot.
- Đã có kha nhiều bài viết so sánh Microservices với kiến trúc Hướng dịch vụ(SOA). Cả hai đều có cùng mục tiêu, đó là chia nhỏ các ứng dụng nguyên khối thành các thành phần nhỏ hơn để các dịch vụ được xử lý tốt thông qua các giao thức nhẹ.
Để cho mọi người dễ hình dung hơn thì ở đây mình sẽ lấy ví dụ minh họa về phần mềm được áp dụng kiến trúc Microservices.
Hình dưới đây sẽ minh họa cho việc phần mềm không áp dụng Microservices và nó được xây dựng theo 1 khối độc lập (mội ứng dụng sẽ chứa tất cả các thành phần)
Còn hình dưới sẽ minh họa việc ứng dụng ở trên khi được xây dựng theo kiến trúc Microservices
Kiến trúc Microservice bao gồm một số thành phần nhỏ, được thiết kế tốt và tương tác qua các message.
Những đặc điểm cơ bản của Microservices
Decoupling: Dễ dàng xây dựng, thay đổi, và thu nhỏ toàn bộ các ứng dụng trên các server trong một hệ thống được phân chia tách biệt.
Componentization: Dễ dàng thay thế và nâng cấp các thành phần độc lập Microservices.
Business Capabilities: Mỗi thành phần nhỏ thuộc kiến trúc Microservices đều đơn giản và chỉ tập trung vào nhiệm vụ duy nhất của nó.
Continous Deliver: Các phần mềm được cho phép phát hành một cách * thường xuyên và liên tục.
Decentralized Governance: Bạn có thể thoải mái lựa chọn các công cụ hữu ích và tốt nhất bất kỳ để giải quyết vấn đề của mình bởi nó không có mẫu chuẩn hoá hay công nghệ nào cả.
Agility: Được hỗ trợ và phát triển theo mô hình Agile
Ưu và nhược điểm của Microservices
Mình sẽ cùng các bạn hiểu hơn nữa về Microservices thì nội dung dưới đây sẽ là một số những ưu, nhược điểm mà bạn cần biết để cải thiện lợi thế và khắc phục hạn chế của kiến trúc này:
Ưu điểm:
- Khả năng quản lý, nâng cấp, bảo trì hay bổ sung từng tính năng riêng lẻ một cách dễ dàng mà không ảnh hưởng tới tổng thể của dự án nhờ sự tách nhỏ của các dịch vụ.
- Khi chia nhỏ các service, team size sẽ giảm và mọi người sẽ làm việc hiệu quả hơn
- Giảm thiểu một cách tối đa sự phức tạp và rắc rối của một hệ thống.
Nhược điểm:
- Các chức năng khi được chia nhỏ quá nhiều sẽ dẫn đến khó quản lý và khiến dữ liệu bị phân tán.
- Cần một đội ngũ thật ngon để thiết kế và triển khai bao gồm software architect xịn
- Triển khai các dịch vụ Microservices sẽ rất khó và phức tạp nếu như thực hiện bằng cách thủ công.
Bình luận
Bài viết rất hay.