본문 바로가기

KPMG Future Academy 6기

(삼정 KPMG future academy 6기 수업) Fast API

1. 웹 서버란?

웹 서버는 웹사이트를 보여주는 프로그램

브라우저(크롬, 사파리 등)가 “이 페이지 보여줘!” 하고 요청하면,
웹 서버가 HTML, CSS, 이미지, JavaScript 파일 등을 보내줌

  • 유저가 www.naver.com을 열면
    → 브라우저가 “네이버 페이지 줘요” 요청
    → 네이버의 웹 서버가 페이지 내용을 보내줌

2. 관련 용어 

용어 예시
HTTP 웹 브라우저 ↔ 서버가 대화할 때 쓰는 “언어” "이 페이지 보여줘" / "OK, 여기 있어"
HTTPS HTTP에 보안(암호화)을 더한 버전 은행·로그인 사이트는 전부 HTTPS
WSGI Flask 같은 동기형 웹 프레임워크용 표준 인터페이스 (요청 하나씩 순서대로 처리)
ASGI FastAPI 같은 비동기형 웹 프레임워크용 표준 인터페이스 (여러 요청을 동시에 처리 가능)

3. 동기(Synchronous) vs 비동기(Asynchronous)

동기 방식 (Synchronous) 👉 Flask, Django 기본 구조가 여기에 해당 

  • “줄 서서 차례대로 처리”
  • 앞 작업이 끝나야 다음 작업이 시작됨
  • 예: 편의점에서 계산대 하나만 있을 때,
    손님 A 결제가 끝나야 손님 B 계산 시작 가능

비동기 방식 (Asynchronous) 👉 FastAPI, Node.js 등이 여기에 해당

  • “기다리지 않고 동시에 처리”
  • 앞 작업이 끝나지 않아도 다른 작업을 바로 시작함
  • 예: 스타벅스에서 여러 직원이 동시에 주문 처리하는 것

→ 한 번에 여러 요청을 효율적으로 처리할 수 있어 더 빠름

    항상 비동기가 좋은가? 그건 또 아님!

    단순한것, 순차적인거 처리할때는 비동기 방식이 안정적이고 직관적임

 

 

1. API란?

API (Application Programming Interface)
프로그램끼리 서로 대화하게 해주는 통로

당신의 앱이 “날씨 정보”가 필요할 때, 직접 기상청 데이터베이스를 열 필요 없이

“기상청 API”에 요청하면 날씨 데이터를 보내줌  → 앱과 서버가 서로 이야기하는 언어 규칙이 바로 API
API = 시스템 간 연결을 가능하게 하는 약속

 

2. REST란?

REST (Representational State Transfer) → “웹에서 데이터를 주고받는 방식(스타일)"

즉, 데이터를 자원(Resource) 으로 보고, 그 자원을 주소(URL)로 표현하며,
필요한 작업(조회, 추가, 수정, 삭제)을 HTTP 메서드로 구분

3. RESTful API란?
REST의 원칙을 잘 지켜서 만든 API를 RESTful API  (웹을 통해 데이터를 주고받는 표준화된 언어)

  • URL로 자원을 표현하고
  • HTTP 메서드(GET, POST, PUT, DELETE 등)로 행동을 표현하며
  • 일관된 규칙으로 통신하는 방식

 

(참고)  https://fastapi.tiangolo.com/ko/

FastAPI는 프론트엔드(화면)데이터베이스(DB) 사이에서 “중간 통신자(bridge) 역할”을 하는 백엔드 서버

 

[사용자 화면]
   ↑↓ (HTTP 요청/응답)
[FastAPI 서버]  ←→  [데이터베이스]

 

(실습)

1. 가상환경 세팅

conda create -n fastapi_agent python=3.12

conda activate fastapi_agent
pip install fastapi uvicorn

 

(실행) uvicorn main2:app --reload

 

(main 3) 챗봇 - fast API 연결