일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- jvm
- Service 테스트
- 배열
- OOP
- 스프링 부트
- Controller 테스트
- Entity
- 공유락
- 디자인 패턴
- 비링크
- 테스트 코드
- 파스칼 케이스
- Repository 테스트
- 자료구조
- 스네이크 케이스
- 원시 자료형
- 마이크로서비스 아키텍처
- 자바
- Java
- 비즈니스 로직
- springDataJpa
- @Query
- @Version
- do...while
- 트랜잭션 락
- Array
- 낙관락
- 스터디
- 배타락
- DTO
- Today
- Total
menuhwang
MSA : 마이크로서비스 아키텍처 본문
MSA (Microservice Architecture) : 마이크로서비스 아키텍처
하나의 서비스로 구성된 경우 (모놀리식), 만약 카페 서비스를 유지보수, 업데이트를 한다면 카페를 제외한 다른 서비스 마저도 중단될 것이다. 하지만 MSA (Microservice Archtecture)를 적용하면 각 서비스를 독립적인 애플리케이션으로 개발하게 되고, 유지보수 또는 업데이트 시 해당 서비스 외 다른 서비스는 중단시키지 않고 진행할 수 있다.
통신
하나의 서비스로 구성된 경우는 원하는 자원을 가져와 사용하면 되지만, MSA 의 경우 서버 간 통신이 필요해지기도 한다.
ex) 쇼핑 중 결제하려면 쇼핑 정보를 결제 서버에 전달해야한다. 서버 간 통신을 하는 다양한 방식이 있는데 가장 많이 사용되는 방식은 HTTP/HTTPS 방식이다.
프로토콜
HTTP, HTTPS, TCP/IP 등 여러 통신 프로토콜이 존재한다.
장점
유지보수 용이하다.
모놀리식은 한 서비스를 점검해야할 때 모든 서비스를 중단해야한다. 하지만 MSA 아키텍처를 적용하면 해당 서비스만 중단하고 점검을 할 수 있다. 그리고 다른 서비스의 작업을 기다릴 필요없이 서비스를 배포할 수 있다.
지속적인 배포(CD)도 모놀리식에 비해 가볍다.
모든 서비스를 배포하는 것보다 서비스 단위로 배포할 수 있기에 가볍고 시간도 절약할 수 있다.
도커, 쿠버네티스 같은 컨테이너 플랫폼으로 서비스 부하에 따라 개별적으로 스케일링 할 수 있다.
하나하나의 서비스를 도커 컨테이너로 배포하고 서비스 부하에 따라 쿠버네티스로 오토스케일링 할 수 있어 궁합이 좋다.
단점
모놀리식에 비해 복잡하다.
마이크로서비스는 각각 독립적인 서비스로 이루어져 있어 모듈의 인터페이스를 신중하게 처리해야한다. 분산된 서비스마다 분리된 DB의 트랜잭션 관리도 따로 신경써야한다.
트랜잭션 관리가 어렵다.
서버 간 통신에 장애가 생겼을 경우나, 서버의 부하가 있을 경우 트랜잭션을 어떻게 유지할 것인지 고민하고 구현해야한다. 그리고 배포시 각 서비스 간의 충돌이 있는지 확인해야한다.
통합테스트를 진행하기 어렵다.
빈번한 API 호출로 트래픽 증가.
서버 간에 API 호출로 통신을 하기때문에 모놀리식보다 API 호출 빈도가 증가하여 트래픽 증가로 이어진다.
'스터디 > etc' 카테고리의 다른 글
프록시 패턴 : 디자인 패턴 (1) | 2022.08.20 |
---|---|
싱글톤 패턴 : 디자인 패턴 (0) | 2022.08.20 |
REST API (0) | 2022.08.20 |
도메인 비즈니스 로직 (0) | 2022.08.19 |
디자인 패턴 (0) | 2022.08.19 |