Microservice là gì? Ưu nhược điểm của Microservice?
1. Microservice – kiến trúc Microservice là gì?
Microservices hay còn được gọi là kiến trúc microservice. Đây là một kiểu kiến trúc cấu trúc một ứng dụng như một tập hợp các dịch vụ như:
- Có thể bảo trì và kiểm tra cao
- Khớp nối lỏng lẻo
- Có thể triển khai độc lập
- Được tổ chức xung quanh khả năng kinh doanh
- Thuộc sở hữu của một nhóm nhỏ
Kiến trúc microservice cho phép phân phối nhanh chóng, thường xuyên và đáng tin cậy các ứng dụng lớn, phức tạp. Nó cũng cho phép một tổ chức phát triển nền tảng công nghệ của mình. Đặc biệt microservice sẽ có một số tính chất các bạn cần nắm rõ như sau
- Các dịch vụ trong kiến trúc microservice có thể triển khai độc lập
- Dịch vụ được tổ chức xung quanh khả năng kinh doanh hạt mịn. Mức độ chi tiết của microservice rất quan trọng – bởi vì đây là chìa khóa cho cách tiếp cận này khác với SOA.
- Các dịch vụ có thể được thực hiện bằng các ngôn ngữ lập trình, cơ sở dữ liệu, môi trường phần cứng và phần mềm khác nhau, tùy thuộc vào những gì phù hợp nhất. Điều này không có nghĩa là một microservice duy nhất được viết bằng một bản vá các ngôn ngữ lập trình.
- Một microservice không phải là một lớp trong một ứng dụng nguyên khối. Thay vào đó, nó là một phần chức năng kinh doanh khép kín với các giao diện rõ ràng và có thể, thông qua các thành phần bên trong của chính nó, thực hiện một kiến trúc phân lớp.
2. Ưu và nhược điểm của Microservice?
Hiện nay ứng dụng microservice rất là phổ biến trong thiết kế website. Trong lĩnh vực thiết kế website bán hàng, thiết kế website startup thì mircroservice được ứng dụng rất nhiều. VD việc tích hợp website bán hàng với hệ thống quản lý đa kênh, hệ thống chatbox, hệ thống CRM…Vậy tại sao họ lại ứng dụng microservice nhiều đến vậy thì cùng mình đi tìm hiểu ưu điểm nha.
Ưu điểm:
- Cho phép dễ dàng continuous delivery và deployment các ứng dựng lớn, phức tạp nhờ cải thiện khả năng bảo trì – mỗi service tương đối nhỏ do đó dễ hiểu và thay đổi hơn, khả năng testing dễ dàng hơn – các services nhỏ hơn và nhanh hơn để test hoặc khả năng triển khai tốt hơn – các services có thể được triển khai độc lập.
- Cho phép các services được phát triển bởi những team khác nhau. Mỗi team có thể phát triển, thử nghiệm, triển khai và mở rộng quy mô dịch vụ của mình một cách độc lập với tất cả các team khác.
- Giảm thiểu các rủi ro như lỗi trong một service thì chỉ có service đó bị ảnh hưởng. Các services khác sẽ tiếp tục xử lý các yêu cầu.
- Khi triển khai các services bạn có thể lựa chọn nhiều công nghệ mới. Tương tự khi có thay đổi lớn đối với các services hiện có bạn có thể dễ dàng thay đổi công nghệ.
Nhược điểm:
- Khi triển khai hoặc quản lý microservices nếu làm thủ công theo cách đã làm với ứng dụng một khối thì sẽ phức tạp hơn rất nhiều.
- Phải xử lý sự cố khi kết nối chậm, lỗi khi thông điệp không gửi được hoặc thông điệp gửi đến nhiều đích đến vào các thời điểm khác nhau.
- Các nhà phát triển phải đối phó với sự phức tạp của việc tạo ra một hệ thống phân tán như: khó khăn trong việc đảm bảo toàn vẹn CSDL nếu triển khai theo kiến trúc cơ sở dữ liệu phân vùng, cần implement việc communication giữa các inter-services,…