Hỏi đáp công nghệ

SOA là gì? Tìm hiểu chung về kiến trúc hướng dịch vụ

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Table of Contents

SOA là gì?

Kiến trúc hướng dịch vụ (SOA) là một mô hình phát triển phần mềm cho phép các dịch vụ giao tiếp trên các nền tảng và ngôn ngữ khác nhau để tạo thành các ứng dụng.

Trong SOA, dịch vụ là một đơn vị phần mềm độc lập được thiết kế để hoàn thành một nhiệm vụ cụ thể. Kiến trúc hướng dịch vụ cho phép các dịch vụ khác nhau giao tiếp bằng cách sử dụng một hệ thống loose coupling (mềm dẻo) để truyền dữ liệu hoặc điều phối một hoạt động.

SOA là gì
SOA là gì?

Loose coupling đề cập đến một client của một dịch vụ vẫn độc lập với dịch vụ mà nó yêu cầu. Ngoài ra, client – cũng có thể là một dịch vụ – có thể giao tiếp với các dịch vụ khác, ngay cả khi chúng không liên quan.

SOA mang lại lợi ích cho các tổ chức bằng cách tạo ra khả năng tương tác giữa các ứng dụng và dịch vụ. SOA cũng sẽ đảm bảo các ứng dụng hiện có có thể dễ dàng mở rộng quy mô, đồng thời giảm chi phí liên quan đến việc phát triển các giải pháp dịch vụ doanh nghiệp.

Các concept của SOA là:

  • Giá trị doanh nghiệp quan trọng hơn chiến lược kỹ thuật.
  • Các mục tiêu chiến lược quan trọng hơn lợi ích liên quan đến các dự án cụ thể.
  • Khả năng tương tác cơ bản quan trọng hơn tích hợp tùy chỉnh.
  • Các dịch vụ được chia sẻ quan trọng hơn việc triển khai với một mục đích cụ thể.
  • Cải tiến liên tục quan trọng hơn sự hoàn thiện ngay lập tức.

Kiến trúc hướng dịch vụ là một bổ sung của “service concept” (khái niệm dịch vụ) hoặc “service model” (mô hình dịch vụ) của điện toán. Theo phong cách kiến ​​trúc này, các quy trình nghiệp vụ được thực hiện như các dịch vụ phần mềm, được truy cập thông qua một tập hợp các giao diện lập trình ứng dụng (API) được xác định chặt chẽ và được ràng buộc vào các ứng dụng thông qua điều phối dịch vụ động.

Các mục tiêu chính của SOA

Có ba mục tiêu chính của SOA; mỗi mục tiêu tập trung vào một phần khác nhau của vòng đời ứng dụng.

Mục tiêu đầu tiên nhằm mục đích cấu trúc các thủ tục hoặc các thành phần phần mềm như các dịch vụ. Các dịch vụ này được thiết kế để kết hợp lỏng lẻo với các ứng dụng, vì vậy chúng chỉ được sử dụng khi cần thiết. Chúng cũng được thiết kế để dễ dàng sử dụng bởi các nhà phát triển phần mềm, những người phải tạo ra các ứng dụng theo một cách nhất quán.

Mục tiêu thứ hai là cung cấp một cơ chế để xuất bản các dịch vụ có sẵn, bao gồm các yêu cầu về chức năng và đầu vào/đầu ra (I/O) của chúng. Các dịch vụ được xuất bản theo cách cho phép các nhà phát triển dễ dàng kết hợp chúng vào các ứng dụng.

Mục tiêu thứ ba của SOA là kiểm soát việc sử dụng các dịch vụ này để tránh các vấn đề về bảo mật và quản trị. Bảo mật trong SOA chủ yếu xoay quanh tính bảo mật của các thành phần riêng lẻ trong kiến ​​trúc; các thủ tục nhận dạng và xác thực liên quan đến các thành phần đó; và đảm bảo các kết nối thực tế giữa các thành phần của kiến ​​trúc.

Thực thi SOA

SOA độc lập với các nhà cung cấp và các công nghệ. Điều này có nghĩa là nhiều loại sản phẩm có thể được sử dụng để thực hiện kiến ​​trúc này. Quyết định sử dụng cái gì phụ thuộc vào mục tiêu cuối cùng của hệ thống.

