πŸ“•review/μ±…

[μ±… 리뷰] FastAPI둜 λ°°μš°λŠ” λ°±μ—”λ“œ ν”„λ‘œκ·Έλž˜λ° with 클린 μ•„ν‚€ν…μ²˜

ν‚ν‚μž‰ 2024. 10. 29. 22:57

 

FastAPI둜 λ°°μš°λŠ” λ°±μ—”λ“œ ν”„λ‘œκ·Έλž˜λ° with 클린 μ•„ν‚€ν…μ²˜λŠ” 가볍고 λΉ λ₯΄κ²Œ μ‹œμž‘ν•  수 μžˆλŠ” Python 기반 ν”„λ ˆμž„μ›Œν¬μΈ FastAPI둜 λ°±μ—”λ“œ κ°œλ°œμ„ μ‰½κ²Œ μ‹œμž‘ν•  수 있게 λ•λŠ” μ±…μž…λ‹ˆλ‹€. Java Spring Boot의 λ°©λŒ€ν•œ ꡬ쑰에 λΉ„ν•΄ FastAPIλŠ” κ°„κ²°ν•˜κ³ , 비동기 처리λ₯Ό 기본으둜 μ œκ³΅ν•˜μ—¬ 개발 속도와 μœ μ§€λ³΄μˆ˜ νš¨μœ¨μ„± λ©΄μ—μ„œ κ°•λ ₯ν•œ μž₯점을 κ°€μ§‘λ‹ˆλ‹€. 특히 클린 μ•„ν‚€ν…μ²˜λ₯Ό 기반으둜 κ³„μΈ΅λ³„λ‘œ λ°±μ—”λ“œ ꡬ쑰λ₯Ό μ„€κ³„ν•˜λŠ” κ°œλ…μ„ 닀루어 λ°±μ—”λ“œ 개발의 전체적인 흐름을 μ²΄κ³„μ μœΌλ‘œ ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μŠ΅ μ€‘μ‹¬μ˜ μ˜ˆμ œμ™€ 싀무에 μ μš©ν•  수 μžˆλŠ” λ‚΄μš©μ΄ μž…λ¬Έμžμ—κ²Œ 큰 도움이 λ˜λŠ” μ±…μž…λ‹ˆλ‹€.

 

 

λ³Έ μ„œν‰μ€ μ œμ΄νŽμ—μ„œ 책을 μ œκ³΅λ°›μ•„ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 

 

πŸ’‘κ°œμš”

Python은 μ›Ή 개발뿐만 μ•„λ‹ˆλΌ AI, 데이터 뢄석 λ“± λ‹€λ°©λ©΄μ—μ„œ μ‚¬μš©λ˜κ³  있으며, FastAPIλŠ” 졜근 ν•«πŸ”₯ν•œ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. 이 책은 클린 μ•„ν‚€ν…μ²˜μ˜ 원칙을 FastAPI에 μ μš©ν•˜μ—¬ TIL μ„œλΉ„μŠ€ μ‹€μŠ΅μ„ 톡해 λ°±μ—”λ“œμ˜ μ „λ°˜μ μΈ κ΅¬ν˜„μ„ μ²΄ν—˜ν•  수 μžˆλ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

 

μ±…μ˜ μ£Όμš” λͺ©μ°¨λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 

λͺ©μ°¨
1. FastAPI 개발 ν™˜κ²½ ꡬ좕
2. 클린 μ•„ν‚€ν…μ²˜
3. νšŒμ› κ°€μž…
4. μ˜μ‘΄μ„± μ£Όμž…
5. νšŒμ› λ¦¬μ†ŒμŠ€μ˜ CRUD κΈ°λŠ₯ μ™„μ„±
6. 비동기 ν”„λ‘œκ·Έλž˜λ°
7. 둜그인
8. ν™˜κ²½λ³€μˆ˜
9. TIL Note
10. λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…: ν™˜μ˜ 이메일 λ°œμ†‘
11. 미듀웨어
12. ν…ŒμŠ€νŒ…

 

