15

프로젝트 요구사항 분석

로깅+캐싱 시스템 구축 - 주간 프로젝트

학습 목표

로깅 시스템의 상세 요구사항을 파악한다 캐싱 시스템의 상세 요구사항을 파악한다 평가 기준을 확인한다

프로젝트 요구사항 분석

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_ratedataclass 활용
타입 안전제네릭으로 타입 보존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 포함