목표
MSA 아키텍처
- AWS의 경우 인터페이스 모델을 통해 MSA를 탄생시킴
- 가장 본질적인 MSA
인터페이스로 연결 되면서 직접적으로는 연결되지 않는다.
모놀리식과 MSA 부하 분산
- scale-up : 모놀리식 아키텍처에서 부하 분산
- scale-out : MSA 아키텍처에서 부하 분산
일반적으로 scale-out이 더 싸게 먹힘, 메모리를 16기가에서 32기가로 업그레이드 하는 것보다 16기가 2개를 쓰는게 더 싸다.
MSA 정리와 구성
- HTTP 프로토콜 네트워킹
- 분리된 서비스
- 자동화
- 각 서비스는 각자의 환경을 가질 수 있음
- 각 서비스는 너무 많은 인원이여도 적은 인원이여도 안된다.
- 모놀리식과 달리 공유되는 정보가 하나도 존재하지 않음
- 각 서비스 Order와 Product는 별개의 환경을 가지고 서로 REST API 인터페이스를 통해 호출 함
MSA 구현과 DB 분리
- 사실 MSA의 끝은 DB의 분리
하지만 DB를 분리하기 위해선 event-driven, 분산 트랜잭션 등과 같은 기술이 필요
정리
- MSA에 아직 확실하게 정해진 기준은 없다
다만 HTTP 프로토콜을 사용하고, 각 서비스를 분리하여 인터페이스로 통신 한다는 것이 일반적인 MSA의 구현이다.
- MSA의 마지막은 DB 분리고 이는 상당히 어렵다
DB 분리 방식에는 쿠팡의 방식인 DB 복제와 11번가의 event-driven 방식이 존재한다.
그리고 불현듯 이래서 Docker를 쓰는건가? 라는 생각이 들었다
각 서비스 별 분리가 이루어진다면 그 환경들을 별개로 전부 관리 해야하는데 이런 환경을 각각 저장하고 있으면 편리할 것 같다
근데 그런 일들은 가상 컨테이너를 구현해서 할 수 있는데 그 컨테이너는 도커가 관리해준다.... !!??
참고
MSA 아키텍처 이해 - T아카데미