홈
topics
SOA(Service-Oriented Architecture)란?
SOA(service-oriented architecture)는 서비스 인터페이스를 통해 소프트웨어 구성 요소의 재사용과 상호 운용성을 가능하게 하는 방법을 정의합니다. 서비스는 공통 인터페이스 표준과 아키텍처 패턴을 사용하므로 새로운 애플리케이션에 신속하게 통합될 수 있습니다. 이로써 애플리케이션 개발자는 기존의 기능을 재개발 또는 복제하거나 기존의 기능을 연결하거나 상호 운용성을 제공하는 방법을 알아야 했던 수고를 덜 수 있습니다.
SOA의 각 서비스는 완벽한 개별적 비즈니스 기능(예: 고객 신용 확인, 월별 융자 상환액 계산 또는 모기지 신청 처리)의 실행에 필요한 코드와 데이터를 구현합니다. 이러한 서비스 인터페이스는 서비스의 구현 방법을 거의 또는 전혀 모르더라도 호출이 가능하여 애플리케이션 간의 종속성을 줄여주는 느슨한 결합을 제공합니다.
이 인터페이스는 서비스 제공자와 서비스 소비자 간의 서비스 계약입니다. 서비스 인터페이스를 뒷받침하는 애플리케이션은 Java, Microsoft .Net, Cobol 또는 공급업체(예: SAP)가 패키지형 소프트웨어 애플리케이션으로 공급하는 기타 프로그래밍 언어로 작성하거나 SaaS 애플리케이션(예: Salesforce CRM) 또는 오픈 소스 애플리케이션으로 제공되었습니다. 서비스 인터페이스는 xml(eXtensible Markup Language) 기반의 표준 태그 구조인 WSDL(Web Service Definition Language)을 사용하여 정의되는 경우가 많습니다.
SOAP(Simple Object Access Protocol)/HTTP 또는 Restful HTTP(JSON/HTTP)와 같은 표준 네트워크 프로토콜을 사용하여 서비스를 노출하여 데이터를 읽거나 변경하기 위한 요청을 전송합니다. 서비스 거버넌스는 개발을 위한 라이프사이클을 제어하고, 적절한 단계에서 서비스는 개발자가 신속하게 이들을 찾아 재사용하여 새로운 애플리케이션 또는 비즈니스 프로세스를 구성할 수 있도록 하는 레지스트리에서 게시됩니다.
이러한 서비스는 처음부터 빌드할 수 있지만 서비스 인터페이스로 레코드의 레거시 시스템으로부터 기능을 노출하여 생성하는 경우가 많습니다.
이와 같이 SOA는 지난 수십 년 간의 애플리케이션 개발과 통합 과정의 발전에서 중요한 단계를 나타냅니다. 1990년대 후반에 SOA가 등장하기 전에는 애플리케이션을 다른 시스템에 있는 기능 또는 데이터에 연결하려면 복잡한 지점 간 통합, 즉 개발자들이 각각의 새로운 개발 프로젝트에 대해 부분적으로 또는 전체적으로 재작성해야 했던 통합이 필요했습니다. SOA에서 이러한 기능을 노출함으로써 개발자는 손쉽게 기존 기능을 재사용하고 SOA ESB 아키텍처를 통해 연결할 수 있게 되었습니다(아래 참조).
SOA와 최근의 마이크로서비스 아키텍처는 많은 단어를 공통으로 공유하지만(예: "서비스", "아키텍처") 나중에 설명하듯이 관련성이 적으며 실제로 다른 범위에서 작동합니다.
엔터프라이즈 서비스 버스(ESB)는 중앙 집중식 소프트웨어 구성요소가 애플리케이션 간의 통합을 수행하는 아키텍처 패턴입니다. ESB는 데이터 모델을 변환하고, 연결성/메시징을 처리하고, 라우팅하며, 통신 프로토콜을 변환하며 잠재적으로 다중 요청의 구성을 관리합니다. 새로운 애플리케이션의 재사용을 위해 ESB는 이러한 통합과 변환을 서비스 인터페이스로 제공할 수 있습니다. 일반적으로 ESB 패턴은 최고의 생산성을 보장하는 특별히 설계된 통합 런타임과 툴 세트를 사용하여 구현됩니다.
ESB 없이 SOA를 구현할 수 있지만, 이는 단지 여러 개의 서비스가 있는 것이나 마찬가지입니다. 각 애플리케이션 소유자는 필요한 서비스에 직접 연결하여 각 서비스 인터페이스에 맞게 필요한 데이터 변환을 수행해야 합니다. 이는 (인터페이스를 재사용할 수 있더라도) 상당한 작업을 요하며 각 연결이 지점 간 지점이므로 향후 상당한 유지보수 문제가 발생합니다. 실제로 ESB는 사실상 SOA 구현의 요소로 간주되었기 때문에 두 용어는 종종 동의어로 사용되어 혼란을 일으킵니다.
이전의 아키텍처와 비교하여, SOA는 기업에 상당한 이점을 제공했습니다.
2010년 즈음, 사실상 모든 산업 분야의 선도적 기업들이 SOA 구현을 위해 전력을 기울이고 있었습니다. 예를 들면 다음과 같습니다.
전문가들은 SOA와 마이크로서비스를 비교하고 상호 관계의 미묘함을 정의하는 수많은 문서와 디지털 페이지를 작성해왔습니다. 본문의 목적상, 둘 사이의 주된 차이점은 구성요소의 결합과 사용 범위입니다.
마이크로서비스 아키텍처는 가상화, 클라우드 컴퓨팅, Agile 개발 사례 및 DevOps의 부상과 함께 등장하여 인기를 얻었습니다. 이러한 상황에서 마이크로서비스의 장점들은 대부분 컴포넌트의 디커플링으로부터 발생하며, 이는 다음을 간소화하고 개선합니다.
SOA와 마이크로서비스의 차이점에 대한 자세한 설명은 "SOA 및 마이크로서비스: 차이점"을 참조하세요.
마이크로서비스 아키텍처가 애플리케이션 설계에 대한 민첩성, 확장성 및 복원성을 개선할 수 있는 가능성이 있듯이 이러한 동일한 기술을 통합에 적용할 수도 있습니다. 이는 시간이 지나면서 과도하게 중앙 집중화된 ESB 패턴과 중앙 집중화된 관련 통합 전문가 팀이 병목 현상을 일으킬 수 있기 때문에 중요합니다. 마이크로서비스 원칙을 차용하여 우리는 잠재적으로 ESB를 더욱 세분화되고 분산된 통합으로 나눌 수 있습니다. 이는 애자일 통합을 뒷받침하는 핵심 전제 중 하나입니다.
시장에서 가장 포괄적인 통합 플랫폼인 IBM Cloud Pak for Integration와 애플리케이션, 서비스 및 데이터를 연결합니다.
앱과 데이터를 강력한 AI 자동화 애플리케이션 통합 소프트웨어와 연결합니다.
IBM API Connect®는 직관적인 경험을 활용하여 API를 지속적으로 생성하고, 관리, 보호, 소셜화 및 수익화하도록 지원하는 안전한 API 관리 솔루션입니다.