MSA 단점 및 고려사항
MSA는 만병통치약이 아니다.
MSA의 장점은 그냥 얻어지지 않는다.
공짜가 아니다.
당연히 단점이 있고, 사전에 고려해야할 사항이 있다.
제대로 준비하지 못한채 도입하려 덤빈다면, 흉내낸다면 오히려 단점만 더 부각될 것이다.
이렇게 힘든걸 왜 하자고 했느냐는 아우성만 빗발칠 것이다.
분산 환경으로 인한 복잡성
- Monolith에 비해 서비스별 분산 환경으로 복잡
- 분산 Transaction, 데이터 정합성 등 추가 설계/개발 필요
- REST API 뿐 아니라 Domain Event 특징에 맞춰 추가 설계/개발 필요
Event Driven Architecture 고려/내재화 필요
- Event 발행/구독의 장점 단점 내재화
- Eventually Consistency 이해와 내재화
API First Design 필요
- 서비스간 Interface : API, Publisher, Subscriber
- 대내외 시스템 간 Interface
- Consumer, Provider 간의 협의/약속
Test
- 테스트 전략 : Unit Test, Service Test, Integration Test, End to End Test 등
- Test 코드, 자동화
- 모니터링, 오류추적, 통합 테스트 어려움
Learning Curve, 진입장벽
- DDD, Cloud, DB, Inner/Outer Architecture, DevOps 등등 여러가지 개념과 기술 이해 필요
- 개발/운영 조직, 조직 문화, PoC, 이행전략, 내재화 등의 방안 필요
- MSA를 도입하려는 조직의 준비, 내재화 정도
- Monolith에서 MSA로 전환하는 비용, 2배 ~ 10배 (정량적으로 가늠하기도 어려움, 상황에 따라 너무 다르므로)
- 초기 생산성 낮음
- 국내 MSA는 아직 완성되지 않은 방법론, 기술 등으로 과도기
- AA, Facilitator, SWA, DBA, TA, 보안 전문가 등 최소로 필요한 아키텍트 준비