Dev/Etc

모놀리식 아키텍처와 마이크로서비스 아키텍처

여뭐준 2021. 10. 7. 22:24

모놀리식 아키텍처 (Monolithic Architecture)

모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행

애플리케이션의 한 프로세스에 대한 수요가 급증? → 해당 아키텍처 전체를 확장해야 합니다.

코드 베이스 증가 → 모놀리식 애플리케이션의 기능을 추가 & 개선 복잡해짐

복잡성으로 인해 실험에 제한을 받고 새로운 아이디어를 구현하기가 어려워짐

종속 관계를 이루며 긴밀하게 결합된 많은 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중시킵니다.

장점

어떤 기능(서비스)이든지 개발되어있는 환경이 같아서 복잡하지않다.

쉽게 고가용성 서버 환경을 만들 수 있다. ( 같은 어플리케이션으로 하나더 만들면 됨)

End-to-End 테스트가 용이하다. (MSA의 경우 테스트에 필요한 서비스들을 모두 동작시켜야함)

단점

프로젝트의 덩치 커짐 → 어플리케이션 구동시간 증가 & 빌드,배포 시간 증가

조그마한 수정사항 → 전체를 다시 빌드하고 배포

많은 양의 코드가 몰려있어 개발자가 모두를 이해 할 수 없고 유지보수도 힘들다.

일부분의 오류가 전체에 영향을 미친다.

기능별로 알맞는 기술, 언어, 프레임워크를 선택하기가 까다롭다.


마이크로 서비스 (MicroService)

애플리케이션이 독립적인 구성 요소로 구축 → 각 애플리케이션 프로세스가 서비스로 실행

이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신

서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행

서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있습니다.

장점

기능별로 마이크로서비스를 개발하고, 작업 할당을 서비스 단위로 하면 개발자가 해당 부분을 온전히 이해할 수 있다.

새로 추가되거나 수정사항이 있는 마이크로서비스만 빠르게 빌드, 배포가 가능하다.

해당 기능에 맞는 기술, 언어 등을 선택하여 사용할 수 있다.

일부분의 오류 발생 → 해당 기능에만 오류가 발생 → 그 부분만 빠르게 고쳐서 정상화가 가능

단점

1. 무엇보다 관리가 힘들다.

작은 여러 서비스들이 분산되어있기 때문에 모니터링이 힘들다.

2. 모놀리식 아키텍쳐의 개발보다 조금 까다롭다.

서로를 호출하여 전체 서비스가 이루어지기 때문에 무조건 다른 서비스를 호출하는 코드가 추가된다.

3. 통신관련 오류가 잦을 수 있다.

마이크로 서비스끼리 계속 서로 통신을 하다보니 모놀리식 아키텍쳐에 비해 통신관련 오류가 잦음

4. 테스트가 불편하다.

예로 End-to-End 테스트를 위해 UI, Gateway 등등 여러개의 마이크로 서비스를 구동시켜야 했었다.

참고 출처 :

 

(마이크로 서비스 vs 모놀리식 아키텍처) MicroService vs Monolithic Architecture 간단 소개 및 주관적 의견

모놀리식 아키텍처 (Monolithic Architecture) 장점 1. 어떤 기능(서비스)이든지 개발되어있는 환경이 같아서 복잡하지않다. 2. 쉽게 고가용성 서버 환경을 만들 수 있다. ( 같은 어플리케이션으로 하나

lion-king.tistory.com

https://aws.amazon.com/ko/microservices/

반응형