원룸에서 서버 구축하기
12 views
# 원룸에서 서버 구축하기

장비 하나 들이려고 했는데, 따라온 것이 케이블 한 박스, 압착기 한 자루, 그리고 내가 한 번도 만들어본 적 없는 RJ45 한 무더기였다.
머리로는 흰 줄 주황 다음에 주황, 그다음 흰 줄 초록, 파랑, 흰 줄 파랑, 초록, 흰 줄 갈색, 갈색이라는 것을 외워두었는데 손은 외운 적 없는 사람처럼 굴었다. 첫 번째 가닥은 1Gbps에서 100Mbps로 떨어지고, 두 번째는 아예 NIC가 캐리어를 못 잡고, 세 번째에서야 안정적인 1Gbps가 떴다. 그제야 RJ45가 왜 그 작은 클립 하나로 잠기는지를 손끝으로 알았다. 도면을 외운다는 것과 압착기를 누른다는 것은 같은 일이 아니었다.
15U짜리 오픈 프레임 랙이 다음 날 책상 옆에 자리를 잡았다. 1U HP DL360 G9 — Xeon E5-2680v3 둘, DDR4 128GB —를 위쪽에, 2U Dell R730xd — Xeon E5-2683v4 둘, DDR4 64GB, 4TB SATA 한 장 —을 아래쪽에 끼웠다. 스토리지 베이 12개 중 11개가 비어 있었고, 그 비어 있음을 한참 들여다보았다. 채워야 할 자리들이라기보다 아직 자기 형태를 안 정한 정원처럼 보였다.
## 가전이라는 약관
3년 전 시놀로지 DS720+를 처음 책상 옆에 두던 날, 박스는 30분 만에 모든 것을 해냈다. 디스크 두 장을 꽂고 전원을 넣자 DSM이 깨어났고, 사진이 자동으로 백업되기 시작했다. 후일 메모리를 더 박고 8TB 두 장으로 풀을 묶었더니 약속한 것의 대부분이 그대로 굴러갔다. 디스크 하나가 죽었을 때도 박스가 알아서 알람을 울리고, 새 디스크를 끼우자 알아서 리빌드를 돌렸다. 가전이 해주는 일은 그래서 좋다.
문제는 가전이 안 해주는 것을 깨닫는 데 시간이 좀 걸린다는 것이다. DSM이 어떤 운영체제인지, btrfs 스냅샷이 어떤 일정표로 돌고 있는지, 컨테이너 네트워크가 어디까지 격리되는지 — 이런 질문은 한 번도 안 펼친 약관의 작은 글자처럼 어딘가에 적혀 있는데, 인간은 그 글자를 한 번 펼치고 나면 두 번째부터는 다르게 살게 된다.
마이그레이션을 결심한 단일한 사건이 있었던 것은 아니다. 새벽에 컨테이너 하나가 죽었을 때 그 죽음을 박스의 언어로밖에 들을 수 없었고, 모니터링 지표가 박스의 격자무늬 안에서만 표시되었고, 백업을 외부로 빼고 싶을 때 박스가 허락한 프로토콜이 아니면 안 됐다. 한 줄로 적으면 별것 아닌 일들이 모여 어느 순간 결정권의 무게를 어딘가로 천천히 옮겼다.
## 산수가 골라준 중고
선택지가 셋이었다. 미니PC 클러스터, 자작 워크스테이션, 데이터센터 폐기 중고. 며칠 미루다 세 번째를 골랐다. 낭만보다는 산수에 가까운 결정이었다.
미니PC는 ECC도 듀얼 소켓도 핫스왑도 IPMI도 없다. 자작은 그걸 다 갖추다 보면 가격이 중고 엔터프라이즈를 넘어선다. 반면 7~8년 묵은 데이터센터급 서버는 24시간 풀로드로 굴렀던 시간만큼 검증을 통과한 채로 도착한다. 잘 길들여진 중년에 가깝다. 합산 코어 수가 한 자릿수에서 두 자릿수로, 메모리가 한 자릿수에서 세 자릿수로 옮겨가는 동안, 추상의 두께가 줄어든 만큼 책임은 늘었다.
12베이 가운데 한 장으로 출발한 것은 예산이 바닥나서였는데, 며칠 지나고 보니 가난이 차라리 설계의 한 방식 같았다. 풀은 한 번에 짓는 것이 아니라 한 장씩 늘려가는 정원에 가까워서, 새 디스크를 끼울 때마다 거기 담길 것의 무게를 다시 가늠하게 만든다.
## 비행기와 공기청정기 사이
장비가 오기 전, 몇몇 지인에게 물었더니 약속이나 한 듯이 다들 "굉음"이라는 단어부터 꺼냈다. 비행기, 공장, 데이터센터, 활주로 같은 어휘가 장비보다 먼저 도착했고, 나는 아직 듣지도 않은 소음에 미리 긴장했다. 두려움이 사건보다 앞서 자라는 일이 가끔 있다.
전원 버튼을 처음 누른 순간을 오래 기억할 것 같다. 두 대가 동시에 팬을 풀스피드로 돌리자 책상 옆에 작은 활주로 하나가 통째로 펼쳐졌고, 그건 비유가 아니라 진짜 비행기 이륙음이었다. 미리 들어둔 경고가 부족했다는 것을 그제야 알았다. 글로 읽은 굉음과 방에서 직접 듣는 굉음 사이엔 데시벨 표가 못 적는 거리가 있다. 나는 그 거리만큼 겁을 먹었다.
다만 그 겁은 오래 가지 않았다. 부팅이 끝나자 팬은 30초쯤 만에 절반의 속도로 내려왔고, 다시 절반의 절반으로 떨어졌다. iLO와 iDRAC 콘솔이 차례로 깨어났을 즈음 거실에는 평소의 부드러운 백색 소음 한 줄기만 남아 있었다. 비행기는 어느새 순항 고도에 올라가 있었다.
호기심에 방 한 구석에서 늘 돌아가던 샤오미 공기청정기 쪽으로 귀를 옮겼다. 두 소리를 번갈아 한참 들었는데, 어느 쪽이 더 큰지 가늠하기가 점점 어려워지더니 어느 순간 서버 쪽이 분명히 더 작았다. 지인들이 미리 그려둔 굉음과 켜는 순간의 두려움과 30초 뒤의 안도가, 거기서 한 줄로 풀렸다.
"공기청정기보다 작은데?"
방을 지나가던 아이가 그렇게 말하고는 다시 자기 일로 갔다. 어른은 자기가 무엇에 놀라는지 안다고 생각하지만, 그 기준은 자주 비교군 없이 잡힌다. 아이는 거실에서 늘 돌아가던 공기청정기와 비교했고 그 비교가 우리 집의 음향 풍경을 정해버렸다. 이쪽의 비행기와 저쪽의 공기청정기 사이에서, 합의는 그렇게 끝났다.
## 옮긴다는 동사의 무게
서브 컴퓨터 위에서 돌던 DB와 서비스와 스토리지를 이제 새 랙으로 옮겨야 한다. 옮긴다는 말이 단순해 보여도 막상 시작하면 동사라기보다 의식에 가깝다.
PostgreSQL 클러스터는 dump-restore로도, 논리 복제로도, 물리 복제로도 옮길 수 있다. 방법보다 늘 더 중요한 것은, 옮기기 전에 한 번 더 묻는 것이다. 이 스키마가 정말 지금의 모양이어야 하는가. 옮겨본 사람만 적게 되는 메모가 거기서 생긴다. 마이그레이션이라는 단어가 무게를 가지는 것은 이 때문이다 — 동일성을 보존하는 일이 아니라 동일성을 다시 묻는 기회.
스토리지 쪽은 더 느리게 갈 것이다. DS720+의 8TB 두 장에 담긴 것을 R730xd의 4TB 한 장으로 한 번에 옮길 방법은 없으니, 줄여 옮기거나 디스크를 더 박은 뒤에 옮기거나 둘 중 하나다. 어느 쪽이든 시놀로지는 마지막 한 장까지 비워질 것이고, 비워진 박스는 매각될 것이다. 가전이 정말로 떠나는 것은, 가전이 떠난 자리의 빈 공간을 보고 나서다.
## 추상을 거둘 때 남는 것
"베어메탈"이라는 단어가 좀 과해 보일 수 있는데, 실제로 가리키는 것은 그냥 추상을 한 겹 거두는 일이다. DSM이 친절히 덜어주던 결정을 다시 떠안고, 박스가 가려두었던 펌웨어와 BIOS와 IPMI와 RAID 컨트롤러와 ZFS 풀과 네트워크 본드를 손으로 직접 만지는 일. 손이 닿는 면적이 늘어난 만큼 다칠 가능성도 늘어나지만, 그만큼 자기 시스템이라는 감각도 또렷해진다.
노자가 말한 태상하지유지(太上下知有之) — 가장 잘 다스리는 자가 있을 때 사람들은 그저 그가 있다는 것 정도만 안다 — 는 자기 인프라를 다루는 사람에게는 거꾸로 돌아온다. 가장 좋은 시스템은 그 안의 모든 레이어가 자기에게 알려져 있는 시스템이고, 알려져 있다는 것은 한 번씩 직접 만져본 적이 있다는 뜻이다. 플라톤이 동굴에서 막 빠져나온 자의 첫 며칠을 적었을 때 그가 가리킨 광경도, 가전의 그림자에서 베어메탈의 빛으로 막 나온 사람의 첫 며칠과 묘하게 겹친다. 일주일이 지나면 일부가 익숙해지고, 한 달이 지나면 손바닥처럼 알게 된다. 거기서부터가 운영이다.
장자가 무용지용(無用之用)을 말했을 때, 그 안에는 압착기를 처음 잡고 망친 세 가닥의 케이블 같은 것도 작게 들어 있었을지 모르겠다. 그 세 가닥이 없었으면 네 번째에서 1Gbps가 안 떴고, 베어메탈이라는 단어가 신체로 무엇을 가리키는지 아는 일도 한참 미뤄졌다. 베어메탈은 무용한 시간을 견뎌본 사람에게만 천천히 자기 면적을 내준다.
## 한 줄의 정의
베어메탈이란, 자기 시스템의 모든 레이어를 자기 책임의 영역으로 끌어들이는 일이다. 가전이 약속하던 친절을 사양하고 그 자리에 자기 손과 자기 메모와 자기 인내를 들이는 일. 비행기가 책상 옆에서 활주하고, 아이가 그것을 공기청정기에 비유하고, 첫 케이블의 1mm를 다시 가다듬는 일.
오늘도 케이블 한 가닥을 다시 자른다. 흰 줄 주황, 주황, 흰 줄 초록, 파랑. 손이 도면을 외울 때까지.