본문 바로가기

Flask-Study

Ep16 : 모놀리식 아키텍처 / 마이크로 서비스 아키텍처

모놀리식 아키텍처

모놀리식 아키텍처는 소프트웨어 프로그램의 전통적인 모델로, 자체 포함 방식이며 다른 어플리케이션과 독립적인 통합된 유닛으로 만들어 진다.

모놀리식 아키텍처는 모든 비즈니스 관련 사항을 함께 결합하는 하나의 코드 베이스를 갖추 대규모의 단일 컴퓨팅 네트워크이다. 즉, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합 되어 있는 상태이다.

 

장점

  • 애플리케이션이 하나의 코드 베이스에 기반을 두어 단순하기 때문에 개발 속도가 빠르다.
  • 실행 파일 또는 디렉토리가 하나여서 배포가 쉽다.
  • 하나의 코드 베이스로 애플리케이션을 구축하여 개발이 더 쉽다.
  • 대부분 하나의 API만으로 마이크로서비스에서 여러 API가 수행하는 것과 동일한 기능을 수행할 수 있다.
  • 하나의 중앙 집중식 장치이므로 분산된 어플리케이션보다 테스트를 더 빠르게 수행할 수 있다.
  • 모든 코드가 한 곳에 있으므로 요청을 따라가서 문제를 찾기가 더 쉽다.

단점

  • 대규모 모놀리식 어플리케이션에서는 개발이 더욱 복잡해지고 속도가 느려진다.
  • 개별 컴포넌트를 확장할 수 없다.
  • 모듈에 오류가 있으면 어플리케이션 전체의 가용성에 영향을 줄 수 있다.
  • 프레임워크 또는 언어를 변경하면 어플리케이션 전체에 영향을 미치기 때문에 비용과 시간이 많이 소요된다.
  • 모놀리스의 경우 모놀리스에서 이미 사용한 기술로 제한된다.
  • 모놀리식 어플리케이션을 약간만 변경하는 경우에도 전체 모놀리스를 다시 배포해야 한다.

 

마이크로 서비스 아키텍처

마이크로 서비스 아키텍처는 독립적으로 배포 가능한 일련의 서비스를 이용하는 아키텍처 방법이다.

하나의 큰 어플리케이션을 여러 개의 작은 서비스 유닛으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처이다.

각 마이크로 서비스는 상호 통신이 가능하며 이를 통해 전체 서비스를 구성한다.

 

장점

  • 배포가 잦은 소규모 팀에서 애자일 작업 방식을 유도한다.
  • 새로운 기능을 실행해 보고 문제가 발생하면 롤백할 수 있다. 따라서 코드를 보다 쉽게 업데이트 하고 새로운 기능의 시간 출시 시간을 단축할 수 있다.
  • 개별 서비스의 결함과 버그를 쉽게 격리하고 해결할 수 있다.
  • 개별 기능을 빠르고 쉽게 독립적으로 배포할 수 있다.
  • 원하는 도구를 자유롭게 선택할 수 있다.
  • 전체 어플리케이션이 중단될 위험 없이 특정 서비스에 대한 변경 사항을 배포할 수 있다.

 

단점

  • 여러 팀이 더 많은 장소에 더 많은 서비스를 만들기 때문에 모놀리스 아키텍처에 비해 더 복잡해진다.
    때문에 무분별한 개발 확산이 적절하게 관리되지 않으면 개발 속도가 느려지고 운영 성능이 저하된다.
  • 각각의 새 마이크로 서비스는 테스트 도구, 배포 플레이북 등에 대한 자체적인 비용이 발생할 수 있다.
  • 업데이트 및 인터페이스를 조정하기 위해 또 다른 커뮤니케이션과 공동 작업이 이루어져야 한다.
  • 각 마이크로 서비스는 자체적인 로그 집합을 가지고 있어 디버깅이 더 복잡해진다.
  • 공통 플랫폼이 없어 여러 언어, 로깅 표준 및 모니터리잉 사용될 수 있다.
  • 다양한 서비스가 도입되는 많큼 팀의 수도 늘어나기 대문에 나중에 어떤 서비스를 사용하거나 지원을 받으려면
    누구에게 문의를 해야하는지 파악이 어려워질 수 있다.