Write the code. Change the world.
homelab

공개 서비스를 홈랩에서 꺼낸 이유

· Kyoungwon Lee

한동안 외부에 공개한 서비스를 홈랩에서 운영했어요. 지금은 저와 가족이 쓰는 것들을 홈랩에 남겨 두고, 공개 서비스는 외부의 작은 VM으로 옮겼어요. 그렇게 나누게 된 가장 큰 이유는 다운타임이었어요.

이사와 업데이트가 서비스 중단으로 이어졌어요

집에서 서비스를 운영하다 보니, 집의 사정으로 서비스를 멈춰야 할 때가 있었어요. 이사하는 동안이나 기기를 메이저 업데이트하고 재시작하는 동안에는 서비스도 함께 멈췄어요.

그중 하나가 주차 정보를 제공하는 개인 프로젝트, Parkingo예요. 공공 API에서 전국 공항 주차 정보를 가져와 웹사이트와 모바일 앱에서 볼 수 있게 제공하는 서비스예요. 정보를 제공하는 곳은 외부에 있지만, 그 정보를 보여주는 제 서비스가 홈랩에서 멈추면 서비스도 이용할 수 없었어요.

Parkingo에는 주로 검색을 통해 찾아오는 사람들이 많았어요. 누군가는 주차 정보가 필요해서 검색하고 들어올 텐데, 제 이사나 기기 업데이트 때문에 서비스가 내려가 있는 건 마음에 걸렸어요.

당연히 기기를 옮기고 업데이트하는 건 필요한 일이지만 그 일을 하는 동안 검색으로 찾아온 사람에게 서비스를 제공하지 못하는 상태를 그대로 두기는 어려웠어요.

개인 프로젝트라도 다운타임은 불편했어요

회사에서는 수천만 명이 사용하는 규모의 서비스를 다뤄 왔어요. 그래서인지 개인 프로젝트라고 해도 서비스가 멈춰 있는 상태를 편하게 받아들이기 어려웠어요.

사실 엄청 대단한 서비스는 아니에요. 잠시 멈춘다고 큰일이 나는 것도 아닐 수 있고, 이 규모에서 다운타임을 얼마나 중요하게 봐야 하느냐는 생각도 할 수 있어요.

그래도 다른 누군가를 위해 만든 서비스라면, 규모와 관계없이 안정적으로 운영하려는 책임감을 가져야 한다고 생각해요. 개인 프로젝트에 회사 서비스와 같은 수준의 운영 환경을 갖추겠다는 뜻은 아니에요. 다만 작은 서비스라는 이유로, 필요한 정보를 찾아온 사람이 이용하지 못하는 상황을 당연하게 여기고 싶지는 않았어요. 그게 제가 서비스를 만들고 운영할 때 지키고 싶은 기준이에요.

정보를 찾으려고 링크를 눌렀는데 Cloudflare 에러 페이지가 뜨는 건, 사용자 입장에서 정말 좋지 않은 경험이잖아요. 제가 업데이트를 하는 동안 누군가는 그런 화면을 보게 될 수 있다는 생각에 초조했어요.

그런데 그때 제가 할 수 있는 건 업데이트와 재부팅이 빨리 끝나기를 기도하며 기다리는 것뿐이었어요.

공개 서비스는 작은 외부 VM으로 옮겼어요

Parkingo를 옮기려니 고정 비용을 생각하지 않을 수 없었어요. 집에서 돌리면서 중단을 감수할지, 매달 비용을 내고 클라우드 VM에서 운영할지 비교해야 했어요.

절충안으로 선택한 건 Hetzner의 저렴한 VM이었어요. 유럽 리전이라 한국에서 접속할 때의 속도는 감수하기로 했어요. 조금 느리더라도, 집의 이사나 기기 업데이트에 영향을 받지 않고 안정적으로 운영하는 쪽을 택했어요.

물론 외부 VM이라고 장애가 없어지는 건 아니에요. 업데이트도 필요하고, 서비스를 운영하는 책임도 여전히 제게 있어요. 그래도 집의 기기를 옮기거나 재시작하는 일과 공개 서비스의 운영을 분리할 수는 있었어요.

홈랩에는 저와 가족이 쓰는 것들을 남겼어요

지금 홈랩에는 DNS 도구인 Pi-hole과 아이와 함께하는 마인크래프트 서버가 있어요. 개인 생산성 도구들도 외부에 공개하지 않고 쓰고 있어요. 멈췄을 때 저나 가족이 불편한 것과, 검색으로 찾아온 사람이 서비스를 이용하지 못하는 것은 제게 다르게 느껴졌어요.

그 밖의 새로운 아이디어는 직접 서버를 운영하지 않는 방식으로 시도하고 있어요. Cloudflare Workers를 통해 가설을 검증하고, 접기도 하면서 다음 시도를 반복해요.

홈랩에서 공개 서비스를 운영해 본 뒤에야, 제게 맞는 기준이 생겼어요. 저와 가족이 쓰는 도구는 홈랩에, 공개 서비스는 외부 VM에 두고, 새로운 가설은 서버를 직접 관리하지 않는 환경에서 검증해 보고 있어요.