SOA thường được triển khai với các dịch vụ web như giao thức truy cập đối tượng đơn giản (SOAP) và ngôn ngữ mô tả dịch vụ web (WSDL). Các lựa chọn triển khai có sẵn khác bao gồm:

  • Windows Communication Foundation (WCF);
  • gRPC ; và
  • truyền tin – chẳng hạn như với Java Message Service (JMS), ActiveMQ và RabbitMQ.

Việc triển khai SOA có thể sử dụng một hoặc nhiều giao thức và cũng có thể sử dụng công cụ hệ thống tệp để giao tiếp dữ liệu. Các giao thức luôn độc lập với nền tảng cơ bản và ngôn ngữ lập trình.

Các ứng dụng phổ biến của SOA bao gồm:

  • SOA được nhiều quân đội và không quân sử dụng để triển khai các hệ thống nhận thức tình huống.
  • Các tổ chức chăm sóc sức khỏe sử dụng SOA để cải thiện việc cung cấp dịch vụ chăm sóc sức khỏe.
  • SOA cho phép các ứng dụng và trò chơi dành cho thiết bị di động sử dụng các chức năng tích hợp của thiết bị di động, chẳng hạn như GPS.
  • Các bảo tàng sử dụng SOA để tạo hệ thống lưu trữ ảo hóa cho thông tin và nội dung của họ.

Xem thêm >> Scrum là gì? Tại sao bạn chắc chắn phải thử mô hình Scrum trong phát triển phần mềm?

ESB là gì?

ESB, hoặc enterprise service bus, là một mẫu kiến ​​trúc trong đó mỗi thành phần phần mềm tập trung sẽ thực hiện tích hợp giữa các ứng dụng. Nó thực hiện chuyển đổi mô hình dữ liệu, xử lý kết nối/nhắn tin, thực hiện định tuyến, chuyển đổi giao thức truyền thông và có khả năng quản lý thành phần của nhiều yêu cầu. ESB có thể cung cấp các tích hợp và biến đổi này dưới dạng một giao diện dịch vụ để các ứng dụng mới có thể sử dụng lại. ESB pattern thường được triển khai bằng cách sử dụng bộ công cụ và thời runtime tích hợp được thiết kế đặc biệt để đảm bảo năng suất tốt nhất có thể.

Bạn có thể triển khai SOA mà không cần đến ESB, nhưng điều này sẽ tương đương với việc chỉ có một gói các dịch vụ. Mỗi chủ sở hữu ứng dụng sẽ cần kết nối trực tiếp với bất kỳ dịch vụ nào mà ứng dụng cần và thực hiện những sự chuyển đổi dữ liệu cần thiết để đáp ứng từng giao diện dịch vụ.

Nói thì ngắn gọn nhưng quá trình này cần rất nhiều công việc (ngay cả khi các giao diện có thể tái sử dụng) và tạo ra một thách thức đáng kể cho việc bảo trì trong tương lai vì mỗi kết nối đều là point to point. Trên thực tế, ESB, cuối cùng được coi là một yếu tố cần thiết của triển khai SOA đến nỗi hai thuật ngữ này đôi khi được sử dụng như từ đồng nghĩa, tạo ra một số nhầm lẫn giữa chúng.

Lợi ích của SOA

