MSA

gwanhun·2024년 8월 12일
post-thumbnail

모놀리식 아키텍처

모놀리식 아키텍처(Monolithic Architecture)에서는 애플리케이션의 모든 기능이 단일 코드베이스 내에서 긴밀하게 연결되어 있습니다. 이는 단일 언어로 작성되며, 일반적으로 하나의 데이터베이스를 사용합니다.

장점:

  • 단순성: 초기 개발과 배포가 간단하며, 관리가 용이합니다.
  • 일관성: 동일한 기술 스택과 프레임워크를 사용하므로 개발 환경이 일관됩니다.
  • 성능: 내부 호출이 메모리 내에서 이루어지므로 네트워크 지연이 없습니다.

단점:

  • 확장성 제한: 전체 애플리케이션을 확장해야 하므로 특정 부분의 성능 병목 현상을 해결하기 어렵습니다.
  • 유연성 부족: 새로운 기술을 도입하거나 기존 기술을 업데이트하는 것이 복잡할 수 있습니다.
  • 신뢰성 문제: 하나의 오류가 전체 시스템을 중단시킬 수 있습니다.

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

MSA(Microservices Architecture, 마이크로서비스 아키텍처)에서는 애플리케이션을 작고, 독립적으로 배포 가능한 서비스들로 분리합니다. 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적인 데이터베이스를 사용할 수 있습니다.

장점:

  • 확장성: 개별 서비스를 독립적으로 확장할 수 있어 요구에 따른 유연한 대응이 가능합니다.
  • 유연성: 다양한 기술 스택을 사용할 수 있으며, 기술 변화에 빠르게 적응할 수 있습니다.
  • 신뢰성: 하나의 서비스에 장애가 발생해도 다른 서비스에는 영향을 미치지 않습니다.

단점:

  • 복잡성: 서비스 간의 통신과 데이터 일관성 유지가 복잡하며, 시스템 전체의 모니터링과 관리가 어렵습니다.
  • 성능 문제: 서비스 간 통신에 네트워크 지연이 발생할 수 있습니다.
  • 보안 과제: 서비스가 많아짐에 따라 보안 구성과 관리가 더 복잡해질 수 있습니다.

선택 기준

  • 규모와 복잡성: 소규모 또는 간단한 애플리케이션의 경우 모놀리식이 적합할 수 있으며, 대규모 또는 복잡한 시스템은 MSA가 더 유리할 수 있습니다.
  • 조직 구조: 큰 조직이나 여러 팀이 독립적으로 작업하는 환경에서는 MSA가 효과적일 수 있습니다.
  • 성능 요구사항: 높은 성능과 낮은 지연 시간이 필요한 경우 모놀리식이 유리할 수 있습니다.

업무에 적용 한다면?

  • 아래 그림처럼 하나로 묶여있던 기능들을 기능별로 서비스를 나누어 관리할 수 있을것이다.
  • 하지만 현재 프로젝트를 혼자서 컨트롤하고 있고 프로젝트사이즈나 이용자 수가 그렇게 많지 않기때문에 굳이 도입하기에는 리스크나 비용적인 측면에서 비효율적일 것입니다.
  • 추후 사용자가 늘어나고, 프로젝트에 여러 기능이 추가되어 사이즈가 커져 여러 개발자가 같이 업무를 진행한다면 적용해 보는것이 좋을것 같습니다.
profile
주니어 백앤드 개발자

0개의 댓글