도시 날씨 데이터 로거 아키텍처

단순한 스크립트를 넘어, 확장 가능하고 유지보수 용이한 데이터 시스템을 구축하는 여정

데이터 파이프라인 흐름도

자동화된 스케줄러에 의해 시작된 작업이 어떻게 외부 API에서 데이터를 수집하고, 정제된 정보로 변환하여 최종적으로 데이터베이스에 기록되는지 전체 과정을 보여줍니다.

1. 자동 실행

스케줄러 (Cron/Schedule)

⚙️

2. 설정 로드

config.ini & 환경 변수

☁️

3. 데이터 수집

OpenWeatherMap API

🔬

4. 데이터 처리

JSON 파싱 및 정제

💾

5. 영구 저장

CSV 또는 SQLite

핵심 구성 요소 분석

견고한 시스템은 각자의 책임이 명확한 모듈들의 조합으로 이루어집니다. '관심사 분리' 원칙에 따라 설계된 각 컴포넌트의 역할을 알아봅니다.

설정 관리자

API 키, 도시 목록 등 시스템의 동작을 제어하는 매개변수를 코드와 분리하여 `config.ini` 및 환경 변수에서 관리합니다. 이를 통해 코드 변경 없이 설정을 유연하게 변경할 수 있습니다.

데이터 수집 엔진

`requests` 라이브러리를 사용하여 외부 OpenWeatherMap API와의 모든 HTTP 통신을 전담합니다. 네트워크 오류 처리 및 API 응답 코드 검증이 핵심 책임입니다.

데이터 처리 파이프라인

수집된 원시 JSON 데이터를 정제하고, 필요한 정보(온도, 습도 등)를 추출하며, 타임스탬프 변환 등 시스템에서 사용하기 용이한 표준화된 형식으로 가공합니다.

영속성 계층

처리된 데이터를 CSV 파일이나 SQLite 데이터베이스에 영구적으로 저장합니다. 데이터 저장 방식의 세부 구현을 추상화하여 다른 컴포넌트로부터 격리시킵니다.

스케줄러/오케스트레이터

`schedule` 라이브러리나 OS의 `cron`을 사용하여 전체 데이터 수집 및 저장 프로세스를 정해진 간격(예: 매시간)으로 자동으로 실행하도록 트리거합니다.

로깅 시스템

`logging` 모듈을 사용하여 애플리케이션의 실행 상태, 성공, 경고, 오류 메시지를 파일과 콘솔에 기록합니다. 이는 시스템의 동작을 추적하고 문제를 진단하는 데 필수적입니다.

저장 전략 비교: CSV vs. SQLite

데이터 저장 방식의 선택은 프로젝트의 미래 확장성을 결정하는 전략적인 결정입니다. Bar Chart는 각 방식의 장단점을 정량적으로 비교하여 보여주며, 프로젝트의 요구사항에 맞는 현명한 선택을 돕습니다.