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

LKM·2022년 7월 25일
0

✏️학습 정리


3-1. FastAPI(1)

  • Server의 형태

    • Monolithic Architecture
      • 하나의 큰 서버에서 모두 처리하는 경우
    • Microservice Architecture (MSA)
      • 개별 서버로 구성하고 서로 통신하도록 하는 경우
  • REST API

    • 하나의 서버도 여러 API를 가지고 있음
    • REST API (Representational State Transfer API)
      • 정보를 주고 받을 때 널리 사용되는 형식
      • 기본적인 데이터 처리 (CRUD → Create, Read, Update, Delete)
  • URI, URL

    • URL: Uniform Resource Locator, 인터넷 상 자원의 위치
    • URI: Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성
    • URI는 URL을 포함하는 범위
  • HTTP

    • 정보를 주고 받을 때 지켜야 하는 통신 프로토콜(규약, 약속)
    • Method
      • GET: 정보를 요청하기 위해 사용 (Read)
      • POST: 정보를 입력하기 위해 사용 (Create)
      • PUT: 정보를 업데이트하기 위해 사용 (Update)
      • PATCH: 정보를 업데이트하기 위해 사용 (Update)
      • DELETE: 정보를 삭제하기 위해 사용 (Delete)
    • GET vs POST
    • Header, Body
      • HTTP 통신은 Request, Response할 때 정보를 패킷(Packet)에 저장
      • Packet 구조: Header/Body
      • Header: 보내는 주소, 받는 주속, 시간
      • Body: 실제 전달하려는 내용
    • Status Code
      • 클라이언트 요청에 따라 서버가 어떻게 반응하는지 알려주는 Code
      • 1xx(정보): 요청을 받았고, 프로세스를 계속 진행함
      • 2xx(성공): 요청을 성공적으로 받았고, 실행함
      • 3xx(리다이렉션): 요청 완료를 위한 추가 작업이 필요
      • 4xx(클라이언트 오류): 요청 문법이 잘못되었거나 요청을 처리할 수 없음
      • 5xx(서버 오류): 서버가 요청에 대해 실패함
  • 동기, 비동기

    • 동기(Sync): 서버에서 요청을 보냈을 때, 응답이 돌아와야 다음 동작을 수행할 수 있음
      • A 작업이 모두 완료될 때까지 B 작업은 대기해야 함
    • 비동기(Async): 요청을 보낼 때 응답 상태와 상관없이 다음 동작을 수행함.
      • A 작업과 B 작업이 동시에 실행됨
  • IP (Internet Protocol)

    • 네트워크에 연결된 특정 PC의 주소를 나타내는 체계
    • 4덩이의 숫자로 구성된 IP 주소 체계 → IPv4
    • Port
      • IP 주소 뒤에 나오는 숫자
      • PC에 접속할 수 있는 통로(채널)
      • 0~65535까지 존재
      • 0~1024는 통신을 위한 규약에 정해짐
        • 22: SSH
        • 80: HTTP
        • 443: HTTPS
  • Fast API

    • 최근 떠오르는 Python Web Framework

    • 특징

      • High Performance: Node.js, Go와 대등한 성능
      • Easy: Flask와 비슷한 구조, Microservice에 적합
      • Productivity: Swagger 자동 생성, Pydantic을 이용한 Serialization
        • Swagger가 왜 필요?? → 다른 개발팀과 협업하는 경우 유용
    • 장점

      • Flask보다 간결한 Router 문법
      • Built-in API Documentation (Swagger) 자동 생성
      • Asynchronous(비동기) 지원
    • 아쉬운 점

      • ORM 등 Database와 관련된 라이브러리가 적음
    • Fast API 프로젝트 구조

      • app : 프로젝트 이름, 코드가 들어갈 모듈
      • __main__.py : 어플리케이션을 실행할 수 있는 Entrypoint 역할
        • Entrypoint: 프로그래밍 언어에서 최상위 코드가 실행되는 시작점 또는 프로그램 진입점
      • [main.py](http://main.py) or app.py : FastAPI의 어플리케이션과 Router 설정
      • [model.py](http://model.py) : ML model에 대한 클래스와 함수 정의
    • Poetry

      • Dependency Resolver로 복잡한 의존성들의 버전 충돌 방지
      • Virtualenv를 생성해 격리된 환경에서 빠르게 개발 가능
      • 기존 파이썬 패키지 관리 도구에서 지원하지 않는 Build, Publish가 가능
      • 사용 흐름
        • 프로젝트 init
        • Poetry Shell 활성화
        • Poetry Install
        • Poetry Add
profile
함께 자라기

0개의 댓글