Michael Chen | Content Strategist | 2024년 3월 28일
서비스 지향 아키텍처(SOA)는 '서비스'라는 이름의 독립적인 부품들을 조합해 기능적이고 확장 가능한 소프트웨어 시스템을 구축하는 데 집중하는 소프트웨어 설계 방식입니다. 서비스들은 서로 상호 작용하며 다양한 작업을 수행합니다. 한 번 로그인하면 다양한 비즈니스 애플리케이션에 모두 액세스할 수 있는 시스템이 그 좋은 예입니다. SOA의 핵심은 모듈성, 재사용성, 상호 운용성입니다 복잡한 기업용 애플리케이션을 더 작고 관리하기 용이한 서비스 단위로 나누면 그만큼 유연성과 확장성이 향상됩니다.
서비스들은 애플리케이션에 하드코딩되지 않습니다. 대신 레지스트리에 게시되고, 애플리케이션은 특정 서비스를 사용하고자 할 때마다 레지스트리에 최신 버전을 요청합니다. 이같은 방식을 활용하면 애플리케이션에 대한 자세한 지식을 갖추지 않은 담당자도 서비스를 간단히 변경 또는 업데이트할 수 있습니다. SOA 접근 방식을 사용하면 비즈니스 요구사항의 변화에 간단히 적응하고, 관련 기능을 제공하는 시스템들을 통합할 수 있습니다.
SOA를 사용하면 개별적인 서비스들이 느슨하게 결합되어 필요한 데이터를 서로 통신하고 전송할 수 있습니다. SOA 접근 방식을 사용한 클라우드 소프트웨어 개발의 이점은 다음과 같습니다.
서비스 지향 아키텍처의 예시는 다음과 같습니다.
서비스 지향 아키텍처(SOA)는 각각 특정한 기능을 제공하고 네트워크를 통해 호출할 수 있는, 독립적이고 재사용 가능한 구성품(서비스)들을 사용해 애플리케이션을 개발 또는 보완하는 설계 패러다임입니다. 개별 서비스의 범위는 사전 정의되어 있고, 아키텍처 내의 다른 구성 요소 또는 서비스와 서로 액세스하며 시스템의 전반적인 기능 및 성능을 향상시킬 수 있습니다.
서비스 지향 아키텍처에 사용되는 서비스의 예시로는 결제 처리 서비스, 고객 관리 서비스, 이커머스 사이트에 내장 가능한 제품 제안 서비스 등이 있습니다. 지구 반대편에 있는 도시의 현재 시간을 제공하는 것처럼 훨씬 더 간단한 서비스도 사용됩니다. SOA가 제공하는 강력한 이점의 예시로는 결제 서비스를 사용해야 하는 애플리케이션은 변경하지 않고, 결제 프로세서만을 전환할 수 있다는 것 등이 있습니다.
SOA를 사용하면 개별 서비스를 각자 독립적으로 개발, 테스트, 배포할 수 있는 유연한 모듈형 소프트웨어 인프라를 구축할 수 있습니다. 두 가지 주요 이점은 유지 관리 용이성 및 확장성입니다.
SOA는 특정 애플리케이션의 프레임워크 내에서 다수의 서비스가 느슨하게 결합된 방식입니다. 각각의 서비스는 요청된 입력/출력값을 제공할 수 있는 모듈 역할을 수행합니다. 애플리케이션은 사용 중인 서비스의 버전을 알 필요가 없습니다. 레지스트리를 검색해 필요한 기능을 제공하는 가장 최신 버전의 서비스를 찾기만 하면 됩니다. SOA 모델로 구축된 리테일 업체 웹사이트의 워크플로를 예로 들어 보겠습니다.
SOA를 사용하면 사전 구축된 서비스를 통합하는 개발 방식을 활용해 위와 같은 사이트의 개발 속도를 향상시킬 수 있습니다. 예시로 든 리테일 업체의 경우 각각의 모듈을 직접 개발해야 하는 부담을 덜 수 있을 뿐만 아니라, 서비스들의 업데이트 현황을 직접 추적할 필요도 없습니다. IT 부서는 기능, 보안, 가용성이 입증된 검증된 서비스를 사용하기만 하면 됩니다.
SOA 개발의 핵심은 모듈식으로 사고하고 서비스 통합이 가능한 부분을 파악하는 것입니다. 클라우드에서 개발된 애플리케이션은 웹 서비스 형식으로 구현된 방대한 SOA용 서비스들을 간단히 활용할 수 있습니다.
유연한 모듈식 SOA 인프라는 클라우드를 도입한 기업에게 큰 이점을 제공합니다. 그 외의 주요 클라우드 트렌드들도 함께 살펴보세요.
서비스 지향 아키텍처의 예시로는 어떤 것들이 있나요?
소비자가 이해하기 쉬운 서비스 지향 아키텍처 관련 예시로는 러너용 앱이 있습니다. SOA 방식으로 구축된 앱은 거리 추적 및 지도와 관련된 도구를 직접 구축하는 대신 휴대폰에 내장된 GPS 기기 관련 서비스, Google Maps와 같은 기존 지도 서비스를 사용할 수 있습니다. 또한 기상청이 제공하는 현지 날씨 데이터를 가져올 수도 있습니다. 앱이 수행하는 주된 역할은 다양한 서비스로부터 가져온 데이터를 러너에게 원활하게 제공하는 것입니다.
SOA와 마이크로서비스의 차이점은 무엇인가요?
SOA와 마이크로서비스는 네트워크 기반 함수 호출을 통해 애플리케이션에 기능을 제공한다는 비슷한 목표를 가지고 있습니다. 그러나 SOA는 더 광범위하고, 일반적으로 더 높은 수준에서의 사용을 전제로 하는 방식입니다. 반면 마이크로서비스는 애플리케이션 수준에서의 사용을 전제로 하고, 필요한 만큼 반복 가능한 극히 전문화된 단일 작업과 관련된 서비스를 제공합니다. 예를 들어 보안 로그인을 위한 인증 플러그인은 SOA의 일부로 간주되는 반면, 비밀번호를 암호화하는 반복적인 서비스는 마이크로서비스라고 할 수 있습니다. 마이크로서비스는 SOA 서비스 내에서 호출되거나 더 큰 프로젝트에 통합될 수 있습니다. 앞선 예시의 인증 서비스는 인증 작업을 완료하는 과정에서 암호화 마이크로서비스를 사용합니다. SOA와 마이크로서비스의 주된 차이점은 서비스 적용 범위입니다.
서비스 지향 아키텍처의 주된 특징은 무엇인가요?
서비스 지향 아키텍처의 주된 특징은 다음과 같습니다.
서비스 지향 아키텍처는 어디에 사용되나요?
서비스 지향 아키텍처는 시스템의 요구 사항을 충족하는 독립형 서비스들이 존재하는 거의 모든 사례에 사용할 수 있습니다. 대부분의 소프트웨어 제작자는 광범위한 서비스 개발 생태계로부터 원하는 서비스를 찾을 수 있으며, 높은 수준의 커스터마이징을 요하는 프로젝트인 경우에도 신원 인증, 지도 데이터 가져오기 등의 작업에 개별 서비스를 활용할 수 있습니다.