์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ๊ฐ ์ฌ๋ํ๋ ์น ๊ฐ๋ฐ ๊ธฐ์ ,
ํ์ด์ฌ ์ฅ๊ณ (Python Django) ์์ ์ ๋ณต!
ํน์ ๋ด ์๊ธฐ ๊ฐ์ง ์๋์?
๐
ํ์ด์ฌ(Python) ๊ธฐ์ด ๋ฌธ๋ฒ์ ๋๋์ด์! ์ด์ ์น ํ๋ก๊ทธ๋๋ฐ์ ํด๋ณด๊ณ ์ถ์ด์.
๐
์๋ฒ์ฌ์ด๋ ๋ฐฑ์๋ ์์ง๋์ด๊ฐ ๋๊ณ ์ถ์ด์. ๊ธฐ์ด๋ฅผ ํผํผํ๊ฒ ๋ค์ง ์ ์์๊น์?
๐ค
์น ํ๋ก๊ทธ๋๋ฐ์ ์ ๋๋ก ํ๋ ค๋ฉด ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ์์์ผ ํ๋ค๋๋ฐ... ์ด๋ป๊ฒ ์์ํ๋ฉด ์ข์ฃ ?
์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ์์ง๋์ด์ ๋
ธํ์ฐ๋ฅผ ๋ด์
ํ์ด์ฌ + ์ฅ๊ณ ์น ํ๋ก๊ทธ๋๋ฐ
์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ๋น
ํ
ํฌ๊ฐ ์ฌ๋ํ๋ ์ฑ์ํ ์น ๊ฐ๋ฐ ๊ธฐ์ , ์ฅ๊ณ !
์ฅ๊ณ ์น ํ๋ ์์ํฌ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํด ๋ด
๋๋ค. Django REST Framework(DRF)๋ฅผ ์ฌ์ฉํด Open API ํํ์ RESTful API๋ฅผ ์ ์ํ๊ณ ํ์ ๊ฐ์
/์ธ์ฆ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๋ฉฐ, ๊ธฐ๋ณธ์ ์ธ HTML/CSS ๋ฐ ๋ถํธ์คํธ๋ฉ(Bootstrap) ์ฌ์ฉ๋ฒ๊น์ง ์ตํ ์ ์์ต๋๋ค.
์ํํธ์จ์ด ์์ง๋์ด๋ง์ ๋ํ ๊ด์ฌ์ด ๋๋ ์ด ์ปค์ง๋ ์์ฆ, ๋ค์ํ ์ํํธ์จ์ด ์์ง๋์ด๋ง ๋ถ์ผ ์ค์์๋ ํนํ ์น ํ๋ก๊ทธ๋๋ฐ์ ์์๊ฐ ๋์ ๋ถ์ผ์ ํด๋นํฉ๋๋ค. ์ด๋ค ์ํํธ์จ์ด ์์ง๋์ด ์ง๊ตฐ์ผ๋ก ์ผํ๋๋ผ๋ ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ์ผ๋ก ํ ์ค ์์์ผ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ง๋๋ ๋ฐ๋, ๋ณด๋ค ๋์ ๊ฒฝ๋ ฅ์ ์๊ธฐ์๋ ๋์์ด ๋ฉ๋๋ค. ์์ธ๋ฌ ๋๋ถ๋ถ์ ์๋น์ค ์ฐ์
์ด ๋ชจ๋ฐ์ผ ์ฑ/์น ์ฑ์ผ๋ก ์์ํ๋ ๋งํผ, ์น ํ๋ก๊ทธ๋๋ฐ์ ํ ์ค ์๋ค๋ฉด ์๋ก์ด ์ฐฝ์
์ ๊ธธ๋ ๋ชจ์ํ ์ ์์ง์.
์น ํ๋ก๊ทธ๋๋ฐ, ๋ฌด์๋ถํฐ ์์ํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋์๋์? ํ์ด์ฌ์ ๋ฐฐ์ ๋๋ฐ ์ด๋ป๊ฒ ํ์ฉํ๋ฉด ์ข์์ง ๊ถ๊ธํ์ ๊ฐ์? ์ด ๊ฐ์๋ฅผ ํตํด ์๋ฒ ์ฌ์ด๋(Server-Side) ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ฅผ ์ฐฉ์คํ ์ก๊ณ , ํ๋ก ํธ์๋/๋ฐฑ์๋๋ก ๋์ฑ ์ง์์ ์์์ฌ๋ฆด ์ ์๋๋ก ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค!
์น ๊ฐ๋ฐ์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ
ํผํผํ๊ฒ ๊ธธ๋ฌ๋๋ฆฝ๋๋ค.
๐ก์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ์ํํธ์จ์ด ์์ง๋์ด์๊ฒ ๋ฐฐ์ฐ๋ ํ์ด์ฌ ์ฅ๊ณ ์น ๊ฐ๋ฐ ๊ธฐ์ด์ ๋ชจ๋ ๊ฒ!
์ ๋ University of California, Berkeley EECS๋ฅผ ์กธ์
ํ๊ณ ํ์ฌ ์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ๊ธ๋ก๋ฒ ๋น
ํ
ํฌ ๊ธฐ์
๋ณธ์ฌ์์ ์ํํธ์จ์ด ์์ง๋์ด๋ก ์ผํ๋ฉฐ ์ ํ๋ธ "๋ฏธ์ฟก ์์ง๋์ด", ๋ธ๋ฐ์น "์ค๋ฆฌ์ฝ ๋ฐธ๋ฆฌ ์์๊ณผ ์ถ"์ ์ด์ํ๊ณ ์์ต๋๋ค. ์ด๋ฒ ๊ฐ์๋ฅผ ํตํด ์ํํธ์จ์ด ์์ง๋์ด๋ก์ ์์์จ ๋
ธํ์ฐ๋ฅผ ๋ ๋ง์ ๋ถ๋ค๊ณผ ํจ๊ป ๋๋๊ณ ์ ํฉ๋๋ค ๐
์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ํ์ด์ฌ ๊ฐ๋ฐ์์ ๋
ธํ์ฐ
์ฅ๊ณ ์น ๊ฐ๋ฐ์ ๋๊ตฌ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ์ ํด๋๋ฆฝ๋๋ค. ์์ธ๋ฌ ๋๋ถ๋ถ์ ์ํํธ์จ์ด ์์ง๋์ด๋ง ๊ธฐ์ ์ ์์ด๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๋งํผ, ์ด ๊ฐ์์์๋ ์์ด๋ก ๋ ์ฌ๋ผ์ด๋๋ฅผ ๊ธฐ์ด๋ก ์๊ฐ์ ์ฌ๋ฌ๋ถ์ด ์๋จ์ด ๋ฐ ์ฅ๊ณ ๋ฌธ๋ฒ์ ์์ฐ์ค๋ฝ๊ฒ ์ต์ํด์ง ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค. ์ถํ ํผ์์ ๊ฐ๋ฐ์ ๊ณต๋ถํ์ค ๋ ๋ ๋ ํ ๊ธฐ์ด๊ฐ ๋ ๊ฒ๋๋ค.
๊ธฐ๋ณธ์ ์ถฉ์คํ ์น ํ๋ก๊ทธ๋๋ฐ
์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ๋น
ํ
ํฌ์์ ์์ฃผ ๋ง์ด ์ฌ์ฉํ๋, ์ฑ์ํ ํ
ํฌ๋๋ก์ง์ธ ํ์ด์ฌ ์ฅ๊ณ ๋ฅผ ํตํด ์น ํ๋ก๊ทธ๋๋ฐ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง๋ฅผ ์ถฉ๋ถํ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋ฌด์๋ณด๋ค ๋ชจ๋ ํ
ํฌ๋๋ก์ง์๋ ๊ธฐ๋ณธ์ด ๊ฐ์ฅ ์ค์ํ ๋งํผ, ๊ธฐ๋ณธ ๊ฐ๋
์ ํ๋ํ๋ ํ์คํ๊ฒ ๋ฐฐ์ฐ๋ฉฐ ์ด๋ฅผ ๋ฐ์ ์์ผ ์์ ๋ง์ ๋
ธํ์ฐ๋ฅผ ํ๋ํ ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค.
์์ธ ์ปค๋ฆฌํ๋ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๐
- ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ HTML๊ณผ CSS๋ถํฐ ์๋ฐ ์
์ ์์ํฉ๋๋ค.
- Django(์ฅ๊ณ )์ ์๊ฐ ๋ฐ URL๊ณผ ๊ฐ๋จํ View๋ฅผ ํตํด ์น ์ฃผ์๊ฐ ์ด๋ค ์์ผ๋ก ํ๋ซํผ์ ์ ๋ฌ๋๋์ง์ ๋ํด ์์๋ด
๋๋ค.
- Template(ํ
ํ๋ฆฟ)์ ์ฌ์ฉํด ๊ฐ๋จํ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ด
๋๋ค.
- Django Model์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
- Django Form์ ํตํด ์ ์ ์ ์
๋ ฅ์ ๋ฐ์๋ด
๋๋ค.
- Function-Based View์ Class-Based View์ ์ฐจ์ด์ ์ ์์๋ด
๋๋ค.
- ๋ด์ฌ๋ Django Authentication(์ธ์ฆ)์ ๋ํด ์์๋ณด๊ณ , ํ์๊ฐ์
/๋ก๊ทธ์ธ/๋ก๊ทธ์์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ด
๋๋ค.
- Docker์ Docker Compose๋ฅผ ์ฌ์ฉํด ์ฅ๊ณ ํ๊ฒฝ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
- FlyIO๋ฅผ ํตํด ์ฅ๊ณ ๋ฅผ ์ ๋ง ์ฝ๊ฒ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด
๋๋ค.
- Django Unittest(์ ๋ ํ
์คํธ) ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด
๋๋ค.
- Django REST Framework(DRF)๋ฅผ ํตํด Open API ํฌ๋งท์ API๋ฅผ ๋ง๋ค์ด๋ด
๋๋ค.
Q&A ๐ฌ
Q. ์ปดํจํฐ๋ ์ ๋ชปํ๊ณ , ๊ฐ๋ฐ ๋น์ ๊ณต์์ธ๋ฐ ์ ๊ฐ ํ ์ ์์๊น์?
์น ์๋น์ค ๊ฐ๋ฐ์ ์ ๊ณต์๋ค๋ ํ๊ต์์ ์ ๊ท ๊ณผ์ ์ผ๋ก ๋ฐฐ์ฐ์ง ์์ต๋๋ค. ํ์ด์ฌ ๊ธฐ์ด ์ง์๋ง ์๊ณ ๊ณ์ ๋ค๋ฉด ์ถฉ๋ถํ ์๊ฐํ์ค ์ ์์ต๋๋ค. ํ์ด์ฌ ๊ธฐ์ด๋ ์ ํ๋ธ๋ฅผ ์์ฒญํ์๊ฑฐ๋, ๊ฐ์ "์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ์์ง๋์ด๊ฐ ๊ฐ๋ฅด์น๋ ํ์ด์ฌ ๊ธฐ์ด๋ถํฐ ๊ณ ๊ธ๊น์ง"๋ฅผ ์๊ฐํ์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
Q. ์ Django(์ฅ๊ณ )๋ฅผ ๋ฐฐ์์ผ ํ๋์?
ํ์ด์ฌ ๊ธฐ๋ฐ์ ์ฅ๊ณ ๋ ๋ค๋ฅธ ํ์ด์ฌ ์น ํ๋ ์์ํฌ์๋ ๋ฌ๋ฆฌ, ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ฑฐ์ ๋ชจ๋ ์์ญ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค. ์ถํ์ ๋ค๋ฅธ ํด๋ก ์นํ๋ก๊ทธ๋๋ฐ์ ํ์ค ๋ ๋์์ด ๋์ค ๊ฒ๋๋ค. ๋ํ, ํผ์งํผ์งํ ์ค๋ฆฌ์ฝ ๋ฐธ๋ฆฌ์ ๋น
ํ
ํฌ๋ค๋ ์ฅ๊ณ ๋ก ๊ทธ ์๋น์ค๋ฅผ ์์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋งํผ ํ๋ซํผ์ด ์ฆ๋ช
์ด ๋์๋ค๋ ์ด์ผ๊น๋๋ค.
Q. ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ ์ค๋นํด์ผ ํ ๊ฒ์ด ์๋์?
์ฌ๋ฌ ํจ์์ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ค๋ฃจ๋ ๊ฐ์์ธ ๋งํผ ํ์ด์ฌ ๊ธฐ์ด ์ง์์ ์๊ณ ๊ณ์
์ผ ํฉ๋๋ค.
๐พ ์๊ฐ ์ ํ์ธํด์ฃผ์ธ์!
๐งญ ์๊ฐ ํ ์ถ์ฒ ๊ฐ์์
๋๋ค!