서버를 운영함에 있어서 사용자에게 적절한 서비스를 제공하기 위해서는 그에 맞는 서버 성능을 지니고 있어야만 한다. 500명까지 동시 접속 가능한 서버가 사업 확장 또는 갑작스러운 인기를 끌어 사용자가 폭증하여 1000명의 동시 접속자를 맞이하게 된다면 어떤 일이 발생할까? 당연히 서버는 현재 성능으로는 트래픽을 감당할 수 없기 때문에 서비스를 제대로 제공해주지 못하게 될 것이다.
이러한 상황이 발생했을 때 가장 먼저 해야 할 일은 소프트웨어 적인 최적화를 실시하는 것이다. 하지만 그래도 원활한 서비스를 제공하지 못하는 경우에는 결국 사용자 규모에 맞게 하드웨어 적인 확장을 실시해야만 한다. 서버 관리자는 언제든 확장성의 문제를 직면할 수가 있다. 그렇다면 어떤 방식으로 서버를 확장할 수 있을까?
스케일 업 (Scale-up)
보통 처음으로 생각할 수 있는 방법은 운영하던 서버에 CPU, 메모리, 디스크 등의 자원을 추가하거나 또는 고성능 장비로 교체하는 업그레이드 형식의 방법일 것이다. 이러한 방식의 확장을 스케일 업(Scale-up)
또는 수직 확장
이라고 한다.
스케일 업의 장점으로는 우선 자원의 추가 또는 교체가 작업의 전부이기 때문에 손쉬운 확장이 가능하다는 점이 있다. 또한 추가적인 네트워크 연결도 필요없고, 라이센스를 추가로 구매할 필요도 없으므로 관리 편의성이나 운영 비용 또한 기존과는 크게 차이가 나지 않는다는 점도 스케일업의 장점이다.
하지만 이러한 스케일 업 방식의 확장은 단점 또한 존재한다. 먼저 하나의 서버의 하드웨어 확장에는 결국 한계가 있으며, 성능 증가 대비 확장 비용이 비싸다는 점이 있으며, 또한 하나의 서버에 트래픽이 집중되므로 서버에 장애가 발생했을 때 그 장애영향도를 크게 받을 수 받을 수 밖에 없다는 점이 있다. 또한 한정된 공간에 서버가 집중되어 있으므로 냉각과 전력공급의 어려움을 겪을 수도 있다.
그렇다면 어떻게 이런 단점들을 어떻게 극복하며 서버를 확장할 수 있을까?
스케일 아웃 (Scale-out)
바로 기존 서버와 동일한 사양의 서버를 추가하는 방식으로 서버의 개수를 다수로 확장하여 하나의 서버에서 처리하던 일을 여러 서버에서 분산해서 처리함으로써 처리 성능을 높이는 방법을 사용할 수 있다. 이러한 방식의 확장을 스케일 아웃(Scale-out)
또는 수평 확장
이라고 한다.
스케일 아웃 방식으로 서버를 확장한다면 스케일 업보다 확장성이 크며, 비교적 저렴한 서버를 여러대 사용함으로써 확장의 비용이 저렴하다는 점이 있다. 또한 하나의 서버로 집중되던 트래픽을 여러 서버로 분산할 수 있기 때문에 서버에 장애가 발생할 시 전면 장애의 가능성이 낮아지므로 서비스 제공이 안정적이다.
하지만 스케일 업과 반대로 여러 대의 서버로 마치 하나의 서버인 듯 서비스를 운영해야 하기 때문에 서버 간의 데이터 불일치가 발생할 가능성이 있어서 이를 위한 적절한 방법을 찾아야 하며, 서버별로 트래픽을 적절히 분담하는 로드밸런싱
을 구현해줘야하는 등 별도의 작업이 필요하다. 또한 서버별로 소프트웨어 라이센스 비용 또한 추가적으로 발생한다는 단점 또한 존재한다.
정리하며
그렇다면 우리는 하드웨어적인 서버 확장을 하려할 때 서로 다른 장점과 단점을 가진 두 방법 중 어느 방법을 채택하여야 하는걸까? 사실 정답은 없다. 스케일 업과 스케일 아웃 두 방식 모두 확장성과 비용, 관리 편의성을 한 번에 해결해줄 은 탄환이 아니기 때문이다.
다만 OLTP(온라인 트랜잭션 처리)가 빈번한 데이터베이스 서버 등에서는 스케일 업을 채택, 여러 처리들을 동시에 처리해야 하는 웹 서버에서는 스케일 아웃을 채택하는 등 서버 상황에 맞는 적절한 확장 방식을 적용하는 것이 좋은 선택일 것 이다.
'Server' 카테고리의 다른 글
[Server] NCP Server에 도메인 등록하기 (0) | 2021.05.24 |
---|---|
[Server] Nginx를 이용해 로드밸런싱(Load Balancing) 구현하고 HTTPS 적용하기 (0) | 2021.05.24 |
다중 서버에서의 Session 관리 (0) | 2021.01.29 |