본문 바로가기

부스트캠프 AI Tech 3기/프로젝트 : P-stage

[Day90] Product Serving 3-1 FastAPI : 백엔드 프로그래밍

  • Monolithic Architecture : 모놀리식 아키텍처
    하나의 서버에 서비스와 머신러닝 서비스가 한 번에 담겨있을 수도 있고,
  • Microservice Architecture : MSA: 마이크로서비스 아키텍처
    서비스 서버와 머신러닝 서버가 따로 존재할 수도 있다
    각각 개별 서버로 구성
    fast api는 MSA를 만들 때 좋은 framework이다.

Rest API : Representational State Transfer

: 정보를 주고받을 때 널리 사용되는 형식

: Rest 형식의 API

  • 요청의 모습을 보고 어떤 일을 하는지 알 수 있음
    예를 들어 www.site.com/1  이면 1이 무엇을 의미하는지 알기 힘들다.
  • CRUD(Create Read Update Delete) 가능
  • 클라이언트가 요청을 서버에 하면 response로 받는다
  • Resource, method, representation of resource로 구성
    • Resource : unique한 id를 가지는 리소스
      • URI : Uniform Resource Locator
        인터넷 상 자원의 위치
        ex)www.google.co.kr
      • URL : Uniform Resource Identifier
        인터넷 상의 자원을 식별하기 위한 문자열의 구성
        URI에 포함됨
    • Method : 서버에 요청을 보내기 위한 방식
      • GET : 정보 요청 : read
        • URL에 변수(데이터)를 포함시켜 요청
        • header에 포함되어 보안에 취약
        • 캐싱가능
      • POST : 정보 입력 : create
        • URL에 변수(데이터)를 포함시키지 않음
        • body에 포함되어 기본 보안은 됨
        • 캐싱 불가
      • PUT : 정보 업데이트 : update
      • PATCH : 정보 업데이트 : update
        PUT 과 달리 미묘한 차이가 있음
      • DELETE : 정보 삭제 : delete

HTTP : Hyper Text Transfer Protocal

: 정보를 주고 받을 때 지켜야하는 통신 프로코톨

기본적으로 80번 포트 사용함

Header와 Body

  • http 통신 시 Packet를 주고 받고, packet은 header와 body로 이루어짐
  • header : 보내는 주소, 받는 주소, 시간
  • body :실제 전달하려는 내용

Status Code

클라이언트 요청에 따라 서버의 반응을 알려주는 code

  • 1xx : 정보 : 요청을 받고, 프로세스를 계속 진행
  • 2xx : 성공 : 요청을 성공적으로 받고 실행함
  • 3xx : 리다이렉션 : 요청 완료를 위해 추가작업 필요
  • 4xx : 클라이언트 오류 : 요청 문법이 잘못되거나 처리할 수 없음
  • 5xx : 서버 오류 : 서버가 요청에 대해 실패

동기와 비동기

  • 동기 : Sync
    • 서버에서 요청을 보낸 것이 돌아와야 다음 작업 실행
    • ex) jupyter notebook
  • 비동기 : Async
    • 요청의 응답 상태와 상관없이 다음 작업을 실행
    • 병렬적으로 가능

IP : Internet Protocol

  • 네트워크에 연결된 PC 주소 체계
  • 4덩이의 숫자를 0~255까지로 이루어짐 -> IPv6으로 진화
  • localhost : 127.0.0.1
  • broadcast address : 0.0.0.0, 255:255:255:255
    로컬 네트워크와 접속된 모든 장치와 소통 가능한 주소

Port

  • IP 주소 뒤의 숫자
  • PC에 접속할 수 있는 통로
  • 포트는 중복해서 사용할 수 없음
  • 0 ~ 65535 까지 존재하는 데 0~1024는 통신을 위해 정해져 있음
  • 22: SSH, 80: HTTP, 443 : HTTPS