본문 바로가기

Computer Science

스케일 아웃 vs 스케일 업

반응형

서버를 운영하다보면 이용자가 증가하거나, 서비스의 확장등으로 지금보다 더 많은 용량과 성능이 필요하다.
이때, 수평적으로 부하를 분산하는 스케일 아웃(scale out) , 서버의 용량 자체를 올리는 스케일 업(scale up)방식이 있다.

 

출처 - 한국데이터산업진흥원

 

스케일 아웃

스케일 아웃 (수평 스케일) 이란 접속된 서버를 여러 대 추가하여 처리 능력을 향상하는 방법이다.
서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 '로드밸런싱'이 필수적으로 동반되어야 한다. 서버 한대가 다운되더라도 다른 서버로 서비스 제공이 가능하다는 장점이 있다.

 

로드밸런싱

- 부하분산 또는 로드 밸런싱(load balancing)[1]은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.

 

 

클라이언트 사이드 로드밸런싱

우리가 일반적으로 사용하는 LoadBalancer는 서버사이드 로드밸런싱을 처리하는 L4 Switch와 같은 하드웨어 장비입니다. 하지만 MSA에서는 이런 장비보다는 소프트웨어 적으로 구현된 클라이언트사이드 로드밸런싱을 주로 이용합니다.

 

위는 일반적인 L4 switch 기반의 로드밸런서, Client는 L4의 주소만 알고 있으면 되고 하드웨어적으로 로드밸런싱을 처리한다.

 

 

Ribbon

Spring Cloud에서는 위와 같은 클라이언트 사이드 로드밸런서로 Ribbon을 이용하고 있다.

 

서버와 관계없이 Socket의 누락이 발생하지 않도록 하는 방법

 

Socket.io의 경우 동이한 서버에 접속한 상태가 아니라면 클라이언트간의 통신이 안되는 경우가 발생하는데 해당 부분을 처리하기 위해서는 Redis의 Pub/Sub 기능을 활용해야한다.

 

스케일 업

스케일 업’은 서버에 CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법을 의미한다. 예를 들어, 하나의 처리 능력을 가진 서버 한 대를 7의 처리 능력을 가진 서버로 그 자체의 처리능력을 향상시키는 것이다. 수직 스케일로 불리기도 한다.

생각해보기

고도화 과제로 스케일 아웃을 해보려고한다. 현재 소켓 서버가 하나이지만 Ribbon을 이용해서 로드밸런싱을 맞추어 분산되어있는 서버에 보내주고 각각의 서버에 있는 chatServer을 Redis를 통해서 동기화 시키고자한다.
반응형

'Computer Science' 카테고리의 다른 글

MSA  (0) 2020.10.04
Netflix zuul , Eureka Server  (0) 2020.10.04
웹 브라우저 에서의 양방향 통신 방법  (0) 2020.10.04
Redis란  (0) 2020.10.04
Socket 정리  (0) 2020.10.04