2. 1
Scale Up/Down,& In/Out sunnykwa,k@hanmail.net
스케일 업 (Scale-Up)
- 데이터 양이 늘어나거나, CPU 사용율이 높아지거나, 메모리가 부족할 때…
가장 손쉽게 떠올리는 성능 보장(유지) 방안은 서버의 크기(용량)을 증가, 달리 말해서 고성능(상위 레벨) 장비로 대체하는 것.
- 프로그램 코드를 재작성하거나, 시스템 구성(아키텍쳐)를 변경할 필요가 없어 쉬워 보이지만 비용이 많이 발생한다.
(게다가, 서버 장비를 교체한다면 이미 쓰고 있는 장비는 어떻게 할 것인가?)
- 가장 큰 문제는 비용 대비 효과가 낮다.
성능
비용
그림 : Scale Up 의 비용 대 성능 곡선
성능을 높이는데 비용이 많이 들고 일정 수준을 넘기면,
비용 대비 효과가 급격히 떨어진다.
3. 2
Scale Up/Down,& In/Out sunnykwa,k@hanmail.net
스케일 아웃 (Scale-Out)
- 사용 중인 장비(하드웨어)를 대용량의 장비로 교체하는 것이 아니라, 같은 수준이거나 낮은 장비 여러 대로 재구성하는 방식
(아마졲 웹 서비스(AWS), 구글 클라우드, MS Asure 등의 클라우드 서비스에서 권장하는 서버 확장 방안)
- 비교적 저렴한 서버 다수의 서버로 구성하기 때문에 비용이 젃감되고, 만일 일부 서버(노드)의 장애가 발생하더라도 젂체 서비스가
중단되는 치명적 문제(critical issue)를 방지할 수 있으며, 추가 확장도 용이하다.
- 다만, 시스템 설계 및 운영을 담당하는 엔지니어가 분산처리에 대한 경험과 노하우를 가지고 있어야 하며, 필요 시 소프트웨어 코드
및 설계를 변경해야만 한다. (처음부터 분산 환경에 맞추어 설계하지 않으면, 스케일 아웃으로 재구성하기 매우 어렵다.)
Scale-Up Scale-Out
4. 3
Scale Up/Down,& In/Out sunnykwa,k@hanmail.net
스케일 다운(Scale-Down) 그리고, 스케일 인(Scale-In)
- 서버의 용량을 늘리기 위한 방법이 스케일 업(Scale-Up)과 스케일 아웃(Scale-Out)이라면,
반대의 경우는 스케일 다운(Scale-Down)과 스케일 인(Scale-In)이라고 부른다.
Scale-Down Scale-In
5. 4
Scale Up/Down,& In/Out sunnykwa,k@hanmail.net
갂단 가이드
- 처리(혹은저장)하는 데이터 크기의 최대 용량을 충분히 예측할 수 있고 사용자 수가 일정하거나,
혹은 작은 규모의 팀(혹은 조직)에서 사용한다면 굳이 서버 증설을 미리 고민하지 말자. (다른 문제를 깊이 고민하는 것이 낫다.)
- 스케일 아웃(Scale-Out)을 적용하기 위해서는 분산 처리에 대한 이론적 지식과 실무 경험이 필요하고,
그에 따른 소프트웨어 설계 및 각종 설정 작업이 필요하다. (경험이 없다면, 관련 지식 습득이 우선이다.)
- 클라우드 환경 및 대규모 서비스를 환경에서 ‘스케일 아웃’ 구조는 가장 권장하는 방법이지만, 항상 무조건 옳은 것은 아니다.
(네트워크, 서버 설계 및 소프트웨어 변경 비용이 더 클 수도 있다.)
- 대규모 서비스를 지향하지만, 근시일(예를 들어 1년 내) 내에 성능 문제에 봉착할 것으로 예상되지 않는다면,
충분한 시갂으로 가지고 고민하고 경험과 지식을 쌓는 것이 낫다.
(서두르다 치명적인 문제가 발생한 후, 이젂으로 되돌리려고 시도하면 이미 많은 희생을 치르고 난 시점이다.)
- 한 줄 요약: 우리가 고민하는 문제의 대부분은 실상 앞으로 젃대 발생하지 않을 문제들이다.