Microservice là gì? Những kiến thức bổ ích bạn nên bỏ túi ngay

Mục lục

1. Microservice là gì nhỉ?

Microservice là thuật ngữ được sử dụng để chỉ đến các dịch vụ nhỏ, có sự tác biệt đại diện cho một phần nhỏ tương tác trong Business Domain. Bạn có thể hiểu đơn giản hơn thì Microservice chính là một kiểu kiến thức phần mềm. Trong phần mềm, các Module được chia thành nhiều Service nhỏ được gọi là Microservice và chúng được đặt trên một Server riêng, điều này khiến chúng dễ dàng hơn trong việc Scale và nâng cấp ứng dụng.

Trong kiến trúc Microservice, các dự án – Service tồn tại dưới dạng độc lập về xử lý – Process, lưu trữ và Request. Ví dụ khi bạn xây dựng dưa trên Microservice một hệ thống bán hàng thì giả sử khi có một đơn hàng sẽ được mô tả với các thông tin gồm có: Hôm nay có một anh B, tạo một đơn hàng A tại cửa hàng D và được xuất từ kho C”. Với những thông tin này, bạn cần phải có tối thiểu 4 Service (dự án) với lưu trữ độc lập – Database. 4 Service dịch vụ khác nhau được tạo ra trên hệ thống theo kiến thức Microservice, chúng chạy tối chiểu với 4 Instance khác nhau.

2. Microservice có ưu điểm và nhược điểm như thế nào?

Microservice mang đến nhiều ưu điểm cho người dùng, đặc biệt là các nhà phát triển phần mềm, ứng dụng hiện nay. Tuy nhiên bên cạnh những ưu điểm nổi bật thì nó cũng tồn tại một số nhược điểm. Đọc ngay những thông tin chia sẻ trong bài viết này để hiểu rõ về ưu nhược điểm của Microservice là gì nhé!

2.1. Ưu điểm của Microservice mang lại là gì?

Hiện này có rất nhiều các ứng dụng với dữ liệu rất lớn và thường xuyên cập nhật như Facebook, Instagram,.. Để giúp việc nâng cấp trở lên dễ dàng hơn bao giờ hết thì các nhà phát triển phần mềm, ứng dụng thường giải quyết vấn đề này bằng việc tách thành các Service nhỏ, mỗi Service đảm nhận quản lý một cơ sở dữ liệu riêng và được thiết kế nằm trên một Server riêng biệt, tách chúng với nhau, điều này mang đến cho Microservice nhiều ưu điểm khi ứng dụng và sử dụng như sau:

2.1.1. Cho phép các ứng dụng lớn và phức tạp dễ dàng Deployment và Continuous Delivery

+ Microservice giúp cải thiện cả khat bảo trì của mỗi Service tương đối nhỏ từ đó giúp dễ dàng thay đổi và dễ hiểu hơn rất nhiều.

+ Giúp tăng khả năng trong việc Testing dễ dàng hơn rất nhiều bởi các Service nhanh hơn, nhỏ hơn và dễ dàng để Test hơn.

+ Tạo khả năng giúp triển khai tốt hơn do các Service được triển khai dưới dạng độc lập và tách biệt với nhau.

+ Nó chế phép các Service được phát triển từ các nhóm làm việc khác nhau. Mỗi nhóm có thể chủ động phát triển, triển khai, thử nghiệm, hoặc tiến hành mở rộng quy mô dịch vụ của mình một cách độc lập với các nhóm khác trong cùng công ty.

2.1.2. Giúp giảm thiểu rủi ro có thể gặp phải

Nếu xuất hiện lỗi trong một Service thì chỉ có Service đó bị ảnh hưởng thôi chứ không hề ảnh hưởng đến các Service khác. Trong khi có một Service bị lỗi, các Service khác vẫn tiếp tục thực hiện nhiệm vụ và xử lý các yêu cầu được đưa ra. Nếu trong kiến trúc một khối khi có một thành phần hoạt động bị lỗi sẽ làm ảnh hưởng đến toàn bộ hệ thống và tốn thời gian để sửa hơn.

2.1.3. Dễ dàng thay thế hoặc nâng cấp các công nghệ mới

