SOA(서비스 지향 아키텍처)란?
SOA(Service Oriented Architecture, 서비스 지향 아키텍처)는 네트워크 상에서 공통 통신 언어를 사용하는 서비스 인터페이스를 통해 소프트웨어 구성 요소를 재사용 가능하게 만드는 소프트웨어 설계 방식입니다.
여기서 말하는 '서비스'란 특정 작업을 수행하도록 설계된 독립적인 소프트웨어 기능 단위 또는 기능의 집합을 의미합니다. 예를 들어 지정된 데이터를 조회하거나 특정 연산을 실행하는 작업이 대표적입니다. 하나의 서비스는 완결된 개별 비즈니스 기능을 수행하는 데 필요한 코드와 데이터 통합을 모두 포함하며, 원격으로 접근할 수 있고 다른 구성 요소와 별도로 통신하거나 업데이트할 수 있습니다.
다시 말해, SOA는 독립적으로 배포·유지관리되던 소프트웨어 구성 요소들을 통합하여 서로 통신하고 협업함으로써 여러 시스템에 걸친 소프트웨어 애플리케이션을 형성할 수 있도록 지원하는 아키텍처입니다.
SOA가 실현하는 상호운용성
SOA는 서로 다른 네트워크에 존재하는 소프트웨어 구성 요소들이 손쉽게 협력할 수 있는 환경을 만들어 줍니다. SOA 아키텍처에 따라 구축된 웹 서비스는 그만큼 더 독립적으로 발전합니다. 웹 서비스들은 서로 데이터를 교환할 수 있으며, 설계 원칙 덕분에 사람의 개입이나 코드 수정 없이도 통신이 가능합니다. 결국 네트워크상의 웹 서비스들이 매끄럽게 상호 통신할 수 있음을 보장하는 것입니다.
느슨한 결합과 재사용성
SOA는 서로 다른 애플리케이션이 비즈니스 프로세스에 참여하면서 데이터를 주고받을 수 있게 하는 IT 인프라를 정의합니다. 그 목표는 운영 체제, 프로그래밍 언어 등 애플리케이션의 기반이 되는 기술 환경과 서비스 간의 느슨한 결합(loose coupling)입니다. SOA는 기능을 개별 단위, 즉 서비스로 분리하고 이를 네트워크를 통해 활용할 수 있게 함으로써, 비즈니스 애플리케이션 개발 과정에서 서비스들을 연결하고 재사용할 수 있도록 합니다.
이러한 서비스들은 한 서비스에서 다른 서비스로 정보를 전달하거나, 두 개 이상의 서비스 간 활동을 조율하는 방식으로 상호작용합니다. SOA 개념은 분산 컴퓨팅과 표준 프로그래밍이라는 기존 개념 위에 구축되어 발전해 온 것으로 평가됩니다.
비즈니스 관점에서 바라본 SOA
비즈니스 이해관계자들은 자신들의 비즈니스 요구사항에 대한 해결책을 IT 조직에 의존합니다. 비용과 시장 경쟁력 측면에서 이해관계자들은 IT 솔루션을 제공하는 데 드는 시간과 투자를 단축하고자 하며, 동시에 각 소프트웨어 프로젝트가 충족하는 요구사항의 범위를 극대화해 IT 솔루션으로부터 얻는 가치를 높이려 합니다.
따라서 SOA를 활용해 비즈니스 요구사항을 신속하고 성공적으로 구현할 수 있는 더 나은 도구와 방법론을 갖추는 것이 필수적입니다. 특히 모델링은 관심사를 분리하고 복잡한 문제들에 대한 통합된 시각을 제공할 수 있다는 점에서 매우 중요하게 고려됩니다.
정보 보안 관점에서의 SOA
서비스 실행 과정의 보안은 핵심적인 관심사입니다. 일부 애플리케이션은 조직의 경계를 넘어 운영되기 때문입니다. 이에 따라 비즈니스 이해관계자들이 요구사항 정의 단계에서 보안 의도를 명확히 규정할 수 있도록 지원하는 일련의 기본 모델링 요소를 제공하는 것이 중요한 목표가 됩니다.