์ฌ์ฉ์ ์ ์ ํจ์์ ๋งฅ๋ฝ์์ "์ฝ๋ฐฑ ์ง์ฅ"์ ์ํํธ์จ์ด ๊ฐ๋ฐ, ํนํ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์์ ๋๋ฆฌ ํผ์ ธ ์๋ ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฌ๋ฌ ๊ฐ์ ์ค์ฒฉ๋ ์ฝ๋ฐฑ์ด ๋ณต์กํ๊ณ ์ฝ๊ธฐ ์ด๋ ต๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ์ํฉ์ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๊ณ ๋์ค์ ํน์ ์กฐ๊ฑด์์ ํธ์ถ๋๋ ํจ์์ธ ์ฝ๋ฐฑ ํจ์๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
์ฝ๋ฐฑ ํจ์์ ์ฃผ์ ๋ชฉ์ ์ ๋์ค์ ๋๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๊น์ง ํน์ ์ฝ๋ ๋ถ๋ถ์ ์คํ์ ์ฐ๊ธฐํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ๋น์ฐจ๋จ ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ํ ์ ์๋๋ก ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ์์ ์ ์ํํ ๋ ํนํ ์ ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๋ฐฑ์ด ๋ค๋ฅธ ์ฝ๋ฐฑ ๋ด์ ์ค์ฒฉ๋๋ฉด ์ํค๊ณ ์ฒด๊ณ์ ์ด์ง ์์ ์ฝ๋ ๊ตฌ์กฐ๊ฐ ๋ฐ์ํ์ฌ "์ฝ๋ฐฑ ์ง์ฅ"์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
Callback Hell์ ์ค์ํ ์ธก๋ฉด์ ์ด๊ฒ์ด ์์ฑํ๋ ํผ๋ผ๋ฏธ๋ ๋ชจ์์ ๊น์ด ์ค์ฒฉ๋ ์ฝ๋ ๊ตฌ์กฐ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋ ๋ง์ ๋น๋๊ธฐ ํจ์์ ์ฝ๋ฐฑ์ ์ถ๊ฐํ๋ฉด ์ฝ๋ ๋ค์ฌ์ฐ๊ธฐ ์์ค์ด ๋์์ ธ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ดํดํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋๋ค. ์ด๋ ๊ฐ๋ฐ์์๊ฒ ๊ณผ๋ํ ์ธ์ง ๋ถํ๋ฅผ ์ด๋ํ๊ณ , ์ฝ๋ ์ ์ง ๊ด๋ฆฌ ๋ฐ ๋๋ฒ๊น ์ ๋ฐฉํดํ๋ฉฐ, ์ ์ฌ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ ผ๋ฆฌ์ ๋ฒ๊ทธ์ ์ค๋ฅ๋ฅผ ๋์ ํ๊ฑฐ๋ ์จ๊ธธ ์ ์์ต๋๋ค.
Callback Hell์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ์ฌ๋ก ์ฐ๊ตฌ๋ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ์ฅ์ ๋๋ค. Node.js๋ ์ค๊ณ์ ๊ณ ์ฑ๋ฅ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฝ๋ฐฑ๊ณผ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๋ง์ ๊ฐ๋ฐ์๋ค์ ๋ณต์กํ ์์คํ ์ ๊ตฌ์ถํ ๋ ์ฝ๋ฐฑ ์ง์ฅ์ ๋ฌธ์ ์ ์จ๋ฆํด์ผ ํ๊ณ , ์ด๋ก ์ธํด ๊ถ๊ทน์ ์ผ๋ก Promises ๋ฐ async/await ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ ๋์ฒด ์๋ฃจ์ ์ด ํ์ํ๊ฒ ๋์์ต๋๋ค.
์ฝ๋ฐฑ ์ง์ฅ์ ํด๊ฒฐํ๋ ๊ฒ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์์ ๋งค์ฐ ์ค์ํ๋ฉฐ, ํนํ AppMasterno-code ํ๋ซํผ๊ณผ ๊ฐ์ ์ต์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. AppMaster ์๊ฐ์ ์ผ๋ก ์ค๊ณ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ, ๋น์ฆ๋์ค ๋ก์ง, API ๋ฐ UI ๊ตฌ์ฑ ์์๋ฅผ ํตํด ๊ฐ๋ ฅํ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค. ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Go, Vue3, kotlin๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํฉ๋๋ค.
Callback Hell์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด AppMaster ๋ ๊น๋ํ๊ณ ๋ชจ๋ํ๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ค์ํ ๊ธฐ๋ฅ์ ๋ ์๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋จ์๋ก ์บก์ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ง์ถคํ ๊ธฐ๋ฅ์ ํตํด ๋ณต์กํ ๋ ผ๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ , ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ , ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ดํดํ๊ธฐ ์ฝ๊ณ ๊ฐ์ํ๋ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ๋ํ AppMaster ์ ์ง์์ ํตํด ์ฌ์ฉ์๋ ๋ณต์กํ ์ฝ๋ฐฑ ๊ด๋ฆฌ์ ์ฝ๋งค์ด์ง ์๊ณ ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ ์ฝ๋ฐฑ ์ง์ฅ์ ํผํ๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ์ฌ๋ก์ ์ ๋ต์ด ์์ต๋๋ค. ์ด๋ค ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ชจ๋ํ - ๋ณต์กํ ํ๋ก๊ทธ๋จ ๋ก์ง์ ๋ ์๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋์ด๋ ๊ธฐ๋ฅ์ผ๋ก ๋ถํดํฉ๋๋ค.
- ์ค๋ฅ ์ฒ๋ฆฌ - ์ฝ๋ฐฑ ํจ์ ๋ด์์ ์ค๋ฅ์ ์์ธ๋ฅผ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ์ฌ ์ฒ๋ฆฌ๋์ง ์์ ์ค๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
- ๋ช ๋ช ๋ ํจ์ - ์ต๋ช ํจ์ ๋์ ๋ช ๋ช ๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์ฝ๋ ๋ฆฐํ ๋ฐ ์์ ์ง์ - ๋ฆฐํ ๋๊ตฌ์ ์ฝ๋ ํฌ๋งทํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ์ผ๊ด๋ ์ฝ๋ฉ ํ์ค๊ณผ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค.
์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก ์ธ์๋ ๊ฐ๋ฐ์๋ ๋์ฒด ํ๋ก๊ทธ๋๋ฐ ๊ตฌ์ฑ ๋ฐ ํจํด์ ํ์ฉํ์ฌ ์ฝ๋ฐฑ ์ง์ฅ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฝ์์ ๋น๋๊ธฐ ์์ ์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ฉฐ ์ฌ๋ฌ ๋น๋๊ธฐ ์์ ์ ์ฐ๊ฒฐํ๋ ๋ณด๋ค ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. async/await ๊ตฌ๋ฌธ๊ณผ ๊ฒฐํฉ๋ Promise๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋๊ธฐ ์ฝ๋์ฒ๋ผ ๋ณด์ด๊ณ ๋์ํ๋ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด ๋ ์ฝ๊ธฐ ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ์ฝ๋ฐฑ ์ง์ฅ์ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ๊ณผ ๋ณต์กํ ๋ก์ง์ ๊ตฌ์ถํ ๋ ๊ณ ๋ คํด์ผ ํ ์ค์ํ ๋ฌธ์ ์ ๋๋ค. ๊ฐ๋ฐ์๋ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์์ฉํจ์ผ๋ก์จ ์ฝ๋ฐฑ ์ง์ฅ์ ๋ฐฉ์งํ๊ณ ์ฝ๋ ํ์ง์ ํฅ์ํ๋ฉฐ ๊ฐ๋ ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋งฅ๋ฝ์์ AppMasterno-code ํ๋ซํผ์ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ์์ฑํ๊ณ , ๋ชจ๋ํ๋ฅผ ๋ฌ์ฑํ๊ณ , ์ ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํจ์จ์ฑ๊ณผ ํจ๊ณผ๋ฅผ ํฅ์์ํค๋ ๊ณ ๊ธ ๋๊ตฌ์ ๊ธฐ์ ์ ์ ๊ณตํจ์ผ๋ก์จ ๊ฐ๋ฐ์๊ฐ ์ฝ๋ฐฑ ์ง์ฅ์ ๊ทน๋ณตํ๋ ๋ฐ ๋์์ ์ค๋๋ค.