๋๋ฆฐ ํ์ด์ฌ?
๋์์ฑยท๋ณ๋ ฌ์ฑ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ ๊ฐ๋ฅผ ๋ค์ธ์!
๊ฐ์๋ฅผ
์์ํ๊ธฐ ์ ์
์ด ๊ฐ์ ๋ชฉ์ ์ ํฌ๊ฒ ๋ ๊ฐ์ง์
๋๋ค. ๋์์ฑยท๋ณ๋ ฌ์ฑยท๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋
์ ์ ํํ ์ดํดํ๋ ๊ฒ๊ณผ ์ด๋ค ์ํฉ์์ ์ด๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋์ง ์๋ ค๋๋ฆฌ๋ ๊ฒ์
๋๋ค.
๊ฐ์ ํ๋ฐ๋ถ์๋ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ํตํด ์ค์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํด๋น ๊ฐ๋
์ ์ด๋ก ์์ง๋ฅผ ๋์ด ์ค์ ๋ก ์ค๋ฌด์์๋ ์ฌ์ฉํ ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค.
๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ ํ๋ก๊ทธ๋๋ฐ์
ํ์ด์ฌ ์ต์ ๋ฌธ๋ฒ์ผ๋ก
ํ์ด์ฌ ๋ฒ์ 3.7 ์ดํ ๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ง์์ด ๋ํญ ๋์ด๋ฌ์ต๋๋ค. ์ด์ ๋ํ ์์๊ฐ ์ปค์ง๋ฉด์ ๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ง์ด ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ๋ฒ์ ๋ง๋ค ๋ฐ๋๋ ํ์ด์ฌ ๋ฌธ๋ฒ์ ์ด๋ ค์์ ๊ฒช๋ ๋ถ๋ค์ด ๋ง์ต๋๋ค. ๋ ์ด๋ก ์ผ๋ก๋ ๋ฐฐ์ ์ผ๋ ์ค์ ๋ก ์ธ์ ์ด๋ป๊ฒ ๋ฌธ๋ฒ์ ์ ์ฉํด์ผ ํ๋์ง ๋ชจ๋ฅด๋ ๋ถ๋ ๋ง์ต๋๋ค.
์ด ๊ฐ์ข๋ ๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ์ ๋ํ ๊ฐ๋
์ ํ์ด์ฌ ์ต์ ๋ฌธ๋ฒ์ ๋ง์ถ์ด ์ค์ต๊น์ง ์งํํด ๋ฐ๋ก ์ ์ฉํ ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค.
๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์
๋์(at the same time)์
์ด ๊ฐ์์์๋ ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ๋ชจ๋ ๋ค๋ฃจ๊ณ ์ค์ ๋ก ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ณ ์์ต๋๋ค. ์ด ๋๋ฌธ์ ์ด ๊ฐ์์ ์ ๋ชฉ์ธ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ด์ค์ ์ธ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋์์ฑ(Concurrency)๊ณผ ๋ณ๋ ฌ์ฑ(Parallelism)์์์ ๋์์ฑ๊ณผ ๋์์(at the same time)์ ์๋ฏธ๋ก์์ ๋์์ฑ์
๋๋ค. ๋ณ๋ ฌ์ฑ์ ํํํ ๋ '๋์์' ๋๋ 'ํ์๊ฐ์'๋ผ๊ณ ํํํ ๋๊ฐ ๋ง๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด ๊ฐ์๋ฅผ
์ด๋ฐ ๋ถ๋ค๊ป ๊ถํ๊ณ ์ถ์ด์
๋์์ฑ? ๋ณ๋ ฌ์ฑ?
์ด๊ฒ ๋ค ๋ญ์ผ?
๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ด
๋ฌด์์ธ์ง, ์ ํ์ํ์ง
์ดํดํ๊ณ ์ถ๋ค๋ฉด
์ต์ ํ์ด์ฌ ๋ฌธ๋ฒ์ผ๋ก
๋์์ฑ ํ๋ก๊ทธ๋๋ฐ
๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ
๋ฌธ๋ฒ์ ์ต์ ๋ฒ์ ์ผ๋ก
์ฐ๊ณ ์ถ๋ค๋ฉด
ํ์ด์ฌ ๋์์ฑ ๋ฌธ๋ฒ์
์ค๋ฌด์์๋
์ค๋ฌด์์๋ ์ ์ฉํ
์ ์๋ ๋์์ฑ
ํ๋ก๊ทธ๋๋ฐ
๋ฐฑ์๋ ๊ฐ๋ฐ์๋
๊ถ๊ธํ FastAPI
๋น๋๊ธฐ ๋ฌธ๋ฒ์ ์ ๊ทน
์ฌ์ฉํ๋ FastAPI์
์จ๋ณด๊ณ ์ถ๋ค๋ฉด
- ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ ์๋๋ฅผ ์ฌ๋ฆฌ๊ณ ์ถ์ ๋ฐ์ดํฐ ๋ถ์๊ฐ, ๊ฐ๋ฐ์
- ๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ ๋ฌธ๋ฒ์ ์ต์ ํ์ด์ฌ ๋ฌธ๋ฒ์ ๋ง์ถ์ด ๋ฐฐ์ฐ๊ณ ์ถ์ ๋ถ
- ํ์ด์ฌ ๋์์ฑยท๋น๋๊ธฐยท๋ณ๋ ฌ์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ค๋ฌด์์ ๋ฐ๋ก ์ ์ฉํ๊ณ ์ถ์ ๋ถ
- ๋น๋๊ธฐ ๋ฌธ๋ฒ์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ์น ํ๋ ์์ํฌ FastAPI๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์
์ด ๊ฐ์๋
์ด๋ฐ ๋ถ๋ค๊ป๋ ๋์ ๋ฉ๋๋ค
- ํ์ด์ฌ์ ๋ฐฐ์ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ(๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฐ ์ธ์ด) ๊ฐ๋ฐ์
ํ์ด์ฌ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ :
๋ฐ์ดํฐ ์์ง๋ถํฐ ์น ๊ฐ๋ฐ๊น์ง
๋์์ฑ ํ๋ก๊ทธ๋๋ฐ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ํต์
- ์์คํ
๋์คํฌ ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ์์
- API ์ฌ์ฉ
๋ณ๋ ฌ์ฑ ํ๋ก๊ทธ๋๋ฐ
- ๋น๋์ค, ์ค๋์ค ๋๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ
- ์ปดํจํฐ ๋น์
- ๋จธ์ ๋ฌ๋
- ๋ฅ๋ฌ๋
์ด ๊ฐ์๋
์ด๋ ๊ฒ ์งํ๋ฉ๋๋ค
ํ์ด์ฌ ์ฝ๋ฃจํด๊ณผ ๋น๋๊ธฐ ํจ์
๊ธฐ๋ณธ์ ์ธ ์ฉ์ด ์ ๋ฆฌ์ ํ์ด์ฌ ์ฝ๋ฃจํด์ ๋ํด ์์๋ณด๊ธฐ
- ๋ฐ์ด๋, ๋ธ๋กํน, ๋๊ธฐ, ๋น๋๊ธฐ, ์๋ธ๋ฃจํด, ์ฝ๋ฃจํด ๋ฑ ์ค์ํ์ง๋ง ํท๊ฐ๋ฆฌ๋ ์ฉ์ด๋ฅผ ๋ง์ธ๋๋งต๊ณผ ์ฝ๋๋ฅผ ํตํด ์ค๋ช
ํ๋ฉฐ ์ ๋ฆฌํฉ๋๋ค.
- ์ฝ๋ฃจํด์ ์ฌ์ฉํ์ฌ ํ์ด์ฌ์์ ๊ธฐ๋ณธ์ ์ธ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ์ํฉ์์ ์๋ ํฅ์์ ์ํด ๋ฐ๋์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํด์ผ๋ง ํ๋ ์ด์ ๋ฅผ ์ค๋ฌด ์์(๋คํธ์ํฌ I/O, CPU ์ฐ์ฐ ๋ฑ)๋ฅผ ํตํด ์ฝ๋๋ก ์ฆ๋ช
ํฉ๋๋ค.
ํ์ด์ฌ ๋ฉํฐ ์ค๋ ๋ฉ๊ณผ ๋ฉํฐ ํ๋ก์ธ์ฑ
๋ฉํฐ ์ค๋ ๋? ๋ฉํฐ ํ๋ก์ธ์ค? ๋์์ฑ? ๋ณ๋ ฌ์ฑ?
- ์น์
1์์ ๊ฐ๋ฐํ ์ฝ๋ฃจํด ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋จ์ ๋ฉํฐ ์ค๋ ๋์์ ๋์์ฑ(๋ณํ์ฑ)์ ์ฌ์ฉํ๋ ๋ฉํฐ ์ค๋ ๋ฉ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ตฌํํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋๊ธฐ ์ฝ๋๋ฅผ asyncio ๋ชจ๋์ ๋์ ์์ด ๋ณํ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ดํดํฉ๋๋ค. ๋ํ ํ์ด์ฌ GIL(Global Interpreter Lock)์ ํตํด ํ์ด์ฌ์์ ๋ฉํฐ ์ค๋ ๋๋ก ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ ์ด์ ๋ฅผ ์ฌ๋ก๋ฅผ ๋ค์ด ์ค๋ช
ํฉ๋๋ค.
- ๋ฉํฐ ํ๋ก์ธ์ฑ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ด์ฌ์์ ๋ฉํฐ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ตํ๊ณ ํ์ด์ฌ์ผ๋ก ๋ถ์ฐ ์ฒ๋ฆฌ๋ฅผ ํ ๋ ์ด๋ค ์ํฉ์์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์ค๊ณํ๋์ง ์๋ ค๋๋ฆฝ๋๋ค.
๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ฐ์ดํฐ ์์ง
๋์์ฑยท๋น๋๊ธฐ ์ค์ ๋ก ํ๋ก์ ํธ์ ์์ฉํ๊ธฐ
- ์ง๊ธ๊น์ง ๋ฐฐ์ด ์ด๋ก ์ ๊ธฐ๋ฐ์ผ๋ก ์น ํฌ๋กค๋ฌ์ ์คํ API๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ ์์ง๊ธฐ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ์ค์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ฉด์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ต์ํด์ง๋ ์๊ฐ์ ๊ฐ์ง๋๋ค.
์ค์ ํ๋ก์ ํธ : "๋ฐ์ดํฐ ์์ง๊ธฐ ์น ์ฑ" with FastAPI
๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก MongoDB CRUD, ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ์น ๊ฐ๋ฐ
- ์ง๊ธ๊น์ง ๋ฐฐ์ด ์ด๋ก ์ ๊ธฐ๋ฐ์ผ๋ก โ๋ฐ์ดํฐ ์์ง๊ธฐ ์น ์ฑโ์ ๊ฐ๋ฐํฉ๋๋ค. ํด๋น ํ๋ก์ ํธ๋ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ์ฌ ์น์์ ํฌ๋กค๋งํ๊ณ ์์งํ ๋ฐ์ดํฐ๋ฅผ MongoDB์ ์ ์ฅํฉ๋๋ค. MongoDB๋ฅผ FastAPI์ ์ฐ๊ฒฐํ์ฌ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ฒ ๋ถ์ํ์ฌ ์๊ฐํํ ์น ์ฑ์ ๊ฐ๋ฐํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ํตํด ๋น๋๊ธฐยท๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ด ์ค๋ฌด์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ดํดํ๊ณ ์ ์ฉํ ์ ์์ต๋๋ค.

