๊ธฐ๊ฐ : 2022.03~2022.06 (์ฝ 3๊ฐ์ ๋ฐ)
์ธ์ : 4๋ช (ํ๋ก ํธ์๋ 1๋ช , ๋ฐฑ์๋ 3๋ช : API, ์์ฐ์ด ๋ชจ๋ธ, ์บก์ ๋ ๋ชจ๋ธ)
์ฃผ์ : ๋ทํ๋ฆญ์ค ์ํ ๋ฌธ์ฅ ์ง์ ์๋น์ค ๋ฐ ์ปค๋ฎค๋ํฐ
๋์ ๊ธฐ์ฌ : ์ฌ์ดํธ ๋์์ธ, ์น ํผ๋ธ๋ฆฌ์ฑ, ํ๋ก ํธ์๋ ๊ตฌํ
์ฌ์ฉ ์คํ : React.js, Javascript
ํ๋ถ์์์ ๋ง์ง๋ง ์ ๊ณตํ์ ์์ ์ ์งํํ ํ ํ๋ก์ ํธ์ด๋ค. ์ฒ์์ผ๋ก ํผ๊ทธ๋ง์ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํด ๋ณธ ํ๋ก์ ํธ!
์ฒ์์๋ 'Samsung Galaxy Book Flex Alpha' ์ ์ ๋ต๊ฒ ์๊ทธ๋ฆผ์ผ๋ก ์ค๊ณ๋ฅผ ํ์๋ค. ํ์ง๋ง ์ด์ ๋ฐ์ดํฐ์ ํ๊ณ์ ๋๋ฉ์ธ์ ์ํ๋ก ํ์ ํ๊ณ ํ๋ก์ ํธ์ ์ทจ์ง๊ฐ ๋ฐ๋๋ฉด์ ๋ฌ๋ผ์ง UI๋ฅผ ํผ๊ทธ๋ง์ ํํํ๋ค. ์์ ํ๋ฉด์ ๋ฌธ์ํ๋ฅผ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ๋ฌํํ ์๊ทธ๋ฆผ ์ค๊ณ๋ฅผ figma๋ก ์ฎ๊ธฐ๊ฒ ๋์๋ค. ํผ๊ทธ๋ง์์ ๋ด๊ฐ ์ ์ผ ์ข์ํ๋ ๊ธฐ๋ฅ์ ๊ทธ๋ฃนํ์ด๋ค. ๊ทธ๋ฃนํ๋ฅผ ํจ์ผ๋ก์จ ๋งํฌ์
์ด ์ค๊ณ๊ณผ์ ์์๋ ๋ชจ์์ด ๋๊ฐ ์กํ๋ ์ ์ด ๋งค๋ ฅ์ ์ธ ๊ฒ ๊ฐ๋ค. ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๋ํ๋ก์ '์ปดํฌ๋ํธ๋ฅผ ์ด๋ ๊ฒ ๊ตฌ์ฑํด์ผ๊ฒ ๋ค' ํ๋ ๊ฒ๋ค์ด ๋ณด์ฌ์ ๋๋ฌด ์ค๋ ๊ณ , ๊ฒฐ๊ณผ๋ฌผ์ด ๊น๋ํ๊ฒ ๋ง๋ค์ด์ง๋ ์ ์ด ๋ง์์ ๋ค์ด์ ๋๋ ์ด ์ดํ๋ก UI์ค๊ณ๋ฅผ ํผ๊ทธ๋ง๋ก ์งํํ๊ฒ ๋์๋ค. ๋ฐ์ ์ฌ์ง๋ค์ ๋ณด๋ฉด์ ํ์คํ ํผ๊ทธ๋ง๊ฐ ๊น๋ํ๊ฒ ๋ง๋ค์ด์ง๋ค.
์ด๋ฒ์๋ ์ฒซ ํ๋ก์ ํธ์์๋ ๊ฐ์กฑํ์ฌ ํ๋ซํผ ๊ตฌ์ถ ํ๋ก์ ํธ์ ๋ค๋ฅด๊ฒ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ค. ํ๋ก ํธ์๋์ ๊ด์ฌ์ด ์๊ธฐ๋ฉด์ ๋น์ฐํ ๊ฐ์ฅ ์ธ๊ธฐ๊ฐ ๋ง์ ๋ฆฌ์กํธ์๋ ๊ด์ฌ์ด ์๊ฒผ๋ค. ๋ฆฌ์กํธ๋ ๋ด๊ฐ ํ๋ก ํธ์๋์ ๋์ ํ๊ธฐ ์ ๋ถํฐ ์ด๋ฆ์ ๋ค์ด์ ์ตํ ์๊ณ ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ, ์ ํํ ์ด๋ค ๊ฒ์ธ์ง๋ ์์ง ๋ชปํ๋ค. ๊ทธ๋์ ์ด๋ฒ์๋ ์ง์ ๋ถ๋ชํ๋ณด๋ฉด์ ์ตํ ๊ฒ ๊ฐ๋ค. ์ง๊ธ์์ ์๊ฐํด๋ณด๋ฉด ์ตํ๋ค๊ณ ๋งํ๊ธฐ์๋ ๋ฏผ๋งํ ์์ค์ผ๋ก ๋ฏธํกํ๊ธด ํ๋ค. ์ผ๋จ ๋ฆฌ์กํธ๋ก๋ ๋งํฌ์ ํ๋ฏ์ด ์งํํ๋ค. ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋์ ๋ค๋ฅธ ์ ์ด ์์๋ค. ๊ทธ๋ ๊ฒ ๋งํฌ์ ์ ๋ค ํ๊ณ ๋์ ๋ฌธ์ ๋ ๋ฐ์ํ๋ค...
๋งํฌ์
์ ๋ค ํ๋ฉด API ์ฐ๋์ ํด์ผํ๋ค. ๋ฆฌ์กํธ ๊ฐ์ ๊ฒฝ์ฐ์๋ 3000ํฌํธ๋ก ์๋กญ๊ฒ ์๋ฒ๊ฐ ์ด๋ฆฌ๊ธฐ์ ๋ฐฑ์๋ API ์๋ฒ์ ์ฐ๋์ ํ๋ ค๋ฉด proxy๋ฅผ ์ถ๊ฐํ๊ณ API๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ ๋ฒ ํ๋ก์ ํธ์์๋ html ํ์ผ ์์ script ํ๊ทธ๋ฅผ ๋ฃ์ด์ ๊ทธ ์์์ ajax ์์ฒญ์ ํ์๋ค. ์ง๋ ํ๋ก์ ํธ๋๋ ์๊ฐ์ ํ์๋ ๋ถ๋ถ์ด์ง๋ง html ์ฝ๋๋ง๋ค ๋ฃ๊ธฐ์ ๋๋ฌด ์ฝ๋๊ฐ ์ง์ ๋ถํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ปดํฌ๋ํธ ๋ด์์ script ํ๊ทธ๋ฅผ ์ฌ์ฉํ๊ธฐ์๋ ์ข ์ด์ํ๋ค. ์ปดํฌ๋ํธ ์์ฒด๊ฐ js๋ผ์ ์คํฌ๋ฆฝํธ์ธ๋ฐ, ๋ script ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ? ์ถ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ฐ์ ์ฐ ์งํํด๋ ๋ฐ์ดํฐ ๋๋๋ง๋ถ๋ถ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๋ฌดํ get ์์ฒญ์ด ๋ณด๋ด์ก๊ณ , ์ด๊ฑธ ๋ง๊ณ ์ async await๋ฅผ ๋ฃ์๋๋ฐ promise ๊ฐ์ฒด๋ก ๋์ด์์ ๋ฐ์ดํฐ๊ฐ pending ์ํ์๋ค. ๊ฒ๋ค๊ฐ ์ฒ์์ผ๋ก ๋ฆฌ์กํธ๋ฅผ ๋ค๋ค๋ณด๋ ๊ฑฐ๋ผ์ ๊ตฌ๊ธ๋ง์ ํ๋ฉด์ ๊ฐ๋ฐ์ ์งํํ๋๋ฐ ์ค๋ช
ํ ๋ธ๋ก๊ทธ์ ๋ฐ๋ผ ์ด๋ค ๊ฑด ํจ์ํ ์ปดํฌ๋ํธ, ์ด๋ค ๊ฑด ํด๋์คํ ์ปดํฌ๋ํธ๋ก ์ ์ธ๋๋ ๋ฑ ํต์ผ์ฑ์ด ์์๋ค. ์์ฃผ ์ฐ ๋์ด ์ฐ์ด์๋ค.
์ด๋ฐ ์ด๋ ค์์ ์ฒํ์ ๋ ๋ด๊ฐ ๋์์ ์์ฒญํ๋ ๊ฑด, ๋ฆฌ์กํธ๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ค๋ค ๋ณธ ๋๊ธฐ ์น๊ตฌ์๋ค. ์น๊ตฌ๋ ์ ๊ณตํ์ ํํ๋ก์ ํธ๋ฅผ ํ๊ณ ์์ด์ ๋ฐ์๋ฐ๋ ๋ถ๊ตฌํ๊ณ ๋๋ฅผ ๋์์ฃผ์๋ค. ์ด ์น๊ตฌ๋ ๋ด๊ฐ ์์์ ์์ ํ์๋ ๋ฆฌ์กํธ์์ API ํต์ ์ ๊น๋ํ๊ฒ ํ๋ ๋ฒ์ ์๋ ค์ฃผ์๋ค. ๊ฐ API๋ฅผ ์ด์ฉํ๋ ๋ถ๋ถ์ ํจ์๋ก ๋ง๋ค์ด์ ๋ชจ๋ํ๋ฅผ ํ ํ, ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ด์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฅ๋์ ์ผ๋ก ํ์ฉํ์ง ๋ชปํ ๋๋ ๋ชจ๋ํ๋ผ๋ ๋ฐฉ์์ ๋ฏธ์ฒ ์๊ฐํ์ง ๋ชปํ ๊ฒ์ด์๋ค. ์น๊ตฌ๊ฐ ์๋ ค์ค ์ด ์์ด๋์ด๋ ๋์๊ฒ ํฐ ๊นจ๋ฌ์์ผ๋ก ๋ค๊ฐ์๊ณ , ์ด ์์ด๋์ด๋ฅผ ์์ฉํ์ฌ ์์ผ๋ก์ ๊ฐ๋ฐ์์๋ axios ๊ฐ์ฒด, ์ฟ ํค, util ๋ฑ์ ๋ชจ๋ํํ์ฌ ์กฐ๊ธ์ด๋๋ง ๋๋ํ๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค. ๋ฐ์ ์์ค์๋ ์๊ธฐ ์ผ์ฒ๋ผ ๋์์ฃผ๊ณ ๊ฐ์ ์ง๊ตฐ์ผ๋ก์ ๊ณ ๋ฏผ๋ ๋ค์ด์ฃผ๋ ์น๊ตฌํํ ๋๋ฌด ๊ณ ๋ง์ ๋ค.
์ ๋ฒ ํ๋ก์ ํธ๋ ๊ทธ๋ ๊ณ ํ ํ๋ก์ ํธ๋ฅผ ํ๊ฒ ๋๋ฉด ๊ฐ์ ํ ๋๋ฃ์๊ฒ์ ๋ฐฐ์๊ฐ๋ ๊ฒ์ด ๋ง์ ๊ฒ ๊ฐ๋ค. ์ด๋ฒ์๋ API๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐฑ์๋(ํ์ฅ์ด์์)์ ํ์ด๋ก ์์
์ ์ฃผ๋ก ํ์๋๋ฐ, swagger๋ก API ๋ฌธ์๋ฅผ ์์ฑํ ํ ๋ฐฐํฌํ์ฌ ๋๋ ๊ทธ๊ฒ์ ๋ณด๊ณ ์์
ํ์๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ถ๋ถ์์ API๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํด์ ๋ฐ์ดํฐ๋ฅผ ํจ์นํด๋ ๋๋๋ฐ, ๋๋ ์ ์๊ฐ์ ๋ฏธ์ฒ ๋ชปํ๊ณ ํ ๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๋ค ์ค๋๋ก ์์ฒญ์ ํ๋ค. ๊ธฐ๊ป ๋ฐฑ์๋ ์ชฝ์์ ํ๋ก ํธ ์ชฝ์ ์๊ฐํ๋ฉฐ API๋ฅผ ์ค๊ณํ๋๋ฐ ๊ณ์ํด์ ๋ฒ๋ณตํ๋ ์ด๋ฐ ๋ด๊ฐ ๊ด์ธํ์ ๊ฒ ๊ฐ๋ค. ์ด๋ฐ ๋์ ์๊ตฌ๊ฐ ๋ฐ๋ณต๋๋๊น ์ง๊ธ์ ๋ด๊ฐ ํ๋ก ํธ์๋๊ฐ ๊ฑฐ์ ์ฒ์์ด๋ ์ด๋ ๊ฒ ํด ์ฃผ์ง๋ง ์์ผ๋ก๋ ์ฃผ์ด์ง API ๋ด์์ ํ์ฉํ์ฌ ์ฐ๋ ์ฐ์ต์ ํด ๋ณด๋ผ๊ณ ์กฐ์ธ์ ํด์ฃผ์
จ๋ค. ๊ทธ ์กฐ์ธ์ผ๋ก API๋ฅผ ์๋์ ์ผ๋ก๋ง ๋ฐ๋ผ๊ฐ์๋ ๋์ ํ๋๋ฅผ ๋ฐ์ฑํ๊ณ ๋ฅ๋์ ์ผ๋ก API๋ฅผ ํ์ฉํด๋ณด๊ฒ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ๋ค ๋ณด๋๊น ํ๋ก ํธ์๋์ ์์
๋์ด ๋ง์๋๋ฐ, ํ์ฅ๋์ด ์ง๋ ์ฒดํฌ๋ฅผ ํ๊ณ ๋ด๊ฐ ์ข ๋นก์ธ ๋ณด์ด๋๊น ๋ฒ์๋ฅผ ์กฐ์ ํ๋ค. ๋ณธ์ธ์ด ํ๋ก ํธ์๋๋ฅผ ์ด๋ ์ ๋ ๋ค๋ฃฐ ์ ์์๊ธฐ์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ตฌํํด์ฃผ์
จ๋ค. ์ด๋ฅผ ํตํด ํ์ฅ์ ์ญํ ๊ณผ ๋ฆฌ๋์ญ์ ๋ฐฐ์ ๊ณ , ํ์ธ์ ์ปดํฌ๋ํธ ๋ถ๋ฆฌ์ ๋ฐ์ดํฐ ํจ์น, props ํ์ฉ์ ๋ณด๋ฉด์ ๋ ํ ์ ๋ฐฐ์๊ฐ๋ค. ์๋ ์ค๋ฅ๋ ๋จ์ด ๋ ์ ์ฐพ๋๋ค๊ณ ํ๋๊ฐ. ๋ฐ๋์ ๋์ ๋งํ์๋ ๋ถ๋ถ๋ ๋ฐ๊ฒฌํด์ฃผ์
์ ํด๊ฒฐํ ์ ์์๋ค. ๊ทธ๋ ๊ฒ ๋๋ ์ข
๊ต๊ฐ ์๊ฒผ๋ค. ์ฐ๋ฆฌ ํ์ฅ๋ ๋ง๋ง์ธ!
ํ์ฅ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ํ์๋ค์๊ฒ๋ ๊ณ ๋ง์ด ์ ์ด ๋ง๋ค. ์ด ํ๋ก์ ํธ๊ฐ ์ ๊ณต ํ๋ก์ ํธ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ๋จ๊ณ๋ณ๋ก ๋ฐํ๋ฅผ ํด์ผ ํ๋ค. ๊ทธ ์ค ์ต์ข ๋ฐํ๋ ์ด ํ๋ก์ ํธ์ ๋ค์ํ ์ํ์ฐฉ์ค๋ค๊ณผ ์ฌ์ฉํ ๊ธฐ์ ์ ์๊ฐํ๊ณ ๋ฐ๋ชจ๊น์ง ์งํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฝค ์ค์ํ ๋ฐํ์๋ค. ๊ทธ ์ค์ํ ๋ฐํ๋ฅผ ๋ด๊ฐ ํ๊ฒ ๋์๋ค. ๋ฅ๋ฌ๋์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ์ธ๋ถ ๋ก์ง์์ ๋ฒ์ด๋ ํ๋ก ํธ์๋ ์์ ๋ง์ ํ์๊ธฐ ๋๋ฌธ์ ์ค๋น๊ฐ ๋ง๋งํ์์ง๋ง ํ์๋ค์ ์ด๋ฐ ๋๋ฅผ ์ํด ํน๊ฐ์ ์ด์ด์คฌ๋ค. A๋ถํฐ Z๊น์ง ๋ค ์๋ ค์คฌ๊ณ , ๋ชจ๋ฅด๊ฑฐ๋ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ๋ ๋ด๊ฐ ๊ถ๊ธ์ฆ์ด ํด์๋ ๋๊น์ง ๋ค ์๋ ค์ฃผ์ จ๋ค. ๋๋ถ์ ๋ฐํ ์ค๋น๋ฅผ ์ ํ ์ ์์๊ณ , ์ง์์๋ต๋ ์ ํด์ณ๋๊ฐ ์ ์์๋ค. ๊ฒฐ๊ณผ ๋ํ ์ข๊ฒ ๋์๋ค. ๋ณ ํ ์์ด ๋ฐํ๋ฅผ ์งํํ๊ณ ํ๋ก์ ํธ๋ฅผ ์ ๋ง๋ฌด๋ฆฌํ ๊ฒ์ด ํ์๋ค ๋๋ถ์ธ ๊ฒ ๊ฐ์์ ๋๋ ์ฐ๋ฆฌ ํ์๋คํํ ๋๋ฌด ๊ณ ๋ง๋ค.
์กฐ์ธ๋๋ก API๋ฅผ ๋ฅ๋์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ณด๋ ํ๋ก ํธ์๋๊ฐ ์ฌ๋ฏธ์์๋ค. ์ฒ์์๋ ๋งํฌ์
๋ง ์ฌ๋ฐ์๋ ๋๋ผ๋ฉด ์ด์ ๋ API๋ก ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ ์ผ ์ฌ๋ฐ๋ค. ๋๋ ํ๋ก ํธ์๋๊ฐ ์ฌ๋ฐ์ด์ก๋ค. ํ๋ก ํธ์๋ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์๊ธฐ๋ ๋ฌผ์ํ๊ฐ ๋๋ํ๋ก ๋ณํ๋ ์๊ฐ๋ค์ด ๋๋ฌด ์ง๋ฆฟํ๋ค. ์์ง ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์ง๋ง ๊ทธ๋งํผ ๋๋ํ๋ก ๋ณํ ๋ฌผ์ํ๊ฐ ๋ง๋ค๊ณ ์๊ฐํ๋ ํ๋ฃจํ๋ฃจ๊ฐ ์ค๋ ๊ธฐ ์์ํ๋ค. ์ด์ฌํ ๊ณต๋ถํด์ ๊ผญ ๋ฉ์ง ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ผ์ง!
๋ฉ์ ธ์ฉ๐ซถ