μ±…μ—μ„œλŠ” FastAPI 외에도 DockerπŸ‹, Poetry, 클린 μ•„ν‚€ν…μ²˜ λ“±μ˜ κ°œλ…μ„ μ„€λͺ…ν•˜λ©°, μž…λ¬Έμžλ„ μ‹€μš©μ μΈ API ꡬ좕을 κ²½ν—˜ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

 

πŸ–οΈλ‚˜μ˜ 첫 λ°±μ—”λ“œ μŠ€νƒ

κ΅­λ‚΄μ—μ„œ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” λ°±μ—”λ“œ μŠ€νƒμ€ Spring Boot둜, μ„±λŠ₯κ³Ό ν™•μž₯μ„± μΈ‘λ©΄μ—μ„œ κ°•λ ₯ν•œ 지원을 μ œκ³΅ν•˜μ§€λ§Œ, Java 문법과 Spring ν”„λ ˆμž„μ›Œν¬μ˜ λ°©λŒ€ν•œ κΈ°λŠ₯을 깊이 이해해야 ν•˜λ―€λ‘œ λŸ¬λ‹ μ»€λΈŒκ°€ 맀우 κ°€νŒŒλ¦…λ‹ˆλ‹€. λ°±μ—”λ“œ κ°œλ°œμ— 처음 μž…λ¬Έν•˜κ±°λ‚˜ ν”„λ‘œμ νŠΈλ₯Ό λΉ λ₯΄κ²Œ μ‹œμž‘ν•˜κΈ°μ—λŠ” μ ν•©ν•˜μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€. μŠ€ν”„λ§ λΆ€νŠΈλŠ” 많이 λ¬΄μ„œμ›Œμš”πŸ˜­

Python κΈ°λ°˜μ˜ μΈκΈ° μžˆλŠ” ν”„λ ˆμž„μ›Œν¬λ‘œλŠ” Django와 Flaskκ°€ μžˆμŠ΅λ‹ˆλ‹€. DjangoλŠ” λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•œ κ°•λ ₯ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λ§Œ, κ΅¬μ„± μš”μ†Œκ°€ λ³΅μž‘ν•˜μ—¬ λ§Žμ€ ν•™μŠ΅μ„ ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. FlaskλŠ” μ΅œμ†Œν•œμ˜ κΈ°λŠ₯으둜 μ‹œμž‘이 κ°„λ‹¨ν•˜κ³  μœ μ—°ν•˜μ§€λ§Œ, ν™•μž₯ μ‹œμ—λŠ” μΆ”가적인 λ³΅μž‘ν•œ κ΅¬ν˜„이 μš”κ΅¬λ©λ‹ˆλ‹€.

이와 λ‹¬λ¦¬, FastAPIλŠ” κ°„κ²°ν•œ λ¬Έλ²•κ³Ό μžλ™ν™”λœ νƒ€μž… νžŒνŠΈ λ•뢄에 μ΄ˆμ‹¬μžλ„ μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ ν”„λ ˆμž„μ›Œν¬λ‘œ μ£Όλͺ©λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. κΈ°λ³Έμ μΈ λΉ„동기 κΈ°λŠ₯κ³Ό λ°μ΄ν„° κ²€μ¦ λ“± μœ μš©ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ λΉ„ꡐ적 λΉ λ₯΄κ³  μ•ˆμ •적인 API μ„œλ²„λ₯Ό κ΅¬μΆ•ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ FastAPIλŠ” λ°±μ—”λ“œ μ΄ˆλ³΄μžλ‚˜ λΉ λ₯Έ ν”„λ‘œν† νƒ€μ΄ν•‘μ΄ ν•„μš”ν•œ κ°œλ°œμžμ—κ²Œ μ ν•©ν•œ 선택이라고 μƒκ°ν•©λ‹ˆλ‹€.

 

