SOA (서비스 지향 아키텍처) 란 무엇입니까?
원하신다면 저를 트롤이라고 부르세요.하지만 저는 진지합니다. 새로운 SOA 트렌드가 제가 15 년 전에 구축했던 클라이언트 서비스 아키텍처와 정확히 얼마나 다른가요? SOA를 계속 듣고 있지만 우리가 항상 해왔 던 것과 어떻게 다른지 모르겠습니다.
10 년 전 우리 회사에는 동일한 서비스를 사용하는 여러 클라이언트 (다국어)가있었습니다. XML (Microsoft DCOM이라는 바이너리 프로토콜)이 아니었고 WSDL을 통한 자동 검색도 없었지만 문서를 읽는 것이 쉽기 때문에 괜찮습니다. 우리의 시스템은 제 3자가 우리 서비스와 대화 할 수있을만큼 충분히 문서화했다는 의미에서 "개방적"이었습니다. 우리는 개척자가 아니 었습니다. 제가 10 년 전에 알고 있던 다른 모든 회사도 같은 일을하고있었습니다.
그때와 지금의 유일한 차이점은 이제 인터넷에서 단일 서비스를 사용할 수 있다는 점입니다. 반면 10 년 전에는 각 고객이 자신의 서비스 인스턴스를 호스팅했습니다. 그러나 그것은 아키텍처 문제가 아닙니다. 서비스가 물리적으로 살아가는 것은 서비스를 사용하는 모든 사람에게 투명합니다.
그렇다면 우리가 수년간해온 것과 다른 SOA는 정확히 무엇일까요? SOA는 오래 전에 실제로 보편화 된 모범 사례를 나타내는 마케팅 용어입니까? 아니면 우리가 계속해서 해왔 던 것과는 다른 SOA를 미묘하게 놓치고 있습니까?
XML은 잊어 버리십시오. WSDL은 잊어 버리세요. SOA는 구매할 수있는 기술이 아니지만 이러한 방식으로 판매되는 경우가 많습니다.
SOA의 진정한 요점은 IT 조직 에 관한 것 입니다 . SOA의 요점은 격리 된 데이터 풀이 있고 서로 전혀 통신하지 않고 (따라서 데이터가 중복되는 경우가 많음) 어댑터 계층을 통해 비효율적이고 버그가 많은 방식으로 만 "애플리케이션"을 분리하는 것을 피하는 것입니다. 또는 EAI 시스템.
대기업의 경우 이것은 심각한 문제입니다. 말 그대로 수백 개의 개별 앱이 불충분하게 통합되어 있습니다. 모든 곳에서 중복되고 일관되지 않은 데이터가 있으며 그 결과 청구 부서에서 취소 된 주문에 대한 송장을 계속 보내고 고객 서비스 담당자가 주문 추적에서 취소 되었기 때문에 주문을 찾을 수 없기 때문에 고객이 화를 내고 실제 돈을 잃게됩니다. 결제 시스템이 아닙니다.
SOA는 다른 앱이 데이터에 액세스하고 데이터를 복제 할 필요가 없도록 표준화 된 교차 플랫폼 방식으로 서비스를 게시하도록 처음부터 모든 앱을 설계하여이 문제를 해결해야합니다.
비즈니스 관점에서 이것은 매우 바람직합니다. 유행어 과대 광고와 두문자어 수프는 IT 회사가 그 욕구를 현금화하려는 시도 일뿐입니다. 안타깝게도 이로 인해 CEO를 비롯한 많은 사람들이 SOA가 구매할 수있는 제품이며 IT 전체를 재구성하는 경우에만 발생한다는 사실을 깨닫지 못한 채 마술처럼 IT를 더 효율적으로 만들 것이라고 믿게되었습니다. SOA와 호환 될 수 있습니다.
Integration Hell : Telco의 유명한 채찍질 소년을 사용하겠습니다.
90 년대 중반의 통신 규제 완화로 인해 가능해진 장거리 리셀러만큼이나 많은 휴대 전화 회사가 이웃에 많았습니다. 글쎄, 시간이 흐르고 Bell Atlantic은 Verizon이라는 강국이되어 회사를 이어 가며 회사를 삼켜 버립니다 (최소한 하나의 Baby Bell). 이들 기업은 모두 타워, 스위칭 장비, 서로 완전히 호환되지 않는 청구 시스템에 기술을 갖추고 있습니다.
그래서 회사는 우리가 비즈니스를 수행하는 방법에 대한 이러한 모델을 가지고 있다고 말합니다. WSDL / SOAP / XSD의 형태로 우리의 모든 기술에 대해 친절하고 일관된 얼굴을합시다. 오늘날 우리가 가지고있는 모든 언어와 시스템은 이것에 인터페이스됩니다! 느리지 만 확실하게이 회사는 모든 시스템을 기능에 대해보고하고,로드 및 청구 목적으로 심문을 받고, 미래의 비전이 아직 설명되지 않은 방식으로 악용 할 수 있도록 노출하고 있습니다.
누구나 SOA 클라이언트를 구축 할 수 있습니다. wget 및 텍스트 편집기가있는 모든 사용자. 그리고 누구나 결과 (XML)를 구문 분석 할 수 있습니다.
이것이 과거의 클라이언트 / 서버 아키텍처와 근본적으로 다른 점입니다. 얼마 전에 Cobol 및 Smalltalk 기반 시스템을 SOA 아키텍처에 연결하는 것에 대해 누군가와 이야기하고있었습니다. 해결하기 쉬운 문제입니다. DCOM 시스템에 대해서도 동일하게 말할 수 있습니다.
SOA는 모듈이 "서비스"를 통해 서로 통신하는 디자인 방식 일뿐입니다. 그것은 바로 그 것이며, 이제 다음 질문은 : 정확히 "서비스"가 무엇이며 일반 "방법"과의 차이점은 무엇입니까 ??
서비스는 단일 원자 적 비즈니스 작업을 수행하는 작업입니다. 이 원자 성은 많은 모듈에서 재사용 이 가능 하도록 만듭니다 . 그런 다음 복잡한 비즈니스 운영은 이러한 많은 서비스를 특정 순서로 호출하는 것입니다.
SOA는 특정 기술과 관련이 없으며 단지 특정 설계 방법 일뿐입니다.
슈투트가르트 대학의 Frank Leymann 교수 는 SOA 에 대해 말할 때 SOA를 SOC (Service oriented Computing) 연구 작업 의 핵심 개념으로 사용합니다 . 그는 SOA의 정의에 대한 질문을받는 것으로 보이며 이어지는 대화는 좋은 읽기가 될 수 있습니다.
우리의 로드맵은 "서비스 지향 컴퓨팅 (SoC)", 즉 서비스 지향의 컴퓨팅 패러다임에 관한 것입니다. SOA (Service Oriented Architecture)는이 컴퓨팅 패러다임의 아키텍처 구현입니다. 이를 패러다임으로서의 "클라이언트 / 서버 컴퓨팅"과이 패러다임의 두 가지 (다양한 다른) 아키텍처 실현으로서 "브라우저 / 웹 서버"또는 "DB- 클라이언트 / 저장 프로 시저"와 비교할 수 있습니다.
...
SOA는 완전히 새로운 것은 아닙니다. SOA의 일부 개별 측면은 오랫동안 실제로 사용됩니다. 예를 들어 "느슨한 결합"을 살펴보십시오. 기업은 수십 년 동안 애플리케이션을 통합하기 위해 즉 느슨하게 결합하기 위해 안정적인 메시징 기술을 사용하고 있습니다. 오해하지 마십시오. SOA에는 새로운 개념이 있습니다. 예를 들어 SOA에 결합 된 개념의 조합에서 발생하는 개념, 즉 출현에서 발생하는 개념입니다.
웹 서비스 사양은 해당 기술을 교차 플랫폼에서 사용할 수 있도록합니다. 즉, 해당 사양은 근본적으로 새로운 개념을 만들어내는 것이 아니라 이러한 개념과 해당 구현이 이기종 환경에서 작동하는 방식을 정의합니다. 그 결과 상호 운용성은 획기적이며 SOA를 실현합니다.
요약하자면 SOA는 성숙한 것과 새로이 등장하는 것의 혼합입니다.
2006 년 4 월자 SoC 문서 참조 도 있습니다 .
Google 검색은 Frank Leymann 교수 와 그의 작품을 식별 합니다 .
Neal Ford는 SOA에 대해 많은 강력한 의견을 가지고 있습니다. 그의 관점이 흥미로울 것입니다.
표준 기반 vs. 표준화 (SOA 및 관련성이없는 Tarpit)
이성보다 희망의 승리 (SOA & The Tarpit of Irrelevancy)
게릴라 SOA (SOA & The Tarpit of Irrelevancy)
SOA는 마케팅 용어이자 전체 소프트웨어 나 기계를 판매하는 대신 서비스를 판매한다는 아이디어와 함께 기존 솔루션의 통합이라고 생각합니다.
나에게 서비스 지향 아키텍처는 기업이 공통 도메인과 관련된 다양한 애플리케이션을 단일 데이터 소스에 대해 작동하는 상호 운용 가능한 서비스 세트로 통합하고자 할 때 발생합니다.
소프트웨어 항목 / 소프트웨어 제품군에 대한 아이디어를 가진 신생 스타트 업 회사의 경우, 회사가 처음부터 서비스 지향 아키텍처로 시작하는 방법을 알 수 없습니다. 처음에 각 솔루션 (상호 운용이 가능하도록 서비스로 발전 할 수 있음)은 문제 공간을 분리하여 해결해야합니다.
솔루션이 완성되고 서비스가 시작될 때 각 솔루션이 상호 운용 가능한 서비스가되기위한 엔터프라이즈 기능 또는 제품군에 대한 로드맵에 포함될 것입니다. 이를 위해 개발 팀은 솔루션을 서비스 지향 아키텍처에 서비스로 더 쉽게 포함 할 수 있도록 솔루션 (최종 서비스)을 구축하기 위해 모듈 식 / 구성 요소 지향 접근 방식을 수행 할 것입니다.
기존 소프트웨어 섬이 서비스 지향 아키텍처에서 상호 운용 가능한 서비스가되는 경우,이 접근 방식은 배포 될 수 있고 다른 언어로 작성 될 수있는 소프트웨어 항목이 노출 된 API 및 / 또는 공통 프로토콜을 통해 통신 할 수 있도록합니다. (예 : 웹 서비스의 특징) 및 일반 데이터 형식 (예 : XML).
SOA는 접근 방식 또는 아이디어입니다. 프레임 워크 나 도구가 아닙니다. WDSL과 EJB가 이름이 떨어질 때, 이것은 종종 잊혀진다. SOA의 아이디어는 전혀 새로운 것이 아니다.
여기에있는 대부분의 답변 SOA (Service Oriented architecture)
은 다른 애플리케이션이 플랫폼 독립적 인 방식으로 상호 작용할 수 있도록 표준화 된 방식으로 애플리케이션을 구축 하는 것에 관한 것 같습니다 .
그 이후로 의미가 바뀌 었는지 확실하지 않지만 SOA 제품군을 제공하는 회사와 일할 기회가 있었으며 이에 대한 생각은 다음과 같습니다.
물론 응용 프로그램을 설계 할 때 플랫폼 간 호환을 보장 할 수는 없습니다. 예를 들어 보자 stock Trading systems
. 그들은 Fix protocol
메시지를 전송 하는 데 사용 합니다. SOA 호환이라고 할 수 있도록 이제 XML 형식으로 데이터를 반환 할 것으로 예상하십니까? 절대 아니다! SOA는 사용자를 돕고 decouple your application/services
서로 상호 작용할 수있는 아키텍처 접근 방식입니다 . SOA의 백본은 ESB (Enterprise Service Bus)
한 서비스에서 다른 서비스로 데이터를 전송하는 데 사용됩니다. SOA 아키텍처는 형식 변환을 처리해야합니다. 예를 들면-
FIX(Service 1) -> (XML ---ESB---> XML) -> JSON (Service 2)
이러한 변환 모듈은 일반적으로라고하며 adapters
일반적으로 SOA 제품군의 일부입니다. 더 자세한 정보는 다른 답변을 참조하십시오-
물론 SOA는 마케팅 목적으로 과장된 단어입니다. 기술적으로 말하면 서비스를 분리하고 플랫폼에 독립적 일 수 있도록 데이터를 직렬화 해제하고 직렬화하는 것처럼 간단하지만 그 뒤에 숨은 아이디어는 구체적입니다.
동일한 내용은 Wiki 페이지 를 참조하십시오 .
실제로 SOA는 잘 정의 된 서비스 모음입니다. 기본적으로 SOA는 느슨하게 결합 된 서비스를 사용하여 원하는 결과를 쉽게 얻습니다. 서비스의 구현 세부 사항은 클라이언트 / 소비자에게 숨겨져 있으므로 구현의 변경 사항은 서비스 간의 계약이 변경 될 때까지 서비스에 영향을주지 않습니다. 서비스 공급자는 미리 결정된 입력 및 출력을 기반으로 일부 비즈니스 논리를 실행하고 SOA 구현을 통해이 기능을 노출하는 구성 요소입니다. 이를 통해 SOA 기반 시스템은 비즈니스에보다 빠르고 비용 효율적으로 대응할 수 있습니다. 구성 요소와 SOA의 주요 차이점은 SOA가 프로그래밍 언어 또는 플랫폼에 국한되지 않는 개방형 표준 메시지를 제공한다는 것입니다. 결과적으로 플랫폼 및 기술 전반에 걸쳐 높은 수준의 느슨한 결합 및 상호 운용성을 달성 할 수 있습니다.Service Oriented architecture (SOA)
A service-oriented architecture (SOA) is an architectural pattern in which softwares are designed as building block. i.e. Modular development, which makes flexibility to assemble any way we want. If you want to start new project instead of starting from scratch, we can reuse the services and if you want to new service we can easily integrate with existing service to make new project. So we can save lot of time and money.The basic principles of service oriented architecture are independent of vendors, products and technologies.
Analogy: Toys build using Lego building blocks.
In fact, SOA also utilizes client-servier architecture. In addition, SOA is a way to design your software. Suppose that your application can break into simple and independent tasks like search a book, add new book, recommend a book according to user preference and so forth. If you consider a service (an API) for each of task, actually, you are using SOA. The advantage of this architecture is doesn't matter you're building a web app or mobile app, you only need the developed aforementioned services (APIs).
ReferenceURL : https://stackoverflow.com/questions/1093204/what-is-soa-service-oriented-architecture
'Programing' 카테고리의 다른 글
실수로 체크인 취소 (0) | 2020.12.29 |
---|---|
Python int를 빅 엔디안 바이트 문자열로 변환 (0) | 2020.12.29 |
Control.BeginInvoke에 대한 MethodInvoker 대 작업 (0) | 2020.12.29 |
ListView 항목이 콘텐츠를 래핑하기 위해 커지지 않는 이유는 무엇입니까? (0) | 2020.12.29 |
CTE 오류 : "앵커와 재귀 부분간에 유형이 일치하지 않습니다." (0) | 2020.12.29 |