시스템 아키텍처 (Monolithic Architecture 와 Microservcie Architecture)

haru·2025년 1월 24일
0

스프링 프로젝트

목록 보기
1/3

Monolithic Architecture 란?

위와 같이 구성되어 있는 애플리케이션을 보자.

특징을 보았을 때 게시판 서비스의 모든 기능을 포함하고 있다.
그렇기 떄문에 간단한 구조를 가지고 있기에 쉽고 빠르게 개발할 수 있다.

이런 구조로 개발하면 계속 되지 않을까? 라는 생각을 가지고 있을 것이다.

Monolithic Architecture 의 단점

그렇지만 .. 만약 게시글의 조회 수가 급등했다고 생각을 해보자.

게시글의 부하가 많아져서 서버의 성능이 나오지 않아 제대로 기능들이 작동하지 않을 것이다. 그렇다면 이러한 이슈를 해결하기 위해 고민 해보았을 때 나는 2가지로 생각이 들었다.

  1. 서버의 성능 향상 (Scale Up)
  2. 서버의 수를 여러개 두기 (Scale Out)

하지만 게시글의 기능만 트래픽이 심해져 Scale Up 과 Scale Out을 하였을 떄 단점이 무엇일까?

간단히 생각해보면 게시글과 관련 없는 다른 기능들도 같이 배포돼서 필요없는 리소스를 점유하게 되어 있는 것이다. 그렇다면 이렇게 하는 것은 어떤가?

Microservcie Architecture 란?

다음과 같이 서비스 자체를 6개로 나누는 것이다.

이렇게 나누는 것이 Microservice Architecture라고 한다.

그렇다면 게시글의 기능만 트래픽이 심해져 있을때 이 게시글 서비스를 담당하는 서버만
Scale up 또는 Scalue Out 을 통하여 관리 할 수 있게 된다.

그러면 전부 Microservice Architecture를 사용하면 되는데 왜 안할까?

Microservcie Architecture의 단점

하지만 이와 같이 서비스를 잘게 쪼개게 된다고 생각을 가정하면

  1. 각 서비스 간 복잡한 통신 및 모니터링 필요
  2. 데이터 일관성 및 트랜잭션 관리의 어려움
  3. 어려운 개발 난이도

가 있을 것이다. 그렇기 때문에 빠르게 개발하고 진행하기에 어려움을 가질 수 있다.

결론

다음과 같이 표를 만들어 Monolithic Architecture 와 Microservice Architecture의 장단점을 표로 정리하였다.

우리가 처한 환경과 서비스의 목적 및 요구사항에 맞춰 적잘한 아키텍쳐를 생성하여 진행하면 될 것 같다.

0개의 댓글