์ด์ ๊ธ๋ค์ ๊ธฐ์ ์ ์ผ๋ก ๋ฐฐ์ด์ ๊ณผ ๋๋์ ์ ์ ๋ฆฌํ๋๋ฐ, ๋ง์ง๋ง์ 2์ฐจ ํ ํ๋ก์ ํธ ๊ณผ์ ์ ์ฒด์ ๋ํ ์๊ฐ์ ์๊ฐ์ ๋จ๊ธฐ๊ณ ์ ํ๋ค.
ํ๋ก์ ํธ ๋ฐ ํ๋ช
ํ๋ก์ ํธ ์๊ฐ
ํ๋ก์ ํธ ์ ์ ์ด์
๊ฐ๋ฐ ์ธ์ ๋ฐ ๊ธฐ๊ฐ
๊ฐ๋ฐ ๋ฐฉ์
์ ์ฉ ๊ธฐ์
๊ตฌํ ๊ธฐ๋ฅ
๋ด๊ฐ ๋งก์ ๋ถ๋ถ
์นด์นด์ค API์ ํ์ฉํด ์์ ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ
JWT๋ฅผ ์ฌ์ฉํ ์ธ์ฆ&์ธ๊ฐ์ ํ์ ํ๋กํ ์กฐํ ๊ธฐ๋ฅ
์ฅ์๋ณ ์บ๋ฆฐ๋ ์กฐํ์ ์์ฝ์ ๋ณด ์ ์ก ๊ธฐ๋ฅ
์ฅ์๋ณ ์์ฝ ๋ฐ ํํฉ๋ณ ์์ฝ ์กฐํ ๊ธฐ๋ฅ
EC2์ RDS๋ฅผ ์ฐ๋ํ ๋ฐฑ์๋ ์๋ฒ ๋ฐฐํฌ
๋ค๋ฅธ ํ์์ด ๋งก์ ๋ถ๋ถ
๋ฉ๋ด, ์นดํ ๊ณ ๋ฆฌ๋ณ ์ฅ์ ์กฐํ
์ฅ์ ๋ฆฌ์คํธ ์ ์ฒด ์กฐํ
๊ฐ๊ฒฉ์, ๋ฑ๋ก์ ์ฅ์ ๋ฆฌ์คํธ ์กฐํ
ํค์๋ ๊ฒ์์ผ๋ก ์ฅ์ ์กฐํ
API Documentation
Daily Meeting ์๊ฐ ์ค์ด๊ณ ํจ์จ์ฑ ๋์ด๊ธฐ
์ด์ : Daily Meeting์ ๋๋ฌด ๋ง์ ์๊ธฐ๊ฐ ์ค๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค. ๋ฏธํ ์ฃผ์ ๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ๊ธฐ์ ์ ์ธ ํ ๋ก ์ด ๊ธธ์ด์ง๋ฉด ์๊ฐ์ ๋ง์ด ์ก์๋จน์๋ค. ๋ฌผ๋ก ์ํต์ ๋ง์ด ํ๋ ๊ฒ์ ์ข์ง๋ง, ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๊ณตํต์ ์ผ๋ก ํ์ ํด์ผํ ๋ด์ฉ๋ณด๋ค ๊ฐ๋ณ์ ์ธ ์ด์๊ฐ ์ฐ์ ์ ๋๋ ๊ฒฝํฅ์ด ์์๋ค.
ํด๊ฒฐ : Daily Meeting ์ ์ ํ๋ก ํธ์๋, ๋ฐฑ์๋๊ฐ ๋๋์ด์ ๋จผ์ ์ ๋ฆฌํ๋ ์๊ฐ์ ๊ฐ์ก๋ค. ๊ธฐ์ ์ ์ธ ํ ๋ก ์ ์ธ์ ๋ ํ ์ ์์ผ๋ ๊ณตํต ๋ฏธํ ์๊ฐ์๋ ์๋ก์ ์งํ์ฌํญ, ๋ฌธ์ ์ , ํ์๊ฐ ํ์ํ ๋ถ๋ถ์ ๋ํด์๋ง ์๊ธฐํ๊ธฐ๋ก ํ๋ค. ์ด๋ ๊ฒ ์งํํ๋ ๋ฏธํ ์ ํจ์จ์ ์ผ๋ก ์งํํ ์ ์์๋ค.
์ ์ฒด ์งํ ์ํฉ ํ์ ํ๋ฉฐ ๊ฐ๋ฐ ์๋ ๋์ด๊ธฐ
์ด์ : ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๊ตฌํ์ด ๋๋๋ฉด ์ถ๊ฐ ๊ตฌํ ์ฌํญ๋ค์ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ๋ค. ๋ค๋ค 1์ฐจ ํ๋ก์ ํธ๋ณด๋ค ๋ ๋ง์ ๊ฒ์ ํด๋ด๊ณ ์ถ์ดํ๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ๊ฐ์ ๊ฐ๋ฐ์๋ง ์ง์คํ๊ณ ํ์ ์ ์ฒด์ ์ธ ์งํ์ํฉ์ ํ์ ํ์ง ๋ชปํ๊ณค ํ๋ค. 1์ฃผ์ฐจ ์คํ๋ฆฐํธ๊ฐ ๋๋๊ฐ๋๋ ์ด๋์ ๋ ์์ฑ๋ ๊ธฐ๋ฅ์ด ๋์์ผ๋๋ ์ํฉ์ธ๋ฐ, ๋๋ฌด ์ผ๋ง ๋ฒ์ฌ๋๊ณ ์ค๊ตฌ๋๋ฐฉ์ผ๋ก ์งํ๋๊ณ ์๋ ๊ธฐ๋ถ์ด์๋ค.
ํด๊ฒฐ : ๋ชฉํํ ๊ธฐ๋ฅ์ ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋์ฉ ์์ฑํด๊ฐ๊ธฐ๋ก ํ๋ค. ํ๋์ ๊ธฐ๋ฅ์ ๋ํ ๊ฐ๋ฐ์ ๋๋ด๊ณ ํ-๋ฐฑ ์ฐ๊ฒฐ์ ํด๋ณด๊ณ API ๋ช ์ธ๋ฅผ ์์ฑํด์ผ ๋ค์์ผ๋ก ๋์ด๊ฐ๊ธฐ๋ก ํ๋ค. ๋ฏธํ ๋๋ง๋ค ์ ์ฒด ์งํ ์ํฉ์ ์๊ธฐ์ํค๋ ค ๋ ธ๋ ฅํ๋ค. ์ด ๊ณผ์ ์ ํตํด ํ์ฌ ํ์ ์ํฉ์ ๊ฐ๊ด์ ์ผ๋ก ์ ์ ์์๊ณ ์ฐ์ ์์๋ฅผ ๋๊ณ ์ ๋ฌด์ ์ง์ค ํ ์ ์์๋ค.
TDD์ ํ ์คํ
์ธ์ ์ ๋ฃ๊ณ ํ ์คํธ ์๋ํ์ ๋ํ ๊ฐ๋ ์ ์ ์ ์์๋ค. ์ง๊ธ๊น์ง Integration Test๋ง ํ๋ค๋ฉด ์ด๋ฒ ํ๋ก์ ํธ์๋ Unit Test ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค. ์ฒ์์ ๊ต์ฅํ ๋ง๋งํ๊ณ ๊ณต์๊ฐ ๋ง์ด ๋ค์ง ์์๊น ๊ฑฑ์ ๋ ์์์ง๋ง, ํ ์๋ก ์ต์ํด์ก๊ณ ๋ฌด์๋ณด๋ค ๋ด ์ฝ๋์ ๋ํ ์์ ๊ฐ์ด ์๊ฒผ๋ค.
์ด์ ์๋ Postman์ผ๋ก ๋ค์ํ ์์ฒญ์ ๋ณด๋ด๋ณด๊ณ ์๋ต์ ํ์ธํ๋ฉฐ ์๋ฌ ํธ๋ค๋ง์ ํ์๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ ๊ทธ ๊ณผ์ ์ ํด๋ณด๋ ๋๋ฒ๊น ์ ํตํด ๋ ๋ช ํํ๊ฒ ์์ธ ์ํฉ์ ์ ์ ์์๋ค. ๋ํ ์๋ฌ ์ํฉ์ด ์ ๋ฆฌ๋์ด ์์ผ๋ ๋ฐ๋ณต์ ์ผ๋ก ํ ์คํธ๋ฅผ ํ์ง ์์๋๋๊ณ ์ด๋ค ์๋ฌ์ธ์ง ํท๊ฐ๋ฆฌ๋ ์ํฉ๋ ์ ์๋ค.
"์นด์นด์ค ์์ ๋ก๊ทธ์ธ API"
ํ๋ก ํธ์๋์ ์ญํ ์ ๊ธฐ๋ค๋ฆฌ์ง์๊ณ ์ ๊ทน์ ์ธ ์์ธ๋ก ์ ์ฒด ๊ณผ์ ์ ํ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค. ๊ธฐ๋ฅ๊ตฌํ์๋ง ๊ธ๊ธํด ์ฌ์ฉ๋ฒ๋ง ์ตํ๋ ๊ฒ์ ํฐ ์๋ฏธ๊ฐ ์์๊ฑฐ๋ผ ์๊ฐํ๋ค. ์๋์๋ฆฌ๋ฅผ ์ต๋ํ ์ดํดํ๋ ค ํ๊ธฐ ๋๋ฌธ์ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์ง ์์ ํ์์๊ฒ๋ ์ค๋ช ์ ํด์ค ์ ์์๋ค.
Python์ HTTP ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค Requests
๋ฅผ ์ฌ์ฉํด ์นด์นด์ค API๋ก ์์ฒญ์ ๋ณด๋๋๋ฐ, ์์ผ๋ก๋ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ๋์ ๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
์ฒ์์ผ๋ก ์์ฑํ๋ ํ ์คํธ ์ฝ๋๊ฐ ์ธ๋ถ API๋ฅผ ์ฌ์ฉํ๋ ๋ก์ง์ด์๋ค. Mock Response๋ฅผ ๋ง๋ค์ด ํ ์คํธํ๋ ๋ฐฉ์์ ์ ์ฉํ๋๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ ธ๋ค. ํนํ MagicMock์ ์ธ์คํด์ค์ status_code ์์ฑ์ด ์๋ค๋ ์๋ฌ๊ฐ ๊ณ์ ๋์์ ํค๋งธ์๋๋ฐ ์ ์ฒด class์ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค.
"์ฅ์๋ณ ์์ฝ ๋ฐ ํํฉ๋ณ ์์ฝ ์กฐํ API"
๋ชจ๋ธ๋ง๋ถํฐ ๊ณ ๋ คํ๋ ๊ฑด ์์ฝ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ , ์ด๋ป๊ฒ ๋ณด๋ด์ค์ง์๋ค. ์์ฝ๋ง๋ค ์์์ผ์์ ์ข ๋ฃ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ ฅ๊ด๋ฆฌ๋ฅผ ์ํ ์์ฑ์ผ์์ ์์ ์ผ์๋ ์ถ์ํ ํด๋์ค๋ฅผ ํ์ฉํด ์๋ ์์ฑํ๋ค.
์์ฝ์ ๋ฐ์๋ ์ค๋ณต์ ๋ฐฉ์งํ๋ ๊ณผ์ ์์ ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค. ์บ๋ฆฐ๋๋ก ๊ธฐ ์์ฝ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ ์ ์ด์ ์ค๋ณต ์ ํ์ด ์๋๋๋กํ์ง๋ง, DB์ ์ ์ฅ๋๊ธฐ์ ์ ํ๋ฒ ๋ ํํฐ๋งํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ คํ๋ค. ๊ธฐ๊ฐ ๋ฐ์ดํฐ์ ๋น๊ต๋ฅผ ํตํด ๊ต์งํฉ์ด ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ฐํํ๋๋ก ํ๋ค.
์์ฝ ์ํ์ ๋ฐ๋ฅธ ์ฅ์ ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ Dictionary Comprehension์ ํ์ฉํ๋ค. ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ํค์ ํํฐ๋ง look up ๊ฐ์ filter_prefixes
์ ์ ์ฅํด๋๊ณ filter_set
์ ๋์
๋๋ฆฌ๋ก ๊ตฌํํ๋ค. ์ด๋ฅผํตํด status code์ ๋ฐ๋ผ ํํฐ๋งํด์ ์์ฝ์ ๋ณด์ฌ์ค ์ ์์๊ณ ์ฌ๋ฌ๊ฐ์ status code๋ ํจ๊ป ํํฐ๋ง ํ ์ ์์๋ค.
"EC2์ RDS๋ฅผ ์ฐ๋ํ ๋ฐฐํฌ"
์ฒ์ AWS๋ฅผ ์ฌ์ฉํด๋ณด์๋๋ฐ, ๊ฐ์ด๋์ ๋ฐ๋ผ ์ค์ ์ ํด๊ฐ๋ฉฐ EC2์ RDS๋ฅผ ๋ง๋ค์๋ค. ์์ง ๋ชจ๋ ์ค์ ์ ์ ํํ ์ดํดํ๊ณ ์์ง ์์ง๋ง ์ ์ฒด์ ์ธ ์๋ฒ ๋ฐฐํฌ ๊ฒฝํ์ ํด๋ณผ ์ ์์๋ค. ๋ด๊ฐ ํ์ํ ๋ฐฐํฌ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋ ๋จ์ํ ๋ฐ๋ผํด๋ณด๋ ์ฐจ์์ ๋์ด ๊ฐ ์ค์ ์ ์๋ฏธ๋ฅผ ํ์ ํด์ผ๊ฒ ๋ค.
ํด๋ผ์ฐ๋ฉ ์ปดํจํ ์ ๋ํด ๊ณต๋ถํ๋ฉฐ AWS๊ฐ ์ ๊ณตํ๋ ์๋ง์ ์๋น์ค๋ค์ ํ์ด๋ณด์๋ค. ์์ผ๋ก VPC, S3, ELB ๋ฑ ์๋น์ค๋ค์ ๋ํด ๋ ์์๋ณผ ์์ ์ด๋ค. ํนํ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ์ ๋ํด์๋ ๊ถ๊ธํ ์ ์ด ๋ง๋ค.
"ํ ๋จ์๋ก ์๊ฐํ๋ ๋ฒ์ ๋ฐฐ์ ๋ค."
์ฃผ์ด์ง ํฐ์ผ์ ๋๊ธฐ๊ธฐ์ํด ๊ฒฝ์ฃผ๋ง์ฒ๋ผ ๋ฌ๋ฆฌ๋ ๋ชจ์ต์ ์ค์ค๋ก ๊ฒฝ๊ณํด์ผ๊ฒ ๋ค. ๋ด๊ฐ ๋งก์ ๋ถ๋ถ์ ๋ํ ์ฑ ์๊ฐ์ ํ์ํ์ง๋ง ํ๋ก์ ํธ์ ๋ชฉํ๋ ๊ฒฐ๊ตญ ํ์ ์ฑ๊ณต์ด๋ค. Trello๋ฅผ ํ์ฉํด ์คํฌ๋ผ์ ํ๋ ์ด์ ๊ฐ ๊ฐ์์ ์ํฉ์ ๊ณต์ ํ๊ณ ์๋ก ํผ๋๋ฐฑํ๊ธฐ ์ํจ์์ ์์ง๋ง์.
๋๊ตฐ๊ฐ๋ ๋น ๋ฅผ์๋, ๋๋ฆด์๋ ์๋ค. ๋ด๊ฐ ๋๋ฆฌ๋ค๊ณ ํด์ ์กฐ๊ธํดํ์ง๋ง๊ณ ํ์๋ค์๊ฒ ์์งํ๊ฒ ์ํฉ์ ๊ณต์ ํ์. ํจ๊ป ๊ณ ๋ฏผํ๋ฉฐ ๋ ๋์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐพ์ ์๋ ์๋ค. ๋ฐ๋๋ก ๋ค๋ฅธ ์ฌ๋์ด ๋๋ฆฌ๋๋ผ๋ ์๋ฐ๊ฐ์ ์ฃผ๊ฑฐ๋ ๋ต๋ตํดํ์ง ๋ง์. ๋ฌธ์ ๋ฅผ ํจ๊ป ํด๊ฒฐํ๊ธฐ ์ํด ํ์ด ์กด์ฌํ๋ ๊ฑฐ๋ค. ์ด๋ ค์์ ์ฒํ ๋๋ฃ๊ฐ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋์ธ ์ ์์์ง ๊ณ ๋ฏผํ์.
"๊ธฐ์ ์ ๋ํด ๋ ๊น์ด ์ดํดํ์."
์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์์ ์๋ก์ด ๊ธฐ์ ๋ค์ ์ ์ฉํด๋ณด์๋ค. ๋๋ ๊ทธ ๊ธฐ์ ์ ์๋์๋ฆฌ๋ ๊ฐ์น๋ฅผ ์ ํํ๊ฒ ์ดํดํ๊ณ ์๋๊ฐ? 2์ฃผ๊ฐ ์ต์ ์ ๋คํ๊ณ ๋ง์กฑ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฌผ์ด ๋์ค๊ธดํ์ง๋ง ๋ ๋ง์ด ์ฑ์ฅํ๊ณ ๋ฉ๋ฆฌ ๋์ฝํ๊ธฐ ์ํด์๋ ๋ฐ๊ฑฐ๋ฆ์ด ํํํด์ผ ํ ๊ฒ์ด๋ค. ์ด์ ๋ถํฐ๋ ์ง๊ธ๊น์ง ํด์๋ ๊ฒ๋ค์ ํ๋์ฉ ๋๋์๋ณด๋ฉฐ ์ฌ์ฉ๋ฒ์ด ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ํ์ ํ๋ ค๊ณ ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค.
Python, Django, MySQL ๋ฑ ๋ด๊ฐ ๊ธฐ์ ์คํ์ด๋ผ๊ณ ์ ๋ ๊ฒ๋ค๋ฟ ์๋๋ผ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํด์ผ๊ฒ ๋ค. CS ์ง์, ๋คํธ์ํฌ ๋ฑ ๊ณต๋ถํ ๊ฒ๋ค์ด ํ์ฐ์ด๋ค!
"๋ ์ฑ์ฅํ๊ณ ์ถ๋ค."
๋ด๊ฐ ์์ฑํ ์ฝ๋๋ ๊ณผ์ฐ ์ด๋ค ์์ค์ผ๊น? ์ง๊ธ๊น์ง ํ์ต์ ์ํ ํ๋ก์ ํธ์๋๋ฐ ์ค์ ํ์ ์ ์๋น์ค ์ด์์ ์ํ ํ๋ก์ ํธ๋ ์ด๋จ์ง ๊ถ๊ธํ๋ค. ๋ฌธ๋ ํ๊ฐ์ ํผ๋๋ฐฑ์ ๋ฐ์๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ ํ๋ค. ์ด๋ค ํผ๋๋ฐฑ์ ๋ฐ๋์ง ์ ์์ฉํด์ ๋์ ์ฝ๋์ ์ ์ฉํ ์ ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ด์ผ๊ฒ ๋ค.
๋ค๋ฅธ DB๋ MySQL๊ณผ ์ด๋ค ์ฐจ์ด๊ฐ ์์๊น? ์ง๊ธ ๋์ ๋ก์ง์์ ์ฑ๋ฅ์ ๊ฐ์ ํ ๋ถ๋ถ์ด ์์๊น? ๋์ฉ๋ ํธ๋ํฝ์ด๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น? ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก์ ์ฑ๋ฅ ๋ถ๋ถ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ๋๊ปด์ง๋ค. ๋จ์ํ ์๋๋๋์ง ์ฌ๋ถ๊ฐ ์ค์ํ๊ฒ ์๋๋ผ ์ด๋ค ์ํฉ์์๋ ์ ์๋๋๊ฒ ํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ์ด๋ค. ์์ผ๋ก ๊ณต๋ถํ๊ณ ๊ฒฝํํ๋ฉฐ ์ฑ์๋์๊ฐ์ผํ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค.