닫기 MWC 2018
현지 리포트
닫기

서버, 키우는 게 맞을까, 늘리는 게 맞을까?

2018.03.30 FacebookTwitterNaver

▲ 인터넷을 이용해 서비스를 제공하려면 서버가 매우 중요합니다

‘소셜 네트워크’라는 영화를 아시나요? 페이스북의 개발 초창기와 창립자인 마크 주커버그를 다룬 영화입니다. 영화를 보다 보면 마크 주커버그가 하버드 여학생들의 정보와 인물평을 하는 사이트를 만들게 되고, 이 사이트에 2만2,000명의 사용자가 동시에 접속해 깜짝 놀라는 장면이 있습니다. 접속자가 몰려, 학교 시스템이 다운되는 상황에 이르게 되죠.

▲ 2004년부터 2017년까지 페이스북 사용자는 꾸준히 증가하고 있습니다

현재 페이스북 사용자는 얼마나 될까요? 영화 ‘소셜 네트워크’가 개봉할 무렵인 2010년 기준 5억 명이던 가입자 수는, 현재 약 22억 명에 육박 합니다. 전세계 인구가 75억 명이니 약 1/3은 페이스북을 이용한다고 해도 과언이 아닌 수치죠. 이 많은 사용자에게 안정적인 서비스를 제공하기 위해 페이스북이 많은 신경을 쓰는 부분 중 하나도 바로, 서버입니다.

안정적인 서비스의 첫 번째 요건, 서버

새로 시작하는 서비스의 경우, 이용자가 얼마나 될지 정확히 예측할 수 없기 때문에 최소한으로 필요한 서버를 1~2대 정도만 구매해 서비스를 개시하는 것이 보통입니다.

그런데 그 서비스가 갑자기 인기를 끌고 사용자가 꾸준히 증가하게 되면, 운영자는 기쁨도 잠시, 고민에 빠지게 됩니다. 서버가 갑자기 늘어난 사용자를 감당하지 못해 화면이 느려지거나, 예상하지 못한 오류가 발생하기도 하고, 심한 경우 서버가 다운돼 아예 서비스를 이용하지 못하는 현상이 일어나기도 합니다. 이때 이용자들은 불만을 쏟아내는데, 여기서 그치지 않고 서비스 이용을 그만두는 사람들이 하나둘씩 늘어나면 운영자는 그야말로 멘붕에 빠집니다.

더 큰 시스템이 필요해. 하지만 어떻게?

▲ 작업을 수행하는 서버들은 서로 모든 정보를 공유해야 합니다

인터넷 서비스는 동시에 많은 사람이 함께 사용하기 때문에, 작업을 수행하는 서버들끼리는 모든 정보를 공유하고 있어야 합니다. 물품 보관 서비스를 예로 들어 보겠습니다.

물건을 보관할 수 있는 창고가 하나 있는데 이 창고는 여러 사람이 물건을 맡기고 찾아가는 서비스를 제공하고 있다고 가정해봅시다. 맡긴 사람과 찾아간 사람은 누구인지, 여유 보관 공간 현황 등 물건의 출납 현황을 파악하고 있는 사람이 필요합니다. 하지만 담당자 한 명이 관리할 수 있는 창고의 범위는 제한이 있죠. 쉽게 비교하기 위해 관리자 1명당 10명의 고객과 10평짜리 창고를 관리할 수 있다고 합시다.

▲ 하나의 큰 창고와 여러 개의 작은 창고. 어떤 것이 더 효과적일까요?

손님이 적을 때는 혼자서도 잘 운영이 됐겠지만, 사업이 잘 돼 100평 규모의 창고가 필요해지면 어떻게 해야 할까요? 1번, 창고를 크게 키워서 100평짜리 창고를 만든다. 2번, 10평짜리 창고를 9개 더 만든다. 둘 중 어느 것이 맞는 방식일까요?

수직증설과 수평증설 방식

▲ Scale-Up 방식(왼쪽)과 Scale-Out 방식(오른쪽)의 구성도 비교

1번의 경우 혼자서 관리할 수 없기 때문에 관리자가 더 많이 필요하고 관리자들 간에는 의사소통이 필요합니다. 예를 들어 한 관리자가 물건을 받아서 보관하기로 했다면, 나머지 9명의 관리자도 그 사실을 알고 있어야 합니다. 고객이 물건을 찾아갈 때 맡겼던 사람에게 받아간다는 보장이 없기 때문이죠.

이러한 증설 방식을 IT Infra(인프라)에서는 ‘Scale-Up(수직증설)’이라고 합니다. 장비당 처리성능을 높이는 방식이죠. 흔히 우리가 말하는 ‘업그레이드’가 여기에 해당하고, 업그레이드 한계에 도달하면 더 큰 용량의 장비로 교체를 하는 방식입니다. 따라서, 큰 비용이 일시에 발생하게 됩니다. 주로 IBM Mainframe이나 UNIX 서버들이 이러한 방식의 증설이 쉬운 장비들입니다.

2번의 경우 9개의 추가적인 창고를 지었지만, 고객의 입장에서는 어느 창고에 여유가 있는지를 알 수가 없죠. 따라서 각각의 관리자들은 창고의 상황을 서로 실시간으로 공유해야 하고, 고객이 어떤 창고로 방문하던지 이를 접수해서 직접 보관 혹은 여유가 있는 창고로 안내를 해줄 수 있어야 합니다.

이 방식은 ‘Scale-Out(수평증설)’으로 필요할 때마다, 필요한 용량만큼을 늘려가는 방식입니다. 이 경우 위에 설명해 드린 것처럼 각각 분산된 장비들 사이에 같은 정보를 공유하고, 적정한 업무를 할당하도록 중재해주는 기능을 추가로 구성해 주어야 합니다.

이 방식은 상대적으로 저렴한 x86 서버에서 많이 사용되고 있으며 관리해야 할 장비가 많아지고, 구성이 복잡해지지만, 증설 비용이 상대적으로 적고, 기존 장비를 활용할 수 있어 효율적입니다. 페이스북 역시 이 방식으로 서버를 증설/운영하고 있습니다.

나에게 맞는 나만의 해결책을 찾자

이해를 돕기 위해 간단한 예를 들어 두 가지 방식에 관해 설명했지만, 실제로 시스템 증설을 진행하기 위해서는 두 가지 방식 모두 장비부터 SW 라이선스 구매 비용, 기존 시스템의 구성, 개발/테스트 방식 등 고려할 사항이 매우 많습니다. 각 서비스의 상황에 따라 어떤 방식이 더 좋다고 간단하게 결정하기는 어렵죠.

그렇기 때문에 IT Infra는 초기 설계가 매우 중요합니다. 이를 위해 구축 초반에 BM(사업모델) 전문가, 개발 전문가, Infra 전문가들이 모두 모여 많은 회의와 검토를 통해 합의를 이루는 과정을 거치게 됩니다. 처음 설계 단계부터 향후 사용자가 증가했을 때, 어떤 방식으로 증설을 해나갈지에 대해 설계를 해놓아야지 갑자기 사용자가 증가해도 적절히 대응할 수 있기 때문입니다.

FacebookTwitterNaver