#25. 서비스 지향 아키텍처 (SOA : Service-Oriented Architecture)

Twolinecode
twolinecode
Published in
5 min readMar 6, 2023

--

SOA(Service-Oriented Architecture, 서비스지향 아키텍처)는 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처입니다. 대규모 컴퓨터 시스템을 구축 할 때의 개념으로 업무상의 일처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축 해 나가는 방법론입니다.

SOA 서비스 지향 아키텍처란?

최신 SOA는 공개, 기민성, 확장, 연합, 자립적 요소들로 구성된 조합 가능한 아키텍처, 서비스 품질, 다양한 벤다, 상호 운영성, 서비스 발견 그리고 잠재적으로 재사용 가능한 서비스들이 웹 서비스로 구현된다. SOA는 비즈니스 로직과 기술을 추상화하여, 이 도메인 간에 느슨한 결합을 유도한다. SOA는 과거 플랫폼의 진화물로서, 전통적인 아키텍처의 특징들을 고스란히 가지고 있으며, 명확한 원칙을 가지고 SOE를 지원하며 서비스 지향을 촉진한다. SOA는 엔터프라이즈 환경을 이상적으로는 표준화하지만, 치밀한 사전 계획에 의한 이전 필요성과 현재도 진화하고 있는 기술에 대한 지원만이 이러한 목적을 달성할 수 있다.

출처 : SOA 서비스 지향 아키텍처 by 토마스얼(2007)

Service-Oriented Architecture : A Field Guide to Integrating XML and W / Erl, Thomas

또한 SOA는 백엔드에서 사용되는 아키텍처 중 하나로 대규모 컴퓨터 시스템을 구축 할 때, 애플리케이션의 기능을 비즈니스적인 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스(Rest API등)를 통해 서비스를 구현하고, 이 서비스들을 기업의 업무에 따라 애플리케이션을 구성하는 소프트웨어 개발 아키텍처입니다. 이 아키텍처는 주로 대용량 분산 시스템에 활용됩니다.

SOA는 기업의 IT시스템을 비즈니스에 맞춰 유연하게 사용 할 수 있다는 것이 장점이며, 마이크로서비스 아키텍처(MSA)가 공통적으로 가지고 있는 특징은 서비스 지향설계방식이라는 점과 느슨한 결합 조립을 통해 새로운 서비스를 제공한다는 것입니다. 그러나, MSA는 SOA보다 작은 서비스 단위로 소프트웨어를 구성하기 때문에, 보다 민첩하고 유연한 구조가 필요한 환경에서 적합한 설계방식입니다.

좀더 쉽게 설명하면, SOA는 새로운 업무를 구현할 때 새롭게 시스템을 신규 개발하는 것이 아니라 이미 제공되어 있는 기존의 서비스들을 조합하여 하나의 업무를 구현한다는 개념입니다. 각 업무별로 독립된 시스템의 현태로 개발 되어있는 업무 시스템들을 통합하기 위해 SOA가 대두되었고, 비즈니스의 급격한 변화를 수용할 수 있는 민첩성을 충적시기기 위한 아키텍처가 SOA입니다.

SOA의 장점

비즈니스 민첩성 향상, 시장 출시 속도 개선 : 모든 신규 개발 프로젝트를 재작성하고 이와 다시 통합하는 대신에 재사용 가능한 서비스 인터페이스에서 애플리케이션을 어셈블하는 효율성을 통해 개발자는 신규 비즈니스 기획에 대응하여 훨씬 더 신속하게 애플리케이션을 구축 할 수 있습니다.

신규 시장에서 레거시 기능을 활용하는 능력 : 잘 만들어진 SOA를 통해 개발자들은 하나의 컴퓨팅 플랫폼 또는 환경에서 손쉽게 ‘락인된’ 기능을 사용 할 수 있으며 이를 신규 환경과 시장으로 확장 할 수 있습니다.

비즈니스와 IT 간의 협업 개선 : SOA에서 서비스는 비즈니스 용어로 정의 될 수 있습니다. 이를 통해 비즈니스 분석가는 보다 나은 결과를 유도 할 수 있는 중요 인사이트에 대해 개발자와 보다 효율적으로 작업 할 수 있습니다.

출처 : What is Service Oriented Architecture

SOA vs. MSA

SOA와 MSA는 나누어진 서비스들을 연결하는 방법에 따라 차이점을 가지는데, MSA는 SOA에서 사용되는 집중화 된 관리 체계를 사용하지 않는 것입니다. SOA는 애플리케이션을 서비스로 나눈 후, ESB(Enterprise Service Bus)라는 미들웨어에서 연결하고 조립해서 만든 반면, MSA는 중앙 집중적인 ESB대신 REST API 또는 경량화 된 메시징을 이용하여 각 서비스를 중심으로 처리한다는 차이점이 있습니다.

• SOA는 전사적인 개념입니다. 이를 통해 기존 애플리케이션은 느슨하게 결합된 인터페이스를 통해 노출 될 수 있으며, 이들 각각은 확장된 엔터프라이즈의 일부의 애플리케이션이 기타 애플리케이션의 기능을 재사용 할 수 있게 해주는 비즈니스 기능에 대응됩니다.

• 마이크로 서비스 아키텍처는 애플리케이션 범위 개념입니다. 이는 단일 애플리케이션의 내부를 독립적으로 변경, 스케일링 및 관리할 수 있는 작은 조각으로 분할 할 수 있도록 합니다. 이는 애플리케이션이 서로 간에 통신하는 방법을 정의하지 않습니다.

참고사이트

https://www.ibm.com/kr-ko/cloud/learn/soa

https://www.ibm.com/cloud/blog/soa-vs-microservices

https://blog.naver.com/lhi5693/222214413341

https://blog.naver.com/yooncoms/222865103624

https://narup.tistory.com/229

<투라인코드>의 테크 블로그는 클라우드 네이티브 및 클라우드 트렌드 등 다양한 콘텐츠로 찾아 뵐 예정입니다.

--

--

Twolinecode
twolinecode

We have the best solutions and experts for our customer’s digital business needs-everything from Cloud Infrastructure to Cloud Native Application.