[Node.js] 트래픽 분산에 대한 고민

Dragon_Tack·2023년 9월 23일

👋 MSA의 등장 배경 : 모놀리식 아키텍쳐

모놀리식 아키텍쳐(Monolithic Architecture)는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태이다.

예를 들어, Auth 모듈, Posting 모듈, Chatting 모듈 등을 개발하고 개발 완료된 Application을 하나의 결과물로 패키징하여 배포되는 형태를 말한다. (이러한 애플리케이션을 모놀리식 애플리케이션이라고 한다.)

하지만 모놀리식 아키텍쳐는 일정 규모 이상의 서비스에서 한계를 보인다.
이게 무슨 말인지 아래에서 차근차근 읽어보자.

😱 모놀리식 아키텍쳐의 한계

부분적인 장애가 전체 서비스 장애로 확대될 수 있다. (잘못된 코드 배포/갑작스런 트래픽 증가)
부분적인 Scale-out이 어렵다. (Scale-out : 여러 서버로 나누어 일을 처리하는 방식) (Monolithic Architecture에서는 사용되지 않는 다른 모든 서비스가 Scale-out되어야 하기 때문에 부분 Scale-out이 어렵다.)
여러 컴포넌트가 강하게 결합되어 있기 때문에 서비스의 변경이 어렵고, 수정 시 장애의 영향도 파악하기 힘들다.
배포 시간이 오래 걸린다. (규모가 커짐에 따라 작은 변경에도 높은 수준의 테스트 비용 발생)
한 Framework와 언어에 종속적이다.

☄️ 혜성처럼 등장한 MSA

MSA는 Micro Service Architecture의 약어이다.

위에서 말한 것처럼 모놀리식 아키텍쳐는 일정 규모 이상의 서비스에서 한계를 보인다.
생각해보자. 기존에 만들어본 토이 프로젝트와 같이 규모가 작고 트래픽이 적게 들어오는 서비스에서는 굳이 MSA를 도입할 필요성을 못 느낄 것이다.

하지만 네이버와 같은 서비스의 경우 뉴스, 메일, 지식인, 카페, 검색엔진, 쇼핑(결제) 등의 기능이 한 백엔드 애플리케이션에 합쳐져 있다면 막대한 코드 양이 개발과 유지보수를 어렵게 할 것이고, 많은 개발자들이 한 애플리케이션에서 작업한다면 빈번한 Conflict가 일어날 것이며, 결국 서비스가 한계에 다다를 것이다.

이와 같은 문제를 해결하기 위해 뉴스 API, 카페 API, 쇼핑 API 등으로 다른 서버를 사용할 수 있게 하는 MSA라는 개념이 나왔다. MSA는 Netflix가 이 개념을 실제 서비스에 도입하여 성공적인 결과를 이끌어냈기 때문에 유명해진 것이라고 생각한다.

MSA에 대한 이해도를 좀 더 높이고 채용공고에서 왜 선호하는지 좀더 깊이있게 생각해보는 시간을 가졌다.

profile
고민의 흔적을 늘여놓는 공간

0개의 댓글