TIL

8_1.MSA와 모놀리틱 아키텍처 비교와 MSA 장단점 및 도입 시 고려사항

꿀승 2025. 2. 10. 22:44
728x90
반응형
SMALL

학습내용

  1. MSA vs Monolithic
  2. MSA 도입시 고려사항
  3. 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
        • 각 서비스가 이벤트를 발생하고, 이를 다른서비스가 구독하여 처리
        • 작동방식
          1. 서비스 A가 트랜잭션을 실행
          2. 트랜잭션 완료시 다음 서비스 B를 트리거
          3. 1,2 번을 연쇄적으로 진행
          4. 중간에 실패하면 보상 트랜잭션을 통해 이전 단계들을 롤백
        • 주로 해당 방식을 많이 이용함
      • Orchestration
        • 중앙 컨트롤러가 전체 트랜잭션 흐름을 관리

참고자료

728x90
반응형
LIST