Fullstack ๊ด๋ จ ์๋ฃ
๊ธฐ์ ์คํ (React + FastAPI + PostgreSQL)์ ๊ธฐ๋ฐ์ผ๋ก ํ์ตํ ์ ์๋ ์ฒด๊ณ์ ์ด๊ณ ํจ์จ์ ์ธ ์ปค๋ฆฌํ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ์คํฐ๋ํฉ๋๋ค.
- ํ๋ก ํธ์๋์์ React๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ๊ณ API ํต์ ์ฒ๋ฆฌ
- ๋ฐฑ์๋์์ FastAPI๋ก RESTful API๋ฅผ ๊ฐ๋ฐํ๊ณ ๊ด๋ฆฌ
- PostgreSQL์ ์ด์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ๋ฐ ์ฐ๋
- ์ ์ฒด ์๋น์ค์ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ์ด์ ๋ฐฉ๋ฒ ์์ง (๋ฐฐํฌ, ๊ด๋ฆฌ ํฌํจ)
์๋์ ๊ฐ์ด ๊ตฌ์ฑํ๋ฉด ๊ธฐ์ ๋ณ ๊ธฐ์ด๋ถํฐ ์ฌํ๊น์ง ๋น ๋ฅด๊ฒ ์ต๋ํ ์ ์์ต๋๋ค.
-
JavaScript & ES6 ๊ธฐ์ด ๋ณต์ต (ํ์ ์)
- ๊ธฐ๋ณธ ๋ฌธ๋ฒ, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋น๋๊ธฐ ์ฒ๋ฆฌ(Promise, async/await)
-
React ๊ธฐ๋ณธ ๊ฐ๋
- JSX, ์ปดํฌ๋ํธ ๊ฐ๋ (ํจ์ํ ์ปดํฌ๋ํธ)
- props, state ๊ด๋ฆฌ(useState, useEffect, useRef ๋ฑ)
- React Router๋ก ํ๋ฉด ์ ํ ์ฒ๋ฆฌ
-
TypeScript ์๊ฐ ๋ฐ ์ ์ฉ
- TypeScript ๊ธฐ์ด ๋ฐ ํ์ ๊ฐ๋ (interface, type, generics)
- React ํ๋ก์ ํธ์ TypeScript ์ ์ฉ ๋ฐฉ๋ฒ
-
REST API ์ฐ๋ (axios ๋๋ fetch)
- ๋ฐฑ์๋ API๋ฅผ ํธ์ถํ๊ณ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ํ์ต
ํ์ต ์๋ฃ ์ถ์ฒ:
- React ๊ณต์๋ฌธ์
- TypeScript ๊ณต์ ๋ฌธ์
- React Tutorial (FreeCodeCamp)
-
Python ๊ธฐ์ด ๋ณต์ต (ํ์ ์)
- ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ(async/await), ํ์ ํํธ
-
FastAPI ๊ธฐ๋ณธ ๊ฐ๋
- FastAPI ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ (venv, requirements.txt)
- ๊ธฐ๋ณธ API ์์ฑ๋ฒ(GET, POST, PUT, DELETE)
- Pydantic์ ์ด์ฉํ ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฆ ๋ฐ ์คํค๋ง ์์ฑ
-
FastAPI์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋(SQLAlchemy)
- ORM ๊ฐ๋ ๋ฐ CRUD ์์ ์ฒ๋ฆฌ
- ๋น๋๊ธฐ DB ์ฒ๋ฆฌ(asyncpg, SQLAlchemy-async)
-
Swagger(OpenAPI)๋ฅผ ์ด์ฉํ ์๋ API ๋ฌธ์ํ
ํ์ต ์๋ฃ ์ถ์ฒ:
- FastAPI ๊ณต์๋ฌธ์
- FastAPI Tutorial - ๊ณต์๋ฌธ์ ํํ ๋ฆฌ์ผ
- SQLAlchemy ๊ณต์ ๋ฌธ์
-
PostgreSQL ์ค์น ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ
- ๋ก์ปฌ ํ๊ฒฝ์์ DB ์์ฑ ๋ฐ ๊ด๋ฆฌ (pgAdmin ๋๋ DBeaver)
-
SQL ๊ธฐ์ด ํ์ต
- ๊ธฐ๋ณธ ์ฟผ๋ฆฌ(SELECT, INSERT, UPDATE, DELETE), JOIN ์ฐ์ฐ ์ดํด
-
๊ณ ๊ธ ๊ธฐ๋ฅ
- JSONB, ๋ถ๋ถ ์ธ๋ฑ์ค, ํธ๋์ญ์ , ์ธ๋ฑ์ค ์ต์ ํ ๋ฐฉ๋ฒ ๋ฑ
-
FastAPI์ PostgreSQL ํตํฉ ์ค์ต
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ์ค์ต (๊ด๊ณํ ๋ชจ๋ธ ์ค๊ณ)
ํ์ต ์๋ฃ ์ถ์ฒ:
- PostgreSQL ๊ณต์๋ฌธ์
- PostgreSQL ํํ ๋ฆฌ์ผ (TutorialsPoint)
-
FastAPI-React ์ ์ฒด ๊ตฌ์กฐ ์ฐ๊ฒฐ ์ค์ต
- ์ค์ ์ฑ์ ๊ตฌ์กฐ์ฒ๋ผ API ์ฐ๋ ๋ฐ ํตํฉ ํ๋ก์ ํธ ์ ์
-
JWT ๊ธฐ๋ฐ ์ธ์ฆ ์ฒ๋ฆฌ
- ๋ก๊ทธ์ธ/ํ์๊ฐ์ ๊ตฌํ ๋ฐ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ํ์ต
-
API ์๋ฌ์ฒ๋ฆฌ ๋ฐ ์์ธ์ฒ๋ฆฌ
- ์์ธ ์ฒ๋ฆฌ ๋ก์ง ์์ฑ ๋ฐ ์ํ ์ฝ๋ ๊ด๋ฆฌ ๋ฐฉ๋ฒ
์ถ์ฒ ์ค์ต ํ๋ก์ ํธ:
- Todo ๋ฆฌ์คํธ ์ฑ (CRUD, ์ธ์ฆ, DB ํ์ฉ ์ค์ต์ ์ข์)
- ๊ฐ๋จํ ๊ฒ์ํ ์ฑ ์ ์
-
AWS Lightsail ๊ธฐ๋ฐ ํ๊ฒฝ ์ค์
- ์๋ฒ ์ค์ (Ubuntu ์๋ฒ ํ๊ฒฝ ๊ตฌ์ถ)
- Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ค์ ๋ฐ HTTPS ์ ์ฉ (Certbot)
-
Docker์ GitHub Actions๋ฅผ ์ด์ฉํ CI/CD
- Docker ์ปจํ ์ด๋ ์ ์
- GitHub Actions๋ก ์๋ ๋ฐฐํฌ ์ฒ๋ฆฌ ์ค์ต
-
ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ ๋ฐ ๋ณด์ ๊ณ ๋ ค
ํ์ต ์๋ฃ ์ถ์ฒ:
- Docker ๊ณต์๋ฌธ์
- GitHub Actions ๊ณต์๋ฌธ์
-
์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ์ต์ ํ
- ๋ฐฑ์๋ API ์ฑ๋ฅ ์ต์ ํ (๋น๋๊ธฐ ์ฒ๋ฆฌ, ์บ์ฑ)
- ํ๋ก ํธ์๋ ์ต์ ํ (์ฝ๋ ์คํ๋ฆฌํ , ์บ์ฑ ์ ๋ต ๋ฑ)
-
ํ ์คํธ ์ฝ๋ ์์ฑ
- React ํ ์คํธ(Jest, React Testing Library)
- FastAPI ํ ์คํธ (Pytest)
-
ํ์ฅ์ฑ ๋ฐ ์ํคํ ์ฒ ์ค๊ณ ์ค์ต
- REST API ์ค๊ณ์ ๊ณ ๊ธ ์ฃผ์ (๋ฆฌ์์ค ๊ตฌ์กฐ, ์๋ฌ ์ฒ๋ฆฌ)
- React + FastAPI + PostgreSQL์ ํ์ฉํ ํ์คํ ์ฑ ์ ์
- JWT ์ธ์ฆ๊ณผ RESTful API ๊ตฌํ ๋ฐ ๋ฐฐํฌ ๊ฒฝํ
- Docker ๋ฐ GitHub Actions๋ฅผ ์ด์ฉํ CI/CD ๊ฒฝํ
์ฃผ์ฐจ | ์ฃผ์ ๋ชฉํ |
---|---|
1~2์ฃผ | React, TypeScript ๊ธฐ์ด ๋ฐ API ์ฐ๊ฒฐ ์ค์ต |
3~4์ฃผ | FastAPI ๊ธฐ์ด ๋ฐ DB ์ฐ๋ ์ค์ต |
5์ฃผ | PostgreSQL ๊ธฐ์ด ๋ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง |
6์ฃผ | ํ๋ก ํธ-๋ฐฑ์๋ ํตํฉ ์ฑ ๊ตฌํ (CRUD+์ธ์ฆ) |
7์ฃผ | AWS ๋ฐฐํฌ ๋ฐ Docker, CI/CD ๊ตฌ์ฑ |
8์ฃผ | ์ฑ๋ฅ ์ต์ ํ ๋ฐ ํ ์คํธ ์ฝ๋ ์์ฑ |