Kiến trúc hướng dịch vụ là gì?
Kiến trúc hướng dịch vụ (SOA) là một phương pháp phát triển phần mềm sử dụng các thành phần của phần mềm được gọi là dịch vụ để tạo ra các ứng dụng dành cho doanh nghiệp. Mỗi dịch vụ cung cấp một tính năng doanh nghiệp, đồng thời các dịch vụ cũng có thể giao tiếp với nhau giữa nhiều nền tảng và ngôn ngữ. Nhà phát triển tận dụng SOA để tái sử dụng các dịch vụ trong nhiều hệ thống khác nhau hoặc kết hợp một số dịch vụ độc lập để thực hiện các tác vụ phức tạp.
Ví dụ: nhiều quy trình kinh doanh trong tổ chức yêu cầu chức năng xác thực người dùng. Thay vì phải viết lại đoạn mã xác thực cho tất cả quy trình kinh doanh, bạn có thể tạo và tái sử dụng duy nhất một dịch vụ xác thực cho mọi ứng dụng. Tương tự, hầu hết mọi hệ thống trong tổ chức chăm sóc sức khỏe, chẳng hạn như hệ thống quản lý bệnh nhân và hệ thống hồ sơ y tế điện tử (EHR), cần đăng ký bệnh nhân. Những hệ thống này có thể gọi một dịch vụ chung để thực hiện tác vụ đăng ký bệnh nhân.
Kiến trúc hướng dịch vụ mang lại những lợi ích gì?
Kiến trúc hướng dịch vụ (SOA) có một vài lợi ích so với các kiến trúc đơn khối truyền thống, trong đó mọi quy trình hoạt động như một đơn vị duy nhất. Một số lợi ích đáng kể của SOA bao gồm:
Rút ngắn thời gian đưa ra thị trường
Nhà phát triển tái sử dụng các dịch vụ trên những quy trình kinh doanh khác nhau để tiết kiệm thời gian và chi phí. Họ có thể hợp dịch các ứng dụng nhanh hơn bằng SOA so với việc lập trình và thực hiện tích hợp từ đầu.
Bảo trì hiệu quả
Các dịch vụ nhỏ dễ tạo dựng, cập nhật và khắc phục lỗi hơn những đoạn mã lớn trong ứng dụng đơn khối. Việc sửa đổi bất kỳ dịch vụ nào trong SOA cũng không làm ảnh hưởng đến chức năng tổng thể của quy trình kinh doanh.
Khả năng thích ứng cao hơn
SOA dễ thích ứng hơn với những cải tiến về công nghệ. Bạn có thể hiện đại hóa các ứng dụng của mình một cách hiệu quả và tiết kiệm. Ví dụ: các tổ chức chăm sóc sức khỏe có thể sử dụng chức năng của các hệ thống hồ sơ y tế điện tử cũ hơn vào những ứng dụng mới trên nền tảng đám mây.
Những nguyên tắc cơ bản của kiến trúc hướng dịch vụ là gì?
Không có hướng dẫn tiêu chuẩn được xác định rõ ràng cho việc triển khai kiến trúc hướng dịch vụ (SOA). Tuy nhiên, có một vài nguyên tắc cơ bản phổ biến trong các quy trình triển khai SOA.
Khả năng tương tác
Mỗi dịch vụ trong SOA bao gồm các tài liệu mô tả chỉ rõ chức năng của dịch vụ cùng các điều khoản và điều kiện liên quan. Mọi hệ thống máy khách đều có thể vận hành dịch vụ, dù dùng nền tảng cơ sở hay ngôn ngữ lập trình gì. Ví dụ: các quy trình kinh doanh có thể sử dụng dịch vụ được lập trình bằng C# và Python. Do không có sự tương tác trực tiếp, các thay đổi ở một dịch vụ không ảnh hưởng đến các thành phần khác sử dụng dịch vụ này.
Liên kết ít phụ thuộc
Các dịch vụ trong SOA cần được liên kết ít phụ thuộc, có càng ít sự phụ thuộc vào các tài nguyên bên ngoài như mô hình dữ liệu hay hệ thống thông tin thì càng tốt. Các dịch vụ này cũng nên ở tình trạng vô trạng thái mà không giữ lại bất kỳ thông tin nào từ các phiên làm việc hay giao dịch trước. Bằng cách này, khi bạn sửa đổi một dịch vụ, các ứng dụng máy khách và dịch vụ khác đang sử dụng dịch vụ này sẽ không bị ảnh hưởng đáng kể.
Tính trừu tượng
Khách hàng hoặc người sử dụng dịch vụ trong SOA không cần biết logic lập trình hay chi tiết triển khai của dịch vụ. Đối với họ, dịch vụ nên như một chiếc hộp đen. Khách hàng nhận được thông tin cần thiết về tính năng và cách sử dụng dịch vụ thông qua hợp đồng dịch vụ và các tài liệu mô tả dịch vụ khác.
Độ chi tiết
Các dịch vụ trong SOA nên có kích thước và phạm vi phù hợp, lý tưởng là đóng gói một
chức năng kinh doanh riêng biệt mỗi dịch vụ. Sau đó, nhà phát triển có thể sử dụng nhiều dịch vụ để tạo ra một dịch vụ tổng hợp phục vụ việc thực hiện những thao tác phức tạp.
Kiến trúc hướng dịch vụ gồm những thành phần nào?
Có bốn thành phần chính trong kiến trúc hướng dịch vụ (SOA).
Dịch vụ
Dịch vụ là những khối dựng cơ bản của SOA. Chúng có thể là dịch vụ tư nhân – chỉ dành cho người dùng nội bộ của một tổ chức – hoặc công cộng – tất cả mọi người đều có thể truy cập dịch vụ đó qua Internet. Cụ thể, mỗi dịch vụ có ba đặc điểm chính.
Triển khai dịch vụ
Triển khai dịch vụ là phần mã xây dựng logic để thực hiện chức năng dịch vụ cụ thể, ví dụ như xác thực người dùng hoặc tính toán hóa đơn.
Nhà cung cấp dịch vụ
Nhà cung cấp dịch vụ tạo dựng, duy trì và cung cấp một hoặc nhiều dịch vụ mà người khác có thể sử dụng. Các tổ chức có thể tự tạo dịch vụ của riêng hoặc mua từ một nhà cung cấp dịch vụ bên thứ ba.
Người sử dụng dịch vụ
Người sử dụng dịch vụ yêu cầu nhà cung cấp dịch vụ vận hành một dịch vụ cụ thể. Đó có thể là cả một hệ thống, một ứng dụng, hay một dịch vụ khác. Hợp đồng dịch vụ nêu rõ các quy tắc nhà cung cấp dịch vụ và người sử dụng dịch vụ phải tuân theo khi tương tác với nhau. Nhà cung cấp dịch vụ và người sử dụng dịch vụ có thể đến từ các bộ phận, tổ chức và thậm chí là các ngành khác nhau.
Sổ đăng ký dịch vụ
Sổ đăng ký dịch vụ, hay kho dịch vụ, là một danh mục các dịch vụ có sẵn, có thể truy cập qua mạng. Sổ đăng ký dịch vụ này lưu trữ các tài liệu mô tả dịch vụ từ các nhà cung cấp dịch vụ. Tài liệu mô tả dịch vụ chứa thông tin và cách giao tiếp với dịch vụ. Người sử dụng dịch vụ có thể dễ dàng tìm được những dịch vụ họ cần bằng cách dùng sổ đăng ký dịch vụ.
Kiến trúc hướng dịch vụ hoạt động như thế nào?
Trong kiến trúc hướng dịch vụ (SOA), các dịch vụ hoạt động độc lập và cung cấp chức năng hoặc trao đổi dữ liệu cho người sử dụng. Người sử dụng yêu cầu thông tin và gửi dữ liệu đầu vào cho dịch vụ. Dịch vụ xử lý dữ liệu, thực hiện tác vụ và gửi lại phản hồi. Ví dụ: nếu một ứng dụng sử dụng dịch vụ ủy quyền, ứng dụng đó sẽ cung cấp tên tài khoản và mật khẩu cho dịch vụ. Dịch vụ xác minh tên tài khoản và mật khẩu rồi gửi lại phản hồi thích hợp.
Giao thức giao tiếp
Các dịch vụ giao tiếp bằng những quy tắc được thiết lập sẵn, quyết định việc trao đổi thông tin qua một mạng lưới. Những quy tắc này được gọi là giao thức giao tiếp. Sau đây là một vài giao thức tiêu chuẩn để triển khai SOA:
• Giao thức truy cập đối tượng đơn giản (SOAP)
• HTTP RESTful
• Apache Thrift
• Apache ActiveMQ
• Dịch vụ thông báo Java (JMS)
Bạn thậm chí có thể sử dụng nhiều hơn một giao thức trong khi triển khai SOA.
ESB trong kiến trúc hướng dịch vụ là gì?
Bus dịch vụ doanh nghiệp (ESB) là phần mềm bạn có thể sử dụng khi giao tiếp với một hệ thống có nhiều dịch vụ. ESB thiết lập giao tiếp giữa dịch vụ và người sử dụng dịch vụ, dù dùng công nghệ gì.
Lợi ích của ESB
ESB cung cấp khả năng giao tiếp và chuyển đổi thông qua một giao diện dịch vụ có thể tái sử dụng. Bạn có thể coi ESB là một dịch vụ tập trung định tuyến các yêu cầu dịch vụ đến dịch vụ thích hợp. ESB cũng chuyển đổi yêu cầu thành một dạng thức mà nền tảng cơ sở và ngôn ngữ lập trình của ứng dụng có thể chấp nhận.
Triển khai kiến trúc hướng dịch vụ có những hạn chế gì?
Khả năng điều chỉnh quy mô hạn chế
Khả năng điều chỉnh quy mô của hệ thống bị ảnh hưởng đáng kể khi các dịch vụ chia sẻ nhiều tài nguyên và cần phối hợp để thực hiện chức năng của mình.
Gia tăng sự phụ thuộc lẫn nhau
Các hệ thống kiến trúc hướng dịch vụ (SOA) có thể trở nên phức tạp hơn theo thời gian và gây ra sự phụ thuộc lẫn nhau giữa các dịch vụ. SOA có thể khó sửa đổi và khắc phục lỗi nếu nhiều dịch vụ gọi nhau trong một vòng lặp. Tài nguyên chung, ví dụ như cơ sở dữ liệu tập trung, cũng có thể làm chậm hệ thống.
Điểm lỗi chí mạng đơn lẻ
Đối với việc triển khai SOA với ESB, ESB tạo ra một điểm lỗi chí mạng đơn lẻ. Đó là một dịch vụ tập trung, đi ngược lại ý tưởng phi tập trung mà SOA ủng hộ. Máy khách và dịch vụ không thể giao tiếp với nhau nếu ESB gặp sự cố.
Vi dịch vụ là gì?
Kiến trúc vi dịch vụ được cấu tạo từ các thành phần rất nhỏ và hoàn toàn độc lập của phần mềm, được gọi là vi dịch vụ, chỉ chuyên và tập trung vào một tác vụ duy nhất. Vi dịch vụ giao tiếp thông qua API, những quy tắc nhà phát triển tạo ra để các hệ thống phần mềm khác giao tiếp với vi dịch vụ của họ.
Phong cách kiến trúc vi dịch vụ phù hợp nhất với các môi trường điện toán đám mây hiện đại. Chúng thường hoạt động trong bộ chứa – những đơn vị phần mềm độc lập đóng gói mã cùng các thành phần phụ thuộc của mã.
Lợi ích của vi dịch vụ
Vi dịch vụ có thể độc lập điều chỉnh phạm vi, nhanh chóng, di động và không phụ thuộc vào nền tảng – những đặc điểm tương tự đám mây. Chúng cũng được tách riêng, tức là phụ thuộc rất ít hoặc không phụ thuộc vào các vi dịch vụ khác. Để đạt được điều này, vi dịch vụ phải có quyền truy cập cục bộ tới tất cả dữ liệu cần thiết thay vì truy cập từ xa tới dữ liệu tập trung mà các hệ thống khác cũng truy cập và sử dụng. Điều này tạo ra sự trùng lặp dữ liệu, được vi dịch vụ bù đắp bằng hiệu suất và tính linh hoạt.
So sánh SOA với vi dịch vụ
Kiến trúc vi dịch vụ là sự tiến hóa của phong cách kiến trúc SOA. Vi dịch vụ giải quyết những thiếu sót của SOA để khiến phần mềm trở nên tương thích hơn với những môi trường doanh nghiệp trên nền tảng đám mây hiện đại. Chúng có mức độ chi tiết cao và ưu tiên trùng lặp dữ liệu thay vì chia sẻ dữ liệu. Điều này khiến vi dịch vụ hoàn toàn độc lập với những giao thức giao tiếp riêng, có thể nhìn thấy qua các API gọn nhẹ. Về cơ bản, việc của người sử dụng là dùng vi dịch vụ thông qua API của nó, từ đó loại bỏ nhu cầu cần có ESB tập trung.
AWS giúp bạn triển khai vi dịch vụ như thế nào?
AWS là nơi tuyệt vời để xây dựng những ứng dụng hiện đại bằng các mẫu kiến trúc mô-đun, mô hình vận hành phi máy chủ và quy trình phát triển linh hoạt. AWS mang lại nền tảng hoàn thiện nhất để xây dựng vi dịch vụ có tính sẵn sàng cao nhằm hỗ trợ cho những ứng dụng hiện đại ở mọi phạm vi và quy mô. Ví dụ: bạn có thể thực hiện những việc sau:
• Xây dựng, cô lập và chạy các vi dịch vụ bảo mật trong các bộ chứa được quản lý để đơn giản hóa thao tác và giảm chi phí quản lý gián tiếp.
• Sử dụng AWS Lambda để chạy các vi dịch vụ mà không cần cung cấp và quản lý các máy chủ.
• Chọn trong số 15 cơ sở dữ liệu AWS quan hệ và phi quan hệ được xây dựng cho mục đích nhất định để hỗ trợ kiến trúc vi dịch vụ.
• Dễ dàng giám sát và kiểm soát các vi dịch vụ đang chạy trên AWS với AWS App Mesh.
• Giám sát và khắc phục sự cố của các tương tác vi dịch vụ phức tạp với AWS X-Ray.
Vi dịch vụ trên AWS giúp bạn đổi mới nhanh hơn, giảm thiểu rủi ro, tăng tốc thời gian đưa ra thị trường và làm giảm tổng chi phí sở hữu của bạn. Bắt đầu sử dụng SOA và vi dịch vụ trên AWS bằng cách tạo tài khoản AWS ngay hôm nay.
Các bước tiếp theo trên AWS
Bắt đầu xây dựng với AWS trên Bảng điều khiển quản lý AWS.