React ๋ฒ์ ๊ด๋ฆฌ์ ์ค์์ฑ๊ณผ ๊ธ๋ก๋ฒ ๊ฐ๋ฐํ์ ์ํ ์ ๋ฐ์ดํธ ๊ด๋ฆฌ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฌ๋ ์๊ฒ ๋ค๋ฃน๋๋ค.
React ๋ฒ์ ํ์: ์ ๋ฐ์ดํธ ์ดํด ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ธ๋ก๋ฒ ๊ฐ์ด๋
๊ธ๋ณํ๋ ์น ๊ฐ๋ฐ ์ธ๊ณ์์ ์ต์ ์ํํธ์จ์ด ๋ฒ์ ์ ๋ฐ๋ผ์ก๋ ๊ฒ์ ๋จ์ํ ์ ํ์ ์ข๋ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ ๋ต์ ํ์ ๊ณผ์ ์ ๋๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํด ๋๋ฆฌ ์ฑํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React์ ๊ฒฝ์ฐ, ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ดํดํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฑ๋ฅ, ๋ณด์, ํ์ ์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํ๋ฉฐ, ํนํ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ๊ฐ๋ฐํ์๊ฒ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ React ๋ฒ์ ๊ด๋ฆฌ์ ๋ํ ๊ถ๊ธ์ฆ์ ํด์ํ๊ณ ๊ทธ ์ค์์ฑ์ ์ค๋ช ํ๋ฉฐ, ์ ์ธ๊ณ ๊ฐ๋ฐ์์ ํ์ ์ํ ์ค์ฉ์ ์ธ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
React์ ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ(SemVer) ์ดํดํ๊ธฐ
React๋ ๋๋ถ๋ถ์ ํ๋ ์ํํธ์จ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ(SemVer)๋ฅผ ๋ฐ๋ฆ
๋๋ค. ์ด ๋๋ฆฌ ์ธ์ ๋ ํ์ค์ ๋ฒ์ ๋ฒํธ๋ฅผ ํ ๋นํ๊ณ ์ฆ๊ฐ์ํค๋ ๋ฐฉ๋ฒ์ ๊ท์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ SemVer ๋ฌธ์์ด์ MAJOR.MINOR.PATCH
์ ๊ฐ์ต๋๋ค.
- MAJOR ๋ฒ์ : ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ์ด ์์ ๋ ์ฆ๊ฐํฉ๋๋ค. ์ด๋ฌํ ์ ๋ฐ์ดํธ๋ ์ข ์ข ๊ฐ๋ฐ์๊ฐ ๋ธ๋ ์ดํน ์ฒด์ธ์ง(breaking change)์ ์ ์ํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํด์ผ ํฉ๋๋ค.
- MINOR ๋ฒ์ : ํ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ์ฆ๊ฐํฉ๋๋ค. ๊ธฐ์กด ์ฝ๋๋ฅผ ์์์ํค์ง ์์ผ๋ฉด์ ์๋ก์ด ๊ธฐ๋ฅ์ด ๋์ ๋ฉ๋๋ค.
- PATCH ๋ฒ์ : ํ์ ํธํ์ฑ์ ์ ์งํ๋ ๋ฒ๊ทธ ์์ ์ด ์์ ๋ ์ฆ๊ฐํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์์ ๊ท๋ชจ์ ๋ ผ-๋ธ๋ ์ดํน(non-breaking) ๋ณ๊ฒฝ์ ๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐํ๋ ๋ฒ์ ๊ด๋ฆฌ ์ ๊ทผ ๋ฐฉ์์ ํตํด ๊ฐ๋ฐ์๋ ์
๋ฐ์ดํธ์ ์ํฅ์ ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ก์ ํธ๊ฐ React ๋ฒ์ 18.2.0
์ ์์กดํ๊ณ ์์ ๋, 18.3.0
์ผ๋ก์ ์ ์ฌ์ ์
๋ฐ์ดํธ๊ฐ MINOR ๋ฒ์ ์ด๋ผ๋ ๊ฒ์ ์๋ฉด ํ์ ํธํ์ฑ์ ๊ฐ์ถ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๊ฒ์์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋๋ก 19.0.0
์ผ๋ก์ ์
๋ฐ์ดํธ๋ MAJOR ๋ฒ์ ์ ์๋ฏธํ๋ฉฐ, ์ ์คํ ๊ฒํ ์ ๋ง์ด๊ทธ๋ ์ด์
์ด ํ์ํ ์ ์ฌ์ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๊ฐ ์์์ ์๋ฆฝ๋๋ค.
๊ธ๋ก๋ฒ ํ์๊ฒ React ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ค์ํ ์ด์
์ฌ๋ฌ ๋๋ฅ๊ณผ ์๊ฐ๋์ ๊ฑธ์ณ ๋ถ์ฐ๋ ๊ฐ๋ฐํ์๊ฒ React ๋ฒ์ ์ ๋ํ ์ผ๊ด๋ ์ดํด์ ๊ด๋ฆฌ๋ ๋ฌด์๋ณด๋ค ์ค์ํฉ๋๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ํ๋ก์ ํธ ์์ ์ฑ ๋ฐ ์์ธก ๊ฐ๋ฅ์ฑ ์ ์ง
๋์ผํ ์ฝ๋๋ฒ ์ด์ค์์ ์์ ํ์ง๋ง ์๋ก ๋ค๋ฅธ React ๋ฒ์ ์ ์ฌ์ฉํ๋ ํ์ ๋ถ์ผ์น, ๋ฒ๊ทธ, ์์ธก ๋ถ๊ฐ๋ฅํ ๋์์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ ํ์ ๊ณผ ์ง์์ ์ธ ํตํฉ์ด ํต์ฌ์ธ ๊ธ๋ก๋ฒ ํ๊ฒฝ์์ ํนํ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ํน์ React ๋ฒ์ ๋๋ ๊ด๋ฆฌ๋๋ ๋ฒ์ ๋ฒ์๋ฅผ ํ์คํํจ์ผ๋ก์จ ํ์ ๋ชจ๋ ๊ตฌ์ฑ์์ด ๋์ผํ API์ ๋์์ผ๋ก ์์ ํ๋๋ก ๋ณด์ฅํ์ฌ ์์ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
2. ์ํํ ํ์ ์ด์ง
์ฌ๋ฌ ์ง์ญ์ ๊ฐ๋ฐ์๋ค์ด ํ๋ก์ ํธ์ ๊ธฐ์ฌํ ๋, React๋ฅผ ํฌํจํ ์์กด์ฑ ๊ด๋ฆฌ์ ๋ํ ํต์ผ๋ ์ ๊ทผ ๋ฐฉ์์ด ํ์์ ์ ๋๋ค. ํ ํ์์ด ์กฐ์จ ์์ด React๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ์ ๋ฐํ์ฌ ์งํ์ ์ค๋จ์ํค๊ณ ๋ง์ฐฐ์ ์ผ์ผํฌ ์ ์์ต๋๋ค. ๋ช ํํ ์ํต ์ฑ๋๊ณผ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ํจ๊ณผ์ ์ธ ๊ธ๋ก๋ฒ ํ์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
3. ์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ์ฑ๋ฅ ํฅ์ ํ์ฉ
React ๊ฐ๋ฐํ์ ์ง์์ ์ผ๋ก ํ์ ํ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฅ, ์ฑ๋ฅ ์ต์ ํ, ๋ณด์ ํจ์น๋ฅผ ๋์ ํ๊ณ ์์ต๋๋ค. ์ต์ ๋ฒ์ ์ ์ ์งํ๋ฉด ํ์ ์ด๋ฌํ ๋ฐ์ ์ ํํ์ ๋๋ฆด ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, React 18์ ๋์ ๋ ๋์์ฑ ๋ชจ๋(Concurrent Mode)์ ์๋ฒ ์ปดํฌ๋ํธ(Server Components)๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์๋ ์ค์ํ ์ํคํ ์ฒ ๊ฐ์ ์ ๊ฐ์ ธ์์ผ๋ฉฐ, ์ด๋ ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ฐธ์ฌ์ํค๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
4. ๋ณด์ ๋ฐ ๊ท์ ์ค์ ๋ณด์ฅ
์ค๋๋ ๋ฒ์ ์ ์ํํธ์จ์ด๋ ๋ณด์ ์ทจ์ฝ์ ์ ํฌํจํ ์ ์์ต๋๋ค. React๋ฅผ ์ต์ ์์ ๋ฒ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ์ ์ฌ์ ์ธ ์ํ์ผ๋ก๋ถํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํธํ๋ ์ค์ํ ๋จ๊ณ์ ๋๋ค. ๋ค์ํ ๊ท์ ํ๋ ์์ํฌ ํ์์ ์ด์๋๋ ๊ธ๋ก๋ฒ ๊ธฐ์ ์๊ฒ ๋ณด์ ๋ฐ ๊ท์ ์ค์ ์ ์ง๋ ํํํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
5. ๋ณต์กํ ์ํ๊ณ ๋ด ์์กด์ฑ ๊ด๋ฆฌ
React๋ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋๊ตฌ, ํ๋ ์์ํฌ ์ํ๊ณ์ ์ผ๋ถ์ ๋๋ค. ๋ค๋ฅธ React ๋ฒ์ ์ ๋ค๋ฅธ ์์กด์ฑ๊ณผ ํน์ ํธํ์ฑ ์๊ตฌ์ฌํญ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ๋ชจ๋ ์ํธ ์ฐ๊ฒฐ๋ ๋ถ๋ถ๋ค์ด ์๋ก ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์กฐํ๋กญ๊ฒ ์๋ํ๋๋ก ๋ณด์ฅํ๋ ค๋ฉด ๋ถ์ง๋ฐํ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ฃผ์ React ๋ฒ์ ๊ณผ ๊ทธ ์ค์์ฑ
React์ ์ค์ถ์ ์ธ ๋ฒ์ ๋ค๊ณผ ๊ทธ๋ค์ด ๊ฐ์ ธ์จ ๋ฐ์ , ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ ๊ดํ์ ๋ฏธ์น ์ํฅ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
React 16.x ์๋ฆฌ์ฆ: ํ๋ React์ ๊ธฐ์ด
React 16 ์๋ฆฌ์ฆ๋ ํ๋ React ๊ฐ๋ฐ์ ์ด์์ ์ด๋ฃจ๋ ๋ช ๊ฐ์ง ํต์ฌ ๊ธฐ๋ฅ์ ๋์ ํ ์ค์ํ ์ด์ ํ์์ต๋๋ค.
- ์๋ฌ ๋ฐ์ด๋๋ฆฌ(Error Boundaries): ์์ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ด๋์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฌ๋ฅผ ํฌ์ฐฉํ๊ณ , ํด๋น ์๋ฌ๋ฅผ ๊ธฐ๋กํ๋ฉฐ, ์ ์ฒด ์ฑ์ด ์ถฉ๋ํ๋ ๋์ ๋์ฒด UI๋ฅผ ํ์ํ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ด๋ ์๊ธฐ์น ์์ ์๋ฌ๊ฐ ๋ ๋์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ณต์กํ ๊ธ๋ก๋ฒ ๋ฐฐํฌ ํ๊ฒฝ์์ ํนํ ํ๋ ฅ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ํฌํธ(Portals): ๋ถ๋ชจ ์ปดํฌ๋ํธ์ DOM ๊ณ์ธต ์ธ๋ถ์ ์๋ DOM ๋ ธ๋๋ก ์์์ ๋ ๋๋งํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ๋ชจ๋ฌ, ํดํ ๋ฐ ์ปดํฌ๋ํธ์ DOM ๊ตฌ์กฐ๋ฅผ ๋ฒ์ด๋์ผ ํ๋ ๊ธฐํ UI ์์์ ์ ์ฉํฉ๋๋ค.
- ํ๋๊ทธ๋จผํธ(Fragments): DOM์ ์ถ๊ฐ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์์ ๋ชฉ๋ก์ ๊ทธ๋ฃนํํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ ๊นจ๋ํ DOM ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ๊ฐ์ ์ ์ผ๋ก ํด์ธ ์ฌ์ฉ์์ ์ฑ๋ฅ๊ณผ ์ ๊ทผ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ํ
(Hooks) (React 16.8์์ ๋์
): ์๋ง๋ ๊ฐ์ฅ ํ์ ์ ์ธ ๊ธฐ๋ฅ์ผ ํ
(
useState
,useEffect
๋ฑ)์ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ์ด์ ์ ํด๋์ค ์ปดํฌ๋ํธ์์๋ง ๊ฐ๋ฅํ๋ ์ํ ๋ฐ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ์ปดํฌ๋ํธ ๋ก์ง์ ํฌ๊ฒ ๊ฐ์ํํ๊ณ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ํฅ์์์ผ, ๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ ๋ค์ํ ๊ธ๋ก๋ฒ ํ์๊ฒ ํฐ ์ด์ ์ ์ ๊ณตํ์ต๋๋ค.
React 17.x ์๋ฆฌ์ฆ: "์๋ก์ด ๊ธฐ๋ฅ ์๋" ๋ฆด๋ฆฌ์ค
React 17์ ์ ์ง์ ์ ๊ทธ๋ ์ด๋์ ๋ค๋ฅธ React ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฅํ๋ ๊ธฐ๋ฅ ๋ฑ, ๋ฏธ๋์ ๋ณํ์ ๋๋นํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ ๋ ํนํ ๋ฆด๋ฆฌ์ค์์ต๋๋ค. ์๋ก์ด ๊ณต๊ฐ API๋ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ๋์ ํ์ง๋ ์์์ง๋ง, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋์ ๋ฏธ์น๋ ์ํฅ์ ์๋นํฉ๋๋ค. ์ด๋ ๋ฏธ๋์ ์ฃผ์ ๋ฒ์ ์ ๋ ์ํํ๊ฒ ์ฑํํ ์ ์๋ ๊ธฐ๋ฐ์ ๋ง๋ จํ์ผ๋ฉฐ, ์ด๋ ๋๊ท๋ชจ ๋ถ์ฐ ์กฐ์ง์ ํฐ ๋์์ด ๋ฉ๋๋ค.
React 18.x ์๋ฆฌ์ฆ: ๋์์ฑ๊ณผ ์ฑ๋ฅ
React 18์ ๋์์ฑ ๋ ๋๋ง(concurrent rendering)์ผ๋ก์ ์ค์ํ ์ ํ์ ์๋ฏธํ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ํตํด React๋ ์ฌ๋ฌ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ๋์์ ์์ ํ ์ ์์ผ๋ฉฐ, ๋ ์๊ธํ ์ ๋ฐ์ดํธ๋ณด๋ค ์๊ธํ ์ ๋ฐ์ดํธ(์: ์ฌ์ฉ์ ์ ๋ ฅ)๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์๋ ๋ฐฐ์น(Automatic Batching): ์ด์ React๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ, ํ์์์ ๋ฐ ๊ธฐํ ๋น๋๊ธฐ ์์ ๋ด์์ ์ฌ๋ฌ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ์ผ๊ด ์ฒ๋ฆฌํ์ฌ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ์ด๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ํนํ ์ ์ฉํฉ๋๋ค.
- ์๋ก์ด API:
createRoot
,startTransition
,useDeferredValue
,useTransition
์ ๊ฐ๋ฐ์๊ฐ ๋์์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ก์ด API์ ๋๋ค. - ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ํ Suspense: ์์ง ๋ฐ์ ์ค์ด์ง๋ง, Suspense๋ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ ๋ก๋ฉ์ "๊ธฐ๋ค๋ฆฌ๊ฒ" ํ๊ณ ๊ทธ ๋์ ๋์ฒด UI๋ฅผ ๋ ๋๋งํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์์ผ ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- React ์๋ฒ ์ปดํฌ๋ํธ (RSC): ์ด๊ธฐ์ ์คํ์ ๊ธฐ๋ฅ์ผ๋ก ๋์ ๋ RSC๋ ์ปดํฌ๋ํธ๊ฐ ์๋ฒ์์ ๋ ๋๋ง๋๋๋ก ํ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ์ค์ด๋ ํจ๋ฌ๋ค์ ์ ํ์ ๋๋ค. ์ด๋ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๋๋ฅผ ๋์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ผ๋ฉฐ, ํนํ ์๋ฒ์์ ์ง๋ฆฌ์ ์ผ๋ก ๋ฉ๋ฆฌ ๋จ์ด์ง ์์น์ ์ฌ์ฉ์์๊ฒ ์ค์ํฉ๋๋ค.
์์: ๊ธ๋ก๋ฒ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ์์ํด ๋ณด์ธ์. React 18์ startTransition
์ ์ฌ์ฉํ๋ฉด, ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ก๋ฉ๋๋ ๋์ ์ฌ์ฉ์์ ๊ฒ์์ด๋ ์ฆ์ ์
๋ฐ์ดํธ๋ ์ ์์ต๋๋ค. UI๋ ๋ฐ์์ฑ์ ์ ์งํ์ฌ ์ฌ๋ฌ ๊ตญ๊ฐ์์ ํํ ๋ฐ์ํ๋ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ด ๊ธธ๋๋ผ๋ ๊ธ์ ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
๋ฏธ๋์ React ๋ฒ์ (React 19 ์ด์)
React ํ์ ์ง์์ ์ผ๋ก ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์์ ์ ํ๊ณ ์์ต๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฆด๋ฆฌ์ค ์ธ๋ถ ์ ๋ณด๋ ๋ณ๊ฒฝ๋ ์ ์์ง๋ง, ์ถ์ธ๋ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์์ ์ถ๊ฐ์ ์ธ ํฅ์์ ๊ฐ๋ฆฌํค๊ณ ์์ต๋๋ค.
- ์๋ฒ ์ปดํฌ๋ํธ์ ์ฑ์: ์๋ฒ ์ปดํฌ๋ํธ์ ๋ํ ๋ ๊ฐ๋ ฅํ ์ง์๊ณผ ์ฑํ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
- ์น ํ์ค๊ณผ์ ๋ ๋์ ํตํฉ: React๋ฅผ ๋ค์ดํฐ๋ธ ์น API์ ๋ ๊ธด๋ฐํ๊ฒ ์ฐ๊ณํฉ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ: React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํ ์ง์์ ์ธ ์์ .
- ๊ฐ๋ฐ์ ๊ฒฝํ ๊ฐ์ : ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํฉ๋๋ค.
๊ธ๋ก๋ฒ ํ์์ React ์ ๋ฐ์ดํธ ๊ด๋ฆฌ ์ ๋ต
React ๋ฒ์ ์ ๋ฐ์ดํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ฉด, ํนํ ๊ตญ์ ์ ์ธ ํ์ ๊ฒฝ์ฐ ์ฌ์ ์๋ฐฉ์ ์ด๊ณ ํ๋ ฅ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
1. ๋ช ํํ ๋ฒ์ ๊ด๋ฆฌ ์ ์ฑ ์๋ฆฝ
ํ์ด ์ธ์ ์ด๋ป๊ฒ ์๋ก์ด React ๋ฒ์ ์ ์ฑํํ ์ง ์ ์ํ์ญ์์ค. ์ต์ ์์ ๋ฆด๋ฆฌ์ค๋ก ์ฆ์ ์ ๊ทธ๋ ์ด๋ํ ๊ฒ์ธ๊ฐ์? ๋ช ๊ฐ์ ํจ์น ๋ฒ์ ์ด ๋์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆด ๊ฒ์ธ๊ฐ์? ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฑ ์์ง ์ ๋ดํ์ด ์์ ๊ฒ์ธ๊ฐ์? ์ด ์ ์ฑ ์ ๋ฌธ์ํํ๊ณ ๋ชจ๋ ํ์์ด ์์น์ ๊ด๊ณ์์ด ์ด๋ฅผ ์ธ์งํ๋๋ก ํ์ญ์์ค.
2. ํจํค์ง ๊ด๋ฆฌ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๊ธฐ
npm์ด๋ Yarn๊ณผ ๊ฐ์ ๋๊ตฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์กด์ฑ ๊ด๋ฆฌ์ ํ์์ ์
๋๋ค. ๋ชจ๋ ํ์์ด ๋์ผํ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๊ด๋ ๊ตฌ์ฑ์ ๊ฐ์ถ๋๋ก ํ์ญ์์ค. ๋ฝ ํ์ผ(package-lock.json
๋๋ yarn.lock
)์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฌ๋์ด ์ ํํ ๋์ผํ ์์กด์ฑ ๋ฒ์ ์ ์ค์นํ๋๋ก ๋ณด์ฅํ์ฌ ์ฌ๋ฌ ์ง๋ฆฌ์ ์์น์์ ๋ฐ์ํ๋ "๋ด ์ปดํจํฐ์์๋ ๋๋๋ฐ" ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ์ญ์์ค.
3. ๊ฒฌ๊ณ ํ ํ ์คํธ ์ ๋ต ๊ตฌํ
์ฒ ์ ํ ํ ์คํธ๋ ๋น์ ์ ์์ ๋ง์ ๋๋ค. React ์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ ๋ค์์ ์๋ฏธํฉ๋๋ค.
- ๋จ์ ํ ์คํธ(Unit Tests): ๊ฐ๋ณ ์ปดํฌ๋ํธ์ ํจ์๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
- ํตํฉ ํ ์คํธ(Integration Tests): ์ ๋ฐ์ดํธ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ถ๋ถ์ด ํจ๊ป ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
- ์๋ํฌ์๋ (E2E) ํ ์คํธ: ์ค์ ์ฌ์ฉ์ ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ฌ ํ๋ก๋์ ๊ณผ ์ ์ฌํ ํ๊ฒฝ์์ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํฉ๋๋ค.
- ์ฑ๋ฅ ํ ์คํธ: ํนํ ์ ์ธ๊ณ์ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ณ ๋ คํ์ฌ ์ ๋ฐ์ดํธ ์ ํ์ ์ฃผ์ ์ฑ๋ฅ ์งํ(์: ๋ก๋ ์๊ฐ, ๋ฐ์์ฑ)๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
๋ชจ๋ ์๊ฐ๋์ ์ ์ฌ์ ์ผ๋ก ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ์๋ ํ ์คํธ๋ ๋นํ์ค์ ์ผ ์ ์์ผ๋ฏ๋ก, ๊ธ๋ก๋ฒ ํ์๊ฒ๋ ์๋ํ๋ ํ ์คํธ๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
4. ๋จ๊ณ์ ๋ฐฐํฌ ๋ฐ ์นด๋๋ฆฌ ๋ฆด๋ฆฌ์ค
๋น ๋ฑ ๋ฐฉ์์ ๋ฆด๋ฆฌ์ค ๋์ ์ ์ง์ ์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์นด๋๋ฆฌ ๋ฆด๋ฆฌ์ค๋ฅผ ํตํด ์๋ก์ด ๋ฒ์ ์ ์์์ ์ฌ์ฉ์(์: ๋ด๋ถ ์ง์ ๋๋ ํน์ ์ง์ญ์ ์ฌ์ฉ์)์๊ฒ ๋ฐฐํฌํ์ฌ ๊ด๋ฒ์ํ ๋ฆด๋ฆฌ์ค ์ ์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ์ฌ์ ์ธ ๋ฌธ์ ์ ์ํฅ์ ์ต์ํํ๊ณ ๋ค์ํ ์ฌ์ฉ์ ์ธ๊ทธ๋จผํธ๋ก๋ถํฐ ๊ท์คํ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
5. CI/CD ํ์ดํ๋ผ์ธ ํ์ฉ
์ง์์ ์ธ ํตํฉ ๋ฐ ์ง์์ ์ธ ๋ฐฐํฌ(CI/CD) ํ์ดํ๋ผ์ธ์ ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋ฐ ํ์์ ์ ๋๋ค. React ๋ฒ์ ํ์ธ ๋ฐ ์๋ํ๋ ํ ์คํธ๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ์ญ์์ค. ์ด๋ ์์กด์ฑ ์ ๋ฐ์ดํธ๋ฅผ ํฌํจํ ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋์ผ๋ก ๊ฒ์ฆ๋๋๋ก ๋ณด์ฅํ์ฌ, ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ํ์์๊ฒ ์ผ๊ด๋ ํ์ง ๊ฒ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
6. ์ํต ๋ฐ ์ง์ ๊ณต์ ์ ์ง
์ด๋ฆฐ ์ํต ์ฑ๋์ ๊ธ๋ก๋ฒ ํ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค. Slack, Microsoft Teams ๋๋ ์ ์ฉ ํ๋ก์ ํธ ๊ด๋ฆฌ ์ํํธ์จ์ด์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ ์ ๋ฐ์ดํธ, ์ ์ฌ์ ์ธ ๊ณผ์ ๋ฐ ํ์ต ๋ด์ฉ์ ๋ ผ์ํ์ญ์์ค. ๋น๋๊ธฐ์ ํ ๋ก ์ด๋ ๋ นํ๋ ์ ๋ฐ์ดํธ์ผ์ง๋ผ๋ ์ ๊ธฐ์ ์ธ ๋๊ธฐํ ํ์๋ ๋ชจ๋๊ฐ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ๋จ๊ณ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ๋ฌธ์๋ฅผ ๊ณต์ ํ๋ ๊ฒ๋ ํต์ฌ์ ๋๋ค.
7. React์ ๋ก๋๋งต ๋ฐ ์ง์ ์ค๋จ(Deprecations) ์ ๋ณด ํ์ ํ๊ธฐ
๊ณต์ React ๋ธ๋ก๊ทธ, GitHub ์ ์ฅ์ ๋ฐ ์ปค๋ฎค๋ํฐ ํ ๋ก ์ ํ๋ก์ฐํ์ฌ ์์ ๋ ๋ณ๊ฒฝ ์ฌํญ, ์ง์ ์ค๋จ๋ ๊ธฐ๋ฅ ๋ฐ ๊ถ์ฅ ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ผ์ญ์์ค. ์์ผ๋ก ๋์ฌ ๋ด์ฉ์ ์ดํดํ๋ฉด ํ์ด ์ฌ์ ์ ์ค๋นํ์ฌ ์ ๋ฒ์ ์ผ๋ก์ ์ ํ์ ๋ ์ํํ๊ณ ๋ ๋ฐฉํด๋ฐ๋๋ก ๋์ธ ์ ์์ต๋๋ค.
8. ์ฅ๊ธฐ ์ง์(LTS) ์ ๋ต ๊ณ ๋ ค
React ์์ฒด๋ ์ผ๋ถ ๋ฐฑ์๋ ํ๋ ์์ํฌ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก LTS ๋ฒ์ ์ ์ ๊ณตํ์ง ์์ง๋ง, ์กฐ์ง์ ํนํ ์ค์ํ ๋ ๊ฑฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ํน์ ์ฃผ์ ๋ฒ์ ์ ์ผ์ ๊ธฐ๊ฐ ๋์ ์ ์งํ๋ ์ ์ฑ ์ ์ฑํํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋ณด์ ์ ๋ฐ์ดํธ์ ์ด์ ๊ณผ ๋น๊ตํ์ฌ ์ ์คํ๊ฒ ๊ณ ๋ ค๋์ด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๊ณผ์ ์ ๊ทน๋ณต ๋ฐฉ๋ฒ
๊ธ๋ก๋ฒ ํ์ ๋ฒ์ ๊ด๋ฆฌ์ ๊ด๋ จํ์ฌ ๋ ํนํ ๊ณผ์ ์ ์ง๋ฉดํฉ๋๋ค.
๊ณผ์ : ๋คํธ์ํฌ ์ง์ฐ ๋ฐ ๋์ญํญ
์ํฅ: ์์กด์ฑ ๋ค์ด๋ก๋ ์๋ ์ ํ, ํ์ ๋๊ตฌ ๋ฌธ์ , ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์์ ์ฑ๋ฅ ํ ์คํธ ์ด๋ ค์.
ํด๊ฒฐ์ฑ : ํจํค์ง ๊ด๋ฆฌ์ ์บ์ฑ์ ํ์ฉํ๊ณ , ๋ ๋น ๋ฅธ ์ก์ธ์ค๋ฅผ ์ํด ๋น๊ณต๊ฐ npm ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ณ ๋ คํ๋ฉฐ, ๋ค์ํ ๋คํธ์ํฌ ์๋๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ฐ์ ์ํฉ๋๋ค. ์ฌ๋ฌ ์ง์ญ์ ๋ํ ์ฑ๋ฅ ๊ธฐ๋์น๋ฅผ ๋ฌธ์ํํ๋ ๊ฒ๋ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ณผ์ : ์๊ฐ๋ ์ฐจ์ด
์ํฅ: ๋๊ธฐ์ ์ํต์ ์ด๋ ค์, ์์ฌ ๊ฒฐ์ ์ง์ฐ, ํ ์คํธ ๋ฐ ๋ฆด๋ฆฌ์ค ์ผ์ ์กฐ์ ์ ์ด๋ ค์.
ํด๊ฒฐ์ฑ : ๋น๋๊ธฐ์ ์ํต ๋๊ตฌ์ ์ํฌํ๋ก์ฐ๋ฅผ ์ฑํํฉ๋๋ค. ๊ฒฐ์ ์ฌํญ๊ณผ ์คํ ํญ๋ชฉ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํฉ๋๋ค. ๊ฐ๋ฅํ ํ ๋ง์ ํ์์ด ๊ฒน์น๋ ํต์ฌ ํ์ ์๊ฐ์ ์ ํ๊ณ , ์ค์ํ ์ ๋ณด๊ฐ ๊ณต์ ์ง์ ๋ฒ ์ด์ค์์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ณผ์ : ๋ฌธํ ๋ฐ ์ํต ์คํ์ผ
์ํฅ: ์๊ตฌ ์ฌํญ, ํผ๋๋ฐฑ, ๊ธฐ์ ์ ๋ ผ์์์์ ์คํด.
ํด๊ฒฐ์ฑ : ๋ค์ํ ์ํต ์คํ์ผ์ ์กด์คํ๋ ํฌ์ฉ์ ์ธ ํ๊ฒฝ์ ์กฐ์ฑํฉ๋๋ค. ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ธ์ด ์ฌ์ฉ์ ์ฅ๋ คํ๊ณ , ์ดํด๋๋ฅผ ์์ฃผ ํ์ธํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ด๋ฌธํ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ํ ๊ต์ก์ ์ ๊ณตํฉ๋๋ค.
๊ณผ์ : ๋ค์ํ ๊ธฐ์ ์ธํ๋ผ
์ํฅ: ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ, ์ด์ ์ฒด์ , ํ๋์จ์ด ์ฑ๋ฅ์ ์ฐจ์ด.
ํด๊ฒฐ์ฑ : Docker์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฅํ ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ํ์คํํฉ๋๋ค. ๋ก์ปฌ ์ฐจ์ด๋ฅผ ์ถ์ํํ๋ ์ผ๊ด๋ ํ๊ฒฝ์์ ์คํ๋๋ CI/CD ํ์ดํ๋ผ์ธ์ ์๋ํ๋ ํ ์คํธ์ ํฌ๊ฒ ์์กดํฉ๋๋ค.
๊ฒฐ๋ก : ๊ธ๋ก๋ฒ ์ฑ๊ณต์ ์ํ React ์ ๋ฐ์ดํธ ์์ฉ
React์ ๋ฐ์ ์ ๊ฐ๋ฐ์์๊ฒ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํ ๊ฐ๋ ฅํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ฆ๊ฑฐ์ด ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ค๋ ์ง์์ ์ธ ๋ ธ๋ ฅ์ ์ฆ๊ฑฐ์ ๋๋ค. ๊ธ๋ก๋ฒ ๊ฐ๋ฐํ์๊ฒ React ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ์ ์ ๋ง์คํฐํ๋ ๊ฒ์ ๋จ์ํ ๊ธฐ์ ์ ์๋ จ๋์ ๊ดํ ๊ฒ์ด ์๋๋ผ ํ์ ์ ์ด์งํ๊ณ ์์ ์ฑ์ ๋ณด์ฅํ๋ฉฐ ์ด ํ์ ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ๋ ๊ฒ์ ๋๋ค. SemVer๋ฅผ ์ดํดํ๊ณ , ๊ฒฌ๊ณ ํ ๊ด๋ฆฌ ์ ๋ต์ ์ฑํํ๋ฉฐ, ๊ตญ์ ํ์ ์ ๋ ํนํ ๊ณผ์ ๋ฅผ ์ฌ์ ์ ํด๊ฒฐํจ์ผ๋ก์จ ์ฌ๋ฌ๋ถ์ ํ์ ์์ ์๊ฒ React ์ ๋ฐ์ดํธ๋ฅผ ํ์ํ๊ณ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ณตํ๋ฉฐ ์ ์ธ๊ณ ์น ๊ฐ๋ฐ ํ์ ์ ์ ๋์ ์ค ์ ์์ต๋๋ค.
๋ค์ React ์ ๊ทธ๋ ์ด๋๋ฅผ ๊ณํํ ๋, ์ํตํ๊ณ ์ฒ ์ ํ ํ ์คํธํ๋ฉฐ ๊ธ๋ก๋ฒ ํ์ ์ง๋จ์ ์ ๋ฌธ ์ง์์ ํ์ฉํ๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค. ์ฒ ๋ฆฌ ๊ธธ๋ ํ ๊ฑธ์๋ถํฐ ์์๋๋ฉฐ, React ๊ฐ๋ฐ์์ ๊ทธ ๊ฑธ์์ ์ข ์ข ์ ๊ด๋ฆฌ๋ ๋ฒ์ ์ ๋ฐ์ดํธ์ ๋๋ค.