So với các kiến ​​trúc trước đó, SOA mang lại những lợi ích đáng kể cho doanh nghiệp:

  • Thời gian đưa ra thị trường nhanh hơn. Khả năng tái sử dụng chính là chìa khóa ở đây. Hiệu quả của việc “lắp ráp” các ứng dụng từ các dịch vụ có thể tái sử dụng – tức là các khối xây dựng, thay vì viết lại và tích hợp lại mỗi lần phát triển dự án mới, cho phép các nhà phát triển tạo ra các ứng dụng nhanh hơn rất nhiều để có thể đáp ứng các cơ hội kinh doanh mới. Cách tiếp cận kiến ​​trúc hướng dịch vụ hỗ trợ các kịch bản để tích hợp ứng dụng, tích hợp dữ liệu và tự động hóa phong cách điều phối dịch vụ của các quy trình kinh doanh hoặc quy trình làm việc. Điều này giúp tăng tốc độ thiết kế phần mềm và phát triển phần mềm bằng cách cho phép các nhà phát triển tiết kiệm thời gian đáng kể cho việc tích hợp và dành nhiều thời gian hơn để tập trung vào việc cung cấp và cải thiện các ứng dụng của họ.
  • Khả năng tận dụng chức năng cũ trong các thị trường mới. SOA cho phép các nhà phát triển dễ dàng sử dụng chức năng ‘bị khóa’ trong một nền tảng hoặc môi trường máy tính và mở rộng nó sang các môi trường và thị trường mới. Ví dụ: nhiều công ty đã sử dụng SOA để hiển thị chức năng từ các hệ thống tài chính dựa trên máy mainframe cho các ứng dụng web mới, cho phép khách hàng của họ tự phục vụ hầu hết các quy trình và thông tin mà trước đây chỉ có thể truy cập thông qua tương tác trực tiếp với nhân viên của công ty hoặc đối tác kinh doanh.
  • Cải thiện sự hợp tác giữa doanh nghiệp và CNTT:  Trong SOA, các dịch vụ có thể được định nghĩa theo thuật ngữ kinh doanh (ví dụ: ‘tạo báo giá bảo hiểm’ hoặc ‘tính toán ROI của thiết bị vốn’). Điều này cho phép các nhà phân tích kinh doanh làm việc hiệu quả hơn với các nhà phát triển về những hiểu biết quan trọng — chẳng hạn như phạm vi của một quy trình kinh doanh được xác định bằng cách sử dụng dịch vụ hoặc tác động kinh doanh của việc thay đổi quy trình — có thể dẫn đến kết quả tốt hơn.

Ví dụ về SOA

Đến năm 2010, việc triển khai SOA đã được thực hiện tại các công ty hàng đầu trong hầu hết mọi ngành. Ví dụ:

  • Delaware Electric đã chuyển sang SOA để tích hợp các hệ thống trước đây không giao tiếp với nhau, mang lại hiệu quả phát triển giúp tổ chức duy trì tốt trong suốt 5 năm, do nhà nước bắt buộc phải đóng băng giá điện.
  • Cisco đã thông qua SOA để đảm bảo trải nghiệm đặt hàng sản phẩm của mình nhất quán cho tất cả các sản phẩm và trên tất cả các kênh bằng cách đưa ra các quy trình đặt hàng dưới dạng dịch vụ mà các bộ phận và đối tác kinh doanh của Cisco có thể kết hợp vào trang web của họ.
  • Independence Blue Cross (IBC) của Philadelphia đã triển khai SOA để đảm bảo rằng các bên khác nhau xử lý dữ liệu bệnh nhân, như các đại lý dịch vụ khách hàng của IBC, văn phòng bác sĩ, người dùng trang web IBC, đang làm việc với cùng một nguồn dữ liệu (một ‘nguồn dữ liệu duy nhất ‘).

SOA so với microservices

SOA là gì
SOA là gì? SOA so với microservices

Các chuyên gia đã phân tích và đưa ra hàng nghìn trang sách cả in và kỹ thuật số để so sánh SOA và microservices, đồng thời xác định mức độ tinh tế của mối quan hệ giữa chúng với nhau. Đối với mục đích của bài viết này, sự khác biệt chính giữa cả hai là sự kết hợp của các component và phạm vi sử dụng:

  • SOA là một phong cách kiến ​​trúc tích hợp và một khái niệm mang tính doanh nghiệp. Nó cho phép các ứng dụng hiện có được hiển thị trên các giao diện được ghép nối linh động, mỗi giao diện tương ứng với một chức năng doanh nghiệp, cho phép các ứng dụng trong một bộ phận của doanh nghiệp mở rộng sử dụng lại chức năng trong các ứng dụng khác.
  • Kiến trúc Microservices là một phong cách kiến ​​trúc ứng dụng và một khái niệm mang phạm vi ứng dụng. Nó cho phép chia nhỏ nội bộ của một ứng dụng thành các phần nhỏ có thể được thay đổi, mở rộng và quản lý một cách độc lập. Nó không xác định cách các ứng dụng giao tiếp với nhau — như phạm vi doanh nghiệp của các giao diện dịch vụ do SOA cung cấp.