사싀 μ €λŠ” μž…λ²„λ¦‡μ²˜λŸΌ λ°±μ—”λ“œκ°€ μ‹«λ‹€κ³  λ§ν•˜κ³€ ν–ˆλŠ”λ°μš”..λ°±μ—”λ“œλŠ” λ„ˆλ¬΄ μ–΄λ ΅κ²Œ λŠκ»΄μ‘ŒμœΌλ‹ˆκΉŒμš”. μ§κ΄€μ μœΌλ‘œ 확인 κ°€λŠ₯ν•œ ν”„λ‘ νŠΈμ—”λ“œμ™€ 달리 μ„œλ²„? λ°μ΄ν„°λ² μ΄μŠ€? API? λˆˆμ— 보이지 μ•ŠλŠ” λ¬΄μ–Έκ°€λ“€κ³Όμ˜ 싸움을 ν•˜λŠ” λ°±μ—”λ“œλŠ” μ €μ—κ²ŒλŠ” 정말 μ•Œκ³  μ‹Άμ§€ μ•Šμ€ μ˜μ—­μ΄μ—ˆμŠ΅λ‹ˆλ‹€.(μŠ€ν”„λ§λΆ€νŠΈ AWS λ¬΄μ„œμ›) ν•˜μ§€λ§Œ ν”„λ‘ νŠΈμ—”λ“œλ₯Ό κ³΅λΆ€ν•˜λ©° ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ˜ 쀑, λ°±μ—”λ“œμ— λŒ€ν•œ ν•„μš”μ„±μ„ μ ˆμ‹€νžˆ 느끼게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Next.jsμ—μ„œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯μ΄λ‚˜ Firebase, Supabase λ“± λ°±μ—”λ“œ API λŒ€μ²΄μ œλŠ” μΆ©λΆ„νžˆ λ§ŽμŠ΅λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ λ‚΄ λ¨Έλ¦Ώμ†μ˜ 아이디어λ₯Ό μ˜¨μ „νžˆ μ½”λ“œλ‘œ ν‘œν˜„ν•˜κΈ° μœ„ν•΄μ„œλŠ” 직접 APIλ₯Ό ꡬ좕할 수 μžˆλŠ” λŠ₯λ ₯이 ν•„μš”ν•˜λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.  λ°±μ—”λ“œμ˜ κ°œλ…μ„ μ΄ν•΄ν•˜κ³ , ν”„λ‘ νŠΈμ—”λ“œμ™€μ˜ 연계λ₯Ό 톡해 더 완성도 μžˆλŠ” ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€κΈ° μœ„ν•΄, μ›ν™œν•œ ν˜‘μ—…μ„ μœ„ν•΄μ„œλΌλ„ κΌ­ ν•„μš”ν•œ 과정이라고 λŠκΌˆμŠ΅λ‹ˆλ‹€. 이에  Node.js, Flask λ“± μ—¬λŸ¬ κΈ°μˆ λ“€μ„ μ•Œμ•„λ³΄λ©° λΉ„κ΅ν•œ κ²°κ³Ό, 첫 μ‹œμž‘μœΌλ‘œλŠ” FastAPIκ°€ 제일 μ‰½κ² λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€. 

 

πŸ“–λ‚΄μš©

이 책은 클린 μ•„ν‚€ν…μ²˜μ˜ κ°œλ…κ³Ό 단계적 μ‹€μŠ΅μ„ 톡해 FastAPI의 κΈ°λŠ₯듀을 μžμ„Ένžˆ 닀루고 μžˆμŠ΅λ‹ˆλ‹€. μ±… λͺ©μ°¨λ§Œ 봐도, 정말 λ§Žμ€ λ‚΄μš©λ“€μ„ λ‹€λ£¬λ‹€λŠ” 것을 μ•Œ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 

