- Today
- Total
hye-log
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 77 ๋ณธ๋ฌธ
๐ ๊ฐ๋ณํ์ต
[3-1] FastAPI 1
1. ๋ฐฑ์๋ ํ๋ก๊ทธ๋๋ฐ
1) Server ๊ตฌ์ฑ Use Case
- ์ฑ/์น ์๋น์ค์ ์๋ฒ
- ๋จธ์ ๋ฌ๋ ์๋น์ค์ ์๋ฒ
- ์๋น์ค ์๋ฒ --์์ฒญ--> ๋จธ์ ๋ฌ๋ ์๋ฒ
2) Server์ ํํ
(1) ๋ชจ๋๋ฆฌ์ ์ํคํ ์ณ(Monolithic Architecture) : ๋ชจ๋ ํ๋์ ํฐ ์๋ฒ์์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ
(2) ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ณ(MicroService Architecture) : ๊ฐ๋ณ ์๋ฒ๋ก ๊ตฌ์ฑํ๊ณ ์๋ก ํต์ ํ๋๋ก ํ๋ ๊ฒฝ์ฐ
3) REST API
(1) ํ๋์ ์๋ฒ์๋ ์ฌ๋ฌ API๊ฐ ์กด์ฌ
(2) REST API : ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์
- ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ : ์กฐํ, ์ถ๊ฐ, ์์ , ์ญ์
- CRUD : Create, Read, Update, Delete
(3) HTTP(Hyper Text Transfer Protocol) : ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ง์ผ์ผ ํ๋ ํต์ ํ๋กํ ์ฝ(๊ท์ฝ), ์ฝ์
(4) REST(Representational State Transfer)
- Resource, Method, Representation of Resource๋ก ๊ตฌ์ฑ
- ํด๋ผ์ด์ธํธ(Client) : ์์ฒญ์ ํ๋ ํ๋ซํผ
- Resource : uniqueํ ID๋ฅผ ๊ฐ์ง๋ ๋ฆฌ์์ค -> URL
- Method : ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ์ -> GET, POST, PUT, PATCH, DELETE
(5) URI, URL
- URL(Uniform Resource Locator) : ์ธํฐ๋ท ์ ์์์ ์์น
- URI(Uniform Resource Identifier) : ์ธํฐ๋ท ์ ์์์ ์๋ณํ๊ธฐ ์ํ ๋ฌธ์์ด์ ๊ตฌ์ฑ
4) HTTP Method
(1) GET : ์ ๋ณด ์์ฒญ(Read)
(2) POST : ์ ๋ณด ์ ๋ ฅ(Create)
(+) GET๊ณผ POST
(3) PUT : ์ ๋ณด ์ ๋ฐ์ดํธ(Update)
(4) PATCH : ์ ๋ณด ์ ๋ฐ์ดํธ(Update)
(5) DELETE : ์ ๋ณด ์ญ์ (Delete)
5) Header์ Body
(1) HTTP ํต์ ์์ Request, Response๋ ์ ๋ณด๋ฅผ ํจํท(Packet)์ ์ ์ฅ
(2) ํจํท์ ๊ตฌ์กฐ : Header / Body
(3) Header : ๋ณด๋ด๋ ์ฃผ์, ๋ฐ๋ ์ฃผ์, ์๊ฐ
(4) Body : ์ค์ ์ ๋ฌํ๋ ค๋ ๋ด์ฉ
6) Status Code
(1) ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ๋ผ ์๋ฒ์ ๋ฐ์์ ์๋ ค์ฃผ๋ Code
(2) ์ข ๋ฅ
- 1xx(์ ๋ณด) : ์์ฒญ ๋ฐ์, ํ๋ก์ธ์ค ๊ณ์ ์งํ
- 2xx(์ฑ๊ณต) : ์์ฒญ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์, ์คํ
- 3xx(๋ฆฌ๋ค์ด๋ ์ ) : ์์ฒญ ์๋ฃ๋ฅผ ์ํ ์ถ๊ฐ ์์ ํ์
- 4xx(ํด๋ผ์ด์ธํธ ์๋ฅ) : ์์ฒญ ๋ฌธ๋ฒ์ด ์๋ชป๋์๊ฑฐ๋ ์ฒ๋ฆฌํ ์ ์์
- 5xx(์๋ฒ ์ค๋ฅ) : ์๋ฒ๊ฐ ์์ฒญ์ ๋ํด ์คํจํจ
7) ๋๊ธฐ์ ๋น๋๊ธฐ
(1) ๋๊ธฐ(Sync) : ์๋ฒ์์ ์์ฒญ(Request)๋ฅผ ๋ณด๋์ ๋, ์๋ต(Response)๊ฐ ๋์์์ผ ๋ค์ ๋์ ์ํ
(2) ๋น๋๊ธฐ(Async) : ์์ฒญ์ ์๋ต ์ํ์ ์๊ด ์์ด ๋ค์ ๋์ ์ํ
8) IP(Internet Protocol)
- ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ํน์ PC์ ์ฃผ์๋ฅผ ๋ํ๋ด๋ ์ฒด๊ณ
- ์ธํฐ๋ท์์์ ์ฌ์ฉํ๋ ์ฃผ์์ฒด๊ณ
- IPv4 : 4๋ฉ์ด์ ์ซ์๋ก ๊ตฌ์ฑ๋ IP ์ฃผ์ ์ฒด๊ณ
- localhost, 127.0.0.1 : ํ์ฌ ์ฌ์ฉ ์ค์ธ local PC
- 0.0.0.0, 255.255.255.255 : broadcast address, ๋ก์ปฌ ๋คํธ์ํฌ์ ์ ์๋ ๋ชจ๋ ์ฅ์น์ ์ํตํ๋ ์ฃผ์
9) Port
- IP ๋ค์ ๋์ค๋ ์ซ์(0~65535)
- PC์ ์ ์ํ ์ ์๋ ํต๋ก
- 0~1024๋ ํต์ ์ ์ํ ๊ท์ฝ์ ์ํด ์ ํด์ง
- 24 : SSH
- 80 : HTTP
- 443 : HTTPS
- 8888 : Jupyter Notebook
2. FastAPI
1) FastAPI์ ํน์ง
- ์ต๊ทผ ๋ ์ค๋ฅด๋ Python Web Framework
- High Performance : Node.js, go์ ๋๋ฑํ ์ฑ๋ฅ
- Easy : Flask์ ๋น์ทํ ๊ตฌ์กฐ๋ก Microservice์ ์ ํฉ
- Productivity : Swagger ์๋ ์์ฑ, Pydantic์ ์ด์ฉํ Serialization
2) ํ๋ก์ ํธ ๊ตฌ์กฐ (v1)
- app : ํ๋ก์ ํธ์ ์ฝ๋๊ฐ ๋ค์ด๊ฐ ๋ชจ๋ ์ค์
- __main__.py : ๊ฐ๋จํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๋ Entrypoint(์์์ ) ์ญํ
- main.py / app.py : FastAPI ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ Router ์ค์
- model.py : ML model์ ๋ํ ํด๋์ค์ ํจ์ ์ ์
3) Poetry
- Dependency Resolver๋ก ๋ณต์กํ ์์กด์ฑ๋ค์ ๋ฒ์ ์ถฉ๋์ ๋ฐฉ์ง
- Virtualenv๋ฅผ ์์ฑํด์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ง
- ๊ธฐ์กด ํ์ด์ฌ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ์์ ์ง์ํ์ง ์๋ build, publish ๊ฐ๋ฅ
- pyproject.toml์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฌ ํด๋ค์ config๋ฅผ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌ
4) Poetry ์ค์ต
(1) Poetry ์ค์น
(2) Poetry ํ๋ก์ ํธ init
(3) 01_sample_webserver.py ์์ฑ
(4) uvicorn์ ์ด์ฉํ์ฌ ์คํ
- docs
- redoc
5) Swagger
- ๋ง๋ API๋ฅผ ํด๋ผ์ด์ธํธ์์ ํธ์ถํ๋ ๊ฒฝ์ฐ
- REST API ์ค๊ณ ๋ฐ ๋ฌธ์ํํ ๋ ์ฌ์ฉ
- ๊ธฐ๋ฅ : API ๋์์ธ, ๋น๋, ๋ฌธ์ํ, ํ ์คํ
๐ ์ค๋์ ํ๊ณ
์ค์ ์๋ ๋ฉํ ๋ง์ ํ๋ค. ์ต์ข ํ๋ก์ ํธ ์ฃผ์ ๊ด๋ จํ์ฌ ์ฌ์ฉ์๊ฐ ์ด๋ป๊ฒ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ด๋ป๊ฒ ์ ์กํ๋์ง์ ๊ฐ์ด ๋ฐ์ดํฐ์ ํ๋ฆ์ ๋ํด์ ์ข ๋ ๊ณ ๋ฏผ์ด ํ์ํ ๊ฒ ๊ฐ๋ค. ์ ํํ๊ฒ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋์ง ๋ฌธ์ ๋ฅผ ์ ์ํ๋ ๊ฒ๋ถํฐ ์์ํ๋ ๊ฒ ์ค์ํ๋ค. ๋ํ, ์๋น์ค ์ค์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ๋ค๋ฃฐ๊ฑด์ง(out of detecting, miss tracking, continuous learning)๋ฅผ ๊ณ ๋ฏผํ๋ ๊ฒ์ด MLOps์ ๊ฐ์น๋ผ๊ณ ํ ์ ์๋ค๊ณ ๋ฉํ ๋ง์ ํตํด ์กฐ์ธ์ ์ป์๋ค!
'Boostcourse > AI Tech 4๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 79 (0) | 2023.01.12 |
---|---|
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 78 (0) | 2023.01.11 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 76 (0) | 2023.01.10 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 16_DAY 75 (0) | 2023.01.08 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 16_DAY 74 (0) | 2023.01.06 |