Kiến trúc microservices nổi lên và đạt được thành công với sự gia tăng của  virtualization, điện toán đám mây, các phương pháp phát triển theo mô hình AgileDevOps. Hầu hết các lợi thế của microservices trong những bối cảnh này xuất phát từ việc tách rời các thành phần, giúp đơn giản hóa và cải thiện những điều sau:

  • Sự nhanh nhẹn và năng suất của nhà phát triển:  Microservices cho phép các nhà phát triển kết hợp các công nghệ mới vào một phần của ứng dụng mà không ảnh hưởng đến phần còn lại của ứng dụng. Bất kỳ thành phần nào cũng có thể được sửa đổi, kiểm tra và triển khai độc lập với các thành phần khác, giúp tăng tốc chu kỳ lặp lại.
  • Khả năng mở rộng:  Microservices có thể tận dụng tối đa khả năng mở rộng của đám mây — bất kỳ thành phần nào cũng có thể được mở rộng độc lập với các thành phần khác để đáp ứng nhanh nhất có thể các nhu cầu về khối lượng công việc và sử dụng hiệu quả nhất các tài nguyên máy tính.
  • Khả năng phục hồi:  Một lần nữa, nhờ khả năng tách rời, sự cố của một microservice không ảnh hưởng đến những dịch vụ khác. Và mỗi microservice có thể thực hiện các yêu cầu về tính khả dụng của riêng nó mà không cần đặt các thành phần khác hoặc toàn bộ ứng dụng vào các yêu cầu về tính khả dụng phổ biến nhất.

Tương tự như cách mà kiến ​​trúc microservices mang lại những cải tiến về tính nhanh nhẹn, khả năng mở rộng và khả năng phục hồi cho thiết kế ứng dụng, những kỹ thuật tương tự này cũng có thể được áp dụng để tích hợp. Điều này rất quan trọng bởi vì theo thời gian, mô hình ESB tập trung cao độ và đội ngũ chuyên gia tích hợp tập trung liên quan có thể trở thành một nút thắt cổ chai. Vay mượn từ các nguyên tắc microservices, chúng ta có thể có khả năng chia nhỏ ESB thành một tích hợp phân cấp, chi tiết hơn. Đây là một trong những tiền đề cốt lõi đằng sau tích hợp nhanh (agile integration).

Xem thêm >> Career path là gì? Lộ trình thăng tiến trong nấc thang sự nghiệp

SOA so với SaaS

SaaS, hay phần mềm dưới dạng dịch vụ (software-as-a-service), là một dạng điện toán đám mây công cộng trong đó nhà cung cấp dịch vụ – hoặc nhà cung cấp đám mây công cộng – cung cấp một ứng dụng kinh doanh hoàn chỉnh cho người tiêu dùng dịch vụ thông qua RESTful API từ đám mây.

SaaS là ​​một sự phát triển đám mây đã ảnh hưởng đến SOA và theo một nghĩa nào đó, nó thậm chí có thể quay trở lại một chút về các nguyên tắc SOA ban đầu. SaaS có thể được gọi đúng hơn là “ứng dụng dưới dạng dịch vụ” (application-as-a-service), bởi vì mục tiêu của nó là cung cấp hỗ trợ hoàn chỉnh cho quy trình kinh doanh trên đám mây. Vì “dịch vụ” là một quy trình kinh doanh, SaaS giống như SOA. SaaS cũng giống như một số dạng microservices, ở chỗ SaaS sẽ được cung cấp theo hợp đồng dịch vụ mô tả mức độ dịch vụ và giá cả.

Các dịch vụ SaaS hầu như sẽ luôn cung cấp các API để hỗ trợ tích hợp công việc SaaS với các quy trình kinh doanh khác vẫn được lưu trữ trong trung tâm dữ liệu hoặc thậm chí trong một đám mây khác. Tuy nhiên, các giao diện này sẽ tuân theo các quy ước về microservice và API hiện đại chứ không phải quy ước SOA/WS.

Vậy là trong bài viết trên, Hỏi đáp Công nghệ đã giải thích rất chi tiết về câu hỏi SOA là gì. Nếu các bạn có bất kì thắc mắc nào, hãy để lại comment bên dưới cho chúng tôi nhé. Chúc các bạn vui vẻ!

Các bài viết liên quan

1 thought on “SOA là gì? Tìm hiểu chung về kiến trúc hướng dịch vụ”

  1. Pingback: Spring MVC là gì? Khác biệt giữa Spring MVC với Spring Boot

Leave a Comment

Email của bạn sẽ không được hiển thị công khai.

Bài viết liên quan