CSR / SSR / SSG ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
CSR๊ณผ SSR์ ๋จ์ ์ ๊ทน๋ณตํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
PNG, JPG, WEBP, AVIF์ ๊ฐ์ ์ด๋ฏธ์ง ํฌ๋งท์ ์ฐจ์ด์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
ํ๋ก ํธ์๋์์ ํผ์ฒ ๊ตฌํํ๋ฉด์ ๊ฐ์ฅ ๊ณ ๋ คํด์ผ ๋ ๊ฒ ๋ญ๋ผ๊ณ ์๊ฐํ๋์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
CLS ๋ง๊ณ Core Web Vitals ์ธก์ ํญ๋ชฉ์๋ ๋ญ๊ฐ ์๋์ง ์์๋์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
Lighthouse ์ฑ๋ฅ ์ธก์ ๊ธฐ์ค์๋ ๋ญ๊ฐ ์๋์ง ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์น ์ ๊ทผ์ฑ์ ๊ฐ๋ ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
๋๊ด์ ์ ๋ฐ์ดํธ์ ๊ดํด์ ์ค๋ช ํด ์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ด๋ฏธ์ง ์ต์ ํ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ ์์ผ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์น, ์ฑ ๋ธ๋ฆฟ์ง์ ๋ํด์ ์๊ณ ๊ณ์ ๊ฐ์? ์๊ณ ๊ณ์๋ค๋ฉด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ง์์๋์ด ์๊ฐํ์๋ ํด๋ฆฐ ์ฝ๋์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ง์์๋์ด ์๊ฐํ์๋ ํด๋ฆฐ ์ํคํ ์ณ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
non-blocking๊ณผ async์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
non-blocking๊ณผ async๋ ์์ฃผ ํจ๊ป ์ฐ์ด์ง๋ง, ์๋ฏธ์ ๊ด์ ์ด ์กฐ๊ธ ๋ค๋ฆ
๋๋ค.
non-blocking์ ํจ์๊ฐ ์์
์ ์ํํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฆ์ ์ ์ด๊ถ์ ๋๋ ค์ฃผ๋ ์คํ ๋ฐฉ์์ ์๋ฏธํฉ๋๋ค.
๋ฐ๋ฉด, async๋ ํจ์๊ฐ ํธ์ถ๋ ์ดํ์ ์์
์๋ฃ ์์ ์ ์คํ๋ ๋ก์ง์ ๋ฏธ๋ฆฌ ์ง์ ํด๋๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋๋ค.
์๋ฅผ ๋ค์ด, non-blocking
์ A ํจ์๊ฐ B ํจ์๋ฅผ ํธ์ถํ์ ๋ B ํจ์๊ฐ ์์
์ ๋๋ด์ง ์์๋ A ํจ์๊ฐ ๊ณ์ ์คํ๋ ์ ์๋๋ก ํ๋ ์คํ ํ๋ฆ์ด๊ณ , async
๋ ๊ทธ ์์
์ด ๋๋ฌ์ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง๋ฅผ ๋ช
์ํ๋ ๋ฐฉ์์
๋๋ค.
์ฆ, non-blocking์ ์คํ ๋ฐฉ์, async๋ ๊ทธ ์คํ์ ์ฒ๋ฆฌํ๋ ์ฝ๋ ์คํ์ผ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
blocking / non-blocking / sync / async ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ์กฐํฉํ ๊ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- blocking + sync : ๋ค๋ฅธ ์์ ์ด ์งํ๋๋ ๋์ ์์ ์ ์์ ์ ์ฒ๋ฆฌํ์ง ์๊ณ (blocking), ๋ค๋ฅธ ์์ ์ ์๋ฃ ์ฌ๋ถ๋ฅผ ๋ฐ๋ก ๋ฐ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ (sync) ๋ฐฉ์์ด๋ค. ๋ค๋ฅธ ์์ ์ ๊ฒฐ๊ณผ๊ฐ ์์ ์ ์์ ์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ์ ํ์ฉํ ์ ์๋ค.
- blocking + async : ๋ค๋ฅธ ์์ ์ด ์งํ๋๋ ๋์ ์์ ์ ์์ ์ ๋ฉ์ถ๊ณ ๊ธฐ๋ค๋ฆฌ๋ (blocking), ๋ค๋ฅธ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ์ฒ๋ฆฌํ์ง ์์ ์์๋๋ก ์์ ์ ์ํํ์ง ์๋ (async) ๋ฐฉ์์ด๋ค.
- non-blocking + async : ๋ค๋ฅธ ์์ ์ด ์งํ๋๋ ๋์์๋ ์์ ์ ์์ ์ ์ฒ๋ฆฌํ๊ณ (non-blocking), ๋ค๋ฅธ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ์ฒ๋ฆฌํ์ง ์์ ์์ ์์๊ฐ ์ง์ผ์ง์ง ์๋ (async) ๋ฐฉ์์ด๋ค. ๋ค๋ฅธ ์์ ์ ๊ฒฐ๊ณผ๊ฐ ์์ ์ ์์ ์ ์ํฅ์ ์ฃผ์ง ์๋ ๊ฒฝ์ฐ์ ํ์ฉํ ์ ์๋ค.
- non-blocking + sync : ๋ค๋ฅธ ์์ ์ด ์งํ๋๋ ๋์์๋ ์์ ์ ์์ ์ ์ฒ๋ฆฌํ๊ณ (non-blocking), ๋ค๋ฅธ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ์ฒ๋ฆฌํ์ฌ ์์ ์ ์์ฐจ๋๋ก ์ํํ๋ (sync) ๋ฐฉ์์ด๋ค.
Nginx์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
CI/CD์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์น ์๋น์ค ๋ฐฐํฌ ์์คํ ๊ตฌ์ถ ๊ฒฝํ์ด ์์ผ์ ๊ฐ์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
Monorepo ์ฌ์ฉ ๊ฒฝํ์ ๋ํด์ ๋ง์ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
ํจํค์ง ๋งค๋์ (npm, pnpm, yarn, yarn2) ์ฌ์ฉ ๊ฒฝํ์ ๋ํด ๋ง์ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
Git์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ฌ์ฉํ์ Git ๋ธ๋์น ์ ๋ต์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
Git Merge, Squash, Rebase์ ์ฐจ์ด์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
dependencies ์ devDependencies ์ฐจ์ด์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
MSA ๊ฒฝํ์ด ์์ผ์ ๊ฐ์? ์๊ณ ๊ณ์๋ ๋งํผ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
BFF ์ํคํ ์ฒ ๊ตฌํ ๊ฒฝํ์ด ์๋์? ํน์ ์๊ณ ๊ณ์๋ ๋งํผ ์ค๋ช ํด์ฃผ์ธ์.
BFF๋ 'Backend for Frontend'์ ์ฝ์์ธ๋ฐ์, ๋ง ๊ทธ๋๋กย ํ๋ก ํธ์๋๋ง์ ์ํ ๋ง์ถคํ ๋ฐฑ์๋ ์๋ฒ์ ๋๋ค.
์์ฆ ์๋น์ค๋ค์ ์น, ๋ชจ๋ฐ์ผ ์ฑ ๋ฑ ๋ค์ํ ํ๋ก ํธ์๋ ํ๊ฒฝ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์์? ๊ทธ๋ฆฌ๊ณ ๋ฐฑ์๋๋ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฒ์ฉ API๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๊ตฌ์ฑ๋๊ธฐ๋ ํ๊ณ ์.
์ด๋ ํ๋ก ํธ์๋ ์ ์ฅ์์๋, ํ๋ฉด ํ๋๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฐฑ์๋ API๋ฅผ ํธ์ถํด์ผ ํ๊ฑฐ๋, ๋ฐ๋๋ก ๋๋ฌด ๋ง์ ๋ถํ์ํ ๋ฐ์ดํฐ๊น์ง ๋ฐ์์์ ์ง์ ๊ฐ๊ณตํด์ผ ํ๋ ๋ถํธํจ์ด ์๊ธธ ์ ์์ต๋๋ค.
BFF๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ฐ์ ์์นํฉ๋๋ค. ํน์ ํ๋ก ํธ์๋(์: ์น ์ฑ์ฉ BFF, ๋ชจ๋ฐ์ผ ์ฑ์ฉ BFF)๋ฅผ ํ๊ฒ์ผ๋ก ํด์, ๋ฐฑ์๋์ ์ฌ๋ฌ API๋ฅผ ๋์ ํธ์ถํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ํ๋ก ํธ์๋๊ฐย ํ์๋ก ํ๋ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํ๊ณ ๊ฐ๊ณตํด์, ๋ฑ ๋ง๋ ์๋ต ํ๋๋ก ๋ง๋ค์ด์ย ํ๋ก ํธ์๋์ ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
๋๋ถ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ์ฌ๋ฌ ๋ฒ์ API ํธ์ถ ์์ด, BFF๊ฐ ์ ๊ณตํ๋ API๋ง ํธ์ถํ๋ฉด ๋๋๊นย ๊ฐ๋ฐ์ด ํจ์ฌ ํธํด์ง๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฐ์ผ๋ย ์ฑ๋ฅ ๊ฐ์ ์๋ ๋์์ด ๋ฉ๋๋ค.
๊ฒฐ๊ตญ, ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๊ฒฝํ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๊ธฐ ์ํ ์ํคํ ์ฒ ํจํด์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
Webpack๊ณผ Vite, ๊ธฐํ ๋ฒ๋ค๋ง ๋๊ตฌ์ ๋ํ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
FE ๊ฐ๋ฐ์์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด์ ์ป๋ ์ด์ ์ด ๋ฌด์์ธ๊ฐ์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ ๋ ํ ์คํธ, ํตํฉ ํ ์คํธ, E2E ํ ์คํธ์ ๋ํด ๊ฐ๊ฐ ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
๋ง์ฝ ๊ฐ๋จํ ์ ๋ ฅ ํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ ๋ค๋ฉด, ์ด๋ค ๋ถ๋ถ์ ํ ์คํธํด๋ด์ผ ํ ๊น์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
FE ํ ์คํธ๋ฅผ ์ํด ์ฃผ๋ก ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
์ปดํฌ๋ํธ๋ฅผ ํ ์คํธํ ๋, API ํธ์ถ์ ์ค์ ๋คํธ์ํฌ ์์ฒญ ์์ด ํ ์คํธํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)
ํ๋ก ํธ์๋ E2E ํ ์คํธ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๋ต๋ณ
์ง๋ฌธ ์ ์: OOO
์ถ์ฒ: (optional)