SOA(Service Oriented Architecture)
Intro
최근 들어보면 다들 MSA MSA MSA 하는 것 같다. 도대체 MSA가 뭘까?
강의를 들어보려니, 너무나 가격대가 비쌌다.
다양한 시스템을 각자가 만들어서 합쳐버리는건가? 난 잘 몰랐다.
그러다 우리 회사에서 미팅을 했을 때, 난 호기심이 생겼다.
우리 회사는 MA도 MSA도 아닌 SOA를 도입하려고 한다.
이 세 아키텍처의 차이점은 무엇이고, 왜 우리는 SOA를 도입하려고 하는가?
SOA(Service Oriented Architecture)
서비스 지향 아키텍처란? 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처이다. ESB(엔터프라이즈 서비스 버스)로 중앙 집권식이다.
장점
- 비즈니스 민첩성 향상, 시장 출시 속도 개선
- 요구사항 반영이 수월하고 대응이 신속해진다.
- 신규 시장에서 레거시 기능을 활용하는 능력
- 기존 기능을 사용할 수 있고 이를 신규 환경과 시장으로 확장할 수 있다.
- 하나의 DB를 공유해서 사용할 수 있다.
단점
- ESB에 연결하기 때문에 단일 장애 지점이 된다.
- 서비스를 개별적으로 관리하기가 어렵다.
- 서비스 중 하나에 장애가 발생하면 전체 비즈니스 워크플로가 영향을 받음
MA(Monolithic Architecture)

모놀리식 아키텍처란? 단일 코드 베이스의 애플리케이션이다.
장점
- 단순성
- 간편한 배포
- 보편성
- 디버깅이 쉬움
단점
- 큐모가 커지면 유지 보수가 어려움
- 유연하지 않은 확장성
- 대큐모 팀 작업이 어려움
- 기술 사용 제한
간단하다…
MSA(Microservice Architecture)

마이크로서비스 아키텍처란? 아주 작은 단위의 서비스로 소프트웨어를 구성함으로써 민첩하고 유연한 설계하는 것을 목표하는 아키텍처이다.
애플리케이션을 작은 서비스로 분할하고, 각 서비스가 서로 독립적이라 기술 구애를 받지 않아 각각 고유한 데이터베이스를 소유할 수 있다.
따라서 서비스 간의 결합도를 낮추어 변화에 능동적으로 대응할 수 있다.
장점
- 유연한 확장
- 독립적인 배포
- 단일 실패 지점 제거
- 전체에 영향을 미치는 단일 실패 지점을 제거
- 전체 서비스 중단 위험 감소
- 다른 데이터베이스를 소유
- 다양한 기술 수용 가능
- 민첩성
- 다른 곳에 영향을 주지 않고 새로운 것을 추가할 수 있어서, 새 버전을 배포하는 것이 매우 쉽다.
단점
- 개발 생산성 필요
- 로컬에서 많은 애플리케이션을 실행할 수 있는 환경을 갖춰야 한다.
- 디버깅이 어려울 수 있음
- 디버깅이나 테스트를 하기 위해 둘 이상의 마이크로서비스를 실행해야 할 수 있다.
- 마이크로서비스 간 통신
- 동기/비동기 방식의 통신을 고려해야 하며, 복잡성을 증가시킨다.
- 오류 처리
- 둘 이상의 마이크로서비스라면, 문제 발생 시 작업을 이전 상태로 되돌릴 수도 있음을 고려
- 표준화 부족
- 모든 오류를 모니터링 할 수 있는 중앙 모니터링 체계 필요
- 오류 식별의 어려움
- 비동기 통신때가 더욱 어렵다.
MA vs SOA vs MSA
🚀 규모가 작고, CRUD 위주라면 MA!!!
🚀 DB를 하나만 쓰고, 요구사항이 불확실하여 민첩한 대응이 필요하다면 SOA!!
🚀 비즈니스가 성장해 나가는 경우, 요구사항이 명확한 경우 MSA!!
내 마지막 생각👻
참고
#25. 서비스 지향 아키텍처 (SOA : Service-Oriented Architecture) - Twolinecode
모놀리식 vs 마이크로서비스, 어떤 아키텍처를 선택할까? - 주길재