๋๋ฅผ ๊นจ๋ซ๋ ์๊ฐ, ํ
๋ง๋ฏธ ๐
TellingMe๋ ๋ฐ์ ํ๋์ธ๋ค์ด ํ๋ฃจ์ ํ ๋ฒ, ์ค์ค๋ก๋ฅผ ๋์๋ณผ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฐ์ฑ ๊ธฐ๋ฐ ์๊ธฐ ํ์ ์๋น์ค์
๋๋ค.
๋งค์ผ ์ ๋
6์, ํ
๋ง๋ฏธ๋ ์๋ก์ด ์ง๋ฌธ์ ์ ์กํฉ๋๋ค. ์ฌ์ฉ์๋ ๊ทธ๋ ์ ์ง๋ฌธ์ ๋ตํ๋ฉฐ ์์ ์ ๊ฐ์ ์ ๊ธฐ๋กํ๊ณ , ๋๋ง์ ๊ณต๊ฐ์์ ์ผ์์ ๊ฐ์ ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
- ๐ฎ ์ค๋์ ์ง๋ฌธ: ๋งค์ผ 18์์ ์๋ก์ด ์ง๋ฌธ ์ ์ก
- ๐ง ๊ฐ์ ๋ถ์: ๋ต๋ณ ๊ธฐ๋ฐ ๊ฐ์ ์ธ์ ๋ฐ ํ์คํ ๋ฆฌ ํ์ธ
- ๐ ๋์ ๊ณต๊ฐ: ๊ฐ์ธ ๋ต๋ณ ๊ธฐ๋ก ๋ฐ ์ ๋ฆฌ
- ๐ซ ๋ชจ๋์ ๊ณต๊ฐ: ๊ฐ์ ๊ณต์ ๋ฅผ ํตํ ๊ณต๊ฐ ์ปค๋ฎค๋ํฐ
- ๐ ํ ๋ฌ์นด๋ ์์ฑ ๋ฐ ๊พธ๋ฏธ๊ธฐ
- ๐ง ์น์ฆ(Cheese) ๊ฒฐ์ ์์คํ
- ๐ฌ ๊ฐ์ ๊ตฌ๋งค ๊ธฐ๋ฅ
- ๐ฏ ๋ฏธ์ ์์คํ : ์ผ์ผ/์ฃผ๊ฐ ๋ณด์ ๊ธฐ๋ฐ ์๋น์ค ์ด์ฉ ์ ๋
- Language: Python
- Framework: FastAPI
- ORM: Tortoise ORM
- Task Queue: Celery
- Broker/Backend: Redis
- Test Framework: Pytest
- Linting: Ruff, Black, dmypy
- CI Rule: ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ 90% ์ด์์ ๋ง์กฑํ์ง ์์ผ๋ฉด ๋ณํฉ ๋ถ๊ฐ
- GitHub Actions ๊ธฐ๋ฐ
- CI: ์ปค๋ฒ๋ฆฌ์ง ์ฒดํฌ, ๋ฆฐํ , ํ ์คํธ ์๋ ์คํ
- CD: AWS ์ธํ๋ผ๋ฅผ ํตํ ์๋ ๋ฐฐํฌ (๋ฌด์ค๋จ ๋ธ๋ฃจ/๊ทธ๋ฆฐ ๋ฐฐํฌ)
- Cloud: AWS
- Components:
- Route53 (DNS)
- Application Load Balancer
- EC2 (๋ฐฐํฌ ๋์ ์๋ฒ)
- RDS (Relational Database)
- Redis (Celery ๋ฐฑ์๋์ฉ)
Client
โ
[ Route53 ]
โ
[ Load Balancer ]
โ โโโโโโโโโโโโโโ
[ Target Group ] โโโโถ โ EC2-A โ
โ (App v1) โ
[ Target Group ] โโโโถ โ EC2-B โ
โ (App v2) โ
โ โโโโโโโโโโโโโโ
[ RDS (MySQL) ]