← 목록으로
BinaryHub 개발

BinaryHub 개발기 ③ 무쓸모.앱 — 농담을 정성스럽게

3

BinaryHub 개발기. 진지한 도구를 만들다가, 굳이 만들 필요 없는 사이트를 하나 만들어 끼웠다.

시작은 단순한 농담

한참 북곽툴즈에서 한컴 COM과 씨름하다 보면, "쓸모 있는 걸" 만드는 데 지친다. 그때 친구들과 농담으로 한 얘기가 시작이었다. "디지털 변기 사이트 만들면 재밌지 않냐."

만들어 보니 정말 재밌었다. 변기 페이지에 들어가면 큰 버튼이 있고, 누르면 물이 한 번 내려간다. 그게 다다. 에어컨 페이지엔 온도 슬라이더가 있고 돌리면 바람 세기가 바뀐다(아무 일도 안 일어난다). 선풍기 페이지엔 도는 날개가 있다. "실생활에 도움 0%, 만족 약간%" 가 그대로 사이트 푸터 문구가 됐다.

이름은 무쓸모.앱, 주소는 useless.binaryhub.club.

농담일수록 정성스럽게

농담 사이트는 두 가지 함정이 있다. 하나는 너무 대충 만들어서 정말 쓸모없어 보이는 것. 다른 하나는 너무 화려하게 만들어서 농담이 아니라 광고처럼 보이는 것.

처음 만든 버전은 후자였다. AI 시그니처라 부르는 그것 — 의미 없는 그라데이션, 사방의 글로우, 카드마다 다른 컬러, rounded-3xl 거대 모서리. 멋있게 보이려고 한 게 오히려 가짜처럼 보였다.

다 걷어내고 다시 만들었다. 단색·미니멀·뭉툭하지 않은 모서리·필요한 곳에만 색. 변기 버튼은 그냥 큰 회색 버튼이고, 누르면 효과음 한 번 난다. 그게 더 농담 같았다.

광고도 동적 로직도 없다

무쓸모.앱은 다른 사이트와 다르게 AdSense 스크립트를 안 깔았다. 농담 사이트에 광고가 끼면 농담이 아니라 광고 노출용 사이트가 된다. 그래서 무쓸모는 끝까지 비상업적으로 두기로 했다.

이 결정은 운영에도 영향을 줬다. 광고도 없고 API도 없으니, 무쓸모.앱은 그냥 HTML·CSS·JS 정적 자산만 있는 사이트다. 데이터베이스도, 서버 액션도, 인증도, 폼 제출도 없다.

정적이라 가벼우니, 운영 PC에서 뺐다

처음엔 다른 사이트들과 똑같이 운영 PC의 PM2에서 띄웠다. 무중단 배포 한답시고 blue·green 두 인스턴스까지 분리해서 — 농담 사이트인데 인스턴스 두 개를 굳이.

곰곰이 보니 이상했다. 정적 사이트는 어차피 한 번 빌드해 둔 파일을 그대로 내보내는 거다. 굳이 운영 PC가 next start로 띄우고 있을 이유가 없다. 메모리 250MB가 농담 사이트 두 인스턴스에 쓰이는 게 좀 우스워졌다.

그래서 옮겼다. next.config.ts에 한 줄.

const nextConfig: NextConfig = {
  output: "export",
  images: { unoptimized: true },
};

이러면 npm run buildout/ 디렉토리에 완전 정적 사이트를 만든다. 그걸 Cloudflare Pages에 올렸다.

wrangler pages deploy out --project-name=useless

도메인은 Cloudflare 대시보드에서 useless.binaryhub.club을 Pages 프로젝트에 붙이면 끝이다. 기존 Cloudflare Tunnel CNAME은 자동으로 Pages CNAME으로 교체됐다.

정적 사이트의 부담은 진짜로 0

Cloudflare Pages 무료 플랜은 정적 트래픽이 무제한이다. 100명이 1000번씩 들어와도 카운트되지 않는다. 빌드 한도가 월 500회 있지만 무쓸모.앱은 변경할 일도 거의 없다.

운영 PC에서 빠진 효과도 컸다. PM2에서 두 인스턴스를 지우고 Caddy 라우팅에서 호스트 매처를 빼고 Tunnel ingress에서 줄을 지웠다. 메모리 250MB가 회수됐고, 농담 사이트가 운영 PC와 무관하게 항상 살아 있는 상태가 됐다. 운영 PC를 재부팅해도 무쓸모는 안 죽는다.

SEO는 의도적으로 안 했다

다른 사이트는 sitemap·robots·OG 메타·JSON-LD를 다 깔아 두고 Google Search Console에 등록까지 했다. 무쓸모.앱은 그러지 않았다. 검색에서 누가 "온라인 화장실"로 들어오는 사이트가 되면 농담이 깨진다. 누가 직접 주소를 알고 들어오는 정도가 딱 좋다.

다만 robots.txt 자체는 둬서 크롤러 진입을 막진 않았다. 어디까지나 의도적으로 SEO를 신경 쓴 것이지 완전히 거부하는 건 아니다.

사이트마다 결을 다르게 두기

결국 무쓸모.앱은 BinaryHub 우산 아래에서 가장 가볍고 가장 비상업적인 사이트가 됐다. 같은 우산 아래 사이트라고 다 똑같이 운영할 필요는 없다는 걸 무쓸모로 배웠다. 동적 로직이 필요한 사이트는 PM2로 굴리고, 광고가 필요한 사이트엔 AdSense를 깔고, 농담 사이트는 정적으로 가볍게 둔다.