서버 확장? Scale Up? Scale Out?

Kereu_·2021년 6월 29일
0

Careers 프로젝트

목록 보기
1/4
post-custom-banner

네트워크를 통해 제공되는 IT서비스에서는 갑작스럽게 사용자가 증가하거나, 사업의 확장 등으로 서버의 용량과 성능이 필요할 때가 있습니다.
이런 경우 수평적으로 부하를 분산하는 스케일 아웃(scale out) 방식으로 확장을 할 지 아니면 해당 서버의 용량 자체를 올리는 스케일 업 (scale up) 방식으로 확장을 할지 선택해야 합니다.

Scale Up


Scale Up
‘Scale-up’은 서버에 CPU나 RAM등을 추가하거나 고성능의 부품, 서버로 교환하는 방법을 의미합니다. 예를 들면 ‘1’의 처리 능력을 가진 서버 한대를 ‘5’의 처리 능력을 가진 서버로 업그레이드 시키는 것입니다.

  • 한대의 서버에서 데이터를 처리하므로 데이터 갱신이 빈번하게 일어나는 ‘데이터베이스 서버’에 적합한 방식이다.
  • 서버 한 대에 모든 부하가 집중되므로 장애시 영향을 크게 받을 수 있다.

Scale Out


Scale Out
Scale-Out이란 서버를 여러대 추가하여 시스템을 확장하는 방법입니다. 예를 들면 ‘1’의 처리 능력을 가진 서버에 동일한 서버 4대를 더 추가하여, 총 ‘5’의 처리 능력을 만드는 것입니다. 서버가 여러대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 ‘로드밸런싱’이 필수적입니다.

  • 모든 서버가 동일한 데이터를 가지고 있어야 하므로, 데이터 변화가 적은 '웹'에 적합한 방식이다.
  • 서버 한대가 다운되더라도 다른 서버로 서비스 제공 가능하다.
  • 모든 서버가 동일한 데이터를 가지고 있어야 한다.

활용(토이 프로젝트)


Careers

신뢰할 만한 사람들이 모인 공간에서 비즈니스 인맥을 만들고,
업무 스킬 및 트렌드 정보를 공유하는 Careerly를 모티브로 한 API 서버 프로젝트입니다.

Scale Up 적용

Scale Up과 Scale Out을 프로젝트에 적용할 경우에 긍정적인 영향과 고려할 점을 생각해 보았습니다.

우선 Scale up을 프로젝트에 적용할 때에 긍정적인 영향입니다.

  • 데이터 일관성 처리를 보장
  • 다수에 서버를 운영하는 Scale out보다 단일 서버인 Scale up이 상대적으로 서버 관리 및 인프라적인 관리가 수월하다
  • 서버 한 개에 대한 소프트웨어 라이선스 비용만 발생함으로 Scale out보다 저렴하다.

Scale up을 프로젝트에 적용할 경우에 고려할 점입니다.

  • SPOF에 대비하기 힘들다.
  • 서버의 Scale up은 하드웨어 부품 등에 물리적으로 한계로 인해 성능 향상에 대한 한계점이 있다.
  • Scale up을 할 경우 일시적으로 서비스를 중단해야 한다. 즉 무중단 서비스를 제공할 수 없다.
  • 성능 향상을 위한 비용 증가 폭이 크다.

위와 같은 문제들로 모바일 게임인 쿠키런 킹덤에서 오픈 초기에 발생한 접속 문제(SPOF)가 발생할 가능성이 높습니다. 또한 이러한 장애 사항은 서비스 회사에서는 비용과 직결되기 때문에 크리티컬한 이슈라고 볼 수 있습니다.

Scale Out 적용

Scale Up을 다음으로 Scale Out을 프로젝트에 적용할 경우에 긍정적 영향입니다.

  • 대용량의 트래픽을 하나의 서버로 처리하는 것 보다 여러 서버를 트래픽 분배 처리를 통해 유연하게 대응할 수 있다.
  • SPOF(Single Point Of Failure)를 해결할 수 있다.
  • 서버 성능 향상을 이유 등에 이유로 일시적인 중단할 필요 없이 지속해서 서비스를 제공할 수 있다.
  • 가성비 좋은 서버를 사용할 경우 비용 증가 폭이 크지 않다.

Scale Out을 프로젝트에 적용할 때에 고려할 점입니다.

  • 단순히 서버를 여러 대를 운영하는 것이 아니라 대규모 트래픽을 동일하게 분산하여 처리할 수 있도록 로드밸런싱과 같은 작업이 필요하다.
  • 상황에 맞는 로드밸런싱 알고리즘을 선택해야 한다. (Round Robin, Least Connection 등)
  • 여러 대의 서버로 하나의 서비스를 위해 사용함으로써 데이터 불일치 현상이 발생할 수 있습니다. (세션 불일치)
  • 서버 증가할수록 소프트웨어 라이센스, 케이블 등에 비용도 같이 증가한다.

정리하기


지금 까지 내용을 정리하여 프로젝트는 Scale out으로 진행하도록 결정을 하였습니다.

Scale Out을 선택하는데 결정적인 이유 2가지입니다.

  • 하나의 서버로 운영하는 경우 구성요소 중 장애가 발생하여 동작하지 않으면 전체 시스템의 동작이 멈춰버리는 SPOF을 사전에 차단할 수 있어야 한다.
  • SNS 서비스는 서비스 시간이 매출로 이뤄지기 때문에 어떠한 문제로 발생하더라도 무중단 서비스가 가능해야 한다.

그리고 Scale Out 진행 시 해결하는 문제 중 하나인 로드 밸런싱 과정에서 발생할 수 있는 세션 불일치 문제 해결 방법 다음과 같습니다.

  • 각각의 WAS에 대한 세션을 세션 클러스터링 설정을 통해서 하나의 세션으로 관리한다. (단 톰캣 등 WAS마다 설정 방법이 다르며 WAS가 증설될 때마다 서버의 ip, port를 설정해줘야 하는 등에 번거로움이 있다)
  • Redis 또는 memcached 별도의 세션 서버를 두어 해결한다.
profile
Issue_Save
post-custom-banner

0개의 댓글