Khi tiến hành triển khai các Services bạn có thể lựa chọn sử dụng nhiều công nghệ mới nhất hiện này để ứng dụng. Bạn cần tiến hành thay đổi với các Service hiện có của mình để tiến hành nâng cấp hoặc thay đổi công nghệ mới nhanh chóng hơn.

Đó là những ưu điểm nổi bật của Microservice mang đến cho các phần mềm, ứng dụng được các nhà phát triển sử dụng Service hiện nay. Bên cạnh những ưu điểm thì nó cũng tồn tại một vài nhược điểm bạn cần nắm được những thông tin nay trong phần chia sẻ tiếp theo của bài viết.

2.2. Nhược điểm của Microservice là gì?

Nhược điểm đầu tiên bạn có thể nhận biết được chính qua tên gọi Microservice này, bởi nó chỉ đến kích thước nhỏ của dịch vụ, một số các Service đề xuất các dịch vụ ở cở siêu nhỏ chỉ chứa dưới 100 dòng code mà thôi, việc chia quá nhiều các Service có thể dẫn đến manh mún, quá nhiều và gây khó khăn trong việc kiểm soát. Dữ liệu bị phần tác quá mức cần thiết trong dự liệu cục bộ.

Tiếp đó nhược điểm của Microservice đó là phải xử lý sự cố khi xảy ra hiện tượng kết nối chậm hoặc lỗi khi thông điệp không gửi đi được hoặc thông điệp được gửi vào các thời điểm khác nhau đến nhiều đích khác nhau.

Nhược điểm của Microservice thể hiện về đảm bảo giao dịch phân tác và cập nhật dữ liệu đúng đắn và các dịch vụ nhỏ khác biệt khiến chúng trở lên khó khăn hơn nhiều. Điều này khiến nhiều khi không thể đảm bảo việc giao dịch được cập nhật liên tục vào nhiều bảng trong một cơ sở dữ liệu trung tâm được.

Khi giao dịch bị thực hiện phân tác, theo nguyên tắc CAP thì nó không thể thỏa mãn cả 3 điều kiện đó là: dữ liệu ở thời điểm khác nhau trong mạng phải giống nhau – Consistency, yêu cầu gửi đi phải có phản hồi – Availability, hệ thống vẫn hoạt động ngay cả khi bị lỗi – Partition Tolerance.

Khi bạn quản lý và tiến hành triển khả Microservice theo phương thức làm thủ công thì càng khiến nó trở thành một khối phức tạp và khó kiểm soát.

Đặc biệt là các doanh nghiệp cần một nhóm nhiều nhà phát triển với hiểu biết và kỹ năng tuyệt vời để có thể thiết kế và triển khai các Software Architect xịn sò.

Đó là một những nhược điểm của Microservice đang tồn tại.

3. Khi thiết kế Microservice cần lưu ý đến một vài điều

Khi tiến hành thiết kế Microservice bạn cần chú ý đến một vài điều như sau:

3.1. Những cách hiểu sau về Microservice

Có rất nhiều người đang hiểu sai về Microservice, việc hiểu sai này sẽ ảnh hưởng nghiêm trọng đến việc ứng dụng và tiến hành thiết kế Microservice đó nhé! Có thể kể đến một số các hiểu sai về Microservice như sau:

Thứ nhất, số dòng kích cơ hoặc số dòng code của một đội lập trình chỉ là số tồi. Việc phát triển Service với số lượng ít các dòng code hoặc một đội nhỏ có thể được thực hiện, tuy nhiên điều này lại hoàn toàn vi phạm các nguyên tắc trong kiến trúc của Microservice.

Thứ hai, mọi người thường hay nhầm lẫn bởi từ Micro điều này khiến nhiều người cho rằng nên tạo ra một Service nhỏ hết mức. Tuy nhiên điều này hoàn toàn là một cách hiểu sai.

Thứ ba, trong SOA, các Service thường trở thành các Monolithic với rất nhiều hàm và có chức năng hỗ trợ khác nhau. Điều này khiến các nhà phát triển dán nhãn Microservice lại hoàn toàn bị lạc hướng và không hề mang lại lúc nào của kiến trúc Microservice cần có.

