✏️학습 정리
3-1. FastAPI(3)
-
Event Handler
- 이벤트가 발생했을 때, 그 처리를 담당하는 함수
- FastAPI에선 App이 실행할 때, 종료될 때 특정 함수를 실행할 수 있음
-
API Router
- 큰 애플리케이션들에서 많이 사용되는 기능
- API Endpoint를 정의
- 예제 프로젝트 구조

-
Error Handling
- Error Handling은 웹 서버를 안정적으로 운영하기 위해 반드시 필요한 존재
- Error가 발생한 경우, 어떤 Error가 발생했는지 알아야 하고 요청한 클라이언트에 정보를 전달해 대응할 수 있어야 함
-
Background Tasks
- FastAPI는 Starlett이라는 비동기 프레임워크를 래핑해서 사용
- Background Tasks의 기능은 오래 걸리는 작업들을 backgound에서 실행
- Online Serving에서 CPU 사용이 많은 작업들을 Background Task로 사용하면, 클라이언트는 작업 완료를 기다리지 않고 즉시 Response를 받아볼 수 있음
-
Cookiecutter
3-3. Logging
-
Log
- 어원: 통나무 → 현재는 기록으로 사용
- 데이터는 어디에나 존재
- 머신러닝 인퍼런스 요청 로그, 인퍼런스 결과를 저장해야 함
-
데이터의 종류
- 데이터베이스 데이터 (서비스 로그, Database에 저장)
- 서비스가 운영되기 위해 필요한 데이터 (ex. 고객 가입날, 구매 이력 등..)
- 사용자 행동 데이터 (유저 행동 로그, Object Storage & Data Warehouse에 저장)
- 사용자 행동 데이터를 의미
- 더 좋은 제품을 만들기 위해 데이터 분석시 필요한 데이터
- 앱이나 웹에서 유저가 어떤 행동을 하는지를 나타내는 데이터
- 인프라 데이터 (Metric)
- 백엔드 웹 서버가 제대로 동작하는지 확인하는 데이터
- TIP
- Metric: 값을 측정할 때 사용
- Log: 운영 관점에서 알아야 하는 데이터를 남길 때 사용
- Trace: 개발 관점에서 알아야 하는 것
-
데이터 적재 방식
- Database(RDB)
- 웹, 앱 서비스에서 사용되는 경우 활용
- 실제 서비스용 Database
- 행과 열로 구성
- 데이터의 관계를 정의하고, 데이터 모델링 진행
- 데이터 추출시 SQL 사용 (MySQL, PostgreSQL 등..)
- Database(NoSQL)
- Elasticsearch, Logstash, Fluent, Kibana에서 활용하는 경우
- 스키마가 없거나 느슨한 스키마만 적용
- 데이터가 많아지며 RDBMS로 트래픽을 감당하기 어려워 개발
- 일반적으로 RDBMS에 비해 쓰기와 읽기 성능이 빠름
- Key-Value 형태 → JSON 형태와 비슷
- Object Storage
- S3, Cloud Storage에 파일 형태로 저장 (csv, parquet, json 등)
- 별도로 Database나 Data Warehouse로 옮기는 작업이 필요
- Data Warehouse
- 데이터 분석시 활용하는 데이터 웨어하우스로 바로 저장
- 여러 공간에 저장된 데이터를 한 곳으로 저장
-
Logging in Python
- 파이썬 기본 모듈, Logging
- 심각도(Severity)에 따라 info → debug → warning → error → critical로 분류

- Logging Component
- Loggers
- 로그를 생성하는 Method 제공
- 로그 level과 Logger에 적용된 Filter를 기반으로 처리해야 하는 로그인지 판단
- Handler에게 LogRecord 인스턴스 전달
- Handlers
- Logger에서 만들어진 Log를 적절한 위치로 전송 (파일 저장 or Console 출력 등..)
- Level과 Formatter를 각각 설정해서 필터링 할 수 있음
- StreamHandler, FileHandler, HTTPHandler 등..
- Filters
- Formatter
- 최종적으로 Log에 출력될 Formatting 설정
- 시간, Logger 이름, 심각도, Output, 함수 이름, Line 정보, 메시지 등 다양한 정보 제공
3-2, 3-4 Docker, MLflow
https://velog.io/@kangmin/부스트캠프-AI-Tech-5주차-Day-2