99클럽 27일차 TIL: 아키텍처 패턴 - SOA
2024. 4. 30. 15:51ㆍ개발 공부
728x90
반응형
#1. 오늘의 학습 키워드
개발 아키텍처 패턴 중 SOA에 대해
- 모놀리식 아키텍처, MSA, 그리고 모노레포 에 대해 알아보았다.
- 이번엔 SOA에 대해서 알아보자.
#2. 공부한 내용
1. SOA
- 개발하고자하는 프로젝트 전반을 기능 단위로 서비스로 쪼개서 구축하여, 개발된 서비스들을 조합하여
새로운 서비스를 만드는 구조.
- Service-Orientd Architecture 의 약자.
- 말그대로 서비스를 지향하는 구조다.
- 이때의 서비스의 정의
- 플랫폼에 종속되지 않고, 표준화된 호출 인터페이스 (일반적으로 Rest API 등) 으로 구현된 기업의 특정 업무 혹은 기능을 나타내는 독립적인 소프트웨어의 컴포넌트.
- 상호 조합이 가능하여 느슨하게 결합되어있다는 특징이 있다.
- 중요한 것은 기업이 제공하고자 하는 특정 비즈니스 기능을 표현하는 것이다.
- 쇼핑몰의 계좌이체 서비스는 서비스가 되지만, 결제시 보안 시스템 등 구축은 서비스가 될 수 없다.
- 이러한 서비스들을 유기적으로 결합하여, 통신 및 연동을 통해서 하나의 어플리케이션을 구축한다.
- 결제내역 조회 서비스, 판매 물품 조회 서비스, 계좌이체 서비스 등.. → 쇼핑몰 어플리케이션
- 서비스의 특징
- 수직적 분할
- 전체를 여러개의 서비스로 분할하여, 독립적으로 개발에 착수.
- 수평적 분할
- 데이터 계층 - 비즈니스 계층 - 뷰 계층으로 별로 분할하는 방법
- 수직적 분할
- 분할 된 조각 안에 위에서 언급된 계층들이 다 포함되어있음
- 표준 인터페이스 기반
- Restful API 등 표준 기술로 서비스가 구현되어야한다.
- 느슨한 결합
- 서비스 간 의존성을 최소화한다.
- 독립적인 서비스를 위함
- 조합 가능
- 결국 서비스는 하나의 큰 어플리케이션으로 제공되어야 하기에, 서비스 간 연결 및 조합이 가능해야한다.
- 큰 단위의 서비스 분류
- 서비스의 분류 기준은 업무 분류 기준을 따라간다.
- 수직적 분할
1) 장점
- 빠른 요건 대응
- 기존에 만들었던 서비스를 부품을 이어 붙이듯이 사용 가능하다.
- 따라서 높은 재사용성과 높은 개발 생산성을 가진다.
- 또한 기획자와 개발자가 바라보는 하나의 어플리케이션에 대한 관점이 흡사해지며 커뮤니케이션 장벽이 허물 수 있다.
- 똑같이 기능 중심으로 바라보기 때문.
- 레거시 활용
- 예를 들어 결제 관련 서비스가 구현된 지 오래 되었다하더라도, 새로운 어플리케이션에 해당 서비스를 잘 연결 시킬 수만 있다면 크게 문제가 되지 않는다.
- 따라서 SOA 구조로 신규 환경 및 시장으로 진입하는 것은 유리하다.
2) MSA vs SOA
- 각 서비스간의 연결 방법에서의 차이가 있다.
- SOA는 ESB (Enterprise Service Bus) 등 미들웨어로 서비스 간 연결을 중앙 집중 식으로 관리한다.
- MSA는 서비스 간 독자적인 연결로 ( 메시징, API 등) 분산 관리를 한다.
- 개념 범주 상 차이가 있다.
- SOA는 전사적인 개념으로, 사용자 입장에서 기존 서비스와 새로운 서비스를 동시에 경험해도 무방한 경우 사용할 수 있다.
- 즉 사용자 입장에서도, 해당 어플리케이션은 여러 서비스의 결합인 것을 느낄 수 있다.
- MSA는 개발 구조의 개념으로, 사용자 입장에서는 Monolith 구조로 개발 된 어플리케이션과 차이를 느끼지 못해야 한다.
- 물론, 성능과 요청사항에 대한 빠른 대응과는 별개인 기능 관점에서의 얘기이다.
- SOA는 전사적인 개념으로, 사용자 입장에서 기존 서비스와 새로운 서비스를 동시에 경험해도 무방한 경우 사용할 수 있다.
- 참조:
#3. 오늘의 회고
- SOA는 MSA와 흡사한 점이 많은 구조인 것 같다.
- 단일 어플리케이션을 여러 서비스로 분리하면서, 아래와 같이 흡사한 이점을 두 구조 모두 획득한다.
- 재사용성, 확장성, 기술 다양성, 분산 환경 지원 등
- 단일 어플리케이션을 여러 서비스로 분리하면서, 아래와 같이 흡사한 이점을 두 구조 모두 획득한다.
- 그러나 SOA와 MSA는 각자 해결하고자 하는 문제가 다르므로, 개념 적으로 다른 점이 존재한다.
- 또한 각 구조 속 서비스가 얼마나 독립적일 수 있는 가에서도 큰 차이가 있는 것 같다.
- SOA는 조금 과장해서 각 서비스가 독자적인 어플리케이션을 이룰 수도 있는데
- MSA는 웬만한 상황에서는 불가능하다.
- 여러 아키텍처에 대해서 공부할 때, 물리적 구조 관점에서는 흡사해 보여도, 각 개념이 등장한 배경에 따라서 치중하는 점이 다른 것을 유의하며, 헷갈리지 않는 것이 중요한 것 같다.
728x90
반응형
'개발 공부' 카테고리의 다른 글
99클럽 29일차 TIL: OAuth (0) | 2024.05.02 |
---|---|
99클럽 28일차 TIL: JWT (1) | 2024.05.01 |
99클럽 26일차 TIL: 아키텍처 패턴 - 모노레포 (0) | 2024.04.29 |
99클럽 25일차 TIL: 아키텍처 패턴 - MSA (2) | 2024.04.28 |
99클럽 24일차 TIL: 아키텍처 패턴 - 모놀리식 (4) | 2024.04.27 |