Có phải thuật ngữ Dịch vụ hướng Kiến trúc Kiến trúc đã trở thành biệt ngữ vô nghĩa? [đóng cửa]


25

Hôm nay tôi được hỏi liệu tôi có kinh nghiệm với "Kiến trúc hướng dịch vụ" hay không và mặc dù tôi nghĩ tôi làm vậy. Khái niệm này, đối với tôi, dường như rất lộn xộn Tôi không biết làm thế nào bạn có thể trả lời trung thực câu hỏi đó nữa.

Tôi đã viện đến thuật ngữ này trong một nỗ lực để có được một định nghĩa ngắn gọn về khái niệm này và nó khác với các kiến ​​trúc khác như thế nào. Sau khi đọc một số bài viết về nó, chủ đề chung duy nhất tôi dường như có thể tìm thấy là một hệ thống có nhiều thành phần nói chuyện với nhau qua một loại giao diện nào đó, có lẽ là một ưu tiên nhỏ cho XML / SOAP.

Có vẻ như hầu hết mọi ứng dụng đều có thể được định nghĩa là SOA, đặc biệt là ứng dụng web. Thuật ngữ này có rơi vào bẫy "Web 2.0" và trở thành một thuật ngữ có nghĩa là bất cứ điều gì bạn muốn nó có nghĩa không?

Tôi có cách ra khỏi căn cứ ở đây không? Khi các bạn nghe thấy thuật ngữ này có nghĩa gì với bạn không? Nếu vậy, tôi thích một định nghĩa ngắn gọn thể hiện rõ ràng cái gì và cụ thể là KHÔNG phải là SOA.


39
Nó luôn luôn là biệt ngữ vô nghĩa.
Fosco

6
Trong tiếng Hà Lan, SOA có nghĩa là STD.
Joeri Sebrechts

1
Có phải SOA là một khái niệm "người dùng trả tiền"? Đó là, theo truyền thống, các doanh nghiệp coi CNTT là một chi phí cần được giảm thiểu. Điều này tạo ra một mối nguy hiểm tiềm ẩn bởi vì các doanh nghiệp không biết có thể cắt giảm bao nhiêu CNTT cho đến khi năng suất toàn doanh nghiệp bị ảnh hưởng. SOA là một cách để làm CNTT sao cho bộ phận CNTT có thể tính toán chính xác lượng tài nguyên CNTT đã được tiêu thụ của mỗi bộ phận (chẳng hạn như Tài chính, Bán hàng và Nhân sự) và tính phí cho chúng một cách thích hợp. Nó có thể không hiệu quả cao, nhưng nó là một điều ác cần thiết. Không có khả năng tính phí người dùng dẫn đến kết quả Lose-Lose.
rwong

1
Bản thân tôi chưa sử dụng nhiều (P), nhưng tôi đã nghe Kiến trúc hướng dịch vụ (SOA) là một từ viết tắt của Giao thức truy cập đối tượng đơn giản (SOAP) khi nó không còn là "Đơn giản".
Andrew Grimm

2
Này, mọi người trả rất nhiều tiền cho công cụ này. Đừng nhầm lẫn giữa tình huống với ý nghĩa và chi tiết cụ thể. Quản lý phải có vẻ như họ biết những gì họ đang nói và đang ở trên đỉnh cao của buzzwords. Đừng đi theo cách đó từ họ. Những gì khác sẽ còn lại?
JeffO

Câu trả lời:


12

Tôi tin rằng ý nghĩa ban đầu của SOA dựa trên các dịch vụ có giao diện được xác định rõ có thể được sử dụng theo chương trình . Trọng tâm là các giao diện dịch vụ thay vì các thiết bị đầu cuối UI, thông tin liên lạc hoặc cơ sở dữ liệu. Phần quan trọng là dịch vụ tiêu thụ các dịch vụ khác. Dịch vụ A có thể gọi Dịch vụ B, nhận kết quả và gọi Dịch vụ C hoặc D. Bạn có thể có một bộ dịch vụ chuyên biệt và kiến ​​trúc sư giải pháp từ đó bằng cách kết hợp chúng theo cách giải quyết vấn đề của khách hàng.

SOA thường bị nhầm lẫn với SaaS (phần mềm là một dịch vụ), trong đó đề cập đến mô hình định giá mà người dùng trả tiền cho việc sử dụng dịch vụ mà họ đã đăng ký, thay vì mua giấy phép cho một bản sao của sản phẩm phần mềm. Để trả lời đoạn thứ ba trong câu hỏi của bạn, một ứng dụng Web có thể không phải là SOA, nhưng có thể là SaaS.

Thuật ngữ này chắc chắn đã mất một số ý nghĩa của nó. Trong tổ chức nơi tôi làm việc, thuật ngữ SOA thường được sử dụng thay thế cho SaaS và dùng để chỉ một nhóm các chuyên gia CNTT ( công nghệ thông tin trái ngược với phát triển sản phẩm phần mềm ), người định cấu hình máy chủ và bộ định tuyến và cài đặt các sản phẩm phần mềm để chạy trên chúng. Một số trong số chúng có các tiêu đề như "Kiến trúc sư SOA", nhưng không ai trong số chúng có liên quan đến kiến ​​trúc, thiết kế, triển khai hoặc thử nghiệm phần mềm.


1
Tôi nghĩ bạn đánh vào đầu đinh ở đây.
Revierpost

1
+1. Bạn đã tóm tắt trong vài đoạn những gì cuốn sách điển hình về SOA thực hiện trong 800 trang lông tơ.
prasopes

4

