4유로 VPS로 전 세계 날씨 정보를!

by DD
5개월 전
조회수 33

개인적인 관심에서 시작된 FediMeteo는 4유로 VPS와 FreeBSD 기반으로 수천 명에게 날씨 정보를 제공함

Python 스크립트를 활용하여 날씨 데이터를 수집하고, Snac을 통해 Fediverse에 게시하는 방식으로 운영됨

오픈소스 정신과 Unix 철학을 기반으로, 최소한의 자원으로 확장 가능한 시스템을 구축하여 성공적인 사례를 보여줌

FreeBSD Jail 기반 인프라 구성

FediMeteo는 FreeBSD Jail을 활용하여 국가별 인스턴스를 격리, 관리한다. 구체적으로 각 Jail은 독립적인 ZFS 데이터셋을 가지며, 15분 간격으로 로컬 스냅샷을 생성한다. 따라서, BastilleBSD를 통해 Jail 관리를 단순화하고, Haproxy를 사용하여 웹사이트 및 Snac 인스턴스를 운영한다. 결과적으로, 안정적인 서비스 운영과 효율적인 자원 관리를 동시에 달성한다.

Python 스크립트와 Snac을 활용한 데이터 처리

날씨 데이터 수집 및 게시를 위해 Python 스크립트와 Snac을 사용한다. 구체적으로, Open-Meteo API를 통해 날씨 정보를 가져와 Markdown 형식으로 변환하고, Snac의 CLI를 통해 Fediverse에 게시한다. 반면, geopy 라이브러리를 활용한 좌표 계산 과정에서 Nominatim 서버의 응답 지연 문제가 발생했으나, 좌표 캐싱을 도입하여 해결했다. 따라서, API 호출 횟수를 줄이고 성능을 개선했다.

확장성 및 성능 최적화 전략

FediMeteo는 4유로 VPS 환경에서도 38개국, 2937개 도시의 날씨 정보를 제공하며, 높은 확장성을 보여준다. 구체적으로, Cron Job을 통해 6시간마다 업데이트를 수행하고, 대규모 업데이트 시에는 Sleep 기능을 추가하여 Snac의 부하를 분산한다. 따라서, API Key 유출과 같은 문제에 대응하기 위해 보안을 강화하고, Uptime-Kuma를 활용하여 시스템 상태를 모니터링한다.

FediMeteo: How a Tiny €4 FreeBSD VPS Became a Global Weather Service for Thousands

댓글 0

첫 번째 댓글을 남겨보세요!