MSA와 MA

Jiyeon·2024년 4월 25일

ninishop

목록 보기
1/6

모놀리식(Monolithic) 아키텍처 : MA

  • 하나의 거대한 애플리케이션에서 모든 것을 처리하는 아키텍처
  • 유저생성, 결제, 홈페이지 등등 모든 기능을 하나의 백엔드에서 처리
  • 내부 요소간의 의존성이 강함
  • 구조적으로 강력하게 결합

장점

  • 하나의 환경에서 개발하기 때문에 복잡성이 덜함
  • END-TO-END 테스트에 용이

단점

  • 프로젝트의 규모가 커질수록 빌드, 배포 시간이 길어지며 어려워짐
  • 특정 부분 오류 발생 ➡️ 전체서비스의 장애 또는 서버가 다운됨
  • 수직적인 서버 확장
  • 강력한 하드웨어 필요
  • 트래픽 급증 ➡️ 대응하기 어려움
  • 유저가 줄어듦 ➡️ 남는 메모리가 많아짐

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

장점

  • 작은 서비스로 쪼개져있어 팀 별로 독립적인 개발 및 배포 가능
  • 상호 의존적이지 않으며 다른 언어, 다른 서버 사용 가능
  • 하나의 서비스에서 장애가 발생해도 다른 서비스는 정상 작동됨
  • 수평적 확장이 가능
  • 관리하기 쉽고 클라우드 사용에 적합한 아키텍처
  • 특정 서비스에 유저가 몰린다면 그 서비스의 서버만 확장할 수 있음

단점

  • 실제로 이렇게 서비스 하기까지 많은 과정이 필요하며 넷플릭스의 경우 자체서버에서 AWS로 이동하는데에 5년이나 걸렸다고 함
  • 서비스가 커질수록 복잡도가 기하급수적으로 늘어남
  • 데이터가 여러 서비스에 걸쳐 분산되어있기 때문에 한번에 조회가 어렵고 관리가 어려움

모놀리식은 테스트와 개발이 간편하고 수십년간 성공적으로 사용됨
BUT 한번 기술을 선택하면 변경이 거의 불가능, 서비스가 지속될수록 개발속도가 느려짐 ➡️ 지속 가능한 개발이 어려움

마이크로서비스는 유연하며 빠르게 대처가능하고 작은단위로 배포할 수 있는 편리함이 있음

참고자료

profile
개발자

0개의 댓글