OpenFreeMap은 지난 10개월간 매우 안정적인 운영 경험을 했음. Cloudflare의 대역폭 후원, Hetzner 서버의 안정성, Btrfs에서의 타일 서비스, nginx의 효율성 덕분에 시스템 신뢰성이 입증됨. 그러나 어느 날 갑자기 일부 타일이 로드되지 않는다는 보고를 받게 되었음. 이는 평소에는 알고리듬 버그 때문이지만 이번에는 open() "Too many open files" 오류가 nginx 로그에서 발견됨. 트래픽 모니터링 도구로 확인 결과, 24시간 동안 30억 요청이 발생했으며, 작은 타일 파일만으로도 215TB 트래픽을 기록함. 최근 5분간 3천만 건 요청, 즉 초당 10만 요청에 달하는 폭증 현상이 있었음. 이 트래픽은 상업용 지도 서비스에서는 월 600만 달러 이상의 비용이 들 것임. Cloudflare 대시보드에는 96%가 200 OK로 응답했고, 3.6%만 비정상(206 Partial Content)임. 대다수 요청이 정상적으로 서비스되고, 일부 누락 타일을 제외하고는 전체 시스템이 잘 동작함을 확인함. 이번 폭증의 원인은 Wplace.live라는 새로운 협업 드로잉 웹사이트임. 오픈 직후 수많은 사용자가 몰려들었고, 이들이 OpenFreeMap 기반 지도를 사용하도록 설계됨. 사용자들이 1픽셀/30초 제한을 우회하기 위해 자동화 툴(예: Puppeteer/Chromium, IP 회전 등)로 대량 요청을 발생시킴. 관리자는 예전 Neal.fun과 협력했던 경험을 들어, 트래픽 발생 전 사전 소통의 중요성을 강조함. 이번에는 서비스 운영에 지장을 줬기에 Cloudflare 규칙을 처음으로 적용하여 차단함. 향후에는 referer 또는 custom header 기반의 자동 트래픽 제어 방안(Cloudflare API 활용 포함)을 모색 중임. Cloudflare는 대역폭 후원을 매우 빠른 절차(주말 포함 48시간 내)에 승인해줬으며, 엔지니어들과 아키텍처 적합성 논의까지 진행함. 대규모 기업임에도 유연한 대응력을 보여줬음. 운영자는 99.4% CDN 캐시율을 달성했으며, 서버가 1,000 rps 로드도 견딘 것에 자부심을 느낌. 주간 데이터 업데이트를 제공하는 서비스에서는 상당히 높은 성과임. 이후 Wplace.live 개발자와 연락이 닿아, 갑작스러운 200만 사용자 증가로 준비 부족을 이해함. 이들에게 OpenFreeMap 셀프 호스팅 인스턴스 지원을 제안, 트래픽 집중을 막고 효율성을 높이기로 논의함. 또한, 실제 200만 사용자 수에 비해 30억 요청이 발생한 것은 스크립트 기반 대량 요청이 압도적임을 시사함. 일반 사용자는 10~20회 요청에 그치므로, 서비스 정책을 변경해 불필요한 자동 요청을 방지하도록 추천함. 운영자는 두 가지 문제 개선을 예고함. 참조자(Referer) 기반 대역폭 제한 타일 누락 처리 및 서버 구성 개선 OpenFreeMap은 현재 매월 500달러의 기부로 운영 중임. 인프라 비용은 충분히 충당하지만, 신규 개발은 한정된 개인 시간에 의존함. 추가 지원을 통해 개발 속도 및 서비스 안정성 확대 가능함. GitHub 후원을 통해 프로젝트 지원에 참여할 수 있음: https://github.com/sponsors/hyperknot
OpenFreeMap의 지난 10개월과 초대형 트래픽 대응 경험
트래픽 폭증 원인: Wplace.live
Cloudflare의 지원과 OpenFreeMap 아키텍처의 성과
Wplace.live 개발자와의 소통, 그리고 해결 제안
향후 개선 및 학습 내용