Tôi đã thực hiện điều tương tự với Google để xem nó thực sự là gì và vâng, nó bị lạm dụng khá nhiều. Khi tôi nghĩ về SOA, tôi nghĩ về những điều sau đây:

  1. Một chương trình không đầu có thể khám phá ...
  2. Điều đó sử dụng kết nối không trạng thái (ala HTTP) ...
  3. Giao tiếp trong các định dạng độc lập nền tảng

SOA có thể tương phản với kiến ​​trúc Client-Server (kiến trúc dịch vụ trạng thái) và các thư viện, là các mô-đun được kết nối với các chương trình thông qua một trình liên kết.

Vì vậy, khi mọi người nói về nó, tôi thường dùng nó với một hạt muối. Tôi cũng có xu hướng chỉ gọi nó là "dịch vụ web". Với các dịch vụ web, kiến ​​trúc được ngụ ý.


2
Nó có thể là kiến ​​trúc Server-Server?
JeffO

3

Các định nghĩa chặt chẽ của SOA vượt xa dòng chi phí / lợi ích là lý thuyết trong nhiều trường hợp.

Trừ khi sản phẩm của bạn là chính các dịch vụ mà bạn thường cần một quan điểm khác.

Một định nghĩa USABLE về SOA có nghĩa là kiến ​​trúc tổng thể của bạn thân thiện với dịch vụ. Một hệ thống được xây dựng hoàn toàn từ các dịch vụ nguyên tử thường không phải là kế hoạch đúng đắn và một số dịch vụ sẽ được tổ chức theo chức năng trong khi các hệ thống khác sẽ chịu trách nhiệm duy nhất. Tôi có thể có hộp đen, tôi có thể có các quy trình ngoại tuyến, nhưng nếu có một bộ sưu tập dịch vụ có thể khám phá, qua đó tôi có thể nhận được một lượng công việc có ý nghĩa được thực hiện theo định nghĩa tối thiểu của tôi.

Bên cạnh cuộc tranh luận về ý nghĩa thực sự của nó, khái niệm (dù nó có nghĩa là gì) đã phải chịu đựng trong nhiều vòng tròn bằng cách áp dụng cho những nơi đơn giản là nó không phù hợp.

Ví dụ: Nếu tôi đang xây dựng một thứ gì đó có nghĩa là quy trình hộp đen và mở rộng quy mô song song không phân chia và phân phối, tôi có thể có một dịch vụ để hiển thị / nói chuyện với hộp đen, nhưng một số người tiếp tục cố gắng đưa các dịch vụ vào bên trong cái hộp.

Là một định nghĩa kỹ thuật nghiêm ngặt, nó luôn luôn không được xác định, nhưng ý tưởng không phải là không có công đức khi nó phù hợp.


3

Tôi đã có cơ hội được làm việc trên một vài hệ thống doanh nghiệp nơi quản lý đã được bán trên SOA. Là một nhà phát triển, tôi nhìn vào các hệ thống và tôi thấy một loạt phần mềm đằng sau một dịch vụ web hoạt động. Nó có thể đã được viết bằng nhiều ngôn ngữ và kiến ​​trúc khác nhau, không liên quan đến các khách hàng gọi các dịch vụ và không thực sự có từ viết tắt "SOA" ở bất cứ đâu trong tài liệu của họ.

Nhưng ban quản lý muốn "SOA" !!! Vì vậy, họ đã mua các máy chủ thực sự đắt tiền từ một công ty lớn nhất định có nhãn dán "SOA" được dán trên đầu các nhãn dán "Dịch vụ web" trước đó đã được áp dụng trên các nhãn dán "JEE" trước đó đã được áp dụng trên đầu trang .... bạn có được ý tưởng. Và kết quả là, chúng tôi khi các nhà phát triển ngồi xung quanh kéo và thả các biểu tượng itty-bitty trên màn hình để tạo ra "SOA" "THÀNH PHẦN" hoạt động một nửa cũng như nếu chúng tôi đã làm điều đó với một thứ đơn giản như đậu EBJ3, các thành phần lò xo, v.v. .

Vì vậy, lời khuyên của tôi là nếu bạn được hỏi về SOA, hãy nói "Có, tôi đã thực hiện SOA, tôi đã viết nhiều hệ thống sử dụng Kiến trúc hướng dịch vụ để làm việc. Bạn đang hỏi về công nghệ SOA nào?". Và nếu họ bắt đầu nói chuyện với đôi mắt phát sáng và vẻ đăm chiêu về một THÀNH PHẦN, DRAG VÀ DROP, và cách nó phát triển dễ dàng hơn. Lùi lại từ từ và tránh giao tiếp bằng mắt!


2

Tôi nghĩ rằng nó có thể có ý nghĩa một chút: một điều là khi bạn có các mô-đun "nô lệ" được gọi khi cần, và một điều nữa là khi bạn có các quy trình dịch vụ / daemon chạy độc lập và đáp ứng các yêu cầu của bạn, có thể nói chuyện với nhau, sống với nhau cuộc sống riêng nói cách khác. Với phương pháp này, bạn có thể có một hệ thống phân phối vật lý khổng lồ, có thể mở rộng. Tôi đã thấy một số trong lĩnh vực điện thoại di động, ví dụ. Nhưng đây chỉ là dự đoán.

(Bây giờ hãy xem Wikipedia nói gì về SOA ... Whoa.)


Vì vậy, để tổng hợp nó. Kiến trúc là SOA nếu có nhiều hơn một tiến trình đang chạy, với mỗi tiến trình đang chạy một nhiệm vụ riêng biệt và chúng nói chuyện với nhau theo một cách nào đó?
JohnFx

@ JohnFx: Vâng. Bằng cách này, nó dễ dàng hơn để xây dựng các hệ thống có khả năng mở rộng cao và có tính sẵn sàng cao.
mojuba
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.