서버를 운영하다보면 이용자의 증가, 서비스의 확장 등의 이유로 더 많은 용량과 성능이 더 필요하게 된다.
이때, 수평적으로 부하를 분산하는 스케일 아웃(scale out) 방식으로 확장을 할 지 아니면
해당 서버의 용량 자체를 올리는 스케일 업 (scale up) 방식으로 확장을 할지 선택해야 한다.
‘스케일 아웃’이란 접속된 서버를 여러 대 추가하여 처리 능력을 향상하는 방법이다. 수평 스케일로 불리기도 한다. 예를 들어, 1의 처리 능력을 가진 서버에 동일한 서버 6대를 더 추가하여, 총 7의 처리 능력을 만드는 것이다.
서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 ‘로드밸런싱’이 필수적으로 동반되어야 한다. 그리고 스케일 아웃의 경우, 서버 한 대가 장애로 다운되더라도 다른 서버로 서비스 제공이 가능하다는 장점이 있다.
각각의 처리는 비교적 단순하지만 다수의 처리를 동시 병행적으로 실시하지 않으면 안 되는 경우 적합한데 갱신 데이터의 정합성(데이터가 서로 모순 없이 일관되게 일치해야 하는 경우) 유지에 대한 요건이 별로 어렵지 않은 경우에 적절하다. 즉 높은 병렬성을 실현하기 쉬운 경우이다. 모든 서버가 동일한 데이터를 가지고 있어야 하므로, 데이터 변화가 적은 ‘웹 서버’에 적합한 방식이며, 웹 서버 펌, 데이터가 읽기 전용인 검색엔진 데이터 분석 처리 VOD(주문형 비디오) 일부의 과학기술 계산, 메일 서버나 게시판 등의 어플리케이션 등에 적용할 수 있다.
주로 NoSQL에서 사용
‘스케일 업’은 서버에 CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법을 의미한다. 예를 들어, 1의 처리 능력을 가진 서버 한 대를 7의 처리 능력을 가진 서버로 그 자체의 처리능력을 향상시키는 것이다. 수직 스케일로 불리기도 한다.
CPU나 RAM을 추가하기 부품을 장착할 수 있는 여유 슬롯이 있어야 하며, 그렇지 않은 경우 서버 자체를 고성능으로 교체하는 것이 필요하다.스케일 업의 경우, 서버 한 대로 모든 부하가 집중되므로 장애 시 영향을 크게 받을 수 있는 위험성이 있다.
그리고 한 대의 서버에서 모든 데이터를 처리하므로 데이터 갱신이 빈번하게 일어나는 ‘데이터베이스 서버’에 적합한 방식이다. 빈번히 갱신으로 여러 대의 서버에서는 정합성(데이터가 서로 모순 없이 일관되게 일치해야 하는 경우) 유지가 어렵기 때문이다.
주로 RDBMS에서 사용
출처-한국데이터산업진흥원
지금까지 데이터베이스 확장이 대부분 스케일아웃의 형태였다면, 고성능 스토리지의 출현과 지속적인 가격 하락으로 인해 이제 스케일아웃과 스케일업을 동시에 고려할 수 있는 하드웨어 환경이 됐다. DB의 확장 및 통합에 정답은 없으며 각각의 장단점이 뚜렷하기 때문에 제공하고자 하는 서비스의 특성과 사용량을 고려하여 최적의 방식을 선택할 수 있게 되었다.