본문 바로가기
DevOps

모놀리스 아키텍처 vs. 마이크로서비스 아키텍처

by 박다소니 2024. 10. 6.

1. 배포 방식

  • 모놀리스 아키텍처: 모든 기능(계산, 복사, 할 일 등)이 하나의 코드베이스와 배포 단위로 함께 관리됨. 하나의 기능이 변경되면 전체 애플리케이션을 재배포해야 함.
  • 마이크로서비스 아키텍처: 각 기능이 독립적인 서비스로 분리되어 개별적으로 배포 가능. 기능마다 독립적인 확장이 가능해 특정 기능만 업데이트하거나 배포할 수 있음.

2. 확장성

  • 모놀리스 아키텍처: 특정 기능(예: 계산)을 확장하려면 애플리케이션 전체를 확장해야 하므로 리소스 낭비가 발생할 수 있음.
  • 마이크로서비스 아키텍처: 필요한 기능만 개별적으로 확장 가능. 예를 들어 계산 서비스만 여러 인스턴스로 확장해 리소스를 효율적으로 사용할 수 있음.

3. 데이터베이스 관리

  • 모놀리스 아키텍처: 모든 기능이 동일한 데이터베이스를 공유함. 예를 들어 고객 테이블을 변경하려면 주문 팀, 배송 팀과 협력해야 하는 등 데이터베이스 구조 변경에 있어 많은 의존성이 존재함.
  • 마이크로서비스 아키텍처: 각 마이크로서비스는 독립적인 데이터베이스를 가짐. 이로 인해 데이터베이스 구조 변경 시 다른 팀과의 협력이 불필요하며, 각 서비스의 데이터베이스를 독립적으로 관리 가능함.

4. 팀 간 의존성

  • 모놀리스 아키텍처: 여러 기능이 같은 데이터베이스와 코드베이스에 의존하므로, 특정 기능을 변경하거나 업데이트할 때 여러 팀이 협력해야 하는 경우가 많음.
  • 마이크로서비스 아키텍처: REST API를 통해 다른 서비스와 통신하며 각 서비스는 독립적이므로, 다른 팀과 협력할 필요 없이 서비스 변경이 가능함.

5. 느슨한 결합

  • 모놀리스 아키텍처: 모든 기능이 하나의 애플리케이션에 결합되어 있어, 느슨한 결합을 실현하기 어려움.
  • 마이크로서비스 아키텍처: 각 서비스가 독립적으로 동작하며 REST API를 통해 통신하므로, 느슨하게 결합된 구조를 가짐. 이를 통해 서비스 간의 영향도를 줄일 수 있음.

 

 

->

모놀리스 아키텍처 :  작은 규모의 애플리케이션에서 단순성 측면에서 유리

마이크로서비스 아키텍처 :  대규모 애플리케이션의 확장성, 관리 용이성, 팀 독립성을 보장하는 데 적합