Kiến trúc vid ịch vụ và Kiến trúc hướng dịch vụ

Một phần của tài liệu Bài giảng Phát triển phần mềm hướng dịch vụ: Phần 2 (Trang 26 - 29)

Phần này so sánh giữa cách tiếp cận microservices với kiến trúc hướng dịch vụ (SOA).

Sự so sánh là phức tạp và hơi không công bằng, bởi vì những người ủng hộ kiến trúc microservice không bao giờ khẳng định rằng nó đại diện cho một cách tiếp cận thực sự mới để

xây dựng hệ thống phân tán. Vì vậy, so sánh giữa SOA và microservices thường được đề xuất bởi những người đề xuất SOA, những người muốn chứng minh rằng sự khác biệt như vậy không có trongthực tế.

Trước khi trả lời câu hỏi trực tiếp, nhưđã biết SOA là:

• Tập hợp các dịch vụ và chức năng phù hợp với nghiệp vụ mà doanh nghiệp muốn cung cấp cho khách hàng, đối tác hoặc các khu vực khác của tổ chức.

• Một phong cách kiến trúc yêu cầu nhà cung cấp dịch vụ, người yêu cầu dịch vụ có bản mô tả dịch vụ và có thể cả trung gian.

• Một tập hợp các nguyên tắc, mẫu và tiêu chí kiến trúc đề cập đến các đặc điểm, ví dụ

như tính mô đun, tính đóng gói, ghép nối lỏng, tách biệt các mối quan tâm, tái sử dụng và khả năng kết hợp.

• Một mô hình lập trình hoàn chỉnh với các tiêu chuẩn, công cụ và công nghệ hỗ trợ các dịch vụ web, dịch vụ REST hoặc các loại dịch vụ khác.

• Một giải pháp phần mềm trung gian được tối ưu hóa cho việc lắp ráp, điều phối, giám sát và quản lý dịch vụ.

Với định nghĩa này, rõ ràng SOA có một tập hợp các mục tiêu và vấn đề toàn diện, sâu rộng

đang hướng tới để giải quyết.

Mặc dù trong cả hai trường hợp đều đang nói về tập hợp các dịch vụ, nhưng tham vọng của các dịch vụ này là khác nhau. SOA cố gắng cung cấp dịch vụ cho bất kỳ ai muốn sử dụng chúng. Thay vào đó, microservices được tạo ra với mục tiêu tập trung và hạn chế hơn nhiều, nó hoạt động như một phần của hệ thống phân tán duy nhất.

Hệ thống phân tán này thường được tạo ra bằng cách chia nhỏ một ứng dụng nguyên khối lớn và mục đích là một tập hợp microservice tiếp tục hoạt động cùng nhau như một ứng dụng duy nhất. Cách thiết kế này thường không có hướng tới phục vụ nhiều hệ thống cùng một lúc. Không giống như SOA, microservice thường tồn tại ngầm. Chúng không được phát hiện tại thời gian chạy và không yêu cầu trung gian. Bên tiêu thụ biết những dịch vụ này và do đó không yêu cầu bản mô tả. Tất nhiên, không phải là không cần khám phá, trong nhiều một số

trường microservice cũng cần được khám phá.

Một số hệ thống microservice phức tạp có thể cần áp dụng một số mức độ khám phá dịch vụ

cụ thểđể làm cho các dịch vụ này trở nên linh hoạt hơn và mạnh mẽ hơn. Vấn đề là mô hình kiến trúc như vậy không cần thiết. Một hệ thống microservice mà tất cả các microservice đều nhận biết được nhau bằng cách sử dụng các tệp cấu hình tương đối đơn giản là hoàn toàn khả

thi và có thể là một giải pháp hiệu quả. Các nhóm có thể khám phá microservice nào có sẵn để

sử dụng tại thời điểm phát triển bằng cách sử dụng danh mục, bản đăng ký hoặc công cụ quản lý API.

