CS

Monolith vs Microservice와 MSA 개념 및 특징

cob 2023. 7. 20. 22:05

 

Monolith Architecture란?
모든 요소를 하나의 커다란 소프트웨어에 포함하여 개발하는 방법으로, 데이터베이스 로직, 비즈니스 로직, 그리고 프런트엔드 처리까지 모두 단일한 애플리케이션으로 구성되어 작동하고, 이를 패키징하여 서버에 배포하는 방식을 의미합니다.

 

Microservice Architecture란?
애플리케이션을 작은, 독립적인 서비스로 분리하여 개발하고 운용하는 방법으로, 전체 애플리케이션을 여러 개의 작은 마이크로서비스로 분리하고 각 마이크로서비스는 자체적인 비즈니스 로직을 갖고 있으며, 독립적으로 개발, 배포, 확장이 가능하다. 이러한 마이크로서비스는 서로 네트워크를 통해 통신하며, 작은 서비스들이 모여 전체 애플리케이션을 구성하게 된다.

 

 

 


 

1. Monolith Architecture 구조

하나의 시스템에 애플리케이션을 구성하고 있는 모든 서비스가 패키징 되어서 서비스가 되어야 하기 때문에 시스템의 일부만 수정한다 하더라도 전체 애플리케이션을 다시 빌드하고 테스트 후 패키징 해야 한다는 단점을 가지고 있다. 

 

 

 


2. MSA(Microservice Architecture) 구조

HTTP API 통신을 할 수 있는 작은 규모의 여러 서비스들의 묶음으로 비즈니스 기능을 중심으로 구축되어야 하며 완전하게 자동화된 배포 시스템을 사용해야한다.  

  • 각각의 서비스가 독립적으로 구분되어 비즈니스 로직과 데이타베이스 관련 로직을 개발하고, 데이터 베이스도 하나의 통일된 데이터베이스가 아니라 독립적인 서비스에 맞게 사용된다.

 

 

 


3. MSA 특징

1)  독립적인 배포 가능한 작은 서비스
마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스로 구성되어 있다. 이러한 독립성은 개별적으로 배포되고 확장될 수 있게끔 설계되어 있어서 서비스 간의 상호 의존성이 최소화됩니다. 하지만, 이로 인해 서비스 경계를 정확하게 구분하는 것이 중요합니다. 잘못된 경계 설정은 서비스의 크기와 책임이 모호해지고, 유지보수 및 확장에 어려움을 초래할 수 있습니다.

2) HTTP기반의 RESTful API 통신
서로 다른 서비스들 간에 RESTful API를 통해 통신한다. RESTful API는 HTTP 메서드(Get, POST 등)를 사용하여 리소스를 관리하고, JSON과 같은 경량 데이터 포맷을 사용하여 데이터를 주고받는데 이러한 통신 방식은 단순하고 유연하며, 클라이언트와 서버 간의 느슨한 결합을 가능케 한다.

3) Configuration Management
서비스의 설정 정보나 환경 변수들을 코드 내에 하드코딩하지 않고, 외부 설정 관리 도구를 사용하여 처리한다. 이렇게 하면 설정 변경 시에 코드 수정 없이도 외부에서 설정을 관리할 수 있으며, 서비스 배포 과정에서 설정 정보를 쉽게 교체하거나 업데이트할 수 있다.

4) Cloud Enabled
클라우드 네이티브 기술과 플랫폼을 최대한 활용하여 구축된다. 클라우드 서비스를 사용하면 자동화, 확장성, 가용성 등을 쉽게 제공할 수 있으며, 클라우드 환경에서 운영되는 서비스들이 더 효율적으로 작동할 수 있다.

5) Dynamic Scale Up and Scale Out
서비스의 인스턴스 수를 동적으로 확장하거나 축소하여 트래픽에 대응할 수 있다. 이를 통해 필요에 따라 자원을 효율적으로 사용하고 서비스의 가용성과 성능을 유지할 수 있게 된다.

6) CI/CD
지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment)는 MSA의 핵심 개념이다. 개별적으로 개발된 서비스들은 자동화된 빌드, 테스트, 배포 파이프라인을 통해 지속적으로 통합되고 배포되어야 하고, 이를 통해 개발과 배포의 빠른 주기를 유지하며, 안정적인 서비스를 제공할 수 있다.

7) Visibility 
마이크로서비스 아키텍처는 여러 개의 서비스로 이루어진 복잡한 시스템이기 때문에 서비스들의 상태를 모니터링하고 디버깅하는 데에 시각화된 도구가 필요하다. 로깅, 모니터링, 트레이싱 등의 기능을 통해 시스템의 상태와 성능을 실시간으로 파악하고 문제를 해결할 수 있다.

 

 

반응형