오늘날 인터넷에 존재하는 웹페이지의 수는 500억 개에 달한다. 수많은 사람이 이 웹페이지들을 통해 정보를 탐색하고, 메일을 보내고, 유튜브로 동영상을 본다. 인터넷은 언제 어디서나 원하는 자료를 제공하고 궁금증을 해결해준다. 이러한 인터넷의 힘은 데이터 센터에 있다. 데이터 센터는 전통적으로 수많은 컴퓨터가 모여 있는 공간이다. 현대의 데이터 센터는 이 컴퓨터들을 효율적으로 조직해 높은 성능의 시스템을 만들어 낸다. 인터넷의 힘이 강력해질수록 데이터 센터를 구성하는 과학 기술은 점점 발전하고 있다. 

인터넷과 함께 성장한 데이터 센터
 
데이터 센터의 목적은 우리가 사용하는 컴퓨터와 크게 다르지 않다. 파일을 저장하고 읽고 다루는 것이 주된 업무다. 하지만 단순히 컴퓨터 한 대로 수천만 명에 달하는 사용자의 요구를 동시에 처리하는 것은 불가능하다. 따라서 인터넷 기업들은 여러 컴퓨터로 이루어진 높은 성능의 컴퓨터 시스템을 구축하기 시작했다. 일반적으로 컴퓨터 시스템의 성능을 개선하는 방법에는 두 가지가 있다. 하나는 하드웨어의 성능을 개선하는 스케일 업(scale up)이고 다른 방법은 하드웨어의 수를 늘리는 스케일 아웃(scale out)이다. 스케일 업은 부품교체만으로도 성능을 향상할 수 있고 복잡한 구조가 필요 없는 장점이 있다. 하지만 폭발적인 인터넷의 성장을 경험하며 기업들은 스케일 업의 한계를 느꼈다. 기하급수적으로 늘어나는 부하를 하드웨어 개선만으로 해결하는 것은 불가능할 뿐만 아니라 비용이 높아 경제성이 떨어졌다. 구글과 야후 등 큰 인터넷 기업들이 선택한 방식은 저가의 하드웨어를 다수 사용해 성능을 개선하는 스케일 아웃 방식이다. 스케일 아웃을 통해덩치가 커진 컴퓨터 시스템은 독립적인 관리 장소가 필요했고 이에 따라 만들어진 것이 데이터 센터다. 하지만 하드웨어의 숫자를 늘리는 스케일 아웃 과정은 스케일 업에 비해 어려움이 많다. 수십 명의 유치원생 다루기가 한 명의 어른 다루기보다 힘든 것과 비슷하다. 구글 데이터 센터가 전 세계적으로 돌리는 컴퓨터의 수는 약 90만개이고, 이 컴퓨터들이 하루에 처리하는 데이터는 24PB(PetaByte, 1,000TB)에 달한다. 이처럼 거대화된 시스템에서 일어나는 문제는 우리가 일반적으로 접할 수 있는 상황이 아니다. 인터넷 서비스가 어떠한 위험에도 살아남도록 만들기 위해서는 모든 상황을 고려해 정교하게 설계된 제어장치가 필수적이다.
 
▲ 올해 6월 완공된 네이버의 데이터 센터‘각’의 전경 /NHN 제공
 
불안정한 하드디스크로 인해 시스템 신뢰성 떨어져
 
제일 먼저 드러나는 문제는 하드디스크의 신뢰성이다. 데이터 센터의 입장에서 하드디스크는 안전한 저장 장치이기보다는 사고뭉치에 가깝다. 10만 개의 하드디스크를 대상으로 진행된 통계를 보면 하드디스크의 연평균 고장률은 평균 4%에 달한다. 신뢰성 96%의 하드디스크 100개로 이루어진 시스템을 생각해보자. 0.96을 100번 곱한 값은 0.017이다. 이 시스템이 일 년 동안 아무런 문제 없이 데이터를 보관할 확률은 1.7%밖에 되지 않는다는 뜻이다.
 
데이터를 지키는 분산 파일 시스템
 
이러한 하드디스크의 부족한 신뢰성을 보완할 수 있는 가장 쉬운 방법은 백업이다. 똑같은 파일의 복사본을 만들어서 서로 다른 하드디스크에 저장해 둔다면, 그 중 하나의 하드디스크가 고장 나도 다른 하드디스크를 통해 안전하게 정보를 처리할 수 있다. 위의 예시를 조금 바꿔 하드디스크 200개를 이용해 파일을 2번씩 저장한다면 시스템의 신뢰성은 85.2%까지 향상된다. 데이터 센터에서는 고장 난 하드디스크를 바로 새 것으로 대체하기 때문에 실제 상황에서의 안정성은 더 높아진다. 이러한 파일 백업 시스템을 대규모 시스템에서 이용할 수 있도록 설계한 것이 분산 파일 시스템이다. 구글이 처음 개발해서 만들어낸 GFS(Google File System)와 이를 기반으로 야후가 오픈 소스로 개발한 HDFS(Hadoop File System), 네이버가 국산 기술로 만들어낸 OwFS(Owner based File System)등이 대표적인 예시다. GFS와 OwFS의 경우 사용자의 파일을 3개씩 복제해 저장한다.
 
