내 방에서 자라는 작은 마을

열네 살부터 지금까지 나만의 환경은 한 번도 꺼진 적이 없다.

몇 해 전 터미널 환경에 적응하게 된 이야기를 쓰면서, 아이패드로 개발할 때 쓰는 서버에 대해 “이것도 나중에 소개해 볼 생각이다”라고 적어둔 적이 있다. 그 ‘나중’이 생각보다 길어졌다. 이 글은 그 서버가 어디에서 왔고, 지금 어떤 모습으로 자랐는지에 대한 이야기다.

안 쓰는 것들의 두 번째 삶

첫 서버는 열네 살에 만났다. 작은 CTF 대회에서 우승하고 경품으로 비글본 블랙(BeagleBone Black)이라는 손바닥만 한 개발 보드를 받았는데, 거기에 작은 리눅스를 올리고 내 홈페이지를 띄워 보았다. 변변한 내용도 없는 페이지였지만, 내 방 구석에서 돌아가는 작은 기계가 인터넷 건너편의 요청에 응답하고 있다는 감각만큼은 선명했다. 그 감각이 좋아서, 이후로도 서버는 늘 곁에 있었다.

열다섯에는 쓰지 않는 안드로이드 스마트폰 두 대를 루팅해서 내 방의 CCTV 겸 웹 서버, 파일 서버로 굴렸다. 열아홉에 취업한 뒤로는 안 쓰는 노트북이 그 자리를 이어받았다. 마침 출퇴근 지하철에서 Vim에 적응해 가던 시기였고, 이 노트북은 아이패드만 들고 다니며 어디서든 접속해 개발하는 원격 워크스페이스 겸 웹 서버가 되었다. 서두에 링크한 글에서 소개하겠다던 서버가 바로 이 노트북이다.

돌아보면 경품으로 받은 개발 보드, 서랍에 굴러다니던 폰, 더는 들고 다니지 않는 노트북까지 — 내 서버들은 늘 안 쓰는 것들의 두 번째 삶이었다.

왜 집에 서버를 두는가

서버가 있으면 할 수 있는 일이 많다. 새로운 기술이 궁금하면 바로 설치해서 써 볼 수 있고, 개인 프로젝트를 올려 둘 수 있고, 내가 자는 동안 돌아가야 하는 작업을 맡겨 둘 수도 있다. 물론 이 모든 것은 클라우드에서도 가능하다. 다만 개인이 감당하기에 호스팅 비용은 생각보다 비싸고, 관리형 서비스일수록 자유도는 줄어든다. 시간당 과금을 의식하며 조심스럽게 실험하는 것과, 전기세만 내면 되는 기계 위에서 마음껏 실험하는 것은 같은 일이어도 마음가짐이 다르다.

그리고 비용이나 자유도 같은 합리적인 이유를 다 걷어내고 나서도 하나가 남는다. 구성 요소를 하나씩 붙여 가며 나만의 환경이 갖춰지는 과정 자체가 좋았다. 누구의 요구사항도 아닌 내 필요대로 설계하고, 마음에 들지 않으면 언제든 갈아엎을 수 있는 환경. 집에 서버를 두는 진짜 이유는 아마 이쪽에 가까울 것이다.

노트북에서 클러스터로

3년쯤 전 지금 회사로 이직했는데, CTO가 Proxmox라는 가상화 특화 운영체제를 소개해 주었다. 물리 서버 한 대를 여러 개의 가상 머신과 컨테이너로 쪼개 쓸 수 있게 해준다. 열아홉부터 쓰던 그 노트북에 Proxmox를 올린 것이 지금 환경의 시작점이 되었다.

처음에는 컨테이너 몇 개로 시작했지만, 필요한 것이 생길 때마다 하나씩 늘었다. 쓰지 않게 된 구형 맥북 프로를 옆에 붙여 두 대짜리 클러스터가 되었고, 컨테이너는 어느새 수십 개가 되었다. 그런데 노트북과 맥북은 애초에 서버로 태어난 기계가 아니다. 24시간 전원이 꽂힌 채 일해 본 적 없는 배터리들이 부풀어 가는 것을 보며 수명이 머지않았음을 직감했고, 처음으로 ‘서버가 되기 위한’ 하드웨어를 주문했다. N100 기반의 미니 PC 두 대. 십 년 넘게 안 쓰는 것들을 재활용해 오다가, 처음으로 집에 서버를 들인 것이다.

