프린세스 다이어리

서버 스케일링에 대한 기초지식: 스케일업과 스케일아웃의 차이, 적용사례 본문

BE

서버 스케일링에 대한 기초지식: 스케일업과 스케일아웃의 차이, 적용사례

개발공주 2022. 6. 19. 15:18
728x90

1. 트래픽이 몰렸다, 서버 터졌다는 게 무슨 뜻?

한 3년 전까지 많이 본 인터파크 서버 터진 화면

이커머스 사이트에서 유명 공연 티켓팅이 열리거나 할인쿠폰 발급 이벤트를 하게 되면 트래픽이 한꺼번에 몰려 서버가 터졌다는 표현을 많이 한다. 여기서 트래픽이란 사전적인 의미로는 서버와 스위치 등, 네트워크 장치에서 일정 시간 내에 오가는 데이터의 양을 말한다.

웹사이트에 트래픽이 많다는 것은 사용자 접속이 많아서 전송하는 데이터의 양이 많다는 것을 뜻하며, 서버가 터졌다는 말은 이렇게 트래픽이 한꺼번에 너무 몰려 서버에 과부하가 걸려서 웹사이트의 기능에 문제가 생겼다는 뜻이다.

 

고객센터에 전화 통화량이 많은 상황도 트래픽이 몰렸다고 표현할 수 있고, 새해가 되자마자 메신저가 잠시 먹통이 되는 것도 메신저 서버에 트래픽이 몰렸다고 볼 수 있다. 모두 네트워크 통신에서 데이터 전송량이 많아 발생되는 현상이기 때문이다.

 

트래픽이 높아질 수록 서버는 바빠지고, 사용자는 원하는 정보를 빠르게 얻을 수 없기 때문에 이렇게 몰린 사용자의 요청에 응답하기 위해서는 서버의 CPU와 메모리를 확장하여 성능을 높여야 한다. 아주 기본적인 수준에서, 서버를 확장하는 방법에는 크게 스케일 아웃(scale-out, 장비 추가 방식)과 스케일 업(scale-up, 사양 추가 방식)으로 나뉜다.

 

2. 서버 확장 방법

2-1. 스케일 아웃(Scale-out)

의미

스케일 아웃은 서버를 여러 대로 추가해서 확장하는 방식이다. 서버를 추가로 연결하기 때문에 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 + 기존 서버의 부하를 분담해 성능이 향상된다. 서버를 추가로 확장하기 때문에 수평 스케일링이라고도 한다. 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해 주는 로드밸런싱이 필수적이다.

 

AWS에는 자원 사용량을 모니터링하여 자동으로 서버를 증설하는 Amazon EC2 Auto Scaling이 있다. 오토스케일링은 CPU의 사용률 등을 모니터링하다가 일정 조건 이상 트래픽이 몰리는 경우 자동으로 인스턴스 수를 늘리거나 줄여준다. Elastic Load Balancing과 함께 오토스케일링을 사용하는 경우, 오토스케일링이 시작한 인스턴스는 자동으로 로드 밸런서에 등록되고, 반대로 오토스케일링이 종료하는 인스턴스는 자동으로 로드 밸런서에서 등록 취소된다. > 로드밸런서 설명

 

ELB와 ASG

장점

- 여러 대에서 분산 처리를 하기 때문에, 서버 한 대가 장애로 다운되더라도 다른 서버로 서비스 제공이 가능하다

- 비교적 저렴한 서버로 스케일링을 하기 때문에 비용 측면에서 이득이다.

 

단점

- 서버 대수가 늘어날 수록 관리의 편의성이 떨어진다. (-> 그래서 AWS 오토스케일링을 이용함)

- 모든 서버가 동일한 데이터를 가지고 있어야 하기 때문에, 데이터 변화가 적은 웹 서버에 적합한 방식이다. 

 

적용예시

개개의 처리는 비교적 단순하지만, 다수의 처리를 동시다발적으로 실시해야 하는 경우에 적합하다. 갱신되는 데이터의 정합성 유지에 대한 요건이 별로 어렵지 않은 웹서버에서는 스케일 아웃이 적절하다. 웹사이트의 접속자가 증가해서 트래픽이 많이 발생할 경우와 빅데이터의 데이터 마이닝, 검색엔진 데이터 분석 처리 등의 경우에는 스케일 아웃이 효과적이다. 갑작스러운 서버 과부하, 장애 등에 시간을 앞다투어 대처하기 위해서는 클라우드 환경에서 자동으로 서버를 증가해 주고 적절하게 트래픽 분산을 해 주는 서비스를 사용하는 방법이 최선의 선택이다.

 

 

2-2. 스케일 업(Scale-up)

의미

스케일업은 해당 서버의 컴퓨팅 성능을 높이는 것이다. 즉 CPU나 메모리의 성능을 높여서 더 많은 요청에 대응할 수 있도록 하는 것이다. 하드웨어 자체의 성능을 높이는 방식이기 때문에 수직 확장으로도 불힌다. CPU나 RAM을 추가하려면 현재 서버에 추가 부품을 장착할 수 있는 여유 슬롯이 있어야 하고, 그렇지 않은 경우 서버 자체를 고성능으로 교체해야 한다.

 

스케일 아웃과 마찬가지로 클라우드 서비스를 이용하여 스케일 업을 통해 더 많은 리소스를 추가하여 최대 처리량을 늘릴 수 있고, 추후 리소스가 더 필요 없는 경우 스케일 다운하여 원래 상태로 돌아갈 수 있다. 다만 리소스를 늘리려면 시스템을 재배포해야 하기 때문에 시스템을 일시적으로 사용할 수 없다. 따라서 AWS Auto Scaling, Microsoft Azure와 같은 많은 클라우드 기반 시스템 공급자에서 지원하는 오토스케일링 서비스는 활용할 수 없다. > azure 공식문서

 

장점

- 스케일 아웃 방식과 달리, 하드웨어 자체의 성능을 높인다고 해서 관리의 편의성이나 운영 비용에 큰 변화가 있는 것은 아니다 

 

단점

- 급격하게 처리량이 많아지는 경우 서버 한 대에 모든 부하가 집중되므로 장애 시 영향을 크게 받을 수 있는 위험성이 있다.

- 성능 증가에 따른 비용 증가 폭이 크기 때문에 일반적으로 비용이 많이 드는 방식이다. 

 

적용예시

제어가 힘들거나 분할구성이 어려운 복잡한 서비스에는 스케일 업이 적합하다. 또 빈번하게 갱신이 발생하여 데이터 정합성 유지가 어려운 데이터베이스 서버에서는 스케일 업이 적합하다. 쿼리 변경 또는 인덱싱과 같은 기존 데이터베이스 최적화 기술을 사용하여 해결할 수 없는 성능 문제를 해결하기 위해 빠르게 대응해야 하는 경우에 사용된다. 즉 하나의 이미지 데이터베이스에 대해서 빈번히 갱신이 발생하는 OLTP(온라인 트랜잭션 처리)에는 스케일 업이 적합하다.

 

3. 정리, 참고문서

스케일업과 스케일아웃 비교표

 

참고문서

http://wiki.hash.kr/index.php/%ED%8A%B8%EB%9E%98%ED%94%BD

https://coconutstd.github.io/posts/AWS%EC%A0%95%EB%A6%AC-2/

https://m.blog.naver.com/islove8587/220548900044 

Scale-up과 Scale-out을 잘못 적용한 사례 블로그글

728x90
Comments