Micro Service vs Monolithic Architecture

노태경·2021년 11월 2일
0

한동안 채용과제와 이사 등으로 블로깅이 아~주 뜸했다..

오늘은 채용된 기업의 제품이 사용하는 서버에 대해 알게되었고, 관련된 간략한 정보들을 정리해 놓고자 함!

Monolithic

Monolithic Architecture 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태
(ex. 부트캠프 과정 중 진행한 프로젝트들의 경우 하나의 Node 서버가 프로젝트의 모든 기능을 처리했음)

장점

  • 로컬 환경에서 개발이 편리
  • 통합 시나리오 테스트 진행이 수월
  • 배포가 간편

단점

  • 코드의 수정 및 추가가 힘들다(사소한 부분 수정이 필요할 때도, 전체 어플리케이션 배포가 필요)
  • 효율적인 자원 관리가 힘들다
  • 자주 업데이트하기 힘들다
  • 새로운 기술 적용이 힘들다
  • 부분의 장애가 서비스 전체의 장애를 가져올 수 있다
  • Scale out이 불리하다

    Scale out? 서비스의 확장, 이용자의 증가 등을 이유로 더 많은 서버 용량과 성능을 필요로 하게될 때, 서비스가 기능별로 분리된 서버를 가지고 있다면, 해당 서비스의 서버만 확장할 수 있지만, Monolithic의 경우 전체 서버를 확장해야 한다

너무 많은 기능들을 하나의 어플리케이션에 담다보니, 서로 의존성이 높아짐
즉, 일정 규모 이상의 서비스에서 Monolithic architecture는 한계를 보인다

MSA - Micro Service Architecture

독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성, 하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 나눠 만드는 아키텍처

장점

  • 빌드 및 테스트 시간 단축 (부분적인 빌드 및 테스트)
  • 유연한 기술 적용 (분리되어 있어, 각 서버의 언어와 프레임워크를 유연하게 사용할 수 있음)
  • Scale out 유리
  • 서비스간 의존성이 낮음, 독립적

단점

  • 트랜잭션이 불편하다
  • 개발 시간의 증가
  • 통합 테스트가 어려움

기존의 온프로미스 서버 기반의 Monolithic Architecture에서 클라우드 환경을 이용하여 서버를 구성하는 MSA로 많은 서비스들이 전환되고 있다

무작정 어느 Architecture가 좋다!기보다는 상황과 필요에 따라 유리한 것을 선택하는 것이 바람직!

** Scale up vs Scale out
ex) 엘리베이터의 성능을 증가시켜 더 많은 이용객을 담당한다 vs 엘리베이터의 수를 늘려 더 많은 이용객을 담당한다
하드웨어의 사양을 높여준다 vs 하드웨어의 수를 늘린다
수직적 확장 vs 수평적 확장
수평적 확장은 쿠버네티스와 같은 오케스트레이션을 이용해 중단 없는 확장도 가능하다

profile
개발자 공부 일기😉

0개의 댓글

관련 채용 정보