AWS ํด๋ผ์ฐ๋ ์ปดํจํ
์ผ๋ก ํ๋ก์ ํธ ๋ฐฐํฌํ๊ธฐ
ํ๋ก์ ํธ๋ ๋จ์ ๊ฐ๋ฐ์์ ๋๋์ง ์์ต๋๋ค. AWS ํด๋ผ์ฐ๋ ์ปดํจํ
๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์น ์ฑ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ๋ ์๋ ค๋๋ฆฝ๋๋ค.
๋ณด๋์ค ๊ฐ์
์ง๋ฌธ์ ํตํด ์
๋ฐ์ดํธ๋๋ ๊ฐ์
- ์ด ๊ฐ์์์ ํ์ํ ํ์ด์ฌ ๋ฌธ๋ฒ ๊ฐ์๊ฐ ์ง์์ ์ผ๋ก ์
๋ก๋๋ฉ๋๋ค.
- ์ค์ํ ์ง๋ฌธ์ ๋ณด๋์ค ๊ฐ์์ ์ง์์ ์ผ๋ก ๋ต๋ณํ์ฌ ์
๋ก๋ํฉ๋๋ค.
๊ฐ์ ์์ ์ง๋ฌธ
Q&A
Q. ํ์ด์ฌ ์ ์ ์ง์์ ์ด๋ ์ ๋๋ก ํ์ํ๊ฐ์?
์ด ๊ฐ์๋ฅผ ์๊ฐํ๊ธฐ ์ํด ํ์ํ ํ์ด์ฌ ์ ์์ง์์ ๊ธฐ๋ณธ์ ์ธ ๋ณ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ํจ์, ํด๋์ค ๋ฌธ๋ฒ์
๋๋ค. ๊ฐ์๋ฅผ ์งํํ๋ฉด์ ๋ง๋๊ฒ ๋๋ ๋์ด๋ ์๋ ๋ฌธ๋ฒ๋ค์ ๋ฐ๋ก ์์ ์
๋ก๋๋๋ ๋ณด์ถฉ ๊ฐ์๋ฅผ ํตํด ๋ฐฐ์ธ ์ ์์ต๋๋ค.
Q. ์๊ฐ ๊ด๋ จ ์ฐธ๊ณ ์ฌํญ(๊ฐ์ถฐ์ผ ํ ํ๊ฒฝ, ๊ธฐํ ์ ์์ฌํญ ๋ฑ)์ด ์๋์?
ํ์ด์ฌ ๋ฒ์ ์ 3.7 ์ด์์ธ ํ๊ฒฝ์์ ์งํ๋ฉ๋๋ค
์ง์๊ณต์ ์๊ฐ
์ ํ๊ณ ์ถ์ ๋ง
๊ฐ์๋ ์์ผ๋ก๋
๊ณ์ ์
๋ฐ์ดํธ๋ฉ๋๋ค
๊ธฐ์ ์ ๊ณ์ ๋ณํํฉ๋๋ค. ๊ณผ๊ฑฐ์ ์์ฑํ๋ ์ฝ๋๋ฅผ ํ์ฌ์์๋ ๊ณ ์น ๊ฒ์ด ์๋ค๋ฉด, ๊ทธ๋์ ๋ฐฐ์ด ๊ฒ์ด ์๋ค๋ ๋ง์ด ์์ต๋๋ค. Python ๋ฒ์ ์ด ์
๊ทธ๋ ์ด๋๋๋ฉด ๋ ์ข์ ๊ธฐ์ ์ ์ตํ์ค ์ ์๋๋ก ์
๊ทธ๋ ์ด๋๋ ๋ฒ์ ์ ๋ง์ถ์ด ๊ฐ์๋ฅผ ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
์ง๋ฌธ์
์ธ์ ๋ ํ์์
๋๋ค
๊ฐ์๋ฅผ ์๊ฐํ์๋ฉด์ ์ดํด๊ฐ ์ ๋๊ฑฐ๋ ์ถ๊ฐ์ ์ธ ์ค๋ช
์ด ํ์ํ ๋ถ๋ถ์ ์ธ์ ๋ ์ง ๋
ผ๋ฆฌ์ ์ผ๋ก ์ฌ๋ก์ ํจ๊ป ๋ต๋ณ์ ๋๋ฆฝ๋๋ค. ์๊ฐ์๋ถ๋ค์ ์ง๋ฌธ์ ๊ธฐ๋ค๋ฆฝ๋๋ค!