운영이라는 양면

수십 개의 작은 서비스가 서로 얽혀 돌아가는 환경을 유지하는 일에는 양면이 있다.

잘 돌아갈 때의 뿌듯함이 한 면이다. DNS, 인증서, 리버스 프록시, 백업 — 수많은 조각이 제자리에서 맞물려 굴러가는 것을 보고 있으면 내 방에서 자라는 작은 마을 하나를 운영하는 듯한 기분이 든다. 네트워크와 서버, 보안까지 손대는 모든 곳이 공부가 된다는 것도 이 취미의 큰 수확이다. 회사 업무만으로는 만질 일이 없는 영역을 집에서는 바닥까지 파고들 수 있고, 그렇게 엔지니어로서 계속 배울 동기가 생긴다.

다른 한 면은 고장 났을 때의 짜증과 막막함이다. 어제까지 멀쩡하던 것이 오늘 침묵하고, 원인은 대체로 한참을 파고들어야 모습을 드러낸다. 퇴근하고 돌아와 장애를 들여다보는 날이면 ‘내가 이걸 왜 하고 있나’ 싶다가도, 고치고 나면 또 배운 것이 남아 있다.

최근에는 이 짜증을 줄이려고 Claude Code 기반의 자동 운영 체계를 만들었다. 반복적인 운영 작업과 장애의 일차 진단은 이제 AI 에이전트가 먼저 수행하고, 나는 판단이 필요한 지점에만 개입한다. 그러자 운영의 풍경이 달라졌다. 밖에 있어도 폰으로 에이전트에게 일을 맡겨 두면 되니, 언제 어디서든 무엇이든 비동기로 처리할 수 있다는 안도감이 생겼다. 내가 환경을 돌보는 것을 넘어, 환경이 나를 위해 일하기 시작한 것이다.

블로그가 들어온 자리

이 마을에 사는 주민을 모두 소개할 수는 없으니, 대표로 가장 최근에 입주한 하나만 소개해 보려고 한다. 바로 이 블로그다.

2022년까지는 Medium에 손수 글을 써서 올렸다. 그러다 글감도 마르고 쓰는 일 자체가 귀찮아져 자연스럽게 멈췄다. 다시 쓰고 싶어진 것은 LLM과 에이전트의 발전을 체감하고 나서다. 생각을 말하면 잘 정리된 글이 되고, 발행과 운영까지 자동화할 수 있는 시대가 되었으니, 이제는 시간을 많이 들이지 않고도 기록을 남길 수 있겠다는 계산이 섰다.

그래서 전제가 하나 생겼다. 블로그 역시 자동으로 운영되어야 한다는 것. Medium에 API가 있다는 사실은 알고 있었기에 키를 발급받으려 했는데, 매뉴얼대로 진행되지 않았다. 확인해 보니 API 지원 자체가 중단된 상태였다. 대안을 찾다가, 글의 생성부터 수정과 발행까지 모든 것을 API로 제어할 수 있고 직접 호스팅할 수 있는 Ghost를 골랐다. 마침 집에는 항상 돌아가는 서버가 있으니, 블로그가 들어올 자리는 이미 마련되어 있었던 셈이다.

지금 읽고 있는 이 글도 그 서버에서 서빙되고 있다.

계속 자라는 환경

개발 보드, 스마트폰, 노트북, 맥북, 그리고 미니 PC. 몸은 다섯 번 바뀌었지만, 열네 살부터 지금까지 나만의 환경은 한 번도 꺼진 적이 없다. 그사이 환경은 홈페이지 하나를 띄우던 보드에서, 수십 개의 서비스가 돌아가고 AI 에이전트가 운영을 거드는 작은 인프라로 자랐다.

앞으로 이 환경에 무엇이 더 추가될지는 나도 모른다. 지금까지 그래왔듯 필요가 생길 때마다 자랄 것이고, 그 모습을 미리 그려 두지 않는 것도 이 취미의 재미라고 생각한다. 오늘도 내 방 한구석에서는 작은 서버 두 대가, 열네 살의 그 보드가 그랬듯 조용히 인터넷 건너편의 요청에 응답하고 있다.

Subscribe to Eric's Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe