Microservices là gì? Những ý nghĩa của Microservices

Blog Nghialagi.org giải đáp ý nghĩa Microservices là gì

  • Chào mừng bạn đến blog Nghialagi.org chuyên tổng hợp tất cả hỏi đáp định nghĩa là gì, thảo luận giải đáp viết tắt của từ gì trong giới trẻ, hôm nay chúng ta cùng tìm hiểu một khái niệm mới đó là Microservices là gì? Những ý nghĩa của Microservices. Giới thiệu về Microservices (kiến trúc nhiều dịch vụ nhỏ). Ưu, nhược, hạn chế của một kiến trúc Microservices
Ưu, nhược, hạn chế của một kiến trúc Microservices - Nghialagi.org
Ưu, nhược, hạn chế của một kiến trúc Microservices – Nghialagi.org

Định nghĩa Microservices là gì?

  • Trong tiếng anh, micro có nghĩa là nhỏ, vi mô. Vậy Microservice, như tên của nó, đó chính là chia một khối phần mềm thành các service nhỏ hơn, có thể triển khai trên các server khác nhau. Mỗi service sẽ xử lý từng phần công việc và được kết nối với nhau thông qua các các giao thức khác nhau, như http, SOA, socket, Message queue (Active MQ, Kafka)… để truyền tải dữ liệu.
  • Trước khi Microservices xuất hiện, các ứng dụng thường phát triển theo mô hình Monolithic architecture (Kiến trúc một khối). Có nghĩa là tất cả các module (view, business, database) đều được gộp trong một project, một ứng dụng được phát triển theo mô hình kiến trúc một khối thường được phân chia làm nhiều module. Nhưng khi được đóng gói và cài đặt sẽ thành một khối (monolithic). Lợi ích của mô hình kiến trúc một khối đó là dễ dàng phát triển và triển khai. Nhưng bên cạnh đó nó cũng có nhiều hạn chế ví dụ như khó khăn trong việc bảo trì, tính linh hoạt và khả năng mở rộng kém, đặc biệt với những ứng dụng doanh nghiệp có quy mô lớn. Đó chính là lí do ra đời của kiến trúc Microservices.

Những đặc điểm của microservice

  1. Decoupling – Các service trong một hệ thống phần lớn được tách rời. Vì vậy, toàn bộ ứng dụng có thể dễ dàng được xây dựng, thay đổi và thu nhỏ.
  2. Componentization – Microservices được coi là các thành phần độc lập có thể dễ dàng thay thế và nâng cấp.
  3. Business Capabilities – mỗi một thành phần trong kiến trúc microservice rất đơn giản và tập trung vào một nhiệm vụ duy nhất.
  4. Autonomy – các lập trình viên hay các nhóm có thể làm việc độc lập với nhau trong quá trình phát triển.
  5. Continous Delivery – Cho phép phát hành phần mềm thường xuyên, liên tục.
  6. Responsibility .
  7. Decentralized Governance – không có mẫu chuẩn hóa hoặc bất kỳ mẫu công nghệ nào. Được tự do lựa chọn các công cụ hữu ích tốt nhất để có thể giải quyết vấn đề.
  8. Agility – microservice hỗ trợ phát triển theo mô hình Agile.

Ưu điểm.

Kiến trúc Microservices được sinh ra để khắc phục những hạn chế của kiến trúc một khối.

  • Independent Development – Tất cả các service có thể được phát triển dễ dàng dựa trên chức năng cá nhân của từng service. Có thể chia nhỏ để phát triển độc lập.
  • Independent Deployment – Có thể được triển khai riêng lẻ trong bất kỳ ứng dụng nào.
    Fault Isolation – khi một service của ứng dụng không hoạt động, hệ thống vẫn tiếp tục hoạt động.
  • Mixed Technology Stack – Các ngôn ngữ và công nghệ khác nhau có thể được sử dụng để xây dựng các service khác nhau của cùng một ứng dụng.
  • Granular Scaling

Kiến trúc Microservices giúp đơn giản hóa hệ thống, chia nhỏ hệ thống ra làm nhiều service nhỏ lẽ dể dàng quản lý và triển khai từng phần so với kiến trúc nguyên khối. Phân tách rõ ràng giữa các service nhỏ. Cho phép việc mỗi service được phát triển độc lập. Cũng như cho phép lập trình viên có thể tự do chọn lựa technology stack cho mỗi service mình phát triển. mỗi service có thể được triển khai một cách độc lập (VD: Mỗi service có thể được đóng gói vào một docker container độc lập, giúp giảm tối đa thời gian deploy). Nó cũng cho phép mỗi service có thể được scale một cách độc lập với nhau. Việc scale có thể được thực hiện dễ dàng bằng cách tăng số instance cho mỗi service rồi phân tải bằng load balancer.

Hạn chế.

  • Kiến trúc Microservices đang là một xu hướng, nhưng nó cũng có nhược điểm của nó. Microservice khuyến khích làm nhỏ gọn các service, nhưng khi chia nhỏ sẽ dẫn đến những thứ vụn vặt, khó kiểm soát. Hơn nữa chính từ đặc tính phân tán khiến cho các lập trình viên phải lựa chọn cách thức giao tiếp phù hợp khi xử lí request giữa các service.
  • Hơn nữa việc quản lí nhiều database, và transaction giữa các service trong một hệ thống phân tán cũng là một khó khăn không nhỏ. Hay khi thực hiện test một service, bạn cũng cần test các service có liên quan.
  • Triển khai microservice cũng sẽ phức tạp hơn so với ứng dụng kiến trúc một khối, cần sự phối hợp giữa nhiều service, điều này không đơn giản như việc triển khai WAR trong một ứng dụng kiến trúc một khối.
  • Chung quy lại, Micro-services là một trong những từ khóa hot trong cộng đồng kiến trúc phần mềm quan và việc chuyển đổi sang Micro-services luôn là chủ đề mà các chuyên gia phần mềm hàng đầu quan tâm nhất cho đến thời điểm hiện tại.

Nguồn tham khảo:

Kết luận

Cảm ơn bạn đã đọc bài viết của blog nghialagi.org, hy vọng những thông tin giải đáp Microservices là gì? Những ý nghĩa của Microservices sẽ giúp bạn đọc bổ sung thêm kiến thức hữu ích. Nếu bạn đọc có những đóng góp hay thắc mắc nào liên quan đến định nghĩa Microservices là gì? vui lòng để lại những bình luận bên dưới bài viết này. Blog nghialagi.org luôn sẵn sàng trao đổi và đón nhận những thông tin kiến thức mới đến từ quý độc giả

Co-founder tại Blog Nghilagi.org Giải đáp thắc mắc bạn đọc. Tra thuật ngữ nhanh và chính xác nhất. Nghĩa Là Gì - Giải thích mọi câu hỏi kỳ quặc nhất Hãy cùng nhau chia sẻ những kiến thức bổ ích