[TIL] 43. Monolithic Architecture, MSA

김지수·2024년 6월 21일

TIL

목록 보기
43/53

Monolithic Architecture


모놀리식 아키텍처는 위 이미지와 같이 하나의 서버에 모든 도메인이 들어가 있는 형태를 말합니다. 우리가 지금까지 했던 과제들이 모두 이 모놀리식이라고 보시면 됩니다. DB 또한 모든 비니지스 로직이 일반적으로 1대의 DB만 사용합니다.

👍 모놀리식의 장점

  • 구조가 단순하다.

    모든 코드가 프로젝트 하나에 위치하고 있다
  • 빠른 개발 속도

    다른 팀과 API 협의 필요 없이 바로 데이터에 접근하여 신규 기능 개발이 가능하다.
  • 동일한 DB 사용

    모든 도메인이 동일한 DB를 사용하므로 필요 데이터를 바로 조회할 수 있다.
  • 배포가 간편하다

    기능 전체를 한 번에 배포할 수 있어, 과정이 단순하고 오류 발생 가능성이 낮다.
  • 일관된 개발 환경

    개발 환경이 모두 일관적이어서 관리가 쉽다.
  • 네트워크 오버헤드 없음

    단일 서버이므로 API 호출에 따른 네트워크 오버헤드가 없다.

Monolithic Architecture 단점

이러한 장점에도 불구하고 모놀리식 아키텍처에는 많은 문제가 있습니다. 그 중 가장 대표적인 문제는 하나의 도메인에서 장애가 발생하면 서비스 전체가 작동 불가능해지는 것입니다.
예를 들어 쇼핑몰에서 배송 조회 기능에 크리티컬한 장애가 발생했다고 가정해 보겠습니다. 모놀리식 아키텍처에서는 이 장애로 인해 서비스 전체가 작동하지 않게 됩니다. 이 경우 고객이 주문을 하려고 해도, 주문과는 전혀 관련 없는 배송 문제 때문에 주문을 할 수 없게 됩니다. 또한 서비스 전체가 장애를 겪기 때문에 쇼핑몰 자체에 접근조차 불가능해질 수도 있습니다.
또한, 장애는 배송 도메인에서만 발생하지 않습니다. 크고 작은 장애는 언제든지 발생할 수 있습니다. 그럴 때마다 모든 서비스가 영향을 받는다면 고객의 경험은 부정적일 것이고 고객 이탈은 불 보듯 뻔합니다.

모놀리식의 단점을 정리하면 아래와 같습니다.

  • 부분 장애가 전체에 영향을 준다.
  • 단순한 변경 하나에 전체를 빌드해야 해야 한다.
  • 모든 코드가 하나의 프로젝트에 있어 작은 코드 변경이 다른 도메인에 영향을 줄 수 있다.
  • 전체 서비스가 동일 기술 스펙하에 있어 각 도메인 별로 적절한 기술을 사용할 수 없다.

MSA


모놀리식 아키텍처의 단점을 극복하기 위해 MSA는 비즈니스 도메인별로 서비스를 분리하고, 독립적으로 배포하고, 확장 가능한 구조를 제공합니다. 이는 더 빠른 개발 속도, 유연한 기술 선택, 효율적인 자원 사용, 높은 유지보수성을 가능하게 합니다. MSA를 도입함으로써 기업은 복잡한 대규모 애플리케이션을 더 효과적으로 관리하고, 빠르게 변화하는 비즈니스 요구사항에 신속하게 대응할 수 있습니다.

마이크로서비스 아키텍처(MSA)의 장점

독립적인 배포

각 마이크로서비스는 독립적으로 배포할 수 있어 배포 주기가 짧아집니다.
하나의 서비스가 문제가 생겨도 다른 서비스에 영향을 미치지 않습니다.

확장성

특정 서비스만 개별적으로 확장할 수 있어 자원을 효율적으로 사용할 수 있습니다.
서비스별로 필요한 만큼만 확장하면 되므로 비용 절감이 가능합니다.

유연한 기술 선택

각 마이크로서비스가 독립적이므로 서비스별로 최적의 기술 스택을 선택할 수 있습니다.
새로운 기술을 도입하기 용이합니다.

개발 속도 향상

작은 팀들이 각자 독립적인 서비스를 개발하므로 병렬 개발이 가능해집니다.
새로운 기능을 빠르게 추가할 수 있습니다.

유지보수 용이성

각 서비스가 작은 단위로 분리되어 있어 유지보수가 쉽습니다.
코드베이스가 작고 명확하므로 디버깅이 용이합니다.

MSA 단점

  • 복잡한 관리

    많은 서비스가 존재하여 서비스 간의 통신과 배포, 모니터링, 로깅 등 관리가 복잡해진다.
  • 네트워크 오버헤드

    서비스 간의 통신에 의한 네트워크 오버헤드와 지연 시간이 발생할 수 있다.
  • 데이터 일관성 문제

    각 서비스가 독립적인 데이터베이스를 가질 수 있어 데이터 일관성을 유지하는데 많은 리소스가 소모 된다. (트랜잭션 이슈)
  • 개발 및 테스트 복잡성

    분산된 아키텍처로 인해 개발 및 테스트 환경 설정이 복잡해진다.
  • 서비스 간 통합 문제

    각 서비스 간의 통합과 협력이 복잡해져 서비스 경계를 명확히 정의하고 유지하는 것이 어렵다.
  • 초기 설정 비용

    초기 설정과 인프라 구축에 많은 시간과 비용이 들 수 있다.

오늘의 회고


모놀리식 아키텍처의 문제점과 msa의 필요성을 이해했다.

profile
서툴고 부족한 점이 많지만, 배우고 발전하며 성장하기 위해 노력하겠습니다.

0개의 댓글