이 μ±…μ˜ κ°€μž₯ 큰 μž₯점은 FastAPI둜 κ°„λ‹¨ν•˜κ²Œ λ°±μ—”λ“œμ˜ 핡심 κ°œλ…κ³Ό 클린 μ•„ν‚€ν…μ²˜μ˜ μž₯점을 μ‹€μ œ ν”„λ‘œμ νŠΈμ— μ μš©ν•  수 있게 ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€. TIL μ„œλΉ„μŠ€λ₯Ό λ‹¨κ³„μ μœΌλ‘œ κ°œλ°œν•˜λ©°, ν΄λ¦° μ•„ν‚€ν…μ²˜μ˜ 원칙에 따라 λ°±μ—”λ“œ ꡬ쑰λ₯Ό μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ μ„€λͺ…ν•˜λ©΄μ„œλ„ 싀무 적용이 κ°€λŠ₯ν•œ 정보λ₯Ό μ œκ³΅ν•˜λŠ” 것이 이 μ±…μ˜ νŠΉμ§•μž…λ‹ˆλ‹€.

전체 νŽ˜μ΄μ§€ μˆ˜κ°€ 209νŽ˜μ΄μ§€λ‘œ 비ꡐ적 얇은 νŽΈμ΄μ§€λ§Œ, μ•Œμ°¬ κ΅¬μ„±μœΌλ‘œ λ°±μ—”λ“œ μž…λ¬Έμžμ—κ²Œ μ ν•©ν•œ λ‚œμ΄λ„μ™€ ꡬ성을 κ°–μΆ”κ³  μžˆμŠ΅λ‹ˆλ‹€. 

 

 

μ €λŠ” λ°±μ—”λ“œμ— λŒ€ν•΄μ„œλŠ” μ•„λŠ”κ²Œ 거의 μ—†μ–΄μ„œ, μ΄ˆλ°˜λΆ€λŠ” 쑰금 μ–΄λ ΅κ²Œ λŠκ»΄μ‘ŒμŠ΅λ‹ˆλ‹€. 클린 μ•„ν‚€ν…μ²˜μ— λŒ€ν•œ 이해도 ν•„μš”ν–ˆκ³ , λ°μ΄ν„°λ² μ΄μŠ€, ν¬μ–΄νŠΈλ¦¬, μœ λΉ„μ½˜, 도컀 λ“± μ‹€μŠ΅μ„ μœ„ν•΄ μ„€μ •ν•΄μ•Ό ν•˜λŠ”κ²ƒλ„ λ§Žμ•˜μœΌλ‹ˆκΉŒμš”. κ·ΈλŸ¬λ‚˜ 책이 κ°œλ…λΆ€ν„° μ‹€μŠ΅κΉŒμ§€ λ‹¨κ³„μ μœΌλ‘œ 잘 μ„€λͺ…λ˜μ–΄ μžˆμ–΄ 따라가닀 λ³΄λ‹ˆ 점차 μ΅μˆ™ν•΄μ‘Œκ³ , λͺ©μ°¨ ꡬ성도 탄탄해 ν•„μš”ν• λ•Œλ§ˆλ‹€ μ°Έκ³ ν•˜κΈ° 쒋은 책이라고 μƒκ°ν•©λ‹ˆλ‹€.

 

