본문 바로가기
Programming/개발 공부

[MSA] Monolithic Architecture 와 MSA의 차이

by 오늘 하루s 2024. 8. 19.
728x90

Monolithic Architecture (모놀리식 아키텍처)

  • 특징
    • 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태로 단일, 독립적인 단위로 개발
    • 모든 기능(사용자 인터페이스, 비즈니스 로직, 데이터베이스 액세스 등)이 하나의 코드베이스 내에 포함되어 있음
  • 장점
    • 개발의 단순성 : 하나의 코드 베이스와 개발 환경을 사용하기 때문에 초기 개발이 상대적으로 간단
    • 배포의 용이성 : 단일 애플리케이션이기 때문에 배포 프로세스가 간단하고 관리가 용이
  • 단점
    • 확장성의 제한 : 애플리케이션이 커질수록 업데이트와 유지 보수가 어려움. 특히, 특정 기능만을 확장하는 것이 어려움
    • 기술 스택의 제한 : 전체 애플리케이션의 기술 스택이 하나로 제한되어, 새로운 기술을 채택하기 어려울 수 있음
    • 부분 장애가 전체 서비스 장애로 이어지는 경우 발생

 

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

  • 특징
    • 작고 독립적으로 배포 가능한 여러 서비스로 구성
    • 각 서비스는 특정 비즈니스 기능을 담당하며, 서로 네트워크를 통해 통신
  • 장점
    • 확장성 : 각 서비스를 독립적으로 확장하고 관리할 수 있어, 전체 시스템의 확장성이 뛰어남
    • 기술적 유연성 : 각 서비스가 독립적이기 때문에, 서로 다른 기술 스택을 사용할 수 있어 기술 채택이 유연
    • 빠른 배포와 혁신 : 작은 단위로 개발되기 때문에, 서비스 별 개별 배포 가능하고 배포 시 전체 서비스의 중단이 없음
    • 장애가 전체 서비스로 확장될 가능성이 적음
  • 단점
    • 개발 복잡도 : 여러 서비스 간의 통신을 어떻게 할지 설계가 복잡
    • 데이터 트랜잭션 : 비즈니스에 대한 DB를 가지고 있는 서비스가 각기 다르기 때문에 트랜잭션을 유지하는 것이 어려움
    • 통합 테스트의 어려움 : 개발 환경과 실제 운영 환경을 동일하게 가져가는게 어려움
    • 배포의 어려움 : 서비스들 간의 연계가 정상적으로 이루어져있는지 확인해야하기 때문에 배포 어려움
728x90