๐ข ํญํด ์์
์์์ผ๋ถํฐ ๋ชฉ์์ผ๊น์ง ํ์คํ ๋ฏธ๋ ํ๋ก์ ํธ ์ฃผ์ฐจ ์ํญ ํ ๊ธ์์ผ๋ถํฐ๋ ์๊ณ ๋ฆฌ์ฆ ์ฃผ๊ฐ์ ์งํ ์ค์ด๋ค.
0์ฃผ์ฐจ ์ฌ์ ์คํฐ๋ ๋ถ๋ค๊ณผ ์นํฐ ์ถ์ฒ ๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ธฐ๋ ํฐ์ฒ(TOONSOUP) ํ ์ดํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค ์นํด์ ธ์ ์ดํ๋ก๋ ์ง์์ ์ผ๋ก ๊ต๋ฅ๋ฅผ ํ๊ณ ์๋ค. ์คํฐ๋ ๋ถ๋ค์ด 1์ฃผ์ฐจ์ ์ ๋ถ ํ์ฅ์ด ๋์ด ์ ๊ธฐํ๊ธฐ๋ ํ๋ค.
์๊ณ ๋ฆฌ์ฆ ์ฃผ๊ฐ ํ์ ์ฐ๋ฆฌ ํ์ด 3๋ช ์ผ๋ก ๊ฐ์ฅ ์ธ์์ด ์ ์๋ฐ, 0์ฃผ์ฐจ ํ์ฅ๋ถ๊ณผ ๋ ๋ง๋์ ๋ฐ๊ฐ์ ๋ค.
์ง๊ธ๊น์ง ๋ชจ๋ ์ข์ ํ์๋ค์ ๋ง๋์ ํจ๊ป ์ฑ์ฅํ๋ ๊ธฐ์จ์ ๋๋ผ๊ณ ์๋ค.
๐ ํ๋ก์ ํธ - ์ฃผ์ฐจ์ด๋
์์์ผ 9์์ ๋ฐ๋ก 1์ฃผ์ฐจ์ ํ์คํ ๋ฏธ๋ ํ๋ก์ ํธ ํ์์ด ์ ํด์ง๊ณ , ํด์ผํ ์ผ๋ค์ด ์์์ก๋ค.
์ฐ๋ฆฌ ํ์ ์ฃผํน๊ธฐ ๋ฆฌ์กํธ ์ง๋ง 2๋ช ๊ณผ ์คํ๋ง ์ง๋ง 2๋ช ์ผ๋ก ๊ตฌ์ฑ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฅ์ ๋งก๊ฒ ๋์ด ์์์ผ์ ํจ๊ป ์ฃผ์ ์ ์ ์ ํ๊ณ ๋ฐ๋ก ๋ธ๋ก๊ทธ์ S.A.(Starting Assignment)๋ฅผ ์ ์ถํ๋ค.
ํ์ ์ค์ ์ฌ์ค์ ํ์คํ ํ๋ฆฌ๋์ ๊ฒฝํ์ด ์๋ ๋ถ์ด ๊ณ์ ์ API ์ค๊ณ๋ ์ ๋ฐ์ ์ธ ๋ฐฉํฅ์ ์ก๋๋ฐ ํฐ ๋์์ ๋ฐ์๋ค.
2022.06.20 - [FRONT-END/Projects] - ์ฃผ์ฐจ์ด๋ - ํญํด99 1์ฃผ์ฐจ 5์กฐ S.A(Starting Assignment)
์ญํ ๋ถ๋ฐฐ๋ ํ์คํ ํ๋ก์ ํธ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ๋ก ํธ์ ๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ง๋ ์์๋ค.
๊ธฐ๋ฅ์ ํฌ๊ฒ ๋ก๊ทธ์ธ/ํ์๊ฐ์ , ์ฃผ๋ณ ๋ฐ ์ ํ ์ง์ญ ์ฃผ์ฐจ์ฅ ๊ฒ์ ๊ธฐ๋ฅ, ์ฃผ์ฐจ์ฅ ์ ๋ณด ๋ฐ ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ์ผ๋ก ๋๋ด๋ค.
๋๋ ์ฃผ์ฐจ์ฅ ์์ธ ์ ๋ณด ํ์ด์ง ๋ฐ ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ์ ๋งก์๋๋ฐ, Flask๋ก ๊ด๋ จ API๋ฅผ ๊ตฌ์ถํ๊ณ Jinja2 ํ ํ๋ฆฟ ์์ง์ ํ์ฉํด ๊ตฌํํ๋ค.
๋ณธ๊ฒฉ์ ์ธ ์งํ์ ์์์ GitHub ํ์ ๋ฐฉ์์ ์ด์ผ๊ธฐํ๋๋ฐ, ๋ด๊ฐ ๋ช ๋ฒ ํ ๋จ์ ํ๋ก์ ํธ๋ฅผ ๊นํ๋ธ๋ก ์งํํด๋ณธ ์ ์ด ์์ด์ Git CLI ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ๊น ๋ธ๋์น ์ ๋ต, ๊ทธ๋ฆฌ๊ณ ๊นํ๋ธ๋ฅผ ์ ๋ฐ์ ์ผ๋ก ์๋ ค๋๋ฆด ๊ธฐํ๊ฐ ์์๋ค.
์ฐ๋ฆฌ ํ์ Git Flow์์ main, develop, feature, hotfix ์ ๋๋ฅผ ํ์ฉํ๋ค.
develop ๋ธ๋์น์์ ๊ณ์ ์๋ฏธ์๋ ๊ธฐ๋ฅ ๋จ์๋ณ feature ๋ธ๋์น๋ฅผ ํ์ ์์ ํ ํ, PRํด์ ์ฝ๋ ๋ฆฌ๋ทฐํ๊ณ ๋จธ์งํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๊ณ , ์ต์ข ๋ฐฐํฌ์ผ์ develop์ main์ผ๋ก ํฉ์น๊ธฐ๋ก ํ๋ค.
origin์์ upstream์ผ๋ก PR์ ์ฒ์ํด๋ณด์ ๋ถ๋ค๋ ๊ธ๋ฐฉ ์ ์ ์ํ์ ์ conflict๋ ์์ํ ๊ฒ ์ธ์๋ ๋คํํ ์์๋ค.
ํ๋ก์ ํธ ์ดํ์ฐจ์๋ ํ์ ํ ๋ถ์ด ํ์ ๋ฐฉ์์ ๋ ๊ณต๋ถํด์ค์ ์ ๋ธ๋์น protection rules๋ฅผ ์ ์ฉํด main๊ณผ develop์ PR ์์ด๋ ๋ฐ๋ก ์ปค๋ฐ์ ํธ์ํ ์ ์๋๋ก ๋ณดํธํ๋ ๋ฐฉ๋ฒ๊ณผ, main์ผ๋ก ๋จธ์งํ ๋๋ 3๋ช ์ ์น์ธ์ด ํ์ํ๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ฅด์ณ์ฃผ์ ์ ๋ฐ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ ์ฉํ๋ค.
์ฃผ์ฐจ์ฅ ๋ฐ์ดํฐ๋ ๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ์ open API๋ฅผ ํ์ฉํ๋ค. ์ด ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด Geolocation API์ ๋ค์ด๋ฒ ์ง๋ API๋ก ์ฃผ๋ณ ์ฃผ์ฐจ์ฅ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํต์ฌ ๊ธฐ๋ฅ์ด์๋ค.
๋ ๋ก๊ทธ์ธ/ํ์๊ฐ์ ๊ธฐ๋ฅ์ JWT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํ์ ์๊ฑด์ด์๋๋ฐ, ๋ด๋นํ์ ํ์๋ถ์ด ์ก์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ ํ ํฐ, ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์ธ ๊ฒ์ฆ์ ์ํ ๋ฐ์ฝ๋ ์ดํฐ๊น์ง ๋ง๋์ จ๋ค.
๋ค๋ค ๊ฐ์๊ฐ ๋งก์ ๊ธฐ๋ฅ์ ๋๋ฌด ์ ๊ตฌํํด์ฃผ์๊ณ ๊ณ์ ๋์์ด ๋ ๋งํ ๋ถ๋ถ์ ๋ฌผ์ด๋ด ์ฃผ์ ์ ๋ ๋ ํ๊ฒ ๋๊ปด์ก๋ค.
ํ๋ก์ ํธ ๋ง๊ฐ์ด ๋ชฉ์์ผ 6์๊น์ง๋ผ ์ฒ์์๋ ๋ง์์ด ์กฐ๊ธํ์ง๋ง, ๋คํํ ๋ชฉ์์ผ ์ค์ ์ค์ ๋ง๋ฌด๋ฆฌ๋์ด์ ์คํ๋ ๋ฐฐํฌ์ ์์ฐ ์์์ ์ฐ์ด ์ ํ๋ธ์ ์ ๋ก๋ํ๋ค. ์์์ ๋ฐ์คํฌํฑ ๋ทฐ๋ณด๋ค๋ ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ฐ์ผ ํผ์คํธ๋ก ์งํํ๊ธฐ ๋๋ฌธ์ iPhone 12์ iPad Air ๋ทฐ๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ๋ณด์ฌ์ฃผ๋ฉด์ ์ฐ์๋ค. ๋ฒ๋ฒ ์ด์ง ์๊ณ ์์ฐ์ค๋ฌ์ด ํ๋ฆ์ผ๋ก ํ๋ก์ ํธ์ ์ ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ณด์ฌ์ค ์ ์๋๋ก ์์์ ์ฐ๋๊ฒ ์๊ฐ๋ณด๋จ ์ฝ์ง ์์๋๋ฐ ์ฌ๋ฐ์๋ค.
ํญํด ์ฒซ ํ๋ก์ ํธ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ง์กฑ์ค๋ฝ๊ณ ๋ฟ๋ฏํ๋ค. ํ๋ก์ ํธ๋ฅผ ํ๋ ๋ด๋ด ์ํต๋ ๋ฐ๋ก ์ ๋๊ณ , ํ์๋ถ๋ค์ด ์ด์์ ์ค๋ ฅ๋ ์์ผ์ ์ ํจ๊ป ์ฒซ ์ฃผ์ฐจ ํ์ผ๋ก ๋ง๋ ์ ์์ด ์ข์๋ ์๊ฐ์ด์๋ค.
์๊ฐ์ด ๋ถ์กฑํด์ ๋ ๋ณด์ํ ์ ์๋ ์ ์ ์์ฝ๊ฒ ๋๊ปด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋งก์ ํํธ๋ฅผ ๊ตฌํํ๋๋ผ ์์ง ์ค๋ช ํ ์ ์์ ์ ๋๋ก JWT ์ดํด๋ฅผ ํ์คํ ํ์ง๋ ๋ชปํ๋ค. ๊ทธ๋์ ์ค๋์์์ผ ์ฐ๋ฆฌ ํ๋ก์ ํธ ์ฝ๋๋ฅผ ๋ค์ ํ์ธํ๊ณ ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ฑ ์ JWT ํํธ๋ ์ค์ตํด๋ณด๊ณ ์๋ค.
โ ์๊ณ ๋ฆฌ์ฆ ์ฃผ์ฐจ ์์
ํ๋ก์ ํธ๊ฐ ๋๋๋ ๋ ์๊ณ ๋ฆฌ์ฆ ์ค๋ฌธ์กฐ์ฌ๋ก ๊ฑท๊ธฐ๋ฐ, ๋ฌ๋ฆฌ๊ธฐ๋ฐ์ ์ ํํด์ผ ํ๋๋ฐ, ๋๋ ๋ฌ๋ฆฌ๊ธฐ๋ฐ์ ์ ํํ๋ค.
๋ค์ ๋ 2์กฐ์ ๋ฐฐ์ ๋์๋๋ฐ ํ๋ก ํธ ์ง๋ง๋ผ๋ฆฌ ๋ชจ์ฌ์์๊ณ , 3๋ช ์ผ๋ก ๋ชจ๋ ํ๋ค ์ค ์ธ์์ด ๊ฐ์ฅ ์ ๋ค.
์๋ง ๋ฌ๋ฆฌ๊ธฐ๋ฐ์ ์ ํํ ์ฌ๋์ด ๋ง์ง ์์๋ ๊ฒ ๊ฐ๋ค.
๊ฑท๊ธฐ๋ฐ๊ณผ ๋ฌ๋ฆฌ๊ธฐ๋ฐ์ ์ฐจ์ด๋ ํ๋ณ๋ก ๋ฐฐ์ ๋ ๋ฌธ์ ์์ ์ฐจ์ด์๋ค.
ํ๋ก๊ทธ๋๋จธ์ค ์ฝํ ๋ฌธ์ ๋ค์ 40๋ฌธ์ ์ด์ ํ์ด์ผ ํ๋๋ฐ 5์ผ ๋์ ํ๋ฃจ 9๋ฌธ์ ์ ๋์ฉ ํ๊ธฐ๋ก ํ๋ค.
๋ค๋ก ๊ฐ์๋ก ๋ฌธ์ ๊ฐ ์ด๋ ค์์ ธ์ ๋ฌธ์ ์ ๋ฐฐ๋ถ์ ๋ค๋ก ๊ฐ์๋ก ์ค์๋ค.
์ฐ๋ฆฌ ํ์ ๊ฐ์ ๋ด๋นํ๊ธฐ๋ก ํ ๋ฌธ์ ์ธ์๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋ค ํ๊ณ ๊ณต์ ํ๊ธฐ๋ก ํ๋ค.
๊ธ, ํ ์์ผ ์ดํ ๋์ ๋ค๋ฅธ ํ์๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ๋ฐฐ์ธ ์ ์ด ๋ง์๋ค. ์ฝํ ๋ฅผ ํ๋ฉฐ ํ์ํ๋ JavaScript ๋ฉ์๋์ ๋ฌธ๋ฒ ๊ฐ๋ ๋ฑ๋ ์๋ก ์ค๋ช ํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค. ์ธ์ด์ ๋ํ ์ดํด๋ฅผ ๋ค์ก์๊ฐ ์ ์๋ ์๊ธฐ๊ฐ ์์ด์ ์ข์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ๋ ์๊ฐ์ ๋ฐ๋ก ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive ์ฑ ๊ณผ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์๋ฅผ ๋ณด๊ณ ์๋๋ฐ ํผ์ ๊ณต๋ถํ ๋๋ณด๋ค ๊ฐ์ด ํ๋ ์ฌ๋๊ณผ ๋ชฉํ๊ฐ ์์ผ๋ ๋ ์ด์ฌํ ํ๊ฒ ๋๋ค.
๋ค์ ์ฃผ๋ ํ์ดํ !