3.2. Thiết kế Microservice cần tuân thủ những gì?

Khi thiết kế Microservice, các nhà phát triển cần phải đảm bảo tuân thủ các điều như sau:

Thứ nhất, SRP – Single Responsibility Principle là một Service với phạm vị và có chức năng giới hạn, nó thường dùng và chỉ tập trung vào một nhiệm vụ giúp quá trình triển khai và phát triển dịch vụ trở lên nhanh chóng hơn mà thôi.

Thứ hai, trong quá trình bàn tiến hành thiết kế các Microservice, nên giới hành và xác định cụ thể các Service theo chức năng cụ thể và dựa thể nghiệp vụ thực tế.

Thứ ba, khi thiết kế phải đảm bảo Microservice có thể triển khai và phát triển một cách độc lập.

Thứ tư, trong quá trình thiết kế mục tiêu được đặt ra đó chính là phạm vị của Microservice phải phục vụ cho một nghiệp vụ cụ thể nào đó chứ không chỉ đơn giản là tiến hành làm nhiệm vụ nhỏ hơn. Một Service có kích thước đủ để đáp ứng yêu cầu của một chức năng hệ thống có thể đánh giá là kích thước hợp lý nhất.

Thứ năm, một Microservice không nên có chứa quá nhiều hàm hoặc các chức năng hỗ trợ xung quanh và có định dạng gửi tin nhắn hoặc thông báo đơn giản.

3.3. Sử dụng kiến trúc Microservice khi nào?

Bạn đang tự hỏi khi nào thì nên sử dụng kiến thức Microservice đúng không? Thường bạn sẽ không gặp các vấn đề mà Microservice giải quyết khi phát triển các phiên bản đầu tiên của ứng dụng hoặc phần mềm đâu nhé! Đặc biệt khi bạn sử dụng một kiến trúc phân tầng và phức tạp ngay phiên bản phát triển đầu tiên sẽ làm chậm quá trình phát triển của ứng dụng. Đây là một vấn đề lớn mà nhiều doanh nghiệp mới phát triển các ứng dụng đi kèm mô hình kinh doanh của mình thường gặp phải.

Vì vậy một kiến thức Monolithic vẫn đủ tốt với bạn khi bạn có một hệ thống phức tạp để thực hiện việc quản lý Monolithic Architecture hoặc bạn có thể xác định cụ thể tương lai của ứng dụng muốn hướng đến là gì.

3.4. Duy trì tính nhất quán của dữ liệu cần phải làm thế nào?

Mỗi Service thường có một cơ sở dữ liệu riêng điều này tạo nên tính độc lập cho chúng. Trong việc duy trì tính nhất quán dữ liệu giữa các Service, các nhà phát triển mặt một thách thức lớn đó chính là 2 phase Commit hoặc Distributed Transactions không phải là một sự lựa chọn tối ưu khi sử dụng, vì thế nên sử dụng Saga Pattern trong một ứng dụng.

Một Service Publishes của một sự kiện khi dữ liệu của nó của sự thay đổi, các Service khác có nhiệm vụ cập nhật dữ liệu và Consume Event đó. Trong trường hợp một Transaction thất bại, để hoàn tác các Transactions trước thì Saga cần thực hiện một loạt các Transactions. Bạn có thể sử dụng Event Sourcing và Transaction Log Tailing để Updating và Publishing các sự kiện – Event, đây là cách sử dụng đánh tin cậy nhất.

Qua chia sẻ trong bài viết này về kiến thức liên quan đến Microservice, bạn đã hiểu được Microservice là gì, ưu nhược điểm của nó, các lưu ý khi thiết kế Microservice hiện nay. Là một nhà phát triển hoặc một lập trình viên, chắc chắn đây là những kiến thức cơ bản nhất bạn phải nắm được và hiểu rõ về chúng, đồng thời áp dụng hiệu quả trong quá trình phát triển các ứng dụng hoặc phần mềm tiện ích hiện nay cho hoạt động kinh doanh của các doanh nghiệp.

Đăng ngày 20/11/2020, 23 lượt xem