[부스트캠프 AI-Tech] 19주차 Day 4

LKM·2022년 7월 25일
0

✏️학습 정리


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

profile
함께 자라기

0개의 댓글