κ°œμΈμ μœΌλ‘œλŠ” μ˜μ‘΄μ„± μ£Όμž… 뢀뢄이 제일 재미있게 λŠκ»΄μ‘ŒμŠ΅λ‹ˆλ‹€. μ˜μ‘΄μ„± μ£Όμž…μ΄ λ­”μ§€, μ™œ ν•„μš”ν•œμ§€ ν™•μ‹€ν•˜κ²Œ 이해할 수 μžˆμ—ˆκ³ , FastAPIμ—μ„œ 자체적으둜 μ œκ³΅ν•˜λŠ” μ˜μ‘΄μ„± μ£Όμž… ν•¨μˆ˜μ™€, μ‹€μ œ 많이 μ“°μ΄λŠ” μ˜μ‘΄μ„± μ£Όμž… ν”„λ ˆμž„μ›Œν¬ 두 κ°€μ§€ 방식을 톡해 μ˜μ‘΄μ„± μ£Όμž…μ„ μ‹€μŠ΅ν•΄ λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ™œ λ³„λ„μ˜ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ“°λŠ”μ§€ κ°„λ‹¨ν•˜μ§€λ§Œ 클린 μ•„ν‚€ν…μ²˜ κ΄€μ μ—μ„œ μ„€λͺ…ν•΄μ£Όμ…”μ„œ κΈ°μˆ  μ„ νƒμ˜ 근거와 ν•„μš”μ„±μ„ 깊이 κ³ λ―Όν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이렇듯 μ±… 쀑간쀑간 λ‚˜μ˜€λŠ” μ„€λͺ…을 톡해, λ‹¨μˆœν•œ 기술 μ‚¬μš©μ„ λ„˜μ–΄ 개발 μ² ν•™κ³Ό 섀계 원칙을 κ³ λ €ν•˜λ©° 더 λ‚˜μ€ μ•„ν‚€ν…μ²˜λ₯Ό μ§€ν–₯ν•˜λŠ” 방법을 배울 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 

β€οΈμΆ”μ²œ λŒ€μƒ

이 책은 λ°±μ—”λ“œ 개발 ν”„λ‘œμ„ΈμŠ€λ₯Ό 처음 μ ‘ν•΄λ³΄λ €λŠ” κ°œλ°œμžλ‚˜, ν’€μŠ€νƒ κ°œλ°œμ„ λͺ©ν‘œλ‘œ ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžμ—κ²Œ μœ μš©ν•œ μ°Έκ³ μ„œκ°€ 될 것 κ°™μŠ΅λ‹ˆλ‹€. 

 

FastAPI의 κ°€μž₯ 큰 λ§€λ ₯ 쀑 ν•˜λ‚˜λŠ” "κ°„λ‹¨ν•˜λ‹€" μ˜€μŠ΅λ‹ˆλ‹€. λ³΅μž‘ν•œ 것이 싫은 μ €λŠ”,  API ꡬ좕이 κ°„λ‹¨ν•˜λ©΄μ„œλ„ λ¬Έμ„œν™”λ₯Ό μžλ™μœΌλ‘œ 생성해 개발 νŽΈμ˜μ„±μ„ κ·ΉλŒ€ν™”ν•œλ‹€λŠ” 점이 λ„ˆλ¬΄ λ§€λ ₯적으둜 λŠκ»΄μ‘ŒμŠ΅λ‹ˆλ‹€. 이런 μž₯점 덕뢄에, λ°±μ—”λ“œ κ²½ν—˜μ΄ μ—†λŠ” ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ„ λΆ€λ‹΄ 없이 API κ°œλ°œμ— 도전할 수 μžˆκ² λ‹€κ³  λŠκΌˆμŠ΅λ‹ˆλ‹€. μ €λŠ” 인곡지λŠ₯ μ›Ή μ„œλΉ„μŠ€μ— 관심이 μžˆμ–΄ AI λͺ¨λΈκ³Όμ˜ 톡합이 μ‰½κ²Œ μ΄λ£¨μ–΄μ§€λŠ” 점 λ˜ν•œ FastAPI의 큰 μž₯점으둜 느껴쑌고 μ•žμœΌλ‘œλ„ κΎΈμ€€νžˆ 곡뢀해 λ³Ό μ˜ˆμ •μž…λ‹ˆλ‹€!

 

λΉ λ₯΄κ²Œ λ°±μ—”λ“œ 기초λ₯Ό 읡히고 ν’€μŠ€νƒ ν”„λ‘œμ νŠΈμ— 도전해보고 싢은 ν”„λ‘ νŠΈμ—”λ“œ 개발자라면, 이 책이 FastAPI와 ν•¨κ»˜ ν›Œλ₯­ν•œ μž…λ¬Έμ„œκ°€ λ˜μ–΄ 쀄 것 κ°™μŠ΅λ‹ˆλ‹€.