๐ Do it! ์ฅ๊ณ +๋ถํธ์คํธ๋ฉ ํ์ด์ฌ ์น ๊ฐ๋ฐ์ ์ ์
Book Infoโ
์ฑ ์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ๋ฉด ๊ต๋ณด๋ฌธ๊ณ ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค!
- ์ ๋ชฉ: Do it! ์ฅ๊ณ +๋ถํธ์คํธ๋ฉ ํ์ด์ฌ ์น ๊ฐ๋ฐ์ ์ ์
- ์ ์: ์ด์ฑ์ฉ, ๊นํ๊ณค
- ์ถํ์ฌ: ์ด์ง์คํผ๋ธ๋ฆฌ์ฑ
- ์ถ๊ฐ: 2021-01-18
Introโ
์์ ์ ๋ฉ์์ด์ฌ์์ฒ๋ผ์ ์ฐธ์ฌํ๋ ๋ถ๋ค์ด Django๋ฅผ ์ฌ์ฉํ๋ ๋ชจ์ต์ ๋ณด๊ณ ์น์ ๋ํ ์ด๋ณด์๋ ๊ณต๋ถํ๊ธฐ ์ฌ์ด ์คํ์ด๊ตฌ๋ ์ถ์ด์ ๊ณต๋ถ๋ฅผ ์๋ํ๋ ์ ์ด ์์์ต๋๋ค. ๊ทธ ๋น์์๋ ํผ์ ๊ฐ๋ฐ ๊ณต๋ถํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ Django๋ฅผ ๊ณต๋ถํ๋๋ฐ ์คํจํ์์ต๋๋ค. ๋ญ๋๊น ๋๊ตฐ๊ฐ ๊ฐ๋ฅด์ณ์ฃผ๋ ์ฌ๋์ด ์์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ ๊ฐ์ด ๊ทธ์ ๋ ๋จน์ฌ ์ฃผ๊ธธ ๋ฐ๋ฌ๋ ๊ฑฐ ๊ฐ์์. ๋ญ ์ด์จ๋ ๊ทธ ์ดํ๋ก Django๋ ํฌ๊ธฐํ๊ณ ๋ค๋ฅธ ์คํ๋ค์ ๋ง ๊ณต๋ถํ์์ต๋๋ค.
์ต๊ทผ์ ๋ค์ Django๋ฅผ ๊ณต๋ถํ๊ธฐ ์ํด์ '๋ญ ๋ณด๊ณ ๊ณต๋ถ๋ฅผ ํด๋ณผ๊น' ๊ณ ๋ฏผํ๋ ์ค ์ด๋ฒ ๋
์ Django ์ฑ
์ด 2๊ถ ์ถ์๊ฐ ๋๋ ๊ฑธ ์๊ฒ ๋์ต๋๋ค. ๊ทธ๊ฒ ์ด์ Do it! ์ ํ ํฌ ์ฅ๊ณ
์ Do it! ์ฅ๊ณ +๋ถํธ์คํธ๋ฉ ํ์ด์ฌ ์น ๊ฐ๋ฐ์ ์ ์
์ด์์ต๋๋ค.
์ฅ๊ณ ๊ณต์ ๋ฌธ์, Two Scoops of Django ๋ฑ ์์ ์ฑ ๋ค ์ด์ธ์๋ ์ ํ์ง๋ ์์์ต๋๋ค. Two Scoops of Django๋ ์์ด๋ผ ์ฝ๋๋ฐ ์ค๋ ๊ฑธ๋ฆด ๊ฑฐ ๊ฐ์์ ์ฝ์ง ์์์ต๋๋ค. ๋ฒ์ญ์๋ ์์ง๋ง 2016๋ ์ ์ถ๊ฐ๋ ์ฑ ์ด๋ผ ์์ ๋ฒ์ ์ ์ฌ์ฉํ ๊ฑฐ ๊ฐ์์ ์ ํํ์ง ์์์ต๋๋ค.
๊ฒฐ๊ตญ ์์ Do it! ์ฑ
๋ค ์ค ํ ๊ถ์ ์ฝ๊ณ ์ ๊ฒฐ์ฌํ๊ณ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ Do it! ์ฅ๊ณ +๋ถํธ์คํธ๋ฉ ํ์ด์ฌ ์น ๊ฐ๋ฐ์ ์ ์
์ ์ ํํ์ต๋๋ค. ์ ํ ํฌ ์ฅ๊ณ ๋ ์ํค๋ถ์ค์๋ ์์ด์ ์ฐธ๊ณ ํ๋ฉด์ ์ฝ์์ต๋๋ค.
Book Reviewโ
์น ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ด์โ
์ด ์ฑ ์ 640 ํ์ด์ง์ ์๊ทผ ๋๊บผ์ด ์ฑ ์ ๋๋ค. 'Django ์ฑ ์ด ๋ญ ์ด๋ ๊ฒ ๋๊ป๋?'๋ผ๊ณ ์๊ฐํ์ค ์๋ ์๊ฒ ์ง๋ง, ์ฝ๋๋ ์ ๋ถ ํ๊ธฐ๋์ด ์์ผ๋ฉด์, ์ฅ๊ณ ๋ ๋ค๋ฃจ๊ณ , ๋ถํธ์คํธ๋ฉ, ๋ฐฐํฌ ๋ถ๋ถ๊น์ง ๋ค ๋ค๋ฃจ๋ ๊ฑธ ์๊ฐํ๋ฉด 640 ํ์ด์ง๊ฐ ๋ถ์กฑํ ์ ๋์ ๋๋ค. ๊ทผ๋ฐ ๊ทธ ๋ชจ๋ ๊ฑธ ์ฑ ํ ๊ถ์ ์ ๋ฆฌํด๋จ๋ค๋ ๊ฒ์ ์ ๋ง ๋๋จํ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ด ๋ถ๋ถ์ด ์ด ์ฑ ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ธฐ์ ์ฌ์ฉโ
์ฑ ์์๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ ๋ค๊ณ ๋์ด ์์ง๋ง ์ฌ์ค์ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ง๋ญ๋๋ค. ๋ก๊ทธ์ธ ํ์ฌ์ ๊ธ์ ์ธ ์ ์์ผ๋ฉฐ ๋๊ธ ๊ธฐ๋ฅ๋ ๊ตฌํํ ์ ์์ต๋๋ค. Django๋ฅผ ์ฌ์ฉํ์ฌ ํํ ์๋ ค์ ธ ์๋ CRUD(์ ๋ ฅ/์กฐํ/์์ /์ญ์ ) ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
ํ๋ก ํธโ
ํ๋ก ํธ ๋ถ๋ถ์ HTML, CSS, JavaScript๋ฅผ ํ์ํ ๋ถ๋ถ๋ค๋ง ์๋ ค์ฃผ๊ณ , Bootstrap์ ํ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ๊พธ๋ฏธ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ค๋๋ค. ๊ฐ์ธ์ ์ผ๋ก๋ Bootstrap๋ณด๋ค ์ต๊ทผ ํ๋ก ํธ ๊ธฐ์ ์ธ React๋ฅผ ๋ค๋ค์ผ๋ฉด ๋ ์ข์์ ๊ฑฐ๋ผ ์๊ฐํ์ง๋ง ๊ทธ๋ ๊ฒ ๋๋ฉด ์ฑ ์ชฝ์๊ฐ 1000 ํ์ด์ง๊ฐ ๋์ด๊ฐ์ ๊ฑฐ ๊ฐ์ผ๋ ์ ์๋ถ์ด ์ ํ์ ์ ํ์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ, React ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋ณด์๊ฐ HTML, CSS, JavaScript๋ฅผ ์์ธํ ๋ฐฐ์ฐ์ง๋ ์๊ณ ๊ฐ๋จํ๊ฒ ๊ณต๋ถํ๊ธฐ์๋ ์ด๋ ค์ฐ๋ ํ์ํ ๋ถ๋ถ๋ง ๋ฐ๋ก๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ Bootstrap์ ์ ํํ ๊ฑฐ๋ผ ์๊ฐ๋ฉ๋๋ค.
๋ถํธ์คํธ๋ฉ์ด ํ์ฌ ๋ฒ์ ๊ณผ ๋ค๋ฅด๋ฏ๋ก ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋ค๊ฐ๋ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ๋ฅผ ํด์ผํ ์ ์์ผ๋ ์ฃผ์ํ์๊ธธ ๋ฐ๋๋๋ค.
Gitโ
๋งค ์ฝ๋์์ ๋ฌด์ธ๊ฐ ์งํ ํ์ ๋ GitHub์ commitํ๊ณ pushํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์ธ์ ์ธ์ ์ฌ๋ ค์ผ ํ๋์ง ์ ์ ์์๊ธฐ์ ๊ฝค ๋์์ด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
Docker, AWSโ
์ ๋ ์ด๋ฒ์ ๋์ปค๋ฅผ ์ฒ์ ์จ๋ณด๋ ๊ฒ์ด๋ผ ์กฐ๊ธ ์ด๋ ค์ด ๊ฐ์ด ์์์ต๋๋ค. ์ด ์ฑ ์์ Docker๋ฅผ ์ฌ์ฉํ ๋ฐฐํฌ๋ฅผ ๋ง๋ณด๊ธฐ๋ก ์ฆ๊ธฐ๊ธฐ ์ข์ต๋๋ค. ๋ํ, AWS ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ๊ธฐ ํธํ Lightsail์ ์ฌ์ฉํฉ๋๋ค. Lightsail์ ์ฒ์ ์ฌ์ฉํด๋ดค๋๋ฐ AWS ๋ฌด๊ฒฝํ์๋ ํธํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋ฌ์ ๋ฌด๋ฃ๋ ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค๊ณ ํฉ๋๋ค.(์ ๋ฒ AWS ์ฑ ๋ ์ด๋ฌ๋ค๊ฐ ๊ฒฐ์ ๋๋๋ฐ ์ด๋ป๊ฒ ๋ ์ง๋ ์ ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค๋ง ๋ญ ์ผ๋ง ์ ๋์ฌํ ๋๊น ํด๋ณด์๋ฉด ์ฌ๋ฐ์ ๊ฒ๋๋ค.)
TDDโ
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ TDD์ ๋๋ค. ๋งค๋ฒ Javaํ์๋ ๋ถ๋ค์ด ํ์๋ ์๊ธฐ๋ง ๋ค์์ง ์ค์ ๋ก ๊ฒฝํ์ ์ฒ์์ด์์ต๋๋ค. Django์๋ TDD๊ฐ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ํด์คฌ์ผ๋ฉฐ ์ด ์ฑ ์์ ๋ง์ ๋ถ๋ถ์ ์ฐจ์งํฉ๋๋ค. ๋งค๋ฒ ๊ธฐ๋ฅ์ ๋ง๋ค๊ธฐ ์ ์ ํ ์คํธ ์ฝ๋๋ฅผ ์ง์ ๋ฏธ๋ฆฌ ๊ฒฝํํด๋ณผ ์ ์์ต๋๋ค. ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ด ๋ถ๋ถ์ด ๊ฐ์ฅ ์ฌ๋ฐ์์ต๋๋ค.
Djangoโ
๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด์ฃ . ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ MTV ํจํด, FBV, CBV, ๋ค๋์ผ ๊ด๊ณ, ๋ค๋๋ค ๊ด๊ณ ๋ฑ์ ๊ตฌํํ๊ณ ์ฌ์ฉ ํด๋ด ๋๋ค. ์ ๋ง ๊ผผ๊ผผํ๊ฒ ์ฝ๋๋ค์ด ๊ธฐ์ ๋์ด ์๊ณ ์ฝ๋ ํ๋ํ๋ ์ค๋ช ์ด ์ ๋์ด ์๋ ๋ชจ์ต์ด ์ธ์ ๊น์์ต๋๋ค. ๋ํ, Django ๊ฐ๋ฐ์ ํ๋ฉฐ ์ ์ฉํ๊ฒ ์ฐ์ด๋ ๋ค๋ฅธ ํจํค์ง๋ค์ ์๋ ค์ค๋๋ค. ์์ฌ์ ๋ ์ ์ Django REST framework์ ๋ํ ๋ด์ฉ์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ฐ๋ โ
์ธ๋ถ์ ์ด์ง๋ ์์ง๋ง Django์ ๋ํด ๊ธฐ๋ณธ ์ด์์ ์๋ ค์ฃผ๋ ์ฑ ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. "๋ง๋ค๋ฉด์ ๋ฐฐ์ฐ๋ ์น ๊ฐ๋ฐ"์ด๋ผ๊ณ ๋ถ์ ์์๋ ๋์์๋ฏ์ด ๋ง๋ค๋ฉด์ ๊ฐ๋ ๋ค ํ๋ํ๋๋ฅผ ๊ฐ๋จํ๊ฒ ์ค๋ช ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ธ๋ถ์ ์ธ ๊ฐ๋ ์ค๋ช ์ ๋ํด์๋ ์กฐ๊ธ ๋ถ์กฑํ๋ค๊ณ ๋๋ ์๋ ์์ต๋๋ค.
์์์๋ ๋งํ๋ฏ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋๋์์ ์ค๋ช ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ ์๋ถ๋ค์ด ์ผ๋ถ๋ฌ ์ค์ํ๋ ๋ถ๋ถ์ด ๋ค์ด๊ฐ์๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฐ ์ฝ์ง์ ํ ์๋ ์๋ค๋ ๋ด์ฉ์ ์๋ ค์ฃผ์๊ณ ์ถ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทผ๋ฐ ์ด๋ฐ ๋ถ๋ถ ์ด์ธ์๋ ์ฝ์งํ ๋ถ๋ถ์ด ์์ฒญ ๋ง์ต๋๋ค.
๊ฐ๋ "์์๋๋ฉด ์ข์์"๋ผ๋ ๋ถ๋ถ์ผ๋ก ์ค์ ๋ถ๋ถ ์ด์ธ์ ๊ฐ๋ ๋ค๋ ์ค๋ช ํด์ค๋๋ค. ์ด๋ฐ ๋ถ๋ถ๋ ์ฝ์ด๋ณด๋ฉด ์ฌ๋ฐ์์ต๋๋ค.
์ฝ์งโ
์ด ์ฑ
์ ์ฝ์ผ๋ฉด์ ํ๋ ๊ฑฑ์ ์ค ๊ฐ์ฅ ํฐ ๊ฒ์ ๋ฒ์ ์ด ๋ฌ๋ผ์ ์ฝ์งํ์ง ์์๊น?
์์ต๋๋ค. ์ ๊ฐ Django๋ฅผ ์ฒ์ ๊ณต๋ถํ ๋๋ ์ด ์๊ฐ์ ์์ฒญ ํ์๊ฑฐ๋ ์. ์ด์จ๋ ๊ฒฐ๋ก ์ ์ ๋ ์ด ์ฑ
์ ์ฝ์ผ๋ฉด์ ๋ฐฐํฌ ๋ถ๋ถ์์ ์ฝ์ง์ ๊ฝค ํ์ต๋๋ค. ํจํค์ง์ ๋ฒ์ ๋ ๋ ์
๋ฐ์ดํธ ๋๊ธฐ๋ ํ๊ณ , ๋์ปค๋ฅผ ์ฒ์ ์ฌ์ฉํด๋ณด๋ ์
์ฅ์ด์๊ธฐ ๋๋ฌธ์ด์ฃ . Do It Django ์ ์๋ถ์ ๋ธ๋ก๊ทธ(?)์์ ๋คํํ Q&A๋ฅผ ์ ๋ฐ์์ฃผ์
์ ์ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
์ด๋ฒ์ด ์ฑ ์ฝ์ผ๋ฉด์ ๋ค๋ฅธ ๋ฌธ์๋ค์ ๊ฐ์ฅ ๋ง์ด ๋ดค๋ ๋์๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ์ ๋ง ๊ทธ ํจํค์ง Repository ๋ค์ด๊ฐ์ issue๋ ์ฝ์ด๋ณด๊ณ , ํจํค์ง ๊ณต์ ๋ฌธ์, stackoverflow ๋ฑ๋ฑ ๊ฐ๋ฆฌ์ง ์์๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ๊ทธ๋์ ๊ทธ๋ฐ์ง ์ด๋ฒ ์ฑ ์ ์ฝ๋๋ฐ ๋ ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค.
๋ถํธ์คํธ๋ฉ๋ ์ด ์ฑ
์ ๋ฒ์ ์ 4.5์ธ๊ฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋ ์ต์ ๊ธฐ์ ์ ์ฌ์ฉํด๋ณด๊ณ ์ถ์ด!
๋ผ๋ ์๊ฐ์ 5.0.1 ๋ฒ์ ์ ์ฌ์ฉํด๋ดค๋ค๊ฐ ๋ถํธ์คํธ๋ฉ ๊ณต์ ๋ฌธ์๋ฅผ ๋ง์ด ์ฐธ๊ณ ํ๊ฒ ๋์ต๋๋ค.
๊ฐ์ฅ ๊ฑฑ์ ํ๋ Django๋ ๋ฒ์ ์ด ๋ฌ๋ผ์ก๋ค๊ณ ํด๋ ์ฌ์ฉํ๋ ๋ถ๋ถ์์ ํฌ๊ฒ ๋ฌ๋ผ์ง ๊ฒ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ๊ฐ ๊ตฌ๋งคํ ์ฑ ์ ์ดํ ๋ฐํ์ด๋ผ ๊ทธ๋ฐ์ง ๋ค์ฌ์ฐ๊ธฐ, ์คํ๊ฐ ๊ฝค ์์ด์ ์ด๋ฐ ๋ถ๋ถ์์๋ ์ฝ์งํ ๊ฒ๋ค๋ ์์์ต๋๋ค. ์ฑ ์ ์์ธํ ๋ณด๋ ์ ์ฅ์์ ์ด๋ฐ ๋ถ๋ถ์ ์กฐ๊ธ ์์ฌ์ ์ต๋๋ค.
๋์ ๋ ์โ
์ ๊ฐ์ด ์ต์ ๋ฒ์ ์ ์ฌ์ฉํด๋ณด์๊ณ ์ถ์ ๋ถ๋ค์ด ์์ผ์ค ์๋ ์์ํ ๋ ์ํ์ฝ๋ฉ HTML, CSS, JavaScript๋ฅผ ๋ค ๋ณด๊ณ ์ค์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ์ฅ๊ณ ๋ฅผ ๊ณต๋ถํ๊ธฐ ์ํ ํ์ด์ฌ์ ์น ํฌ๋กค๋ง๊น์ง ์๊ณ ์ค์๋ฉด ๋์ฑ ์ข๊ฒ ์ง๋ง, ํ์๋ ์๋๋๋ค. ํ์๋ ํจ์, ํด๋์ค, ์์ ๋ฑ์ ํ์ด์ฌ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ค์ ๋ฌด์กฐ๊ฑด ์๊ณ ์์ผ์ ์ผ ํฉ๋๋ค.
ํ์ด์ฌ์ผ๋ก ์น ๊ฐ๋ฐ์ ๊ฒฝํํด๋ณด๊ณ ์ถ์ ๋ถ์ ์ด ์ฑ ์ ์ฒ์ ๊ณต๋ถํ๋ ์ฑ ์ผ๋ก ์ถ์ฒํฉ๋๋ค. ๋น ๋ฅด๊ฒ ์น ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐ, ๋ฐฐํฌ, ์ด์ํด๋ณผ ์ ์์ต๋๋ค.