15분
프로젝트 요구사항 분석
로깅+캐싱 시스템 구축 - 주간 프로젝트
프로젝트 요구사항 분석
Python 고급: 제너레이터, 데코레이터, 컨텍스트 매니저, Type Hints > 로깅+캐싱 시스템 구축 - 주간 프로젝트
학습 목표
로깅 시스템의 상세 요구사항을 파악한다 캐싱 시스템의 상세 요구사항을 파악한다 평가 기준을 확인한다
프로젝트 요구사항 분석
1. 로깅 시스템 (logging_system.py)
에디터 로딩 중...
상세 요구사항:
| 기능 | 설명 | 구현 힌트 |
|---|---|---|
| 로그 레벨 필터링 | min_level 이하 로그 무시 | IntEnum 비교 연산 |
| 함수 인자 로깅 | include_args=True일 때 기록 | *args, **kwargs 캡처 |
| 실행 시간 측정 | 밀리초 단위로 기록 | time.perf_counter() |
| 버퍼 기반 배치 출력 | 메모리 효율적 플러시 | 제너레이터 yield |
| 컨텍스트 정보 | request_id 등 자동 추가 | 컨텍스트 매니저 + threading.local |
2. 캐싱 시스템 (caching_system.py)
에디터 로딩 중...
상세 요구사항:
| 기능 | 설명 | 구현 힌트 |
|---|---|---|
| TTL 지원 | 만료된 캐시 자동 삭제 | datetime.now() > expires_at |
| LRU 정책 | maxsize 초과 시 오래된 것 제거 | OrderedDict.move_to_end() |
| 캐시 통계 | hits, misses, hit_rate | dataclass 활용 |
| 타입 안전 | 제네릭으로 타입 보존 | TypeVar, Generic |
| 캐시 무효화 | delete(key), clear() | API 메서드 |
3. 평가 기준
| 항목 | 배점 | 기준 |
|---|---|---|
| 기능 구현 | 40% | 모든 요구사항 충족 |
| 타입 힌트 | 20% | mypy --strict 통과 |
| 코드 품질 | 20% | 가독성, 모듈화, 문서화 |
| 테스트 | 20% | 주요 케이스 테스트 코드 |
4. 제출 폴더 구조
에디터 로딩 중...
체크리스트
로깅 시스템:
- LogLevel.from_string("INFO") 동작
- @log 데코레이터가 함수 시그니처 보존 (functools.wraps)
- LogBuffer.flush()가 제너레이터 반환
- log_context() 중첩 지원
캐싱 시스템:
- CacheEntry.is_expired() 정확히 동작
- maxsize 초과 시 LRU 삭제
- @cache가 함수 인자로 키 생성
- CacheStats.hit_rate 계산 정확
전체:
- mypy --strict 통과
- 모든 public 함수/클래스에 docstring
핵심 포인트
- • 로깅: @log + LogBuffer(제너레이터) + log_context(컨텍스트 매니저)
- • 캐싱: @cache + MemoryCache(LRU) + Protocol/Generic
- • mypy --strict 통과 필수
- • 테스트 코드와 README 포함