-
FediMeteo는 4유로짜리 FreeBSD VPS에서 시작된 전 세계 기상 정보 서비스로, Fediverse를 통해 각 도시의 날씨를 자동 게시함
- 각 국가는 FreeBSD jail로 분리되어 관리되며, snac 소프트웨어와 Open-Meteo API를 이용해 데이터를 가져와 Markdown 형식으로 게시
- 시스템은 6시간마다 자동 업데이트, 39개의 jail, 38개국 2937개 도시를 지원하며, 팔로워 수는 7700명 이상으로 성장
-
API 키 유출, 좌표 계산 오류, 언어 번역 문제 등 다양한 운영상의 문제를 겪었으나, 캐싱과 다국어 지원 개선으로 안정화
- 저비용 인프라에서도 효율적이고 자율적인 글로벌 서비스 구축이 가능함을 보여주는 사례로 평가됨
프로젝트 개요
- FediMeteo는 개인적 관심에서 출발한 Fediverse 기반 자동 기상 알림 서비스
- 창작자는 자신의 도시 날씨를 타임라인에서 직접 보고 싶다는 생각에서 시작
- 서비스는 도시별 계정(bot) 을 생성해 각 도시의 날씨를 주기적으로 게시
- 운영체제로 FreeBSD를 선택, 국가별로 jail을 분리해 관리 및 보안성 확보
- 초기 테스트는 독일 VPS에서 진행되었으며, 현재는 이탈리아 밀라노의 4유로 VPS에서 운영 중
설계 원칙
-
국가별 인스턴스 분리로 관리와 보안성 강화, 필요 시 개별 이동 가능
-
데이터 출처는 wttr.in과 Open-Meteo 중 선택, 오픈소스 친화성과 신뢰성 중시
-
접근성 강화: 현지 언어, 텍스트 브라우저 호환, 이모지 사용, JavaScript 비의존
-
Unix 철학에 따라 작은 구성요소들이 협력하는 구조 유지
-
snac을 핵심 소프트웨어로 채택, ActivityPub 지원, RSS 생성, 낮은 자원 사용, 빠른 컴파일 속도 보유
기술 구현
- 각 jail은 독립적으로 동작하며, Python 스크립트가 도시별 데이터를 가져와 Markdown으로 변환
-
geopy로 좌표 계산 후 Open-Meteo API 호출
- snac의 note 명령으로 게시물 전송, 외부 API 키 관리 불필요
-
post.sh 스크립트가 모든 도시를 순회하며 게시물 자동 생성 및 게시
-
cron이 6시간마다 실행, Uptime-Kuma로 상태 모니터링
- 도시명은 파일(cities.txt)로 관리되며, 새 도시 추가 시 자동 반영
성장과 반응
- 초기에는 이탈리아 중심으로 테스트 후, 유럽 각국으로 확장
-
FediFollows가 프로젝트를 소개하면서 팔로워 급증, 각국 사용자 요청 증가
-
다국어 지원, 이모지 표현, 비공개 게시(unlisted) 기능 추가
- 개발자 커뮤니티의 빠른 피드백으로 기능 개선이 지속됨
확장과 기술적 도전
-
단위 변환(섭씨/화씨) , 시간대 차이, 동명이 도시 구분 등 글로벌 확장 시 문제 발생
-
미국·캐나다 진출 시 1200개 이상의 도시 추가, 주별 구분을 위해 __ 구분자 사용
- Open-Meteo 무료 API 한도 초과 문제 발생 후, 전용 API 키 제공받음
-
FreeBSD와 snac의 효율성 덕분에 단일 VPS에서도 다수 국가 운영 가능
시스템 성능 및 인프라
- VPS 사양: FreeBSD 14.3-RELEASE, BastilleBSD로 jail 관리
- 총 39개 jail, ZFS 스냅샷 15분마다, 외부 백업 매시간 수행
-
RAM 사용량 501MB, 업데이트 시 약간 증가
-
CPU 부하 평균 10% 이하, 대규모 업데이트 시 70~75%까지 상승
-
미국 인스턴스는 도시 간 5초 간격으로 게시, 전체 처리 약 2시간 반 소요
문제 해결 사례
-
API 키 유출: 디버그 코드로 인해 노출, 즉시 수정 및 새 키 발급
-
geopy 오류: Nominatim 응답 실패 시 좌표 캐싱 도입으로 해결
-
언어 문제: 다국어 번역 누락 및 현지 언어 선택 오류 수정
현재 상태 (2025년 12월 기준)
- 지원 국가: 38개국, 도시 수 2937개
- Fediverse 팔로워 수 7707명 이상, RSS 구독자 수는 추정 불가
-
유럽, 북미, 아시아, 오세아니아 주요 도시 포함
- 시스템 안정적으로 운영 중이며, 추가 국가 확장 여력 존재
결론
- FediMeteo는 저비용 인프라에서도 글로벌 서비스를 구축할 수 있음을 입증
-
데이터 주권, 단순한 구조, 오픈소스 협력의 가치를 보여주는 사례
- 창작자는 프로젝트를 통해 날씨가 사람들을 연결하는 사회적 매개체가 되었음을 강조