Tuy nhiên, kiến trúc SOA và microservice chia sẻ nhiều nguyên tắc, mẫu và mô hình lập trình chung. Xét cho cùng, kiến trúc microservice là một loại SOA, ít nhất là theo một cách thô sơ. Có thể xem microservice như là phần mở rộng/chuyên môn hóa của SOA, trong đó ranh giới khu vực chức năng được sử dụng để xác định các mô hình miền và gán chúng cho các nhóm có thể chọn ngôn ngữ phát triển, khuôn khổ và chi tiết triển khai của riêng. Tương tự, lắp ráp,

điều phối, giám sát và quản lý dịch vụ là mối quan tâm thực sự và là yêu cầu trong các hệ

thống microservice bên cạnh các hệ thống SOA truyền thống hơn.

Là hệ quả trực tiếp của quá nhiều phạm vi, tiêu chuẩn và công cụ mà SOA đã có trong quá khứ, kiến trúc microservice tập trung vào việc giải quyết một vấn đề duy nhất. Nó chủ yếu tập trung vào việc từng bước phát triển một ứng dụng lớn, nguyên khối thành một hệ thống vi dịch vụ phân tán dễ quản lý, phát triển và triển khai hơn bằng cách sử dụng các phương pháp tích hợp liên tục. Microservice đang tham gia vào cấu thành một hệ thống không nên lại được sử dụng bởi một hệ thống khác.

Mặc dù nhấn mạnh nhiều vào việc tái sử dụng, việc tái sử dụng này không xảy ra ở cấp độ

dịch vụ. Tất cả microservice trong một hệ thống dịch vụ vi mô chủ yếu được điều khiển bởi một ứng dụng chính. Nếu muốn, những microservice này có thểđược sử dụng lại bởi các ứng dụng hiện có hoặc mới khác đểđạt được những lợi ích tương tự.

Không khó để hiểu sự phân hóa này diễn ra như thế nào. SOA được thiết kế với mục tiêu giải quyết các vấn đề rất phức tạp về kiến trúc doanh nghiệp, với mục tiêu tạo điều kiện cho khả

năng tái sử dụng ở mức độ cao.

Ngược lại, kiến trúc microservice được chấp nhận bởi các công ty đang cố gắng mở rộng một thuộc tính web đơn lẻ thành quy mô web rộng hơn, cho phép phát triển liên tục, làm cho nhóm kỹ thuật hoạt động hiệu quả hơn và tránh bị khóa công nghệ.

Là hệ quả trực tiếp của phạm vi tập trung và hạn chế hơn, đồng thời nhấn mạnh vào sự phát triển gia tăng từ hệ thống truyền thống sang hệ thống microservice, microservice ngày càng hấp dẫn các doanh nghiệp có đầu tư cơ sở hạ tầng đáng kể. Phương pháp này hứa hẹn ít tốn

kém hơn và mang tính thử nghiệm hơn, trả tiền khi bạn chuyển đổi. Ngược lại, SOA truyền thống thường yêu cầu cam kết tài chính và kiến trúc trước nghiêm túc hơn nhiều.

Có thể nói, cả kiến trúc SOA và microservice đều là kiến trúc dịch vụ, bởi vì cả hai đều xử lý

các hệ thống phân tán của các dịch vụ giao tiếp qua mạng. Tuy nhiên, kết quả thực tế khá khác biệt, bởi vì trọng tâm của SOA là khả năng tái sử dụng và khám phá, trong đó trọng tâm của microservices là thay thế một ứng dụng nguyên khối duy nhất bằng một hệ thống dễ

dàng quản lý và phát triển dần dần.

5.4 BÀI TẬP

1. Kiến trúc hướng dịch vụ (SOA) là gì? Nêu các đặc trưng của kiến trúc hướng dịch vụ?

2. Kiến trúc RESTful là gì? Nêu các thao tác chính trong kiến trúc RESTful?

3. Kiến trúc vi dịch vụ microservice là gì ? So sánh, phân tích điểm giống và khác giữa

Một phần của tài liệu Bài giảng Phát triển phần mềm hướng dịch vụ: Phần 2 (Trang 26 - 29)