일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java 파티
- spring mongodb
- 백준 1504 java
- rabbitmq 싱글톤
- java 1509
- ipfs singletone
- 익명 객체 @transactional
- java 1238
- Spring ipfs
- 백준 2252 줄세우기
- Java Call By Refernce
- 백준 특정한 최단 경로
- 백준 연결요소 자바
- 자바 1676
- kotiln const val
- spring mongodb switch
- kotiln const
- spring mongoTemplate
- java 팩토리얼 개수
- javav 1676
- 전략 패턴이란
- nodejs rabbitmq
- mongodb lookup
- ipfs bean
- 안정해시
- kotiln functional interface
- spring mongoTemplate switch
- go
- java 백준 1509
- 자바 백준 팩토리얼 개수
Archives
- Today
- Total
공부 흔적남기기
Spring Cloud를 이용한 MSA(2) 본문
728x90
반응형
MSA를 채택하여 서비스를 운영시 여러가지 단점 및 관리해야하는 포인트가 있다.
서비스간 결합도가 낮아지고 각 서비스의 응집력이 높아짐는 장점이 있겠지만
오류 추적, 한 서비스에서의 에러 전파, 트랜잭션 관리( 데이터 동기화 ) 에 대한 고려가 필요하다.
1. 오류 추적
서비스가 많아지고 각 서비스가 다른 서비스를 호출하고 Depth가 점점 높아짐에따라 어디서 에러가 났는지 어떤 흐름으로 진행되는지 파악하기 어렵다. 어떤 에러가 발생했을 경우 해당하는 서비스가 호출하는 다른 서비스를 확인하고 DFS 마냥 계속 계속 에러를 확인해야할 수 있다. 이러한 문제를 보완하기 위해 ZipKin을 통해 분산 서비스를 추적할 수 있다. Sentry를 통해서도 어떤 서비스에서 에러가 떨어졌는지 확인해볼 수 있을 것이다.
2. 에러 전파
한 서비스에서 에러가 발생할 경우 해당 서비스를 호출하는 서비스도 에러가 떨어져 Client 에 500Error가 떨어질 것이다. 또한 서비스가 복구되기전까지 클라이언트에게 계속해서 대기하게 만들 수 있다. 따라서 해당 문제를 CircuitBreaker를 통해 특정 threshold 와 timeout을 통해 오류가 난 서비스 호출을 잠시 멈추고 이전에 세팅해둔 기본값을 유저에게 전달할 수 있을 것이다. Reslilence를 위해 CircuitBreaker Open시간을 적절히 둬야 한다.
3. 트랜잭션 관리 (데이터 일관성)
2개의 서비스에서 하나의 작업을 트랜잭션처럼 원자성을 지녀야하고 rollback이 필요하다면 SAGA Pattern이나 2PC Pattern을 통해 서비스를 망라하여 트랜잭션을 거는 방법이 필요할 것이다.
4. 모니터링
MicroMeter, Prometheus, Grafana를 통해 서비스를 모니터링하고 트래픽, 자원 관리, Scale 관리를 적절히 해주어야 한다.
728x90
반응형
'MSA & Arcitecture' 카테고리의 다른 글
헥사고날 아키텍쳐에 대한 고찰? (0) | 2025.02.17 |
---|---|
MSA란 -마틴 파울러 아티클 읽기 (0) | 2025.02.05 |
Spring Cloud를 이용한 MSA(1) (0) | 2025.01.27 |
spring-cloud-function-context.kotlin_moduleModule was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.1.0, expected version is 1.9.0. (0) | 2025.01.27 |
안정해시(해시링) (0) | 2025.01.19 |