Frontend Release Please(FRP)๊ฐ ๋ฆด๋ฆฌ์ค ์๋ํ, ์ค๋ฅ ๊ฐ์, ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ํ ํจ์จ์ฑ ํฅ์์ ํตํด ํ๋ก ํธ์๋ ๋ฐฐํฌ๋ฅผ ํ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
Frontend Release Please: ์๋ํ๋ฅผ ํตํด ํ๋ก ํธ์๋ ๋ฆด๋ฆฌ์ค ๊ฐ์ํ
๋น ๋ฅด๊ฒ ๋ณํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ํ๋ก ํธ์๋ ํ์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฒ์ ์ ๋ฆด๋ฆฌ์คํ๋ ํ๋ก์ธ์ค๋ ์๋ ๋จ๊ณ, ์ ์ฌ์ ์ธ ์ค๋ฅ ๋ฐ ์๋นํ ์๊ฐ ํฌ์๊ฐ ํ์ํ ๋ณ๋ชฉ ํ์์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ Frontend Release Please(FRP)๊ฐ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ผ๋ก ๋ฑ์ฅํ์ฌ ํ๋ก ํธ์๋ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ฐ์ํํ๋ ์๋ํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ FRP์ ๊ฐ๋ , ์ด์ , ์๋ ๋ฐฉ์, ๊ธ๋ก๋ฒ ํ์ด ๋์ฑ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ฐฐํฌ๋ฅผ ์ํด FRP๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค.
๊ธฐ์กด ํ๋ก ํธ์๋ ๋ฆด๋ฆฌ์ค์ ๊ณผ์
์๋ฃจ์ ์ ๋ฐ์ด๋ค๊ธฐ ์ ์ FRP๊ฐ ํด๊ฒฐํ๋ ๋ฌธ์ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ง์ ํ๋ก ํธ์๋ ํ์ ์ง๋ฆฌ์ ์์น๋ ํ ๊ท๋ชจ์ ๊ด๊ณ์์ด ์ ์ฌํ ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค.
- ์๋ ํ๋ก์ธ์ค: ํ๋ก ํธ์๋ ์ฝ๋ ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌ์๋ ์๋ง์ ์๋ ๋จ๊ณ๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ณต์ ๋ฐ ์ข ์์ฑ ์ค์น์์ ํ ์คํธ ์คํ ๋ฐ ๋น๋ ์ํฐํฉํธ ์ ๋ก๋์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํฉ๋๋ค. ๊ฐ ์๋ ๋จ๊ณ๋ ์ธ์ ์ค๋ฅ์ ๊ธฐํ๊ฐ ๋ฉ๋๋ค.
- ์ผ๊ด์ฑ ๋ถ์กฑ: ํ์คํ๋ ์ ์ฐจ๊ฐ ์์ผ๋ฉด ํ ๊ตฌ์ฑ์์ด ๋ฆด๋ฆฌ์ค ๋จ๊ณ๋ฅผ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ์ํํ์ฌ ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ํ๊ฒฝ์์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์๊ฐ ์๋ชจ: ์๋ ๋ฆด๋ฆฌ์ค๋ ๋ณธ์ง์ ์ผ๋ก ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด ์๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ ๊ธฐ์กด ๊ธฐ๋ฅ์ ๊ฐ์ ํ๊ฑฐ๋ ์ค์ํ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ค๋ฅ ์ํ: ๋ฐ๋ณต์ ์ธ ์๋ ์์ ์ ํผ๋ก์ ๊ฐ๊ณผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ชป๋ ๋ถ๊ธฐ ๋ฐฐํฌ ๋๋ ๊ตฌ์ฑ ๋จ๊ณ ๋๋ฝ๊ณผ ๊ฐ์ ๊ฐ๋จํ ์ค์๋ ์ฌ๊ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
- ๊ฐ์์ฑ ๋ถ์กฑ: ๋ฆด๋ฆฌ์ค ์ํ๋ฅผ ์ถ์ ํ๊ฑฐ๋, ๋๊ฐ ์ด๋ค ๋จ๊ณ๋ฅผ ์ํํ๋์ง ์๋ณํ๊ฑฐ๋, ์์ ํ ์๋ ํ๋ก์ธ์ค์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์์น๋ฅผ ์ ํํ ์ฐพ์๋ด๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋ฐฐํฌ ๋ณ๋ชฉ ํ์: ํ์ด ์ฑ์ฅํ๊ณ ํ๋ก์ ํธ๊ฐ ๋์ฑ ๋ณต์กํด์ง์ ๋ฐ๋ผ ์๋ ๋ฆด๋ฆฌ์ค๋ ์ ์ฒด ๊ฐ๋ฐ ์๋๋ฅผ ๋ฆ์ถ๋ ์ค์ํ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค.
- ๊ต์ฐจ ๋ธ๋ผ์ฐ์ /์ฅ์น ํ ์คํธ: ๊ด๋ฒ์ํ ๋ธ๋ผ์ฐ์ , ์ฅ์น ๋ฐ ์ด์ ์ฒด์ ์์ ํธํ์ฑ์ ๋ณด์ฅํ๋ฉด ์๋ ๋ฆด๋ฆฌ์ค ๊ฒ์ฌ์ ๋ ๋ค๋ฅธ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋ฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ ๋ณดํธ์ ์ด๋ฉฐ, ๋๋ฅ์ ๊ฑธ์ณ ๋ถ์ฐ๋ ํ๊ฒฝ์์ ์์ ํ๋ ํ๊ณผ ๊ณต๋ ์์ ํ๋ ํ ๋ชจ๋์๊ฒ ๋๊ฐ์ด ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋์ฑ ํจ์จ์ ์ด๊ณ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค์ ๋ํ ์๊ตฌ๋ ์ ์ธ๊ณ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ๊ณตํต ๋ชฉํ์ ๋๋ค.
Frontend Release Please(FRP)๋ ๋ฌด์์ ๋๊น?
Frontend Release Please(FRP)๋ ๋จ์ผํ๊ณ ๊ตฌ์ฒด์ ์ธ ๋๊ตฌ๋ ์ ํ ์์ฒด๊ฐ ์๋๋ผ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฆด๋ฆฌ์ค์ ์ ์ฒด ์๋ช ์ฃผ๊ธฐ๋ฅผ ์๋ํํ๋ ๋ฐ ์ค์ ์ ๋ ๊ฐ๋ ์ ํ๋ ์์ํฌ์ด์ ๋ชจ๋ฒ ์ฌ๋ก ์งํฉ์ ๋๋ค. ์๋์ ์์ ๋ฆด๋ฆฌ์ค ์ ์ฐจ์์ ์์ธก ๊ฐ๋ฅํ๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ฉฐ ๊ณ ๋๋ก ์๋ํ๋ ์ํฌํ๋ก๋ก ์ ํํ ๊ฒ์ ์นํธํฉ๋๋ค.
FRP๋ ํต์ฌ์ ์ผ๋ก CI/CD๋ผ๊ณ ๋ ํ๋ ์ง์์ ํตํฉ(CI) ๋ฐ ์ง์์ ์ ๋ฌ/๋ฐฐํฌ(CD)์ ์์น์ ํ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์์น์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ณ ์ ํ ์๊ตฌ ์ฌํญ ๋ฐ ์ํฌํ๋ก์ ํน๋ณํ ๋ง์ถฅ๋๋ค.
Frontend Release Please์ "Please"๋ ์์คํ ์ด ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ๋ ์ ์คํ ์์ฒญ์ผ๋ก ํด์๋ ์ ์์ผ๋ฉฐ, ์ฌ๋ ์ค์ฌ์ ๋ช ๋ น์์ ์๋ํ๋ ์คํ์ผ๋ก์ ์ ํ์ ์๋ฏธํฉ๋๋ค. ์์คํ ์ ์์ ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก "๋ฆด๋ฆฌ์ค๋ฅผ ์ํํด ์ฃผ์ธ์"๋ผ๊ณ ์์ฒญํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
FRP์ ์ฃผ์ ์์น:
- ์๋ํ ์ฐ์ : ์ฝ๋ ์ปค๋ฐ์์ ๋ฐฐํฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ด๋ฅด๊ธฐ๊น์ง ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์ต๋ํ ์๋ํํด์ผ ํฉ๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ ํตํฉ: ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ์๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ค๋ฉด ๋ฒ์ ๊ด๋ฆฌ ์์คํ (์: Git)๊ณผ์ ๊ธด๋ฐํ ํตํฉ์ด ํ์์ ์ ๋๋ค.
- ์๋ํ๋ ํ ์คํธ: ๊ฐ๋ ฅํ ์๋ํ๋ ํ ์คํธ(๋จ์, ํตํฉ, ์๋ ํฌ ์๋) ์ ํ๊ตฐ์ ์์ ์ ์ธ ์๋ํ๋ ๋ฆด๋ฆฌ์ค์ ๊ธฐ๋ณธ์ ๋๋ค.
- ํ๊ฒฝ ์ผ๊ด์ฑ: ๊ฐ๋ฐ, ์คํ ์ด์ง ๋ฐ ํ๋ก๋์ ํ๊ฒฝ์ด ๊ฐ๋ฅํ ํ ์ ์ฌํ๋๋ก ๋ณด์ฅํ์ฌ "๋ด ์ปดํจํฐ์์ ์๋ํ์ต๋๋ค" ๋ฌธ์ ๋ฅผ ์ต์ํํฉ๋๋ค.
- ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ฐฐํฌ: ๊ธฐ์กด ๋ฒ์ ์ ์์ ํ๋ ๋์ ์ ๋ฒ์ ์ ๋ฐฐํฌํ๋ฉด ์์ ์ฑ์ด ํฅ์๋๊ณ ๋กค๋ฐฑ์ด ๊ฐ์ํ๋ฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง ๋ฐ ํผ๋๋ฐฑ: ๋ฐฐํฌ ํ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ณ ๊ฐ๋ฐ ํ์ ์ ์ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ธฐ ์ํด ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ๊ตฌํํฉ๋๋ค.
FRP ์๋ ๋ฐฉ์: ์๋ํ๋ ๋ฆด๋ฆฌ์ค ํ์ดํ๋ผ์ธ
FRP ๊ตฌํ์๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ํ๋ ๋ฆด๋ฆฌ์ค ํ์ดํ๋ผ์ธ ์ค์ ์ด ํฌํจ๋ฉ๋๋ค. ์ด ํ์ดํ๋ผ์ธ์ ์ฝ๋ ๋ณ๊ฒฝ์ ์ํด ํธ๋ฆฌ๊ฑฐ๋์ด ํน์ ์์๋ก ์คํ๋๋ ์ผ๋ จ์ ์ํธ ์ฐ๊ฒฐ๋ ๋จ๊ณ์ ๋๋ค. ์ผ๋ฐ์ ์ธ FRP ํ์ดํ๋ผ์ธ์ ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.
1. ์ฝ๋ ์ปค๋ฐ ๋ฐ ๋ฒ์ ๊ด๋ฆฌ
์ด ํ๋ก์ธ์ค๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฒ์ ๊ด๋ฆฌ ๋ฆฌํฌ์งํ ๋ฆฌ(๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก Git)์ ์ปค๋ฐํ ๋ ์์๋ฉ๋๋ค. ์ด ์ปค๋ฐ์ ๊ธฐ๋ฅ ๋ถ๊ธฐ ๋๋ ์ฃผ ๋ถ๊ธฐ๋ก ์ง์ ์ปค๋ฐํ ์ ์์ต๋๋ค(๋ ๋์ ์ํฌํ๋ก ๊ด๋ฆฌ๋ฅผ ์ํด ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ฅ ๋ถ๊ธฐ๊ฐ ์ ํธ๋จ).
์: ๋ฐฉ๊ฐ๋ก๋ฅด์ ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ์ฌ์ฉ์ ์ธ์ฆ ๊ธฐ๋ฅ์ ์๋ฃํ๊ณ GitHub, GitLab ๋๋ Bitbucket๊ณผ ๊ฐ์ ํ๋ซํผ์์ ํธ์คํ
๋๋ Git ๋ฆฌํฌ์งํ ๋ฆฌ์ feature/auth-login
์ด๋ผ๋ ๋ถ๊ธฐ์ ์ฝ๋๋ฅผ ์ปค๋ฐํฉ๋๋ค.
2. ์ง์์ ํตํฉ(CI) ํธ๋ฆฌ๊ฑฐ
์๋ก์ด ์ปค๋ฐ ๋๋ ๋ณํฉ ์์ฒญ์ ๊ฐ์งํ๋ฉด CI ์๋ฒ(์: Jenkins, GitLab CI, GitHub Actions, CircleCI, Azure Pipelines)๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด CI ์๋ฒ๋ ์ฌ๋ฌ ์๋ํ๋ ์์ ์ ์ํํฉ๋๋ค.
- ์ฝ๋ ์ฒดํฌ์์: ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ต์ ์ฝ๋๋ฅผ ๋ณต์ ํฉ๋๋ค.
- ์ข ์์ฑ ์ค์น: npm ๋๋ Yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ข ์์ฑ์ ์ค์นํฉ๋๋ค.
- ๋ฆฐํ ๋ฐ ์ ์ ๋ถ์: ๋ฆฐํฐ(์: ESLint, Prettier) ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์คํํ์ฌ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ฝ๋ ํ์ง, ์คํ์ผ ๋ฐ ์ ์ฌ์ ์ค๋ฅ๋ฅผ ํ์ธํฉ๋๋ค. ์ด๋ ๊ธ๋ก๋ฒ ํ์์ ์ฝ๋ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ๋จ์ ํ ์คํธ: ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ณ ๊ตฌ์ฑ ์์ ๋๋ ๊ธฐ๋ฅ์ ํ์ธํ๊ธฐ ์ํด ๋จ์ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
- ํตํฉ ํ ์คํธ: ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ๋ค๋ฅธ ๋ชจ๋์ด ํจ๊ป ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํตํฉ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
์ด๋ฌํ CI ๋จ๊ณ ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ํ์ดํ๋ผ์ธ์ด ์ค๋จ๋๊ณ ๊ฐ๋ฐ์์๊ฒ ์๋ฆผ์ด ์ ์ก๋ฉ๋๋ค. ์ด ํผ๋๋ฐฑ ๋ฃจํ๋ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ํฌ์ฐฉํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
3. ํ๋ก ํธ์๋ ์ํฐํฉํธ ๋น๋
CI ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๋ฉด ํ์ดํ๋ผ์ธ์ ํ๋ก๋์ ์ฉ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
- ํธ๋์คํ์ผ๋ง: ์ต์ JavaScript(ES6+) ๋ฐ ๊ธฐํ ์ธ์ด ๊ธฐ๋ฅ(์: TypeScript)์ ๋ธ๋ผ์ฐ์ ํธํ JavaScript๋ก ๋ณํํฉ๋๋ค.
- ๋ฒ๋ค๋ง: Webpack, Rollup ๋๋ Parcel๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ JavaScript, CSS ๋ฐ ๊ธฐํ ์์ฐ์ ๋ฐฐํฌ๋ฅผ ์ํด ์ต์ ํ๋ ํ์ผ๋ก ๋ฒ๋ค๋งํฉ๋๋ค.
- ์ถ์ ๋ฐ ๋๋ ํ: ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๊ณ ๋ณ์ ์ด๋ฆ์ ๋จ์ถํ์ฌ ์ฝ๋ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
- ์์ฐ ์ต์ ํ: ์ด๋ฏธ์ง ์์ถ, SVG ์ต์ ํ ๋ฐ ๊ธฐํ ์ ์ ์์ฐ ์ฒ๋ฆฌ.
์ด ๋จ๊ณ์ ์ถ๋ ฅ์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ ์ ์๋ ์ ์ ํ์ผ(HTML, CSS, JavaScript, ์ด๋ฏธ์ง) ์ธํธ์ ๋๋ค.
4. ์๋ํ๋ ์๋ ํฌ ์๋(E2E) ๋ฐ ๋ธ๋ผ์ฐ์ ํ ์คํธ
์ด๊ฒ์ ํ๋ก ํธ์๋ ๋ฆด๋ฆฌ์ค์ ์ค์ํ ๋จ๊ณ์ ๋๋ค. ๋ฐฐํฌํ๊ธฐ ์ ์ ๋น๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ์ข ์คํ ์ด์ง ํ๊ฒฝ์ ๋ฐฐํฌ๋๊ฑฐ๋ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ํ ์คํธ๋ฉ๋๋ค. Cypress, Selenium ๋๋ Playwright์ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์๋ํ๋ E2E ํ ์คํธ๋ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์ ๊ด์ ์์ ์์๋๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ: ๊ตญ์ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ค์์ ํ์ธํ๋ ํ ์คํธ๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ํ์งํ ๋ฐ ๊ตญ์ ํ(i18n/l10n): ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค์ํ ์ธ์ด๋ก ์ฝํ ์ธ ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ํ๊ณ ์ง์ญ๋ณ ํ์(๋ ์ง, ํตํ)์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
- ๊ต์ฐจ ๋ธ๋ผ์ฐ์ ํธํ์ฑ: ์ฃผ์ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge) ๋ฐ ์ฌ์ฉ์ ๊ธฐ๋ฐ์์ ํ์ํ ๊ฒฝ์ฐ ์ ์ฌ์ ์ผ๋ก ์ด์ ๋ฒ์ ์์ ํ ์คํธํฉ๋๋ค.
- ๋ฐ์ํ ๋์์ธ: UI๊ฐ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ ๋ฐ ์ฅ์น์ ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ์ ๋๋์ง ํ์ธํฉ๋๋ค.
5. ์คํ ์ด์ง ๋ฐฐํฌ(์ ํ ์ฌํญ์ด์ง๋ง ๊ถ์ฅ๋จ)
๋น๋๋ ์ํฐํฉํธ๋ ์ข ์ข ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐ์ ํ๊ฒ ๋ฐ์ํ๋ ์คํ ์ด์ง ํ๊ฒฝ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด QA ํ ์คํฐ ๋๋ ์ ํ ๊ด๋ฆฌ์๊ฐ ํ๋ก๋์ ์ ํธ์ํ๊ธฐ ์ ์ ์ต์ข ์๋ ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์๋ํ๋ ์ค๋ชจํฌ ํ ์คํธ๋ ์คํ ์ด์ง ๋ฐฐํฌ์ ๋ํด ์คํํ ์ ์์ต๋๋ค.
6. ํ๋ก๋์ ๋ฐฐํฌ(์ง์์ ์ ๋ฌ/๋ฐฐํฌ)
์ด์ ๋จ๊ณ์ ์ฑ๊ณต์ ๊ธฐ๋ฐ์ผ๋ก(๊ทธ๋ฆฌ๊ณ ์ง์์ ์ ๋ฌ์ ์ํ ์๋ ์น์ธ ๊ฐ๋ฅ), ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์ด๋ ๋ค์ํ ์ ๋ต์ ํตํด ๋ฌ์ฑํ ์ ์์ต๋๋ค.
- ๋ธ๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ: ๋ ๊ฐ์ ๋์ผํ ํ๋ก๋์ ํ๊ฒฝ์ด ์ ์ง ๊ด๋ฆฌ๋ฉ๋๋ค. ์ ๋ฒ์ ์ ๋นํ์ฑ ํ๊ฒฝ(๋ น์)์ ๋ฐฐํฌ๋๊ณ ํธ๋ํฝ์ด ์ ํ๋ฉ๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ํฝ์ ์ฆ์ ์ด์ ํ๊ฒฝ(ํ๋์)์ผ๋ก ๋ค์ ์ ํํ ์ ์์ต๋๋ค.
- ์นด๋๋ฆฌ์ ๋ฆด๋ฆฌ์ค: ์ ๋ฒ์ ์ ๋จผ์ ์๊ท๋ชจ ์ฌ์ฉ์ ๋๋ ์๋ฒ ํ์ ์งํฉ์ ๋กค์์๋ฉ๋๋ค. ๋ฆด๋ฆฌ์ค๊ฐ ์์ ์ ์ด๋ฉด ๋๋จธ์ง ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ ์ง์ ์ผ๋ก ๋กค์์๋ฉ๋๋ค. ์ด๋ ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ํ์ ์ํํ๋ ๋ฐ ํ์ํฉ๋๋ค.
- ๋กค๋ง ์ ๋ฐ์ดํธ: ์๋ฒ๊ฐ ํ๋์ฉ ์ ๋ฐ์ดํธ๋์ด ๋ฐฐํฌ ํ๋ก์ธ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฐํฌ ์ ๋ต์ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์๋์ ํ์ ์ํ ํ์ฉ ์์ค์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
7. ๋ฐฐํฌ ํ ๋ชจ๋ํฐ๋ง ๋ฐ ๋กค๋ฐฑ
๋ฐฐํฌ ํ์๋ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ด ์ค์ํฉ๋๋ค. Sentry, Datadog ๋๋ New Relic๊ณผ ๊ฐ์ ๋๊ตฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ, ์ค๋ฅ ๋ฐ ์ฌ์ฉ์ ๋์์ ์ถ์ ํ ์ ์์ต๋๋ค. ํ์ ์ด์ ํ์์ ์๋ฆฌ๋๋ก ์๋ํ๋ ๊ฒฝ๊ณ ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
๋กค๋ฐฑ ๋ฉ์ปค๋์ฆ: ์ ์ ์๋๊ณ ์๋ํ๋ ๋กค๋ฐฑ ํ๋ก์ธ์ค๊ฐ ํ์์ ์ ๋๋ค. ๋ฐฐํฌ ํ ์ค์ํ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋๋ฉด ์์คํ ์ ์ต์ํ์ ๊ฐ๋ ์ค์ง ์๊ฐ์ผ๋ก ์ด์ ์์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆด ์ ์์ด์ผ ํฉ๋๋ค.
์: ๋ฒ ๋ฅผ๋ฆฐ์ ํ์ด ์ ๋ฒ์ ์ ๋ฐฐํฌํฉ๋๋ค. ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ ํธ์ฃผ์ ์ฌ์ฉ์๋ก๋ถํฐ ๋ณด๊ณ ๋ JavaScript ์ค๋ฅ๊ฐ ๊ธ์ฆํ ๊ฒ์ ๊ฐ์งํฉ๋๋ค. ์นด๋๋ฆฌ์ ๋ฆด๋ฆฌ์ค ์ ๋ต์ ์ฌ์ฉ์ ์ค 5%๋ง์ด ์ํฅ์ ๋ฐ์์์ ์๋ฏธํฉ๋๋ค. ์๋ํ๋ ๋กค๋ฐฑ ํ๋ก์ธ์ค๋ ๋ฐฐํฌ๋ฅผ ์ฆ์ ๋๋๋ฆฌ๊ณ ํ์ ์ค๋ฅ๋ฅผ ์กฐ์ฌํฉ๋๋ค.
๊ธ๋ก๋ฒ ํ์ ์ํ FRP ๊ตฌํ์ ์ด์
FRP ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ๋ฉด ํนํ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์๊ฒ ์๋นํ ์ด์ ์ด ์์ต๋๋ค.
- ์๋ ๋ฐ ํจ์จ์ฑ ํฅ์: ๋ฐ๋ณต์ ์ธ ์์ ์ ์๋ํํ๋ฉด ๊ฐ ๋ฆด๋ฆฌ์ค์ ์์๋๋ ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ค์ด ๋ ์์ฃผ ๋ฐฐํฌํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋น ๋ฅด๊ฒ ๊ฐ์น๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ค๋ฅ ๊ฐ์ ๋ฐ ํ์ง ํฅ์: ์๋ํ๋ ์ธ์ ์ค๋ฅ์ ๊ฐ๋ฅ์ฑ์ ์ต์ํํฉ๋๋ค. ํ ์คํธ ๋ฐ ๋ฐฐํฌ ๋จ๊ณ๋ฅผ ์ผ๊ด๋๊ฒ ์คํํ๋ฉด ๋์ฑ ์์ ์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ๋ฆด๋ฆฌ์ค๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๊ฐ๋ฐ์ ์์ฐ์ฑ ํฅ์: ๊ฐ๋ฐ์๋ ์๋ ๋ฆด๋ฆฌ์ค ์์ ์ ์์๋๋ ์๊ฐ์ ์ค์ด๊ณ ๊ธฐ๋ฅ ๊ตฌ์ถ์ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํฉ๋๋ค. ์๋ํ๋ ํ ์คํธ์ ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ๋ ๋ฒ๊ทธ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํ์ ๊ฐํ: ํ์คํ๋ ์๋ํ๋ ํ๋ก์ธ์ค๋ ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ํ ๊ตฌ์ฑ์์๊ฒ ๋ช ํํ๊ณ ์ผ๊ด๋ ์ํฌํ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์์ํ ์ ์๋ ๊ฒ๊ณผ ์์คํ ์๋ ๋ฐฉ์์ ์๊ณ ์์ต๋๋ค.
- ๊ฐ์์ฑ ๋ฐ ์ถ์ ๊ฐ๋ฅ์ฑ ํฅ์: CI/CD ํ๋ซํผ์ ๋ชจ๋ ๋ฆด๋ฆฌ์ค์ ๋ํ ๋ก๊ทธ ๋ฐ ๊ธฐ๋ก์ ์ ๊ณตํ๋ฏ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ , ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ์ดํดํ๊ธฐ๊ฐ ์ฝ์ต๋๋ค.
- ๋กค๋ฐฑ ๊ฐ์ํ: ์๋ํ๋ ๋กค๋ฐฑ ์ ์ฐจ๋ ์๋ชป๋ ๋ฆด๋ฆฌ์ค์ ๊ฒฝ์ฐ ์์คํ ์ด ์ฌ์ฉ์ ์ํฅ ์ ์ต์ํํ๋ฉด์ ์์ ์ ์ธ ์ํ๋ก ๋น ๋ฅด๊ฒ ๋๋๋ฆด ์ ์๋๋ก ํฉ๋๋ค.
- ๋น์ฉ ์ ๊ฐ: ์๋ํ ์ค์ ์ ๋ํ ์ด๊ธฐ ํฌ์๊ฐ ์์ง๋ง ๊ฐ๋ฐ์ ์๊ฐ, ์ค๋ฅ ์ฒ๋ฆฌ ๊ฐ์ ๋ฐ ๋น ๋ฅธ ์ ๊ณต์์ ์ฅ๊ธฐ์ ์ธ ์ ๊ฐ ํจ๊ณผ๊ฐ ์ข ์ข ๋น์ฉ๋ณด๋ค ํฝ๋๋ค.
- ํ์ฅ์ฑ: ํ๊ณผ ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ์๋ํ๋ ์์คํ ์ ์๋ ํ๋ก์ธ์ค๋ณด๋ค ํจ์ฌ ํจ๊ณผ์ ์ผ๋ก ํ์ฅ๋ฉ๋๋ค.
FRP์ ์ฃผ์ ๊ธฐ์ ๋ฐ ๋๊ตฌ
FRP ๊ตฌํ์ ์๋ํ๋ ํ์ดํ๋ผ์ธ์ ํ์ฑํ๊ธฐ ์ํด ์ํํ๊ฒ ํตํฉ๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ ์ธํธ์ ์์กดํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ํ์ ๋ฒ์ฃผ์ ์ธ๊ธฐ ์๋ ์์ ๋๋ค.
1. ๋ฒ์ ๊ด๋ฆฌ ์์คํ (VCS)
- Git: ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ฌ์ค์์ ํ์ค์ ๋๋ค.
- ํ๋ซํผ: GitHub, GitLab, Bitbucket, Azure Repos.
2. ์ง์์ ํตํฉ/์ง์์ ์ ๋ฌ(CI/CD) ํ๋ซํผ
- Jenkins: ๊ณ ๋๋ก ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์คํ ์์ค CI/CD ์๋ฒ์ ๋๋ค.
- GitHub Actions: GitHub ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์์ ์ง์ ํตํฉ๋ CI/CD์ ๋๋ค.
- GitLab CI/CD: GitLab ๋ด์ ๋ด์ฅ๋ CI/CD ๊ธฐ๋ฅ์ ๋๋ค.
- CircleCI: ์๋์ ์ฌ์ฉ ํธ์์ฑ์ผ๋ก ์๋ ค์ง ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ CI/CD ํ๋ซํผ์ ๋๋ค.
- Azure Pipelines: ๋ค์ํ ํ๋ซํผ์ ๋ํ CI/CD๋ฅผ ์ ๊ณตํ๋ Azure DevOps์ ์ผ๋ถ์ ๋๋ค.
- Travis CI: ์ธ๊ธฐ ์๋ CI ์๋น์ค๋ก, ์คํ ์์ค ํ๋ก์ ํธ์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
3. ๋น๋ ๋๊ตฌ ๋ฐ ๋ฒ๋ค๋ฌ
- Webpack: ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ก, React ์ํ๊ณ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- Rollup: ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ก, ํจ์จ์ ์ธ ์ฝ๋ ๋ถํ ๋ก ์ธํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
- Vite: ํจ์ฌ ๋น ๋ฅธ ์ฝ๋ ์๋ฒ ์์ ๋ฐ ํซ ๋ชจ๋ ๊ต์ฒด๋ฅผ ์ ๊ณตํ๋ ์ฐจ์ธ๋ ํ๋ก ํธ์๋ ๋น๋ ๋๊ตฌ์ ๋๋ค.
- Parcel: ์ ๋ก ๊ตฌ์ฑ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ๋ค๋ฌ์ ๋๋ค.
4. ํ ์คํธ ํ๋ ์์ํฌ
- ๋จ์ ํ ์คํธ: Jest, Mocha, Jasmine.
- ํตํฉ/E2E ํ ์คํธ: Cypress, Selenium WebDriver, Playwright, Puppeteer.
- ๋ธ๋ผ์ฐ์ ํ ์คํธ ํ๋ซํผ(๊ต์ฐจ ๋ธ๋ผ์ฐ์ /์ฅ์น ํ ์คํธ์ฉ): BrowserStack, Sauce Labs, LambdaTest.
5. ๋ฐฐํฌ ๋๊ตฌ ๋ฐ ์ค์ผ์คํธ๋ ์ด์
- ์ปจํ ์ด๋ํ: Docker(์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ข ์์ฑ ํจํค์ง์ฉ).
- ์ค์ผ์คํธ๋ ์ด์ : Kubernetes(์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๊ท๋ชจ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ).
- ํด๋ผ์ฐ๋ ๊ณต๊ธ์ CLI: AWS CLI, Azure CLI, Google Cloud SDK(ํด๋ผ์ฐ๋ ์๋น์ค์ ๋ฐฐํฌํ๊ธฐ ์ํ).
- ์๋ฒ๋ฆฌ์ค ํ๋ ์์ํฌ: ์๋ฒ๋ฆฌ์ค ํ๋ ์์ํฌ, AWS SAM(S3 ์ ์ ์น ์ฌ์ดํธ์ ๊ฐ์ ์๋ฒ๋ฆฌ์ค ํ๋ก ํธ์๋ ํธ์คํ ๋ฐฐํฌ์ฉ).
- ๋ฐฐํฌ ํ๋ซํผ: Netlify, Vercel, Firebase Hosting, AWS Amplify, GitHub Pages(์ ์ ์ฌ์ดํธ์ ๋ํ ํตํฉ CI/CD๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์).
6. ๋ชจ๋ํฐ๋ง ๋ฐ ์ค๋ฅ ์ถ์
- ์ค๋ฅ ์ถ์ : Sentry, Bugsnag, Rollbar.
- ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง(APM): Datadog, New Relic, Dynatrace, Grafana.
- ๋ก๊น : ELK Stack(Elasticsearch, Logstash, Kibana), Splunk.
FRP ๊ตฌํ: ๋จ๊ณ๋ณ ์ ๊ทผ ๋ฐฉ์
์๋ํ๋ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ก ์ ํํ๋ ค๋ฉด ๊ณํ๊ณผ ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1๋จ๊ณ: ํ์ฌ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค ํ๊ฐ
์๋ํํ๊ธฐ ์ ์ ๊ธฐ์กด ๋ฆด๋ฆฌ์ค ๋จ๊ณ๋ฅผ ๋ช ํํ๊ฒ ๋ฌธ์ํํ๊ณ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ์์ญ์ ์ ํํ ํ์ ํฉ๋๋ค. ํ์ด ๊ฒช๋ ๋ฌธ์ ์ ์ ์ดํดํฉ๋๋ค.
2๋จ๊ณ: ๋ชฉํ ์ํ ์ ์
ํ์๊ฒ ์ด์์ ์ธ ์๋ํ๋ ๋ฆด๋ฆฌ์ค๋ ์ด๋ค ๋ชจ์ต์ผ๊น์? ํธ๋ฆฌ๊ฑฐ, ํ์ดํ๋ผ์ธ์ ๋จ๊ณ, ์คํํด์ผ ํ๋ ํ ์คํธ ๋ฐ ๋ฐฐํฌ ์ ๋ต์ ์ ์ํฉ๋๋ค.
3๋จ๊ณ: ๋๊ตฌ ์ ํ
ํ๋ก์ ํธ์ ๊ธฐ์ ์คํ ๋ฐ ํ์ ์ ๋ฌธ ์ง์์ ๊ฐ์ฅ ์ ํฉํ CI/CD ํ๋ซํผ, ๋น๋ ๋๊ตฌ, ํ ์คํธ ํ๋ ์์ํฌ ๋ฐ ๋ฐฐํฌ ๋ฉ์ปค๋์ฆ์ ์ ํํฉ๋๋ค. ์ธํ๋ผ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฒฝ์ฐ ํด๋ผ์ฐ๋์ ๊ตฌ์ ๋ฐ์ง ์๋ ์๋ฃจ์ ์ ๊ณ ๋ คํฉ๋๋ค.
4๋จ๊ณ: ํ ์คํธ ์๋ํ
์ด๊ฒ์ ์ ๋ขฐํ ์ ์๋ ์๋ํ์ ๊ธฐ๋ณธ์ ๋๋ค. ํฌ๊ด์ ์ธ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ์ฌ ์์ํฉ๋๋ค. ํตํฉ ๋ฐ ์๋ ํฌ ์๋ ํ ์คํธ๋ฅผ ์ ์ง์ ์ผ๋ก ๊ตฌ์ถํฉ๋๋ค. ์ด๋ฌํ ํ ์คํธ๊ฐ ๋น ๋ฅด๊ณ ์์ ์ ์ธ์ง ํ์ธํฉ๋๋ค.
5๋จ๊ณ: CI ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
๋ชจ๋ ์ฝ๋ ์ปค๋ฐ ๋๋ ํ ์์ฒญ ์ ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ๋น๋ํ๊ณ ๋ฆฐํฐ, ์ ์ ๋ถ์ ๋ฐ ๋จ์/ํตํฉ ํ ์คํธ๋ฅผ ์คํํ๋๋ก CI/CD ํ๋ซํผ์ ๊ตฌ์ฑํฉ๋๋ค. ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๋ชฉํ๋ก ํฉ๋๋ค.
6๋จ๊ณ: ๋น๋ ์ํฐํฉํธ ์์ฑ ์๋ํ
๋น๋ ํ๋ก์ธ์ค๊ฐ ์ผ๊ด๋๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํฐํฉํธ๋ฅผ ์์ฑํ๋์ง ํ์ธํฉ๋๋ค. ์ด๋ฅผ CI ํ์ดํ๋ผ์ธ์ ํตํฉํฉ๋๋ค.
7๋จ๊ณ: ์๋ํ๋ ๋ฐฐํฌ ๊ตฌํ
๋น๋ ์ํฐํฉํธ๋ฅผ ์คํ ์ด์ง ๋ฐ/๋๋ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ๋๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํฉ๋๋ค. ๋ ๊ฐ๋จํ ๋ฐฐํฌ ์ ๋ต(์: ๋กค๋ง ์ ๋ฐ์ดํธ)์ผ๋ก ์์ํ๊ณ ์์ ๊ฐ์ด ์ปค์ง์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ๋ ์ ๊ตํ ๋ฐฐํฌ ์ ๋ต(์: ์นด๋๋ฆฌ์ ๋ฆด๋ฆฌ์ค)์ ์ฑํํฉ๋๋ค.
8๋จ๊ณ: ๋ชจ๋ํฐ๋ง ๋ฐ ๋กค๋ฐฑ ํตํฉ
๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ์ค์ ํฉ๋๋ค. ์๋ํ๋ ๋กค๋ฐฑ ์ ์ฐจ๋ฅผ ์ ์ํ๊ณ ํ ์คํธํฉ๋๋ค.
9๋จ๊ณ: ๋ฐ๋ณต ๋ฐ ๊ฐ์
์๋ํ๋ ์ง์์ ์ธ ํ๋ก์ธ์ค์ ๋๋ค. ํ์ดํ๋ผ์ธ์ ์ง์์ ์ผ๋ก ๊ฒํ ํ๊ณ ํ์ผ๋ก๋ถํฐ ํผ๋๋ฐฑ์ ์์งํ๊ณ ์๋, ์์ ์ฑ ๋ฐ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ฐ์ ํ ๊ธฐํ๋ฅผ ์ฐพ์ต๋๋ค. ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ด ์งํํจ์ ๋ฐ๋ผ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ ์งํํด์ผ ํฉ๋๋ค.
FRP์์ ๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ ์ฒ๋ฆฌ
๊ธ๋ก๋ฒ ๋์์ ์ํด FRP๋ฅผ ๊ตฌํํ ๋๋ ๋ช ๊ฐ์ง ํน์ ๊ณ ๋ ค ์ฌํญ์ด ์์ฉํฉ๋๋ค.
- ์๊ฐ๋: ์๋ํ๋ ํ๋ก์ธ์ค๋ ์๊ฐ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐฐํฌ ๋๋ ์ค์ํ ์์ ์ผ์ ์ ์์ฝํ๋ ค๋ฉด ์๋ก ๋ค๋ฅธ ์๊ฐ๋ ๊ฐ์ ์กฐ์ ์ด ํ์ํ ์ ์์ต๋๋ค. CI/CD ๋๊ตฌ๋ ์ข ์ข UTC ๋๋ ํน์ ์๊ฐ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ผ์ ์ ์์ฝํ ์ ์์ต๋๋ค.
- ์ธํ๋ผ: ๋ฐฐํฌ ๋์์ด ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ์ ์์ต๋๋ค(์: CDN, ์์ง ์๋ฒ). ์๋ํ ๋๊ตฌ๊ฐ ์ด๋ฌํ ๋ถ์ฐ๋ ์ธํ๋ผ์ ๋ํ ๋ฐฐํฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
- ํ์งํ ๋ฐ ๊ตญ์ ํ(i18n/l10n): ์์ ์ธ๊ธํ๋ฏ์ด ์ฌ๋ฐ๋ฅธ ์ธ์ด ๋ ๋๋ง, ๋ ์ง/์๊ฐ ํ์ ๋ฐ ํตํ์ ๋ํ ํ ์คํธ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๋ํ๋ ํ ์คํธ๊ฐ ์ด๋ฌํ ์ธก๋ฉด์ ๋ค๋ฃจ๋์ง ํ์ธํฉ๋๋ค.
- ๊ท์ ์ค์ ๋ฐ ๊ท์ : ์ง์ญ๋ง๋ค ๋ค์ํ ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๊ท์ ์ค์ ๊ท์ (์: GDPR, CCPA)์ด ์์ต๋๋ค. ํนํ ํ ์คํธ ํ๊ฒฝ์์ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ๊ด๋ จํ์ฌ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๊ฐ ์ด๋ฌํ ๊ท์ ์ ์ค์ํ๋์ง ํ์ธํฉ๋๋ค.
- ๋คํธ์ํฌ ๋๊ธฐ ์๊ฐ: ๋ค์ํ ์์น์ ์๋ ํ์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ๋๊ธฐ ์๊ฐ์ด ๋น๋ ์๊ฐ ๋๋ ๋ฐฐํฌ ์๋์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ๋น๋ ์์ด์ ํธ ๋๋ ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ํ์ฉํฉ๋๋ค.
- ๋ค์ํ ์ฌ์ฉ์ ๊ธฐ๋ฐ: ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น ํ๊ฒฝ์ ์ดํดํฉ๋๋ค. ์๋ํ๋ ํ ์คํธ ์ ๋ต์ ์ด๋ฌํ ๋ค์์ฑ์ ๋ฐ์ํด์ผ ํฉ๋๋ค.
ํผํด์ผ ํ ์ผ๋ฐ์ ์ธ ํจ์
์ต๊ณ ์ ์๋๋ฅผ ๊ฐ์ง๊ณ ๋ ํ์ FRP๋ฅผ ์ฑํํ ๋ ์ด๋ ค์์ ์ง๋ฉดํ ์ ์์ต๋๋ค.
- ๋ถ์์ ํ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง: ์ ์ ํ ์๋ํ๋ ํ ์คํธ ์์ด ๋ฆด๋ฆฌ์คํ๋ ๊ฒ์ ์ฌ์์ ๋ ์ํผ์ ๋๋ค. ํฌ๊ด์ ์ธ ํ ์คํธ์ ์ฐ์ ์์๋ฅผ ๋ก๋๋ค.
- ๋ชจ๋ํฐ๋ง ๋ฌด์: ๊ฐ๋ ฅํ ๋ชจ๋ํฐ๋ง ์์ด ๋ฐฐํฌํ๋ฉด ์ฌ์ฉ์๊ฐ ๋ณด๊ณ ํ ๋๊น์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์ ์ ์์ต๋๋ค.
- ๋ณต์กํ ์๋ ๋จ๊ณ ์ ์ง: ์ค์ํ ์๋ ๋จ๊ณ๊ฐ ์ง์๋๋ฉด ์๋ํ์ ์ด์ ์ด ์ค์ด๋ญ๋๋ค. ๋ ๋ง์ ์๋ํ๋ฅผ ์ํด ์ง์์ ์ผ๋ก ๋ ธ๋ ฅํฉ๋๋ค.
- ๋๋ฌธ ํ์ดํ๋ผ์ธ ์คํ: CI/CD ํ์ดํ๋ผ์ธ์ ๋ฆด๋ฆฌ์ค ์ง์ ์ด ์๋ ๋ชจ๋ ์๋ฏธ ์๋ ์ฝ๋ ๋ณ๊ฒฝ ์์ ํธ๋ฆฌ๊ฑฐ๋์ด์ผ ํฉ๋๋ค.
- ๋์ ๋ถ์กฑ: ์ ์ฒด ํ์ด ์๋ํ๋ก์ ์ ํ์ ์ดํดํ๊ณ ์ง์ํ๋์ง ํ์ธํฉ๋๋ค.
- ๊ณผ๋ํ ์์ง๋์ด๋ง: ๊ฐ๋จํ๊ณ ์๋ํ๋ ํ์ดํ๋ผ์ธ์ผ๋ก ์์ํ๊ณ ํ์์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ๋ณต์ก์ฑ์ ์ถ๊ฐํฉ๋๋ค. ์ฒ์๋ถํฐ ๋ชจ๋ ๊ฒ์ ์๋ํํ๋ ค๊ณ ํ์ง ๋ง์ญ์์ค.
ํ๋ก ํธ์๋ ๋ฆด๋ฆฌ์ค์ ๋ฏธ๋
Frontend Release Please๋ ์ ์ ์ธ ๊ฐ๋ ์ด ์๋๋ผ ์งํ์ ๋๋ค. ํ๋ก ํธ์๋ ๊ธฐ์ ๊ณผ ๋ฐฐํฌ ์ ๋ต์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ FRP๋ ๊ณ์ ์ ์ํ ๊ฒ์ ๋๋ค. ๋ค์์ ์์ํ ์ ์์ต๋๋ค.
- AI ๊ธฐ๋ฐ ํ ์คํธ ๋ฐ ๋ชจ๋ํฐ๋ง: AI ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ฌ์ฉ์๊ฐ ์ํฅ์ ๋ฐ๊ธฐ ์ ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ๋ฆด๋ฆฌ์ค ์ ๋ต์ ์ต์ ํํ๋ ๋ฐ ๋ ํฐ ์ญํ ์ ํ ๊ฒ์ ๋๋ค.
- ์๋ฒ๋ฆฌ์ค ๋ฐ ์์ง ์ปดํจํ ๋ฐฐํฌ: ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ ๋ฐ ์์ง ์ปดํจํ ์ ์ฑํ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋์ฑ ์ ๊ตํ๊ณ ๋์ ์ธ ๋ฐฐํฌ ์๋ํ๊ฐ ํ์ํฉ๋๋ค.
- ํ๋ก ํธ์๋์ฉ GitOps: ์ ์ธ์ ์ธํ๋ผ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ํ์ ๋ํ ๋จ์ผ ์ ๋ณด ์์ค์ธ Git์ด ์๋ GitOps ์์น์ ์ ์ฉํ๋ ๊ฒ์ด ํ๋ก ํธ์๋ ๋ฐฐํฌ์ ๋์ฑ ๋ณดํธํ๋ ๊ฒ์ ๋๋ค.
- Shift-Left ๋ณด์: ํ์ดํ๋ผ์ธ ์ด๊ธฐ์ ๋ณด์ ๊ฒ์ฌ๋ฅผ ํตํฉํ๋ ๊ฒ(DevSecOps)์ด ํ์ค ๊ดํ์ด ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
Frontend Release Please๋ ํ๋ก ํธ์๋ ํ์ด ์ํํธ์จ์ด ๋ฆด๋ฆฌ์ค๋ผ๋ ์ค์ํ ์์ ์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ธ ๋ณํ๋ฅผ ๋ํ๋ ๋๋ค. ์๋ํ๋ฅผ ์์ฉํ๊ณ ๊ฐ๋ ฅํ ํ ์คํธ๋ฅผ ํตํฉํ๊ณ ์ต์ CI/CD ๋๊ตฌ๋ฅผ ํ์ฉํจ์ผ๋ก์จ ํ์ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ด๋ฉฐ ํจ์จ์ ์ธ ๋ฐฐํฌ๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ ์ด ์๋ํ๋ ์์ฐ์ฑ ํฅ์๋ฟ๋ง ์๋๋ผ ๋ค์ํ ์์ฅ์์ ๊ณ ํ์ง ์ฌ์ฉ์ ๊ฒฝํ์ ์ผ๊ด๋๊ฒ ์ ๊ณตํ๋ ๋ฐ ํ์ํ ์ฌํญ์ ๋๋ค. FRP ์ ๋ต์ ํฌ์ํ๋ ๊ฒ์ ํ์ ๋ฏผ์ฒฉ์ฑ, ์ ํ์ ์์ ์ฑ ๋ฐ ์ฌ์ฉ์ ๋ง์กฑ๋์ ๋ํ ํฌ์์ ๋๋ค.
์ค๋ ์๋ํํ ์ ์๋ ์๋ ๋จ๊ณ๋ฅผ ํ๋ ์๋ณํ์ฌ ์์ํ์ญ์์ค. ์์ ํ ์๋ํ๋ ํ๋ก ํธ์๋ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ก ๊ฐ๋ ์ฌ์ ์ ์ ์ง์ ์ด์ง๋ง ๊ทธ ๋ณด์์ ์๋นํฉ๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ด์ ๋ํด ๊ฐ์ฌํ ๊ฒ์ ๋๋ค.