SOA vs MSA
소프트웨어는 코드라는 형체가 있지만 보이지 않기 때문에 더 정확하고 명확한 아키택쳐 설계가 필요하다.
개요
모듈을 구현할때 서로 다른 서비스들이 존재하고 이런 서비스들의 조합으로 모듈을 동작시킨다.
SOA와 MSA는 모듈 재사용성 보다 서비스 수준의 재사용성에 초점이 맞춰져있다.
단위의 차이가 존재한다.
SOA( Service Oriented Architecture)
- 서비스 지향 아키텍쳐
비즈니스 단위를 서비스라는 단위로 조합, 서비스 단위들을 조합하여 하나의 에플리케이션을 개발하는 소프트웨어 아키택쳐
느슨한 결합이 특징이며 이에 따라 다음과 같은 장점이 있다.
유연성: 각 단위 요소의 느슨한 결합때문에 유연성을 가진다.
확장성: 각 단위 요소를 쉽게 추가 및 수정 할수있다.
안정성: 작은 단위를 디버깅하는게 쉽기때문에 안정성이 용이하다.
ESB
SOA시스템은 서비스의 확장에 따라 규모가 커지게 된다.
서로 간의 의존성이 존재하기 때문에 서비스간의 수정 및 호출의 복잡성이 증가한다.
이는 업무 수행의 ''경직성''을 유발한다.
이를 해결하기 위해 모든 서비스들을 중앙 버스에 두고 통합 관리하며 서비스간 연결 복잡도를 해소한다.
이 역할을 하는 중앙 버스를 ESB라고 한다.
스프링 디스패쳐 서블릿??
MSA ( MicroService Architecture)
- 마이크로 서비스 아키텍쳐
각 컴포넌트 별로 단일 프로그램을 만들어 여러 프로그램의 조합으로 에플리케이션을 구축하는 방법
회원 프로그램 + 상품 프로그램 + 주문 프로그램
API를 통해 각 프로그램끼리 통신
각 컴포넌트가 독립된 프로그램으로 개발되어 개별 서버를 가지고있음으로 부분적 확장이 가능하다.
회원 트래픽이 많은경우 회원 서버만 증설
단점
하나의 프로세스에서 통신하지 않고 서버간 API통신을 하기때문에 속도가 느리고, 통신을 위해 데이터 변환 과정에 오버해드가 발생하기도 한다.
뛰어난 숙련도를 요한다.
Reference
'개발 일지 > 디자인패턴 & 아키텍쳐' 카테고리의 다른 글
SOLID 재정립하기 (0) | 2022.11.08 |
---|---|
Monolithic vs SOA & Microservice (0) | 2022.05.24 |
리펙토링 (0) | 2021.12.30 |
프록시 패턴(Proxy Pattern) (0) | 2021.12.30 |
스테이트 패턴 (State Pattern) (0) | 2021.12.30 |