누군가 SOA가 무엇인지 평범한 영어로 설명 할 수 있습니까 ? 여기에서는 SOA, 거기에서는 SOA를 듣지만 그것이 무엇이며 용도가 무엇인지 정확히 이해할 수 없습니다. 단순한 개념이었고 나중에 거대한 무언가로 진화 했습니까?
위키를 포함한 모든 문서는 다소 추상적이거나 내가 바보이고 이해하지 못할 수도 있습니다. 이것에 대한 바보 가이드가 있습니까?
이 세 글자 뒤에 정확히 무엇이 있습니까?
답변
이 기사 (SOA 란 무엇입니까?-SOA 및 웹 서비스 설명)가 도움 이 될 수 있습니다 .
약간의 티저 :
-
SOA는 단순하고 잘 정의 된 인터페이스가 있고 필요한 기능을 수행하기 위해 느슨한 결합을 통해 오케스트레이션되는 개별 소프트웨어 에이전트로 구성되는 방식으로 애플리케이션을 설계하는 스타일입니다.
-
SOA에는 서비스 공급자와 서비스 소비자라는 두 가지 역할이 있습니다. 소프트웨어 에이전트는 두 가지 역할을 모두 수행 할 수 있습니다. SOA는 완전히 새로운 개념은 아니지만이 기사는 주로 웹 서비스로 구현 된 SOA에 중점을 둡니다.
답변
SOA는 매우 오래된 아이디어에 대한 새로운 배지입니다.
-
코드를 재사용 가능한 모듈로 나눕니다.
-
변경 될 가능성이있는 설계 결정을 모듈에 캡슐화합니다.
-
서로 다른 유용한 방법 ( “패밀리”또는 “제품 라인”이라고도 함)으로 결합 할 수있는 방식으로 모듈을 설계하십시오.
이것들은 모두 기반 소프트웨어 개발 원칙이며, 대부분 David Parnas가 처음으로 설명했습니다.
SOA의 새로운 기능은
-
네트워크에서하고 있습니다.
-
모듈은 프로 시저 호출과 같은 일반적인 프로그래밍 언어 메커니즘이 아닌 네트워크를 통해 서로 메시지를 전송하여 통신합니다. 특히 서비스 지향 아키텍처에서 부품은 일반적으로 변경 가능한 상태 (기존 프로그램의 전역 변수)를 공유하지 않습니다. 또는 상태를 공유하는 경우 해당 상태는 그 자체가 에이전트이고 여러 동시 클라이언트를 쉽게 관리 할 수있는 데이터베이스에 조심스럽게 잠겨 있습니다.
답변
더 고급 단어와 기술 용어를 사용하여 SOA (Service Oriented Architecture)를 설명하는 많은 답변을 봅니다. 나는 평범한 영어 로 비유 를 사용하여 평신도를 위해 그것을 설명하는 기회를주고 싶습니다 .
그러나 먼저 SOA
SOA에 대한 설명은 아래 그림과 같이 3 개의 계층으로 설명 될 수 있습니다. 한쪽에는 공급자가 있고 다른쪽에는 소비자 가 있으며 두 쪽이 통신 하는 브리지 로 구분됩니다 .
소비자는 비즈니스에 필요한 여러 응용 프로그램을 사용하고 공급자는 이러한 응용 프로그램에 정보를 제공 하는 구성 요소 를 사용 합니다. 이들은 공통 아키텍처를 사용하는 서비스 세트를 통해 통신합니다 .
비유
시골쪽에있는 집을 상상해보십시오. 여러면에서 도시 나 마을과 같은 더 큰 공동체의 일부입니다. 이 도시에는 물과 전기 공급, 위생 처리, 교통 및 기타 유틸리티 제공을위한 자체 복잡한 시스템이 있습니다. 하우스는 이 모델의 소비자 인의 도시 (또는 지역 사회)는 공급자 및 파이프, 하수구, 전력선, 광섬유 등이이다 인프라 가 통신하는.
이 모델은 SOA와 느슨하게 비교할 수 있습니다. 집에있는 사람들은 라디에이터, 컴퓨터, 화장실, 램프, 바닥 난방, 욕조 등과 같은 다양한 “응용 프로그램”을 사용합니다. 이러한 응용 프로그램은 도시에서 물을 생성하거나 전기를 생성하거나 폐기물을 처리하는 방법에 대해 신경 쓰지 않습니다. 작동합니다. 도시의 구성 요소는 발전기, 수도 펌프 및 위생 구역입니다. 집에 이러한 모든 요구 사항을 제공하지만 적합하다고 생각되는 방식으로 사용하는 것은 집에 달려 있습니다.
나는 이것이 적어도 누군가에게 SOA에 대한 더 나은 그림을 줬기를 바랍니다.
답변
네 명의 요리사가 있다고 가정 해 봅시다. SOA에서는 그들이 서로를 미워한다고 가정하기 때문에 가능한 한 적게 서로 대화를해야합니다.
어떻게하나요? 음, 먼저 역할과 인터페이스를 정의 할 것입니다. 요리사 1은 샐러드를 만들고, 요리사 2는 수프를 만들고, 요리사 3은 스테이크를 만듭니다. 그런 다음 테이블에 잘 정리 된 접시를 놓습니다. 인터페이스) “모두가 당신의 창작물을 당신의 요리에 넣어주세요. 다른 사람은 신경 쓰지 마세요.”라고 말합니다.
이런 식으로 네 명의 요리사는 가능한 한 적게 서로 대화해야하는데, 이는 소프트웨어 개발에 매우 좋은데, 서로를 싫어하기 때문이 아니라 물리적 위치, 의사 결정의 효율성 등과 같은 다른 이유 때문입니다.
또한 원하는대로 요리 (서비스)를 다시 조합 할 수 있습니다. 예를 들어 디저트를 카페 서비스에 사용하거나 수프를 다른 회사에서 구입 한 빵과 결합하여 더 저렴한 메뉴를 제공하거나 다른 레스토랑에서 샐러드를 사용하여 요리와 결합하도록 할 수 있습니다. .
가장 성공적인 SOA 구현 중 하나는 Amazon이었습니다. 설계로 인해 전체 인프라를 다시 패키징하여 Amazon Web Service로 판매 할 수있었습니다.
* 이것은 SOA의 한 측면 일뿐입니다.
답변
SOA는 아키텍처 스타일이지만 이기종 애플리케이션을 개발하고 통합하는 방법에 대한 비전 . SOA의 주요 목적은 모 놀리 식 애플리케이션 에서 벗어나 애플리케이션 을 빌드하기 위해 구성 할 수있는 재사용 가능한 서비스 세트를 갖는 것 입니다.
IMHO, SOA는 엔터프라이즈 수준에서만 의미가 있으며 단일 응용 프로그램에 대해서는 의미가 없습니다.
많은 기업에서 각 부서에는 다음을 의미하는 고유 한 기업 애플리케이션 세트가 있습니다.
-
유사한 기능이 여러 번 구현되었습니다.
-
데이터 (예 : 고객 또는 직원 데이터)는 여러 애플리케이션간에 공유되어야합니다.
-
애플리케이션은 부서 중심이었습니다.
SOA의 아이디어는 재사용 가능한 서비스를 전사적으로 사용할 수 있도록하여 애플리케이션을 구축하고 구성 할 수 있도록하는 것입니다. SOA의 약속은
-
유사한 기능을 반복적으로 다시 구현할 필요가 없습니다 (예 : 고객 또는 직원 서비스 제공).
-
애플리케이션을 함께 통합하고 공통 데이터 또는 기능에 대한 액세스를 용이하게합니다.
- 엔터프라이즈 중심 개발 노력.
SOA 비전에는 기술적 인 변화와 조직의 변화 . 일부 문제를 해결하는 반면 다른 문제도 도입합니다. 예를 들어 모 놀리 식 애플리케이션을 사용하는 것보다 SOA를 사용하는 경우 보안이 훨씬 더 어렵습니다. 따라서 SOA는 작동 여부에 대한 논의의 대상이됩니다.
이것은 SOA의 1000 피트 뷰입니다. 그러나 여기서 멈추지 않습니다. BPM (Business Process Orchestration), ESB (Enterprise Service Bus), CEP (Complex Event Processing) 등과 같은 SOA를 보완하는 다른 개념이 있습니다. 이들은 모두 IT / 비즈니스 조정 문제 , 즉 IT를 보유하는 방법을 다룹니다 . 비즈니스를 효과적으로 지원할 수 있습니다.
답변
SOA는 Service Oriented Architecture의 약자입니다.
SOA는 고유 한 소프트웨어 모듈을 높은 수준의 재사용 성과 함께 원활하게 통합 할 수있는 방식으로 소프트웨어 응용 프로그램을 설계하고 작성합니다.
대부분의 사람들은 SOA를 클라이언트 / 서버 소프트웨어 웹 서비스 작성으로 제한합니다. 그러나 SOA의 컨텍스트는 너무 작습니다. SOA는 그보다 훨씬 크고 지난 몇 년 동안 웹 서비스는 의사 소통의 주요 매체였습니다. 이는 사람들이 SOA를 일반적으로 SOA의 경계와 의미를 제한하는 웹 서비스로 생각하는 이유 일 것입니다.
종속성없이 자체적으로 작동 할 수있을 정도로 독립적 인 데이터베이스 액세스 모듈을 작성하는 것을 생각할 수 있습니다. 이 모듈은 데이터베이스 액세스가 필요한 모든 호스트 소프트웨어에서 사용할 수있는 클래스를 노출 할 수 있습니다. 호스트 응용 프로그램에는 시작 구성이 없습니다. 필요하거나 필요한 것은 데이터베이스 액세스 모듈에 의해 노출되는 클래스를 통해 전달됩니다. 이러한 클래스를 서비스라고 부르고 모듈을 서비스 사용으로 간주 할 수 있습니다.
SOA를 연습하면 DRY [반복하지 마십시오]를 적용하여 높은 수준의 재사용 성을 제공하여 유지 관리가 용이 한 소프트웨어가됩니다. 유지 보수성은 모든 소프트웨어 아키텍처가 가장 먼저 생각하는 것입니다. SOA는이를 제공합니다.
답변
내가 이해하는 한 기본 개념은 다른 시스템에 유용한 것을 제공하는 작은 “서비스”를 만들고 시스템 내부에서 모든 작업을 수행하는 대형 시스템을 구축하지 않는다는 것 입니다.
따라서 상호 작용에 사용할 프로토콜을 정의하고 (예 : SOAP 웹 서비스 일 수 있음) “비즈니스 작업을 수행하는 시스템”이 “큰 목표”를 달성하기 위해 소규모 서비스와 상호 작용하도록합니다. .