Kiến trúc Microservice - Giới thiệu
Microservice là một phương pháp luận phát triển ứng dụng dựa trên dịch vụ. Trong phương pháp luận này, các ứng dụng lớn sẽ được chia thành các đơn vị dịch vụ độc lập nhỏ nhất. Microservice là quá trình thực hiện Kiến trúc hướng dịch vụ (SOA) bằng cách chia toàn bộ ứng dụng thành một tập hợp các dịch vụ được kết nối với nhau, trong đó mỗi dịch vụ sẽ chỉ phục vụ một nhu cầu kinh doanh.
Khái niệm về Đi vi mô
Trong kiến trúc hướng dịch vụ, toàn bộ gói phần mềm sẽ được chia nhỏ thành các đơn vị kinh doanh nhỏ, được kết nối với nhau. Mỗi đơn vị kinh doanh nhỏ này sẽ giao tiếp với nhau bằng các giao thức khác nhau để mang lại hoạt động kinh doanh thành công cho khách hàng. Bây giờ câu hỏi là, Kiến trúc Microservice (MSA) khác với SOA như thế nào? Nói một cách dễ hiểu, SOA là một mẫu thiết kế và Microservice là một phương pháp triển khai để thực hiện SOA hoặc chúng ta có thể nói Microservice là một loại SOA.
Sau đây là một số quy tắc mà chúng ta cần ghi nhớ khi phát triển một ứng dụng theo hướng Microservice.
Independent - Mỗi microservice phải có thể triển khai độc lập.
Coupling - Tất cả các microservices phải được kết hợp lỏng lẻo với nhau để những thay đổi trong cái này sẽ không ảnh hưởng đến cái kia.
Business Goal - Mỗi đơn vị dịch vụ của toàn bộ ứng dụng phải là đơn vị nhỏ nhất và có khả năng thực hiện một mục tiêu kinh doanh cụ thể.
Chúng ta hãy xem xét một ví dụ về cổng mua sắm trực tuyến để hiểu sâu hơn về microservice. Bây giờ, chúng ta hãy chia toàn bộ Cổng thương mại điện tử này thành các đơn vị kinh doanh nhỏ như quản lý người dùng, quản lý đơn hàng, đăng ký, quản lý thanh toán, quản lý giao hàng, v.v. Một đơn đặt hàng thành công cần phải tiến hành tất cả các mô-đun này trong một thời gian cụ thể khung. Sau đây là hình ảnh hợp nhất của các đơn vị kinh doanh khác nhau liên kết với một hệ thống thương mại điện tử.
Mỗi mô-đun nghiệp vụ này nên có logic nghiệp vụ riêng và các bên liên quan. Họ giao tiếp với các phần mềm của nhà cung cấp bên thứ ba khác cho một số nhu cầu cụ thể và cả với nhau. Ví dụ: quản lý đơn hàng có thể giao tiếp với quản lý người dùng để lấy thông tin người dùng.
Bây giờ, xem xét bạn đang chạy một cổng mua sắm trực tuyến với tất cả các đơn vị kinh doanh này đã đề cập trước đó, bạn cần một số ứng dụng cấp doanh nghiệp bao gồm các lớp khác nhau như front-end, back-end, database, v.v. Nếu ứng dụng của bạn không được mở rộng và được phát triển hoàn toàn trong một tệp chiến tranh duy nhất, sau đó nó sẽ được gọi là một ứng dụng nguyên khối điển hình. Theo IBM, một ứng dụng nguyên khối điển hình nên có cấu trúc mô-đun sau trong nội bộ nơi chỉ một điểm cuối hoặc ứng dụng chịu trách nhiệm xử lý tất cả các yêu cầu của người dùng.
Trong hình trên, bạn có thể thấy các mô-đun khác nhau như Cơ sở dữ liệu để lưu trữ người dùng và dữ liệu kinh doanh khác nhau. Ở front-end, chúng tôi có một thiết bị khác nhau, nơi chúng tôi thường hiển thị dữ liệu người dùng hoặc doanh nghiệp để sử dụng. Ở giữa, chúng tôi có một gói có thể là tệp EAR hoặc WAR có thể triển khai chấp nhận biểu mẫu yêu cầu mà người dùng kết thúc, xử lý nó với sự trợ giúp của các tài nguyên và hiển thị lại cho người dùng. Mọi thứ sẽ ổn cho đến khi doanh nghiệp muốn có bất kỳ thay đổi nào trong ví dụ trên.
Hãy xem xét các tình huống sau, nơi bạn phải thay đổi ứng dụng của mình theo nhu cầu kinh doanh.
Đơn vị kinh doanh cần một số thay đổi trong mô-đun "Tìm kiếm". Sau đó, bạn cần thay đổi toàn bộ quy trình tìm kiếm và triển khai lại ứng dụng của mình. Trong trường hợp đó, bạn đang triển khai lại các đơn vị khác của mình mà không có bất kỳ thay đổi nào.
Bây giờ một lần nữa đơn vị kinh doanh của bạn cần một số thay đổi trong mô-đun “Thanh toán” để bao gồm tùy chọn “ví”. Bây giờ bạn phải thay đổi mô-đun “Kiểm tra” và triển khai lại mô-đun tương tự vào máy chủ. Lưu ý, bạn đang triển khai lại các mô-đun khác nhau trong gói phần mềm của mình, trong khi chúng tôi chưa thực hiện bất kỳ thay đổi nào đối với nó. Ở đây có khái niệm kiến trúc hướng dịch vụ cụ thể hơn cho kiến trúc Microservice. Chúng tôi có thể phát triển ứng dụng nguyên khối của mình theo cách mà mỗi và mọi mô-đun của phần mềm sẽ hoạt động như một đơn vị độc lập, có khả năng xử lý một tác vụ kinh doanh một cách độc lập.
Hãy xem xét ví dụ sau.
Trong kiến trúc trên, chúng tôi không tạo bất kỳ tệp tai nào với dịch vụ end-to-end nhỏ gọn. Thay vào đó, chúng tôi đang phân chia các phần khác nhau của phần mềm bằng cách hiển thị chúng như một dịch vụ. Bất kỳ phần nào của phần mềm có thể dễ dàng giao tiếp với nhau bằng cách sử dụng các dịch vụ tương ứng. Đó là cách mà microservice đóng một vai trò lớn trong ứng dụng web hiện đại.
Hãy để chúng tôi so sánh ví dụ về giỏ hàng của chúng tôi trong dòng microservice. Chúng tôi có thể chia nhỏ giỏ hàng của mình theo các mô-đun khác nhau như “Tìm kiếm”, “Bộ lọc”, “Thanh toán”, “Giỏ hàng”, “Đề xuất”, v.v. Nếu chúng tôi muốn xây dựng cổng giỏ hàng thì chúng tôi phải xây dựng các mô-đun được đề cập ở trên theo cách mà chúng có thể kết nối với nhau để mang đến cho bạn trải nghiệm mua sắm 24x7 tốt.
Ưu điểm & Nhược điểm
Sau đây là một số điểm về lợi thế của việc sử dụng microservice thay vì sử dụng một ứng dụng nguyên khối.
Ưu điểm
Small in size- Microservices là một triển khai của mẫu thiết kế SOA. Bạn nên duy trì dịch vụ của mình nhiều nhất có thể. Về cơ bản, một dịch vụ không nên thực hiện nhiều hơn một tác vụ kinh doanh, do đó rõ ràng là nó sẽ có kích thước nhỏ và dễ bảo trì hơn bất kỳ ứng dụng nguyên khối nào khác.
Focused- Như đã đề cập trước đó, mỗi microservice được thiết kế để chỉ thực hiện một nhiệm vụ kinh doanh. Trong khi thiết kế một microservice, kiến trúc sư nên quan tâm đến tiêu điểm của dịch vụ, đó là dịch vụ có thể cung cấp được. Theo định nghĩa, một microservice về bản chất phải có tính chất hoàn chỉnh và phải cam kết chỉ cung cấp một tài sản kinh doanh.
Autonomous- Mỗi microservice phải là một đơn vị kinh doanh tự quản của toàn bộ ứng dụng. Do đó, ứng dụng trở nên liên kết lỏng lẻo hơn, giúp giảm chi phí bảo trì.
Technology heterogeneity- Microservice hỗ trợ các công nghệ khác nhau để giao tiếp với nhau trong một đơn vị kinh doanh, giúp các nhà phát triển sử dụng đúng công nghệ tại đúng nơi. Bằng cách triển khai một hệ thống không đồng nhất, người ta có thể có được sự bảo mật, tốc độ tối đa và một hệ thống có thể mở rộng.
Resilience- Khả năng phục hồi là một thuộc tính của việc cô lập một đơn vị phần mềm. Microservice tuân theo khả năng phục hồi cao trong việc xây dựng phương pháp luận, do đó bất cứ khi nào một đơn vị gặp lỗi, nó sẽ không ảnh hưởng đến toàn bộ hoạt động kinh doanh. Khả năng phục hồi là một thuộc tính khác triển khai hệ thống có khả năng mở rộng cao và ít ghép nối hơn.
Ease of deployment- Vì toàn bộ ứng dụng được chia nhỏ thành các phần nhỏ đơn vị, nên mọi thành phần đều phải là ngăn xếp đầy đủ về bản chất. Tất cả chúng có thể được triển khai trong mọi môi trường rất dễ dàng với ít phức tạp về thời gian không giống như các ứng dụng nguyên khối khác cùng loại.
Sau đây là một số điểm về nhược điểm của kiến trúc microservice.
Nhược điểm
Distributed system- Do sự không đồng nhất về kỹ thuật, các công nghệ khác nhau sẽ được sử dụng để phát triển các phần khác nhau của một microservice. Cần có một số lượng lớn các chuyên gia lành nghề để hỗ trợ phần mềm phân tán không đồng nhất lớn này. Do đó, phân tán và không đồng nhất là một bất lợi số một khi sử dụng microservice.
Cost - Microservice rất tốn kém, vì bạn phải duy trì không gian máy chủ khác nhau cho các nhiệm vụ kinh doanh khác nhau.
Enterprise readiness- Kiến trúc microservice có thể được coi là một tập hợp các công nghệ khác nhau, khi công nghệ đang phát triển từng ngày. Do đó, khá khó để làm cho một doanh nghiệp ứng dụng microservice sẵn sàng so sánh với mô hình phát triển phần mềm thông thường.
Microservice qua SOA
Bảng sau liệt kê một số tính năng nhất định của SOA và Microservice, làm nổi bật tầm quan trọng của việc sử dụng microservice so với SOA.
Thành phần | SOA | Microservice |
---|---|---|
Mẫu thiết kế | SOA là một mô hình thiết kế cho phần mềm máy tính, nơi các thành phần phần mềm được tiếp xúc với thế giới bên ngoài để sử dụng dưới dạng dịch vụ. | Dịch vụ vi mô là một phần của SOA. Đây là một triển khai chuyên biệt của SOA. |
Sự phụ thuộc | Các đơn vị kinh doanh phụ thuộc vào nhau. | Tất cả các đơn vị kinh doanh đều độc lập với nhau. |
Kích thước | Kích thước phần mềm lớn hơn phần mềm thông thường. | Kích thước phần mềm nhỏ. |
Công nghệ | Ngăn xếp công nghệ ít hơn Microservice. | Microservice về bản chất không đồng nhất vì các công nghệ chính xác được sử dụng để thực hiện một nhiệm vụ cụ thể. Microservices có thể được coi là một tập đoàn của nhiều công nghệ. |
Tự chủ và Tập trung | Các ứng dụng SOA được xây dựng để thực hiện nhiều tác vụ kinh doanh. | Các ứng dụng microservice được xây dựng để thực hiện một tác vụ kinh doanh duy nhất. |
Thiên nhiên | Nguyên khối trong tự nhiên. | Full stack trong tự nhiên. |
Triển khai | Việc triển khai tốn nhiều thời gian. | Triển khai rất dễ dàng. Do đó, nó sẽ ít tốn thời gian hơn. |
Hiệu quả chi phí | Tiết kiệm chi phí hiệu quả. | Tiết kiệm chi phí. |
Khả năng mở rộng | Ít hơn so với Microservices. | Đã thu nhỏ hoàn toàn. |
Thí dụ | Hãy để chúng tôi xem xét một ứng dụng đặt CAB trực tuyến. Nếu chúng ta muốn xây dựng ứng dụng đó bằng SOA, thì các đơn vị phần mềm của nó sẽ là:
|
Nếu cùng một ứng dụng được xây dựng bằng kiến trúc microservice, thì các API của nó sẽ là:
|