오늘 날 웹, 앱 서비스들은 '24시간 365일' 언제, 어디서든 사용자들이 접속할 수 있다.
이렇게 서비스를 제공하기 위해 서버가 필요하고 또한 대용량의 데이터를 빠르게 처리하기 위한 목적도 있다.
웹 애플리케이션 서비스를 운영하다보면 사용자가 증가하거나 사업을 확장시켜 더 큰 서버를 구축해야할 상황을 고려해봐야한다.
특히나 서버의 처리 능력보다 많은 양의 트래픽이 들어오는 상황에선 사용자도 불편해지고 심각하면 서버의 장애를 발생해 서비스가 중단될 수도 있다.
서버 확장
서버의 성능이나 용량 증강을 목적으로 디스크를 추가하거나 CPU 메모리를 업그레이드 시키는 것
서버 확장하는 방법 중에는 크게 스케일 업(Scale-Up), 스케일 아웃(Scale-Out) 두가지가 있다.두 가지 중 한가지만 옳고 그름을 따지기보단 서비스의 특성과 요구사항에 따라 각각 장단점을 놓고 적절한 확장 방법을 선택하는 것이 중요하다.
먼저 스케일 업에 대해 알아보자.
기존 서버의 하드웨어 성능을 향상시키는 방법
서버를 구성하는 CPU, 메모리 등 하드웨어 부품을 추가하거나 업그레이드해서 서버 자체의 처리 능력을 향상시키기 때문에 비교적 구성이 간단하고 관리가 용이한 장점이 있다.
하지만 하드웨어의 물리적 한계에 도달하면 더 이상 향상시킬 수가 없고 고성능 하드웨어를 세팅하기 위해선 비용이 많이 든다는 치명적인 단점이 있다.
예를 들어, 현재 서비스를 운용하는 서버가 1대 있다고 가정해보자.
이 서버의 하드웨어 부품을 직접 추가하거나 업그레이드하여 서버를 확장하는 동안 서버를 멈춰야하기 때문에 서비스 제공이 불가능하고 비지니스 손실이 발생할 수 있다.
보통 초기 단계의 소규모 서비스나 하드웨어 향상으로 충분히 커버가 가능할 때 사용된다.
서버의 수를 늘려 처리 능력을 증가시키는 방법
로드 밸런서를 사용하여 여러 서버에 트래픽을 분산시킴으로 서비스의 성장에 따라 서버의 수를 유연하게 조정할 수 있는 확장성이 뛰어난 큰 장점이 있다.
하지만 서버의 수가 증가함에 따라 네트워크 복잡도와 관리 비용이 증가한다는 단점이 있다.
스케일 아웃은 스케일 업과 다르게 서버의 수를 늘려 서버의 처리 능력을 증가시킬 수 있고 서버에 문재가 발생해 장애가 나더라도 다른 서버에서 트래픽을 처리하면 장애가 있는 서버만 점검할 수 있기 때문에 서비스에 끼치는 영향도 작아진다.
스케일 업의 단점인 하드웨어의 물리적 한계에 구애받지 않기 때문에 대규모 서비스나 높은 확장성이 요구되는 경우 선택하는 방법이다.
스케일 업과 스케일 아웃의 각각 장단점을 놓고 보자면 스케일 아웃이 전략일 수 있지만 서비스의 특성과 요구사항에 따라 상황에 맞는 전략을 선택하는 것이 중요하다고 생각한다.
즉, 서비스의 특성과 전망을 고려하여 최적의 서버 확장 전략을 선택하여 운영해야 하며, 성공적인 운영을 위해 필수적으로 고려해봐야할 과정이다.
오늘 날의 웹 서비스 같은 경우는 클라우드 발전으로 스케일 아웃 방식이 점점 더 일반화 되고 있다고 한다. 많은 기업들이 스케일 아웃 전략을 채택할 수 밖에 없는 것은 서비스의 안전성과 동시에 확장성때문이라고 생각한다.
"요즘 스케일 아웃 방식을 채택한다며, 무조건 적으로 스케일 아웃이 좋은 거 아니야?"
단순히 스케일 아웃을 택한다고 해서 서버 확장에 용이한 것이 아니고 스케일 아웃을 효과적으로 적용하기 위해 로드 밸런싱, 세션 관리, 데이터 베이스 분산 처리 등 기술적으로도 고려 해봐야 한다.
또한, 스케일 업의 가장 큰 이점은 인메모리 컴퓨팅이 가능하다는 것인데 이말은 데이터 베이스가 메모리에 상주하게 된다면 처리 속도는 빨라질 것이고 데이터 베이스 쿼리 시간을 단축할 수 있다는 뜻이다.
사용자에게 최적의 서비스를 제공하기 위해선 서버 관리는 매우 중요한 요소인 것 같다.
만약 영화를 재밌게 보고 있는데 도중에 30분짜리 광고가 나온다고 생각해본다면 그 영화에 몰입도가 완전히 깨져버릴 것이다.
때문에 백엔드 개발자로서 사용자에게 빠르고 안정적으로 서비스를 제공하려면 서버 설계, 관리부터 로드 밸런싱, 세션 관리, 데이터 분산 처리, 트래픽 관리 등과 같은 기술적인 실력도 키워나가야 된다고 생각한다.
참고자료