S E P H ' S
SOA 패턴이란? 본문
SOA (Service Oriented Architecture)
SOA 란?
SOA란 Service Oriented Architecture의 약자로 서비스 지향 아키텍쳐를 의미한다. 기존의 애플리케이션의 기능들을 비즈니스적인 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스를 통해 서비스로 구현하고, 이 서비스들을 기업의 업무에 따라 애플리케이션을 구성하는 SW 개발 아키텍쳐를 의미한다.
SOA는 또한 서비스 인터페이스를 통한 소프트웨어 컴포넌트의 재사용을 가능하게 하는 방법을 정의한다. 이러한 인터페이스는 매번 깊은 통합을 수행하지 않고도 새 애플리케이션이 빠르게 통합될 수 있는 방식으로 공통 통신 표준을 활용한다.
SOA의 각 서비스는 완벽한 개별적 비즈니스 기능(예: 고객 신용 확인, 월별 융자 상환액 계산)의 실행에 필요한 코드와 데이터 통합을 구현한다. 서비스 인터페이스는 느슨한 결합을 제공하며 이는 아래에 구현되는 방법에 대한 지식이 거의 없거나 전혀 없어도 호출될 수 있음을 의미한다. 서비스는 데이터 읽기 또는 변경 요청의 전송을 위해 SOAP(Simple Object Access Protocol)/HTTP 또는 JSON/HTTP 등의 표준 네트워크 프로토콜을 사용하여 노출된다. 서비스는 개발자가 신속하게 검색해서 새 애플리케이션을 구축하는데 재사용할 수 있는 방식으로 공개된다.
SOA가 주목받는 이유
1. 웹 서비스의 등장으로 인해 다양한 기술적 복합도를 낮출 수 있게 되어 기술적인 대안이 등장
2. 점점 확장되는 독립된 업무 시스템으로 인해 통합에 대한 필요가 생김
3. 기업의 비즈니스 속도가 빨라져 민첩한 대응이 필요해짐
다른 아키텍처와 비교
Monolithic 보다 나은점
1. 출시 일정 단축 및 유연성 향상
2. 신규 시장에서 레거시 인프라 활용 가능
3. 더 효율적인 애자일 개발 방식으로 비용 절약
4. 손쉽게 유지관리
5. 확장성을 갖고있음
6. 안정성 강화
7. 편리한 이용 가능
MSA와 비교
MSA와 SOA는 유사한 개념 때문에 혼동하기 쉽다. 둘의 근본적인 차이점은 범위이다. SOA는 전사적인 아키텍처 접근 방식이고 MSA는 애플리케이션 개발 팀 내의 구현 전략이다.
또한 각각의 구성요소와 통신하는 방법에서 차이가 있다. SOA는 ESB(Enterprise Service Bus)를 사용하는 반면, 마이크로 서비스끼리는 언어의 제약이 없는 API를 통해 stateless 방식으로 통신한다. 마이크로 서비스의 API는 언어의 제약이 없기 때문에 개발팀에서 사용하고 싶은 툴을 선택할 수 있다. 따라서, 마이크로 서비스의 내결합성과 유연성이 더 유연하다.
마무리
"스프링 입문을 위한 객체지향"이라는 책을 공부하면서 모르는 개념들을 정리하던 와중 SOA가 눈에 띄었고 또한 MSA와 유사하지만 다른 개념임을 알게되었다. 추후에 더 자세하게 둘의 차이점과 SOA에 대해 알아보려고 한다.
출처
'Programing & Coding > Promgraming Concept' 카테고리의 다른 글
CBD 개발 방법론 (0) | 2023.02.07 |
---|---|
GitLab GitHub 100M 넘는 레포 옮기기 (0) | 2021.10.16 |
Session 관리, 대안 (0) | 2021.05.17 |
API - 필수 파라미터 살펴보기 (0) | 2020.07.09 |