효율 향상의 걸림돌, 병목 현상
 
데이터 센터가 고려해야 할 요소는 신뢰성뿐이 아니다. 속도와 효율성, 경제성 모두 고려해야 한다. 우리가 검색 창에 글자를 입력하고 나서 결과를 확인할 때까지의 시간은 데이터 센터의 속도에 의해 결정된다. 우리가 검색 창에 단어를 입력한 후 이 요청이 데이터 센터 내에 저장된 웹페이지를 훑고 결과 목록을 얻어 다시 우리의 컴퓨터로 돌아올 때까지 걸리는 시간은 평균 0.5초를 넘지 않는다. 이렇게 짧은 시간 안에 데이터를 처리하기 위해서는 연산을 수많은 컴퓨터에 고르게 분배하는 기술 또한 중요하다. 특정 컴퓨터에만 일이 집중되면 병목 현상이 생겨 속도와 효율 모두 저하되기 때문이다. 이러한 병목 현상은 효율을 크게 저하해 데이터 센터의 컴퓨터 개수를 늘려도 성능의 개선 효과를 보지 못하게 한다. 병목 현상의 해결책은 분산처리를 통한 내부 소프트웨어의 최적화다. 최적화는 데이터 센터의 처리 속도를 직접 개선해 데이터 센터 관리에 들어가는 비용을 줄일 수 있다.
 
연산과 기록 작업 합쳐 성능 최적화해
 
가장 기본적인 최적화 과정은 놀고 있는 컴퓨터 부품이 없도록 하는 것이다. 데이터 센터에게 파일을 읽고 쓰는 작업은 CPU에 가해지는 연산 부하가 상대적으로 적다. 따라서 읽기·쓰기 작업과 CPU가 필요한 복잡한 연산 작업을 함께 진행하면 데이터 센터의 효율을 크게 개선할 수 있다. 실제로 데이터 센터는 이러한 최적화 과정이 자동으로 이루어지도록 구현해 놓았다. 따라서 개발자들은 데이터 센터의 각 컴퓨터에 일일이 작업을 지정해 줄 필요 없이 컴퓨터 시스템을 쉽게 사용할 수 있다. 데이터 센터를 구성하는 기본 구조는 랙(rack)이다. 랙은 40~80대의 컴퓨터가 모여 있는 상자다. 이 안에는 상하로 납작한 컴퓨터들이 쌓여있고 이들은 유선 통신망을 통해 연결되어 있다. 이러한 랙들은 실행하는 기능에 따라 클러스터(Cluster)로 묶인다. 같은 클러스터에 속한 랙들은 서로 연동되어 하나의 목적을 실행하는 컴퓨터처럼 작동한다.
 
효율과 이용성을 높이는 클러스터 구조
 
개발자들이 데이터 센터를 사용하는 방식은 클러스터에 작업을 전달하는 방법이다. 개발자들은 데이터를 저장하고 싶으면 분산 파일 시스템을 담당하는 클러스터에, 연산이 필요하면 분산 처리를 담당하는 클러스터에 요청을 보내게 된다. 개발자의 입장에서 클러스터들은 서로 독립된 시스템이다. 하지만 데이터 센터 내부에서 일어나는 처리 과정은 다르다. 각각의 클러스터는 요청받은 작업을 작은 단위로 나눈다. 각각의 클러스터에서 분배를 담당하는 컴퓨터는 분할된 작업을 차례로 컴퓨터에 전송한다. 이러한 방식은 컴퓨터가 항상 높은 CPU 활용량과 하드디스크 사용량을 유지하게 해준다. 동시에 이 모든 처리 과정은 이중, 삼중으로 복제되어 있어 중간에 컴퓨터가 고장 나더라도 전체 클러스터의 동작에는 영향을 미치지 않도록 설계되었다. 이러한 복잡한 분산처리의 자동화는, 개발자가 장애에 대한 걱정 없이 목적에만 집중할 수 있도록 도와준다. 동시에 데이터 센터 내에서 일어나는 작업을 최적화해 효율을 높인다.
 
인터넷은 언제나 우리 곁에 있다. 그리고 이 인터넷을 숨 쉬게 하는 심장은 데이터 센터다. 데이터 센터는 365일 24시간 우리를 위해 단 1초도 쉬지 않고 박동한다. 인터넷의 끝없는 성장에는 데이터 센터를 개선하기 위한 수많은 노력이 있었다. 앞으로도 인터넷의 역사와 함께할 데이터 센터의 변화를 기대해본다.

 

저작권자 © 카이스트신문 무단전재 및 재배포 금지