728x90
반응형
SMALL
학습내용
- MSA vs Monolithic
- MSA 도입시 고려사항
- MSA에서의 데이터 일관성 유지전략
학습정리
1. MSA vs Monolithic
MSA : 각 기능이 독립적인 서비스로 분리 된 아키텍처
- 장점
- 독립적인 배포 및 확장
- 다양한 기술 스택 사용 가능
- 장애 격리
- 단점
- 복잡한 서비스 관리
- 분산 시스템의 복잡성
- 데이터 일관성 문제
- 네트워크 지연 및 장애 가능성
- 장점
Monolithic : 모든 기능이 하나의 코드베이스에 통합 된 아키텍처
- 장점
- 단순한 개발 및 배표
- 초기 개발 속도가 빠름
- 디버깅 및 테스트가 비교적 쉬움
- 단점
- 확장성의 한계
- 부분적인 업데이트가 어려움
- 새로운 기술도입이 어려움
- 장점
확장성, 유지보수성, 복잡성 관점
확장성
- MSA : 수평적 확장, 필요한 서비스에만 독립적으로 확장하여 자원 효율
- Monolithic : 수직적 확장, 하드웨어 업그레이드 하여 성능 향상
유지보수성
- MSA : 빠른 업데이트, 독립적인 서비스로 특정 서비스의 변경이 다른 서비스에 영향 받지 않음
- Monolithic : 변경의 어려움, 모든 기능이 하나의 코드베이스로 통합되어 코드가 복잡해지고 유지보수가 어려워 질 수 있음
복잡성
- MSA : 초기 복잡성, 운영 복잡성
- Monolithic : 단순한 초기 복잡성, 규모가 커질 수록 복잡성 증가
결론
- 확장성: MSA는 특정 서비스만 확장할 수 있는 유연성을 제공하여 확장성이 뛰어납니다.
- 유지보수성: MSA는 독립적인 서비스 구조로 인해 유지보수가 용이하지만, 모놀리틱은 코드베이스가 커질수록 유지보수가 어려워집니다.
- 복잡성: MSA는 초기 및 운영 복잡성이 높지만, 모놀리틱은 시간이 지남에 따라 복잡성이 증가합니다.
-> 이러한 비용들을 계산하여 MSA, Monolithic 중 선택
구분 MSA (Microservices Architecture) Monolithic (Monolithic Architecture) 구조 여러 개의 독립적인 서비스로 구성 하나의 큰 애플리케이션으로 구성 배포 개별 서비스 단위로 배포 가능 전체 애플리케이션을 한 번에 배포 확장성 개별 서비스별로 독립적 확장 가능 전체 시스템을 함께 확장해야 함 개발 속도 팀별로 독립 개발 가능 → 빠른 개발 팀 간 의존성이 높아 속도가 저하될 수 있음 배포 위험 개별 서비스만 배포 가능 → 리스크 감소 하나의 작은 변경도 전체 시스템에 영향 기술 스택 각 서비스별로 다양한 기술 사용 가능 단일 기술 스택 유지 데이터 관리 서비스별 개별 DB 관리 가능 → 분산 데이터 단일 DB에서 모든 데이터 관리 장애 영향 특정 서비스 장애 시, 일부 기능만 영향 한 부분 장애 시 전체 시스템 다운 가능 운영 및 유지보수 분산 시스템 관리 필요 → 복잡함 단순한 구조로 운영이 쉬움 테스트 서비스별 개별 테스트 필요 → 복잡함 단일 애플리케이션으로 테스트가 쉬움 적용 사례 대규모 트래픽, 다양한 기능 필요 (Netflix, Amazon) 스타트업, 단순한 서비스 (소규모 웹사이트)
2. MSA 도입시 고려사항
- 조직문화 : DevOps 및 CI/CD 문화 필요
- 서비스 경계 정의 : 서비스 간의 경계를 명확히 정의 필요
- 데이터 관리 : 데이터베이스의 분산 및 일관성 관리
- 모니터링 및 로깅 : 각 서비스의 상태를 모니터링 할 수 있는 시스템 필요
- 네티워크 인프라 : 서비스 간 통신을 위한 안정적인 네트워크 필요
- 보안 : 서비스간 통신의 보안 강화 필요
3. MSA에서의 데이터 일관성 유지전략
- 최종적 일관성 (Eventual Consistency)
- 모든 서비스가 즉시 일관성을 유지 할 필요가 없지만, 시간이 지나면서 최종적으로 일관성을 달성하는 방식
- 시스템의 가용성을 높이고, 성능 향상
- 일시적인 불일치가 발생
- SAGA 패턴
- 보상 트랜잭션(Compensating Transaction)을 이용하여 분산 트랜잭션을 처리 하는 방법
- 처리 방식
- Choreography
- 각 서비스가 이벤트를 발생하고, 이를 다른서비스가 구독하여 처리
- 작동방식
- 서비스 A가 트랜잭션을 실행
- 트랜잭션 완료시 다음 서비스 B를 트리거
- 1,2 번을 연쇄적으로 진행
- 중간에 실패하면 보상 트랜잭션을 통해 이전 단계들을 롤백
- 주로 해당 방식을 많이 이용함
- Orchestration
- 중앙 컨트롤러가 전체 트랜잭션 흐름을 관리
- Choreography
참고자료
728x90
반응형
LIST
'TIL' 카테고리의 다른 글
8_3.MSA 데이터 설계 전략 실습 (0) | 2025.02.14 |
---|---|
8_2.MSA DDD 설계 및 구현 실습 (0) | 2025.02.11 |
7_5.성능 검증을 위한 NGrinder 설정과 실습 (0) | 2025.02.10 |
7_4.트랜잭션 예외 처리와 외부 API 연동 실습 (0) | 2025.02.09 |
7_3.롤백 전략과 커밋 관리 (0) | 2025.02.07 |