
모놀리식 아키텍처는 위 이미지와 같이 하나의 서버에 모든 도메인이 들어가 있는 형태를 말합니다. 우리가 지금까지 했던 과제들이 모두 이 모놀리식이라고 보시면 됩니다. DB 또한 모든 비니지스 로직이 일반적으로 1대의 DB만 사용합니다.
구조가 단순하다.
모든 코드가 프로젝트 하나에 위치하고 있다빠른 개발 속도
다른 팀과 API 협의 필요 없이 바로 데이터에 접근하여 신규 기능 개발이 가능하다.동일한 DB 사용
모든 도메인이 동일한 DB를 사용하므로 필요 데이터를 바로 조회할 수 있다.배포가 간편하다
기능 전체를 한 번에 배포할 수 있어, 과정이 단순하고 오류 발생 가능성이 낮다.일관된 개발 환경
개발 환경이 모두 일관적이어서 관리가 쉽다.네트워크 오버헤드 없음
단일 서버이므로 API 호출에 따른 네트워크 오버헤드가 없다.
이러한 장점에도 불구하고 모놀리식 아키텍처에는 많은 문제가 있습니다. 그 중 가장 대표적인 문제는 하나의 도메인에서 장애가 발생하면 서비스 전체가 작동 불가능해지는 것입니다.
예를 들어 쇼핑몰에서 배송 조회 기능에 크리티컬한 장애가 발생했다고 가정해 보겠습니다. 모놀리식 아키텍처에서는 이 장애로 인해 서비스 전체가 작동하지 않게 됩니다. 이 경우 고객이 주문을 하려고 해도, 주문과는 전혀 관련 없는 배송 문제 때문에 주문을 할 수 없게 됩니다. 또한 서비스 전체가 장애를 겪기 때문에 쇼핑몰 자체에 접근조차 불가능해질 수도 있습니다.
또한, 장애는 배송 도메인에서만 발생하지 않습니다. 크고 작은 장애는 언제든지 발생할 수 있습니다. 그럴 때마다 모든 서비스가 영향을 받는다면 고객의 경험은 부정적일 것이고 고객 이탈은 불 보듯 뻔합니다.
- 부분 장애가 전체에 영향을 준다.
- 단순한 변경 하나에 전체를 빌드해야 해야 한다.
- 모든 코드가 하나의 프로젝트에 있어 작은 코드 변경이 다른 도메인에 영향을 줄 수 있다.
- 전체 서비스가 동일 기술 스펙하에 있어 각 도메인 별로 적절한 기술을 사용할 수 없다.
모놀리식 아키텍처의 단점을 극복하기 위해 MSA는 비즈니스 도메인별로 서비스를 분리하고, 독립적으로 배포하고, 확장 가능한 구조를 제공합니다. 이는 더 빠른 개발 속도, 유연한 기술 선택, 효율적인 자원 사용, 높은 유지보수성을 가능하게 합니다. MSA를 도입함으로써 기업은 복잡한 대규모 애플리케이션을 더 효과적으로 관리하고, 빠르게 변화하는 비즈니스 요구사항에 신속하게 대응할 수 있습니다.
독립적인 배포
각 마이크로서비스는 독립적으로 배포할 수 있어 배포 주기가 짧아집니다.
하나의 서비스가 문제가 생겨도 다른 서비스에 영향을 미치지 않습니다.확장성
특정 서비스만 개별적으로 확장할 수 있어 자원을 효율적으로 사용할 수 있습니다.
서비스별로 필요한 만큼만 확장하면 되므로 비용 절감이 가능합니다.유연한 기술 선택
각 마이크로서비스가 독립적이므로 서비스별로 최적의 기술 스택을 선택할 수 있습니다.
새로운 기술을 도입하기 용이합니다.개발 속도 향상
작은 팀들이 각자 독립적인 서비스를 개발하므로 병렬 개발이 가능해집니다.
새로운 기능을 빠르게 추가할 수 있습니다.유지보수 용이성
각 서비스가 작은 단위로 분리되어 있어 유지보수가 쉽습니다.
코드베이스가 작고 명확하므로 디버깅이 용이합니다.
복잡한 관리
많은 서비스가 존재하여 서비스 간의 통신과 배포, 모니터링, 로깅 등 관리가 복잡해진다.네트워크 오버헤드
서비스 간의 통신에 의한 네트워크 오버헤드와 지연 시간이 발생할 수 있다.데이터 일관성 문제
각 서비스가 독립적인 데이터베이스를 가질 수 있어 데이터 일관성을 유지하는데 많은 리소스가 소모 된다. (트랜잭션 이슈)개발 및 테스트 복잡성
분산된 아키텍처로 인해 개발 및 테스트 환경 설정이 복잡해진다.서비스 간 통합 문제
각 서비스 간의 통합과 협력이 복잡해져 서비스 경계를 명확히 정의하고 유지하는 것이 어렵다.초기 설정 비용
초기 설정과 인프라 구축에 많은 시간과 비용이 들 수 있다.
모놀리식 아키텍처의 문제점과 msa의 필요성을 이해했다.