ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ ์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ์ ํ์ ์์๋ณด์ธ์. ์ ๋ฐํ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์์ ์ฑ์ ๋์ด๊ณ ๊ฐ๋ฐ์ ๊ฐ์ํํ๋ฉฐ, ๊ธ๋ก๋ฒ ํ์ ํ์ ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ ๋ง์คํฐ๋ฆฌ: ๊ธ๋ก๋ฒ ๊ฐ๋ฐ์ ์ํ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธ๋ถํ๋ ์ ์ด ๋ฌ์ฑ
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๊ณ ์ํธ ์ฐ๊ฒฐ๋ ๋์งํธ ์ธ๊ณ์์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ทธ ์ด๋ ๋๋ณด๋ค ์ญ๋์ ์ ๋๋ค. ์ข ์ข ์ฌ๋ฌ ๋๋ฅ๊ณผ ์๊ฐ๋์ ๋ถ์ฐ๋ ํ๋ค์ ๊ณต์ UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ธ ์์คํ ์ ํฌ๊ฒ ์์กดํ๋ฉฐ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ ํฉ๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๊ด์ฑ๊ณผ ๊ฐ๋ฐ ๊ฐ์ํ๋ฅผ ์ฝ์ํ์ง๋ง, ๊ทธ ์งํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋นํ ๋์ ์ด ๋ ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋ฑ์ฅํ์ฌ, ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐ์ด๋์ด ๋น๊ตํ ์ ์๋ ์ ๋ฐ์ฑ๊ณผ ์ ์ด๋ ฅ์ ์ ๊ณตํ๋ ์ ๊ตํ ๋ฒ์ ๊ด๋ฆฌ ์ ๊ทผ๋ฒ์ ์ ์ํฉ๋๋ค.
์ด ์ข ํฉ ๊ฐ์ด๋๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ์ ๋ณธ์ง์ ๊น์ด ํ๊ณ ๋ค์ด, ๊ทธ ์ฌ์คํ ์ด์ ๊ณผ ์ค์ ๊ตฌํ ์ ๋ต, ๊ทธ๋ฆฌ๊ณ ๊ธ๋ก๋ฒ ๊ฐ๋ฐํ์ ์ํ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ํ๊ตฌํฉ๋๋ค. ์ธ๋ถํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ฑํํจ์ผ๋ก์จ ์กฐ์ง์ ์์ ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๊ณ , ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๋ฉฐ, ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ด๊ณ , ๋ ํจ์จ์ ์ธ ํ์ ์ ์ด์งํ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๋ฐ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์งํํ๋ ํ๊ฒฝ
์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก์ ํจ๋ฌ๋ค์ ์ ํ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ์์ ํ์ ํ์ต๋๋ค. React, Vue, Angular์ ๊ฐ์ ํ๋ ์์ํฌ๋ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ง์งํ๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ์๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ๋ ๋ฆฝ์ ์ธ ์กฐ๊ฐ๋ค๋ก ๋ณต์กํ UI๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ์์ฐ์ค๋ฝ๊ฒ ๋์์ธ ์์น, ์ ๊ทผ์ฑ ํ์ค, ์ํธ์์ฉ ํ๋์ ์บก์ํํ๋ UI ์ปดํฌ๋ํธ์ ์ค์ ์ง์ค์ ์ปฌ๋ ์ ์ธ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์ฐ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
์ข ์ข ์กฐ์ง์ ๋์์ธ ์์คํ ์ ์ค์ถ๋ฅผ ํ์ฑํ๋ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ธ๋๋ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ , ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํค๋ฉฐ, ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ์ง๋ง ๋ฐ๋ก ๊ทธ ์ฑ๊ณต์ด ์๋ก์ด ์ฐจ์์ ๋ณต์ก์ฑ์ ์ผ๊ธฐํฉ๋๋ค. ์ฆ, ์์กดํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์น ์๊ฒ ๋ถ์์ ํ๊ฒ ๋ง๋ค๊ฑฐ๋ ๋ค์ํ ๊ฐ๋ฐํ์ ์งํ์ ๋ฐฉํดํ์ง ์์ผ๋ฉด์ ์ด๋ฌํ ๊ธฐ๋ณธ ์ปดํฌ๋ํธ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ๊ฒ์ธ๊ฐ ํ๋ ๋ฌธ์ ์ ๋๋ค.
๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ๋ฌด์์ธ๊ฐ? ์ธ๋ถํ๋ ์ ์ด ์ ์ํ๊ธฐ
ํต์ฌ์ ์ผ๋ก ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด์ ์ ์์ ๋ฒ์ ๊ด๋ฆฌ(SemVer)๋ณด๋ค ๋ ๋ฏธ์ธํ๊ณ ์์์ ์ธ ์์ค์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ ์ฉํ๋ ๊ดํ์ ๋๋ค. SemVer(MAJOR.MINOR.PATCH)๋ ํจํค์ง์ ์ ๋ฐ์ ์ธ ์์ ์ฑ๊ณผ ๊ณต๊ฐ API ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๋ ๋ฐ ํ์์ ์ด์ง๋ง, ํฌ๊ณ ํ๋ฐํ๊ฒ ๊ฐ๋ฐ๋๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋๋๋ก ๋๋ฌด ๊ด๋ฒ์ํ ์ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ '๋ง์ด๋' ๋ฆด๋ฆฌ์ค๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ์ ๊ฑธ์น ์๋นํ ๋ณ๊ฒฝ์ ํฌํจํ ์ ์์ผ๋ฉฐ, ๊ทธ์ค ์ผ๋ถ๋ ํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ์ค์ํ์ง๋ง ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ๊ฐ๋ณ ์ปดํฌ๋ํธ, ๋๋ ์ฌ์ง์ด ์ปดํฌ๋ํธ์ ํน์ ์ธก๋ฉด(์: ๋์์ธ ํ ํฐ ๋๋ ์ ๊ทผ์ฑ ๊ธฐ๋ฅ)์ด ๋ ์ ๋ฐํ๊ฒ ๋ฒ์ ์ ์ถ์ ํ ์ ์๋๋ก ํจ์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด๋ ๋ฒํผ์ ์คํ์ผ๋ง ์์ , ์ ๋ ฅ ํ๋์ ์๋ก์ด prop ์ถ๊ฐ, ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์์ ํ API ๊ฐํธ์ ๊ตฌ๋ณํ๊ณ ์ด๋ฌํ ์ฐจ์ด์ ์ ๊ฐ์์ ๋ฒ์ ๋ฒํธ ์ฆ๊ฐ์ ๋ฐ์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ชฉํ๋ ํ์ ์๋น์์๊ฒ ์ ํํ ๋ฌด์์ด ๋ณ๊ฒฝ๋์๋์ง์ ๋ํ ๋ ๋ช ํํ๊ณ ์ ๋ฐํ ์ดํด๋ฅผ ์ ๊ณตํ์ฌ, ๊ทธ๋ค์ด ํ์ ์ ๊ฐ๊ณ ์ต์ํ์ ์ํ์ผ๋ก ์์กด์ฑ์ ์ ๋ฐ์ดํธํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
"์" ํด์ผ ํ๋๊ฐ: ์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ์ด์
๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ์ฑํํ๋ ๊ฒฐ์ ์ ๋ณต์ก์ฑ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ฒ ๋ด๋ ค์ง์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํนํ ๋๊ท๋ชจ ๋ถ์ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์์ ์ด์ ์ ์ฌ์คํ๋ฉฐ ์ข ์ข ์ด๊ธฐ ์ค๋ฒํค๋๋ฅผ ๋ฅ๊ฐํฉ๋๋ค.
์์ ์ฑ ํฅ์ ๋ฐ ์ํ ๊ฐ์
- ์์์น ๋ชปํ ํ๊ท ๋ฐฉ์ง: ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌํจ์ผ๋ก์จ, ํ ์ปดํฌ๋ํธ(์: ๋ ์ง ์ ํ๊ธฐ)์ ์ ๋ฐ์ดํธ๊ฐ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๋ด์์ ๊ด๋ จ ์๋ ์ปดํฌ๋ํธ(์: ๋ด๋น๊ฒ์ด์ ๋ฐ)์ ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ํ๊ฑฐ๋ ํ๊ท๋ฅผ ์ ๋ฐํ ์ํ์ ์ด๋ํ์ง ์์ต๋๋ค. ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ ํ์ํ ์ปดํฌ๋ํธ๋ง ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
- ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒฉ๋ฆฌ: ๊ฐ ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ๋ ๋์ฑ ๊ฒฉ๋ฆฌ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ์๊ตฌํ์ง ์๊ณ ๋จ์ผ ์ปดํฌ๋ํธ๋ฅผ ๋ณ๊ฒฝ, ํ ์คํธ ๋ฐ ๋ฆด๋ฆฌ์คํ ์ ์์ด ์ ์ฌ์ ๋ฌธ์ ์ ํ๊ธ ๋ฒ์๋ฅผ ๊ทน์ ์ผ๋ก ์ค์ ๋๋ค.
- ๋ ๋น ๋ฅธ ๋๋ฒ๊น ๋ฐ ๋กค๋ฐฑ: ์ ๋ฐ์ดํธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด, ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ์ ํํ ์ปดํฌ๋ํธ์ ํน์ ๋ฒ์ ์ ์๋ณํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จํด์ง๋๋ค. ์ด๋ฅผ ํตํด ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋๋๋ฆฌ๋ ๋์ ํด๋น ํน์ ์ปดํฌ๋ํธ์ ์ด์ ์์ ๋ฒ์ ์ผ๋ก ๋ ๋น ๋ฅด๊ฒ ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ์ฃผ๊ธฐ ๊ฐ์ํ
- ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ ๋ฆด๋ฆฌ์ค: ๊ฐ๋ฐํ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ๊ฐ ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ์ค๋น๋๊ณ ํ ์คํธ ๋ฐ ์น์ธ๋๋ ์ฆ์ ๊ฐ๋ณ ์ปดํฌ๋ํธ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ฆด๋ฆฌ์คํ ์ ์์ต๋๋ค. ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์ค์ํ ๋ฒ๊ทธ ์์ ์ ์์ฅ ์ถ์ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถ์ํต๋๋ค.
- ์์กด ํ๋ก์ ํธ์ ๋ธ๋ก์ปค ์ํฉ ๊ฐ์: ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ด์ ์ ์ฒด ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฆด๋ฆฌ์ค ์ผ์ ์ ๋๊ธฐํํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ค์ ์์ ๋ค์ ์๋์ ๋ง์ถฐ ํน์ ์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ด, ํ ๊ฐ ์์กด์ฑ๊ณผ ๋ณ๋ชฉ ํ์์ ์ค์ ๋๋ค. ์ด๋ ๋ค๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ ํ๋ก์ ํธ ๋ง๊ฐ์ผ์ ๋ฐ๋ผ ์ด์๋๋ ๊ธ๋ก๋ฒ ํ์๊ฒ ํนํ ์ ์ฉํฉ๋๋ค.
- ์ต์ ํ๋ CI/CD ํ์ดํ๋ผ์ธ: ์๋ํ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์ํฅ๋ฐ๋ ์ปดํฌ๋ํธ์ ๋ํด์๋ง ํธ๋ฆฌ๊ฑฐํ๋๋ก ๊ตฌ์ฑํ ์ ์์ด, ๋น๋ ์๊ฐ ๋จ์ถ, ๋ ํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ, ๊ทธ๋ฆฌ๊ณ ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ๋ก ์ด์ด์ง๋๋ค.
๊ธ๋ก๋ฒ ํ์ ๋ ๋์ ํ์ ์ด์ง
- ์๊ฐ๋๋ฅผ ์ด์ํ ๋ช
ํํ ๋ณ๊ฒฝ ์ฌํญ ์ํต: "Button" ์ปดํฌ๋ํธ์ ๋ํ ๋ฒ๊ทธ ์์ ์ด
@my-library@5.0.0์ผ๋ก ๋ฆด๋ฆฌ์ค๋๊ณ "Button ์์ "์ด๋ผ๋ ๋ชจํธํ ๋ฉ๋ชจ๊ฐ ๋ฌ๋ฆฌ๋ ๋์@my-library/button@2.1.1์ผ๋ก ๋ฆด๋ฆฌ์ค๋๋ฉด, ๊ธ๋ก๋ฒ ํ์ ์ฆ์ ๊ทธ ๋ฒ์๋ฅผ ์ดํดํฉ๋๋ค. ์ด๋ฌํ ์ ๋ฐ์ฑ์ ์คํด๋ฅผ ์ต์ํํ๊ณ ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ ์๋ ํ์ด ์ ๋ฐ์ดํธ์ ๋ํด ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋๋ก ํฉ๋๋ค. - ๋ณ๋ ฌ ๊ฐ๋ฐ ๊ฐ๋ฅ: ๋ค๋ฅธ ์ง์ญ์ ํ๋ค์ ์๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ ๊ธฐ๋ฅ์ ๋ํด ๋์์ ์์ ํ๊ณ , ๋ ๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ฆด๋ฆฌ์คํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณ๋ ฌํ๋ ๋ค์ํ ์๊ฐ๋์ ๋ฌธํ์ ์์ ์คํ์ผ ์ ๋ฐ์ ๊ฑธ์ณ ์์ฐ์ฑ์ ๊ทน๋ํํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ณํฉ ์ถฉ๋ ๋ฐ ํตํฉ ๋ฌธ์ ์ต์ํ: ๋ณ๊ฒฝ ์ฌํญ์ ํน์ ์ปดํฌ๋ํธ๋ก ๊ฒฉ๋ฆฌํจ์ผ๋ก์จ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฒ ์ด์ค์์ ๋ณต์กํ ๋ณํฉ ์ถฉ๋์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค. ์ถฉ๋์ด ๋ฐ์ํ๋๋ผ๋ ๊ทธ ๋ฒ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ์ ์ด์ด์ ํด๊ฒฐํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
์ ์ง๋ณด์์ฑ ํฅ์ ๋ฐ ๊ธฐ์ ๋ถ์ฑ ๊ฐ์
- ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ์ ์ฌ์ด ์๋ณ: ์ธ๋ถํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ํ๋ฐํ๊ฒ ์ ์ง๋ณด์๋๊ณ , ์ด๋ค ๊ฒ์ด ์์ ์ ์ด๋ฉฐ, ์ด๋ค ๊ฒ์ด ์ฌ์ฉ ์ค๋จ(deprecation)์ ๊ฐ๊น์์ง๊ณ ์๋์ง๋ฅผ ๋ช ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฌํ ๋ช ํ์ฑ์ ์ฅ๊ธฐ์ ์ธ ๊ณํ ๋ฐ ๋ฆฌ์์ค ํ ๋น์ ๋์์ด ๋ฉ๋๋ค.
- ๋ ๋ช ํํ ์ฌ์ฉ ์ค๋จ ๊ฒฝ๋ก: ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉ ์ค๋จํ๊ฑฐ๋ ๊ต์ฒดํด์ผ ํ ๋, ๊ฐ๋ณ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํด ์ ์ง์ ์ธ ์ ํ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋น์๋ ๋ค๋ฅธ ๋ง์ ํ์ฑ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ์ ์๋ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๋์ , ์ฌ์ฉ ์ค๋จ๋ ์ปดํฌ๋ํธ์ ๋ฒ์ ์ ๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
- ๋ ๋์ ๊ฐ์ฌ ์ถ์ : ๊ฐ ์ปดํฌ๋ํธ์ ๋ํ ์์ธํ ๋ฒ์ ๊ธฐ๋ก์ ํฌ๊ด์ ์ธ ๊ฐ์ฌ ์ถ์ ์ ์ ๊ณตํ์ฌ, ํน์ UI ์์๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ฐ์ ํ๋์ง ์ดํดํ๋ ๋ฐ ์ค์ํ๋ฉฐ, ์ด๋ ๊ท์ ์ค์๋ ๊ณผ๊ฑฐ ๋ฌธ์ ๋๋ฒ๊น ์ ํ์์ ์ผ ์ ์์ต๋๋ค.
์ง์ ํ ๋์์ธ ์์คํ ์ฑํ ๊ฐ๋ฅ
- ๋์์ธ ํ ํฐ ๋ฐ ์ปดํฌ๋ํธ ๋ก์ง์ ์ํํ ์ ๋ฐ์ดํธ: ๋์์ธ ์์คํ ์ ์ด์์๋ ์ ๊ธฐ์ฒด์ ๋๋ค. ์ธ๋ถํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํด ๋์์ด๋์ ๊ฐ๋ฐ์๋ ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ํ์ง ์๊ณ ๋ ๋์์ธ ํ ํฐ(์์, ํ์ดํฌ๊ทธ๋ํผ, ๊ฐ๊ฒฉ)์ด๋ ๊ฐ๋ณ ์ปดํฌ๋ํธ ๋์์ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ์๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ผ๊ด์ฑ ์ ์ง: ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ ๋ฒ์ ์ ์ ๋ฐํ๊ฒ ์ ์ดํจ์ผ๋ก์จ, ์กฐ์ง์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ์๋ก ๋ค๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ ๊ธฐ์ ์คํ์ ์๋๋ผ๋ ์ค์ํ UI ์์๊ฐ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
"์ด๋ป๊ฒ" ํ ๊ฒ์ธ๊ฐ: ์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต ๊ตฌํํ๊ธฐ
๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๊ตฌํํ๋ ค๋ฉด ์ฌ๋ ค ๊น์ ์ ๊ทผ์ด ํ์ํ๋ฉฐ, ์ข ์ข ํ์ค SemVer ๊ด๋ก๋ฅผ ๋์ด์๋ ํ์ฅ์ด ํ์ํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋๊ตฌ, ๋ช ํํ ์ ์ฑ , ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ ฅํ ์๋ํ์ ์กฐํฉ์ ํฌํจํฉ๋๋ค.
์ ํต์ ์ธ ์ ์์ ๋ฒ์ ๋์ ๋์ด์: ๋ ๊น์ด ์์๋ณด๊ธฐ
์ ์์ ๋ฒ์ ๋(SemVer)์ MAJOR.MINOR.PATCH ํ์์ ๋ฐ๋ฆ ๋๋ค:
- MAJOR: ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ (๋ธ๋ ์ดํน ์ฒด์ธ์ง).
- MINOR: ํ์ ํธํ์ฑ์ ์ ์งํ๋ฉด์ ๊ธฐ๋ฅ ์ถ๊ฐ (๋ ผ๋ธ๋ ์ดํน ๊ธฐ๋ฅ).
- PATCH: ํ์ ํธํ์ฑ์ ์ ์งํ๋ ๋ฒ๊ทธ ์์ .
๊ธฐ๋ณธ์ ์ด์ง๋ง, SemVer๋ ์ข ์ข ์ ์ฒด ํจํค์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฉ๋ฉ๋๋ค. ์์ญ ๋๋ ์๋ฐฑ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ, ํ ์ปดํฌ๋ํธ์ ์ฌ์ํ ๋ณ๊ฒฝ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ 99%๊ฐ ๋ณ๊ฒฝ๋์ง ์์์์๋ ๋ถ๊ตฌํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด์ ๋ง์ด๋ ๋ฒ์ ์ฆ๊ฐ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ถํ์ํ ์ ๋ฐ์ดํธ์ ์์กด์ฑ ๋ณ๋์ ์ด๋ํ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ๋ค์ ์ค ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฅผ ํ์ฅํฉ๋๋ค:
- ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์์ฒด SemVer๋ฅผ ๊ฐ์ง ๋ ๋ฆฝ์ ์ธ ํจํค์ง๋ก ์ทจ๊ธ.
- ์ฃผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ SemVer๋ฅผ ๋ฉํ๋ฐ์ดํฐ๋ก ๋ณด๊ฐํ์ฌ ์ธ๋ถํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ์.
์์์ ๋ณ๊ฒฝ๊ณผ ๊ทธ ๋ฒ์ ๊ด๋ฆฌ์ ์๋ฏธ
์ ๋ต์ ์ ํํ๊ธฐ ์ ์, ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์์ "์์์ ๋ณ๊ฒฝ"์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ์ํ์ญ์์ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค:
- ์คํ์ผ ์์ : ์ปดํฌ๋ํธ์ ์๊ฐ์ ๋ชจ์ ๋ณ๊ฒฝ (์: ํจ๋ฉ, ์์). ์ข ์ข ํจ์น ์์ค์ ๋ณ๊ฒฝ์ ๋๋ค.
- ์๋ก์ด Prop/์ต์ : ๊ธฐ์กด ๋์์ ๋ณ๊ฒฝํ์ง ์๊ณ ์ปดํฌ๋ํธ์ ์๋ก์ด ๊ตฌ์ฑ ๊ฐ๋ฅํ ์์ฑ์ ์ถ๊ฐ. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด๋ ์์ค์ ๋ณ๊ฒฝ์ ๋๋ค.
- ๋์ ์์ : ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ๋ฐ์ดํฐ์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝ. ์ํฅ์ ๋ฐ๋ผ ๋ง์ด๋ ๋๋ ๋ฉ์ด์ ๊ฐ ๋ ์ ์์ต๋๋ค.
- API ์ ๋ฉด ๊ฐํธ: props ์ด๋ฆ ๋ณ๊ฒฝ, ์ด๋ฒคํธ ์๊ทธ๋์ฒ ๋ณ๊ฒฝ ๋๋ ๊ธฐ๋ฅ ์ ๊ฑฐ. ์ด๋ ๋ช ๋ฐฑํ ๋ฉ์ด์ ์์ค์ ๋ธ๋ ์ดํน ์ฒด์ธ์ง์ ๋๋ค.
์ด๋ฌํ ๋ณ๊ฒฝ ์ ํ์ ๊ฐ๋ณ ์ปดํฌ๋ํธ ๋๋ ๋ฉํ๋ฐ์ดํฐ๋ก์ ์ ์ ํ ๋ฒ์ ์ธ๊ทธ๋จผํธ์ ๋งคํํ๋ ๊ฒ์ ์ผ๊ด์ฑ์ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ค์ฉ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต
๋ค์์ ์ธ๋ถํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ ๋ต์ ๋๋ค:
์ ๋ต 1: ์ปดํฌ๋ํธ๋ณ ํ์ ๋ฒ์ ๊ด๋ฆฌ (๋ ๋ฆฝ ํจํค์ง๋ฅผ ๊ฐ์ง ๋ชจ๋ ธ๋ ํฌ)
์ด๊ฒ์ ๋๊ท๋ชจ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ ๊ฐ์ฅ ๊ฐ๋ ฅํ๊ณ ์ธ๊ธฐ ์๋ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด ์ ๋ต์์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ชจ๋
ธ๋ ํฌ๋ก ๊ตฌ์กฐํ๋๋ฉฐ, ๊ฐ ๊ฐ๋ณ UI ์ปดํฌ๋ํธ(์: Button, Input, Modal)๋ ์์ฒด package.json๊ณผ ๋ฒ์ ๋ฒํธ๋ฅผ ๊ฐ์ง ๋
๋ฆฝ์ ์ธ npm ํจํค์ง๋ก ์ทจ๊ธ๋ฉ๋๋ค.
- ์๋ ๋ฐฉ์:
- ๋ชจ๋ ธ๋ ํฌ๋ ์ฌ๋ฌ ํจํค์ง๋ฅผ ํฌํจํฉ๋๋ค.
- ๊ฐ ํจํค์ง(์ปดํฌ๋ํธ)๋ SemVer๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ์ด ๊ด๋ฆฌ๋ฉ๋๋ค.
- Lerna, Nx, ๋๋ Turborepo์ ๊ฐ์ ๋๊ตฌ๋ ๊ฒ์ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ์ฌ ๋ณ๊ฒฝ๋ ํจํค์ง๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ํด๋น ๋ฒ์ ์ ์ฌ๋ฆฝ๋๋ค.
- ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํน์ ์ปดํฌ๋ํธ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค (์:
npm install @my-org/button@^2.1.0).
- ์ฅ์ :
- ์ต๋์ ์ธ๋ถ์ฑ: ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์์ฒด ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋๋ค.
- ๋
๋ฆฝ์ ์ธ ๋ฆด๋ฆฌ์ค:
Button์ปดํฌ๋ํธ ์์ ์ดInput์ปดํฌ๋ํธ์ ์ ๋ฒ์ ์ ๊ฐ์ ํ์ง ์์ต๋๋ค. - ๋ช ํํ ์์กด์ฑ: ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ํน์ ์ปดํฌ๋ํธ์๋ง ์์กดํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ์ ์์กด์ฑ ํฝ์ฐฝ์ ์ค์ ๋๋ค.
- ํ์ฅ์ฑ: ๋ง์ ๊ธฐ์ฌ์ ๋ฐ ์๋น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ๋งค์ฐ ํฐ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด์์ ์ ๋๋ค.
- ๋จ์ :
- ์ฆ๊ฐ๋ ๋๊ตฌ ๋ณต์ก์ฑ: ๋ชจ๋ ธ๋ ํฌ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฑํํด์ผ ํฉ๋๋ค.
- ์์กด์ฑ ๊ด๋ฆฌ ๋ณต์ก์ฑ: ๋ชจ๋ ธ๋ ํฌ ๋ด์์ ์ปดํฌ๋ํธ ๊ฐ์ ์ ์ด ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๊น๋ค๋ก์ธ ์ ์์ง๋ง, ๋๊ตฌ๋ค์ด ์ด๋ฅผ ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์์ง์ฑ ๋ฌธ์ : ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์์ง๋ ฅ ์๋ ๋์์ธ ์์คํ ์ ์ผ๋ถ๋ก ์ ์ง๋๋๋ก ํ๋ ค๋ฉด ๋ฌธ์ํ ๋ฐ ๊ฑฐ๋ฒ๋์ค์ ์ถ๊ฐ์ ์ธ ๋ ธ๋ ฅ์ด ํ์ํ ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ์์: ๊ฑฐ๋ ๋ค๊ตญ์ ์ด์ปค๋จธ์ค ํ์ฌ๋ ๋ค๋ฅธ ์ง์ญ์ ๊ฐ๋ณ ํ์ด ํน์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ง๋ณด์ํ ์ ์์ต๋๋ค (์: ์ ๋ฝ ํ์ ๊ฒฐ์ ์ปดํฌ๋ํธ, ์์์ ํ์ ๋ฐฐ์ก ์์ ฏ). ๋ ๋ฆฝ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํด ์ด๋ค ํ์ ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ธ๋ก๋ฒ ์กฐ์ ์ค๋ฒํค๋ ์์ด ์ ๋ฐ์ดํธ๋ฅผ ๋ฆด๋ฆฌ์คํ ์ ์์ต๋๋ค.
์ ๋ต 2: ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๊ฐํ๋ ์ ์์ ๋ฒ์ ๋
์ด ์ ๊ทผ ๋ฐฉ์์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋์ ๋ฉ์ธ SemVer๋ฅผ ๊ฐ์ง ๋จ์ผ ํจํค์ง๋ก ์ ์งํ๋, ๋ด๋ถ ๋ณ๊ฒฝ์ ๋ํ ์ธ๋ถํ๋ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ฉํ๋ฐ์ดํฐ๋ก ๋ณด๊ฐํฉ๋๋ค.
- ์๋ ๋ฐฉ์:
- ์ฃผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง(์:
@my-library)๋ SemVer๋ฅผ ๋ฐ๋ฆ ๋๋ค (์:1.2.3). - ํ๋ฆฌ๋ฆด๋ฆฌ์ค ์๋ณ์ ๋๋ ๋น๋ ๋ฉํ๋ฐ์ดํฐ(SemVer 2.0.0 ๋ช
์ธ์ ๋ฐ๋ผ)๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ณ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ๋
๋๋ค. ์:
1.2.3-button.fix.0,1.2.3-input.feature.alpha,1.2.3+build.20240315.button.css. - ์ด ์ ๋ณด๋ ์ฃผ๋ก ๋ด๋ถ ์ปค๋ฎค๋์ผ์ด์ , ์์ธ ๋ณ๊ฒฝ ๋ก๊ทธ, ์ง์ ์ ์ธ ์์กด์ฑ ๊ด๋ฆฌ๋ณด๋ค๋ ํ๊ฒํ ๋ ๋ฌธ์ํ๋ฅผ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฃผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง(์:
- ์ฅ์ :
- ๋ ๊ฐ๋จํ ์ต์์ ์์กด์ฑ: ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ ํ ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง์ ์์กดํฉ๋๋ค.
- ํ๋ถํ ์ปจํ ์คํธ: ๋ฉํ๋ฐ์ดํฐ๋ ๋ณต์กํ ๋ชจ๋ ธ๋ ํฌ ์ค์ ์์ด ๊ฐ๋ฐ์์๊ฒ ๋ด๋ถ ๋ณ๊ฒฝ์ ๋ํ ์ ํํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ํ ์ฌ์ด ๋ง์ด๊ทธ๋ ์ด์ : ์ด๋ฏธ ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง๋ฅผ ์๋นํ๋ ํ๋ก์ ํธ์ ๋ ํ๊ดด์ ์ ๋๋ค.
- ๋จ์ :
- ์ ํ๋ ์ง์ ํ ์ธ๋ถ์ฑ: ์ฌ์ ํ ์ฃผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ๋ฌถ์ฌ ์์ด, ๋จ์ผ ๋ฉ์ด์ ๋ฒํ๊ฐ ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ๋ฉํ๋ฐ์ดํฐ ํฝ์ฐฝ: ๋๋ฌด ๋ง์ ์ธ๋ถ ์ ๋ณด๊ฐ ๋ฒ์ ๋ฌธ์์ด์ ํฌํจ๋๋ฉด ๋ค๋ฃจ๊ธฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค.
- ๋ ๋ฆฝ์ ์ธ ๋ฆด๋ฆฌ์ค ๋ถ๊ฐ: ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ์ ํ ์ฃผ ํจํค์ง์ ๋จ์ผ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ์ ๊ธฐ์ฌํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ์์: ์ฌ๋ฌ ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ ๋จ์ผ ๋์์ธ ์์คํ ํ์ ๊ฐ์ง ์ค์๊ธฐ์ . ์ด๋ค์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆด๋ฆฌ์ค์์ ์ด๋ค ํน์ ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋์๋์ง ๋ช ํํ๊ฒ ์ ๋ฌํ์ฌ ๋ด๋ถ ์ ํ๋ฆฌ์ผ์ด์ ํ์ด ์ ๋ฐ์ดํธ์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
์ ๋ต 3: ๋ฒ์ ๋ฒํ๋ฅผ ์ํ ์๋ํ๋ ๋ณ๊ฒฝ ๋ก๊ทธ ๋ถ์
์ด ์ ๋ต์ ๊ตฌ์กฐํ๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ํ์ฉํ์ฌ, ์ข ์ข ์ ๋ต 1 ๋๋ 2์ ํจ๊ป, ๋ฒ์ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.
- ์๋ ๋ฐฉ์:
- ๊ฐ๋ฐ์๋ Conventional Commits์ ๊ฐ์ ์๊ฒฉํ ์ปค๋ฐ ๋ฉ์์ง ๊ท์น์ ์ค์ํฉ๋๋ค. ์:
feat(button): add loading state,fix(input): resolve accessibility issue,chore(deps): update react. semantic-release์ ๊ฐ์ ๋๊ตฌ๋ ์ด๋ฌํ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ถ์ํ์ฌ ์ํฅ์ ๋ฐ๋ ํจํค์ง์ ๋ํ ์ ์ ํ SemVer ๋ฒํ(๋ฉ์ด์ , ๋ง์ด๋ ๋๋ ํจ์น)๋ฅผ ์๋์ผ๋ก ๊ฒฐ์ ํ๊ณ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ๊ฐ๋ฐ์๋ Conventional Commits์ ๊ฐ์ ์๊ฒฉํ ์ปค๋ฐ ๋ฉ์์ง ๊ท์น์ ์ค์ํฉ๋๋ค. ์:
- ์ฅ์ :
- ์๋ํ๋ ๋ฒ์ ๊ด๋ฆฌ: ๋ฆด๋ฆฌ์ค ์ค ์๋ ์ค๋ฅ ๋ฐ ์์ฌ ๊ฒฐ์ ์ ์ ๊ฑฐํฉ๋๋ค.
- ์๋ํ๋ ๋ณ๊ฒฝ ๋ก๊ทธ: ์์ธํ๊ณ ์ผ๊ด๋ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์์ฑํ์ฌ ์ปค๋ฎค๋์ผ์ด์ ์ ๊ฐ์ ํฉ๋๋ค.
- ๊ท์จ ๊ฐํ: ๋ ๋์ ์ปค๋ฐ ์ต๊ด์ ์ฅ๋ คํ์ฌ ๋ ๋ช ํํ ํ๋ก์ ํธ ๊ธฐ๋ก์ผ๋ก ์ด์ด์ง๋๋ค.
- ๋จ์ :
- ์๊ฒฉํ ๊ท์น: ๋ชจ๋ ๊ธฐ์ฌ์๊ฐ ์ปค๋ฐ ๋ฉ์์ง ํ์์ ๋ฐฐ์ฐ๊ณ ์ค์ํด์ผ ํฉ๋๋ค.
- ์ด๊ธฐ ์ค์ ์ค๋ฒํค๋: ์๋ํ ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ณต์กํ ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ์์: ๊ธ๋ก๋ฒ ๊ธฐ์ฌ์ ๊ธฐ๋ฐ์ ๋ ์คํ์์ค ํ๋ก์ ํธ๋ Conventional Commits์
semantic-release๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์ฌ๊ฐ ์ธ์ ์ด๋์ ์ด๋ฃจ์ด์ง๋ ์ผ๊ด๋ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๋ณ๊ฒฝ ๋ก๊ทธ ์์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์ปค๋ฎค๋ํฐ ๋ด์์ ์ ๋ขฐ์ ํฌ๋ช ์ฑ์ ๊ตฌ์ถํฉ๋๋ค.
๋๊ตฌ ๋ฐ ์ํ๊ณ ์ง์
์ฑ๊ณต์ ์ธ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ๊ฐ๋ ฅํ ๋๊ตฌ ์ํ๊ณ์ ํฌ๊ฒ ์์กดํฉ๋๋ค:
- ๋ชจ๋
ธ๋ ํฌ ๋๊ตฌ:
- Lerna: ์ฌ๋ฌ ํจํค์ง๊ฐ ์๋ JavaScript ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ธ๊ธฐ ์๋ ๋๊ตฌ์ ๋๋ค. ๊ณ ์ ๋ฐ ๋ ๋ฆฝ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ๋ชจ๋ ์ง์ํฉ๋๋ค.
- Nx: ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ฐ๋ฐ ๋๊ตฌ๋ก, ๊ณ ๊ธ ์บ์ฑ, ์์กด์ฑ ๊ทธ๋ํ, ์ฝ๋ ์์ฑ์ ์ ๊ณตํฉ๋๋ค.
- Turborepo: ์๋์ ์บ์ฑ์ ์ค์ ์ ๋ JavaScript ๋ฐ TypeScript ๋ชจ๋ ธ๋ ํฌ์ฉ ๊ณ ์ฑ๋ฅ ๋น๋ ์์คํ ์ ๋๋ค.
- ํจํค์ง ๊ด๋ฆฌ์:
- npm, Yarn, pnpm: ๋ชจ๋ ์ฃผ์ ํจํค์ง ๊ด๋ฆฌ์๋ ๋ชจ๋
ธ๋ ํฌ ์ค์ ๋ฐ ๋ด๋ถ ํจํค์ง ์์กด์ฑ ๊ด๋ฆฌ์ ๊ธฐ์ด๊ฐ ๋๋
workspaces๋ฅผ ์ง์ํฉ๋๋ค.
- npm, Yarn, pnpm: ๋ชจ๋ ์ฃผ์ ํจํค์ง ๊ด๋ฆฌ์๋ ๋ชจ๋
ธ๋ ํฌ ์ค์ ๋ฐ ๋ด๋ถ ํจํค์ง ์์กด์ฑ ๊ด๋ฆฌ์ ๊ธฐ์ด๊ฐ ๋๋
- CI/CD ํ์ดํ๋ผ์ธ:
- GitHub Actions, GitLab CI/CD, Jenkins, Azure DevOps: ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ง, ์ํฅ๋ฐ๋ ์ปดํฌ๋ํธ์ ๋ํ ํ ์คํธ ์คํ, ๋ฒ์ ๋ฒํ ๋ฐ ํจํค์ง ๊ฒ์๋ฅผ ์๋ํํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
- ์๋ํ๋ ๋ณ๊ฒฝ ๋ก๊ทธ ์์ฑ:
- semantic-release: ๋ค์ ๋ฒ์ ๋ฒํธ ๊ฒฐ์ , ๋ฆด๋ฆฌ์ค ๋ ธํธ ์์ฑ ๋ฐ ํจํค์ง ๊ฒ์๋ฅผ ํฌํจํ ์ ์ฒด ํจํค์ง ๋ฆด๋ฆฌ์ค ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํฉ๋๋ค.
- Conventional Commits: ์ปค๋ฐ ๋ฉ์์ง์ ์ธ๊ฐ๊ณผ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๋ ์๋ฏธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํ ๋ช ์ธ์ ๋๋ค.
๋ฌธ์ํ์ ์ค์์ฑ
๊ฐ์ฅ ์ ๊ตํ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ด๋ผ๋ ๋ช ํํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ๋ฌธ์ ์์ด๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, ์ธ์ด ์ฅ๋ฒฝ๊ณผ ๋ค์ํ ๊ฒฝํ ์์ค ๋๋ฌธ์ ์ด๋ ๋์ฑ ์ค์ํฉ๋๋ค.
- ๋ผ์ด๋ธ ์ปดํฌ๋ํธ ํ์๊ธฐ: Storybook์ด๋ Docz์ ๊ฐ์ ๋๊ตฌ๋ ์ปดํฌ๋ํธ์ ๋ค์ํ ์ํ, props ๋ฐ ๋์์ ๋ณด์ฌ์ฃผ๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ข ์ข ๋ฒ์ ๊ด๋ฆฌ ์์คํ ๊ณผ ์ง์ ํตํฉ๋์ด ํน์ ์ปดํฌ๋ํธ ๋ฒ์ ์ ๋ํ ๋ฌธ์๋ฅผ ํ์ํฉ๋๋ค.
- ๊ฐ ์ปดํฌ๋ํธ์ ๋ํ ๋ช ํํ ๋ฆด๋ฆฌ์ค ๋ ธํธ: ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋จ์ผ ๋ณ๊ฒฝ ๋ก๊ทธ ๋์ , ์๋ก์ด ๊ธฐ๋ฅ, ๋ฒ๊ทธ ์์ ๋ฐ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ์์ฝํ ์์ธํ๊ณ ์ปดํฌ๋ํธ๋ณ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์ ๊ณตํ์ญ์์ค.
- ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ์ํ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋: ๊ฐ๋ณ ์ปดํฌ๋ํธ์ ๋ฉ์ด์ ๋ฒ์ ๋ฒํ์ ๊ฒฝ์ฐ, ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํํ๊ฒ ์ ๊ทธ๋ ์ด๋ํ ์ ์๋๋ก ์ฝ๋ ์์ ๊ฐ ํฌํจ๋ ๋ช ์์ ์ธ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํ์ญ์์ค.
- ๋ด๋ถ ๊ฐ๋ฐ์ ํฌํธ: ์ปดํฌ๋ํธ ๋ฌธ์, ๋ฒ์ ๊ธฐ๋ก, ์ฌ์ฉ ๊ฐ์ด๋๋ผ์ธ, ์ปดํฌ๋ํธ ์์ ์์ ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ์ง๊ณํ๋ ์ค์ ์ง์ค์ ํ๋ซํผ์ ๋งค์ฐ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ณผ์ ํ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ์ ์ด์ ์ ์๋นํ์ง๋ง, ๊ทธ ๊ตฌํ์๋ ์์ฒด์ ์ธ ๊ณผ์ ๊ฐ ๋ฐ๋ฆ ๋๋ค. ์ฑ๊ณต์ ์ํด์๋ ์ฌ์ ๊ณํ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก ์ค์๊ฐ ์ค์ํฉ๋๋ค.
์ฆ๊ฐ๋ ์ธ๋ถ์ฑ์ ์ค๋ฒํค๋
๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ์ด ๊ด๋ฆฌ๋๋ ๋ง์ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ด๋ฆฌ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ๊ฐ ์ปดํฌ๋ํธ๋ ์์ฒด ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ, ํ ์คํธ, ๋ฌธ์๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ํ์ ์ธ๋ถํ๋ ์ ์ด์ ์ด์ ๊ณผ ๊ทธ๊ฒ์ด ๊ฐ์ ธ์ค๋ ๋ณต์ก์ฑ์ ๋น๊ตํด์ผ ํฉ๋๋ค.
- ๋ชจ๋ฒ ์ฌ๋ก: ์ค์ฉ์ ์ธ ์ ๊ทผ์ผ๋ก ์์ํ์ญ์์ค. ๋ชจ๋ ์์ ํฌํผ ์ ํธ๋ฆฌํฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ์๋ก ํ์ง๋ ์์ต๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ๋๋ ทํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง ํต์ฌ UI ์ปดํฌ๋ํธ์ ์ง์คํ์ญ์์ค. ํ์ ํ์์ ์ญ๋์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ ์ฐจ์ ์ผ๋ก ๋ ๋ง์ ์ธ๋ถ์ฑ์ ๋์ ํ์ญ์์ค.
์์กด์ฑ ๋ฐ ์ ์ด์ ์ ๋ฐ์ดํธ ๊ด๋ฆฌ
๋ชจ๋
ธ๋ ํฌ์์ ์ปดํฌ๋ํธ๋ ์๋ก ์์กดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ComboBox ์ปดํฌ๋ํธ๋ Input ์ปดํฌ๋ํธ์ List ์ปดํฌ๋ํธ์ ์์กดํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ด๋ถ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ ์๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ํธํ๋๋ ๋ฒ์ ์ ์ป๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค.
- ๋ชจ๋ฒ ์ฌ๋ก: ๋ชจ๋
ธ๋ ํฌ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋ด๋ถ ์์กด์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ์ญ์์ค. ๋ง์ด๋ ์
๋ฐ์ดํธ๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๋ด๋ถ ํจํค์ง์ ๋ํด
*๋ ์ ํํ ๋ฒ์ ๋์ ๋ช ์์ ์ธ ์์กด์ฑ ๋ฒ์(์:^1.0.0)๋ฅผ ์ ์ํ์ญ์์ค. ์ปดํฌ๋ํธ๊ฐ ๋ช ์์ ์ผ๋ก ์ ์ธํ์ง ์๊ณ ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ "์ ๋ น ์์กด์ฑ"์ ๊ฐ์งํ๊ณ ๊ฒฝ๊ณ ํ๋ ์๋ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
์ํต์ ์ค์์ฑ
๊ธ๋ก๋ฒ ๋ถ์ฐ ํ์ ๊ฒฝ์ฐ, ๋ฒ์ ๊ด๋ฆฌ ์ ์ฑ , ๋ฆด๋ฆฌ์ค, ๋ธ๋ ์ดํน ์ฒด์ธ์ง์ ๋ํ ๋ช ํํ๊ณ ์ผ๊ด๋ ์ํต์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
- ๋ชจ๋ฒ ์ฌ๋ก:
- ๋ช ํํ ๋ฒ์ ๊ด๋ฆฌ ์ ์ฑ ์๋ฆฝ: ๊ฐ๋ณ ์ปดํฌ๋ํธ์ ๋ํ ๋ฉ์ด์ , ๋ง์ด๋ ๋๋ ํจ์น ๋ณ๊ฒฝ์ด ๋ฌด์์ ์๋ฏธํ๋์ง๋ฅผ ํฌํจํ์ฌ ์ ํํ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ๋ฌธ์ํํ์ญ์์ค. ์ด๋ฅผ ๋๋ฆฌ ๊ณต์ ํ์ญ์์ค.
- ์ ๊ธฐ์ ์ธ ๋๊ธฐํ ๋ฐ ๋ฆด๋ฆฌ์ค ์ฑ๋: ์ปดํฌ๋ํธ ๋ฆด๋ฆฌ์ค, ํนํ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ์๋ฆฌ๊ธฐ ์ํด ๊ณต์ ์ปค๋ฎค๋์ผ์ด์ ํ๋ซํผ(์: Slack, Microsoft Teams, ์ ์ฉ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ)์ ํ์ฉํ์ญ์์ค. ๋ค๋ฅธ ์ง์ญ์ด๋ ์ ํ ํ์ ์ํ ์ ์ฉ ๋ฆด๋ฆฌ์ค ์ฑ๋์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ด๋ถ ๋ฌธ์ํ: ์ปดํฌ๋ํธ ์์ ์, ์ฌ์ฉ ๊ฐ์ด๋๋ผ์ธ, ๋ฆด๋ฆฌ์ค ์ ์ฐจ๋ฅผ ์์ฝํ ์ค์ ์ง์ค์์ด๊ณ ์ฝ๊ฒ ๊ฒ์ํ ์ ์๋ ์ง์ ๊ธฐ๋ฐ์ ์ ์งํ์ญ์์ค.
- ๋ค๊ตญ์ด ์ง์ (ํด๋น๋๋ ๊ฒฝ์ฐ): ๋งค์ฐ ๋ค์ํ ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, ์ค์ํ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์ฌ๋ฌ ์ธ์ด๋ก ์์ฝํ๊ฑฐ๋ ๋ฒ์ญ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์๋ํ์ ์ญํ
์ธ๋ถํ๋ ์์คํ ์์์ ์๋ ๋ฒ์ ๊ด๋ฆฌ๋ ์ค๋ฅ์ ๋น์ผ๊ด์ฑ์ ๋ณ๋ ์ง๋ฆ๊ธธ์ ๋๋ค. ์๋ํ๋ ์ ํ ์ฌํญ์ด ์๋๋ผ ๊ธฐ๋ณธ์ ๋๋ค.
- ๋ชจ๋ฒ ์ฌ๋ก:
- ์๋ํ๋ ํ ์คํธ: ๊ฐ ์ปดํฌ๋ํธ์ ๋ํด ํฌ๊ด์ ์ธ ๋จ์, ํตํฉ ๋ฐ ์๊ฐ์ ํ๊ท ํ ์คํธ๋ฅผ ๊ตฌํํ์ญ์์ค. ์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ํ์ง ์์ ๋ถ์์ฉ์ ์ผ์ผํค์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์๋ํ๋ ๋ฆด๋ฆฌ์ค ์ํฌํ๋ก์ฐ: CI/CD ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์คํํ๊ณ , ๋ฒ์ ๋ฒํ๋ฅผ ๊ฒฐ์ ํ๊ณ (์: Conventional Commits๋ฅผ ํตํด), ๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ , ํจํค์ง๋ฅผ ๊ฒ์ํ์ญ์์ค.
- ํ๊ฒฝ ๊ฐ ์ผ๊ด์ฑ: ํ์ ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ฐ๋ฐ, ์คํ ์ด์ง ๋ฐ ํ๋ก๋์ ํ๊ฒฝ์์ ์ปดํฌ๋ํธ๊ฐ ์ผ๊ด๋๊ฒ ๋น๋๋๊ณ ํ ์คํธ๋๋๋ก ๋ณด์ฅํ์ญ์์ค.
๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ์งํ
์ด๊ธฐ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ์๋ฒฝํ์ง ์์ ์ ์์ผ๋ฉฐ, ๊ทธ๊ฒ์ ๊ด์ฐฎ์ต๋๋ค. ์กฐ์ง๊ณผ ํ์ ์๊ตฌ๋ ์งํํ ๊ฒ์ ๋๋ค.
- ๋ชจ๋ฒ ์ฌ๋ก: ์ ๊ธฐ์ ์ผ๋ก ์ ๋ต์ ๊ฒํ ํ๊ณ ์กฐ์ ํ์ญ์์ค. ์ปดํฌ๋ํธ ๊ฐ๋ฐ์์ ์๋น ์ ํ๋ฆฌ์ผ์ด์ ํ ๋ชจ๋๋ก๋ถํฐ ํผ๋๋ฐฑ์ ์์งํ์ญ์์ค. ๋ฆด๋ฆฌ์ค๊ฐ ๋๋ฌด ์ฆ๊ฑฐ๋ ๋๋ฌด ๋๋ฆฐ๊ฐ์? ๋ธ๋ ์ดํน ์ฒด์ธ์ง๊ฐ ์ ์ ๋ฌ๋๊ณ ์๋์? ์ํ๊ณ์ ์ต์ ์ ๊ท ํ์ ์ฐพ๊ธฐ ์ํด ๋ฒ์ ๊ด๋ฆฌ ์ ์ฑ ์ ๋ฐ๋ณตํ ์ค๋น๋ฅผ ํ์ญ์์ค.
์ค์ ๊ธ๋ก๋ฒ ์๋๋ฆฌ์ค ๋ฐ ์์
์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ์ ์ค์ง์ ์ธ ์ด์ ์ ์ค๋ช ํ๊ธฐ ์ํด, ๋ช ๊ฐ์ง ๊ฐ์์ ์ด์ง๋ง ํ์ค์ ์ธ ๊ธ๋ก๋ฒ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค.
๋ค๊ตญ์ ์ด์ปค๋จธ์ค ํ๋ซํผ
- ๊ณผ์ : ๊ธ๋ก๋ฒ ์ด์ปค๋จธ์ค ๊ฑฐ๋ ๊ธฐ์ ์ด ๋ค๋ฅธ ์ง์ญ(๋ถ๋ฏธ, ์ ๋ฝ, ์์์ ํํ์)์ ๋ง์ถฐ์ง ์ฌ๋ฌ ์์ ์ ์ด์ํฉ๋๋ค. ๊ฐ ์ง์ญ์ ๊ณ ์ ํ ๋ฒ์ ์๊ตฌ ์ฌํญ, ๊ฒฐ์ ๋ฐฉ๋ฒ ๋ฐ ๋ง์ผํ ์บ ํ์ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ฐ ์ง์ญ์ ์ ํ ํ์ UI ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๊ฒ ์กฐ์ ํด์ผ ํ์ง๋ง, ๋ชจ๋ ํต์ฌ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณต์ ํฉ๋๋ค. ์ ํต์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด ๋ฒ์ ๊ด๋ฆฌ๋ ๋ณ๋ชฉ ํ์์ ์ด๋ํ์ฌ, ํ ์ง์ญ์ ์ํ ์์ ๋ณ๊ฒฝ์ด ์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆด๋ฆฌ์ค๋ฅผ ์๊ตฌํ๊ณ ๋ค๋ฅธ ์ง์ญ ํ์ ์ง์ฐ์ํต๋๋ค.
- ํด๊ฒฐ์ฑ
: ํ์ฌ๋ ๋ชจ๋
ธ๋ ํฌ ์ ๋ต์ ์ฑํํ์ฌ ๊ฐ ํต์ฌ UI ์์(์:
PaymentGatewayButton,ProductCard,ShippingAddressForm)๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ์ด ๊ด๋ฆฌ๋๋ ํจํค์ง๋ก ์ทจ๊ธํฉ๋๋ค. - ์ด์ :
- ์ ๋ฝ ํ์ ์์์ ํ์
ShippingAddressForm์ ์ํฅ์ ์ฃผ๊ฑฐ๋ ๊ธ๋ก๋ฒ ์์ ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ ํ์ง ์๊ณ ์๋ก์ด GDPR ์ค์๋ฅผ ์ํดPaymentGatewayButton์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. - ์ง์ญ ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ํจ์ฌ ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํ๊ณ ๋ฐฐํฌํ์ฌ ์ง์ญ์ ๊ด๋ จ์ฑ์ ๋์ด๊ณ ์ง์ญ๋ณ ๊ธฐ๋ฅ์ ์์ฅ ์ถ์ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
- ์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ๊ฐ ๊ฒฉ๋ฆฌ๋์ด ํ์ด ๋ ์์จ์ ์ผ๋ก ์์ ํ ์ ์์ผ๋ฏ๋ก ๊ธ๋ก๋ฒ ์กฐ์ ๋ณ๋ชฉ ํ์์ด ๊ฐ์ํฉ๋๋ค.
- ์ ๋ฝ ํ์ ์์์ ํ์
๋ค์ํ ์ ํ ๋ผ์ธ์ ๊ฐ์ถ ๊ธ์ต ์๋น์ค ์ ๊ณต์ ์ฒด
- ๊ณผ์ : ๋ํ ๊ธ์ต ๊ธฐ๊ด์ด ๋ค์ํ ์ ํ ๋ผ์ธ(์: ์๋งค ๊ธ์ต, ํฌ์, ๋ณดํ)์ ์ ๊ณตํ๋ฉฐ, ๊ฐ ์ ํ ๋ผ์ธ์ ๋ค๋ฅธ ์ ํ ๋ผ์ธ์ ์ํด ๊ด๋ฆฌ๋๊ณ ๋ค์ํ ๊ดํ ๊ถ์ ๊ฑธ์ณ ์๊ฒฉํ ๊ท์ ์๊ตฌ ์ฌํญ์ ์ค์ํฉ๋๋ค. ๊ทธ๋ค์ ์ผ๊ด์ฑ์ ์ํด ๊ณต์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ณตํต "๊ณ์ข ์์ก ํ์" ์ปดํฌ๋ํธ์ ๋ฒ๊ทธ ์์ ์ ์๋งค ๊ธ์ต์ ์ค์ํ์ง๋ง, "์ฃผ์ ์ฐจํธ" ์ปดํฌ๋ํธ์ ์๋ก์ด ๊ธฐ๋ฅ์ ํฌ์ ํ๋ซํผ์๋ง ๊ด๋ จ์ด ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ ๋ํด ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๋ฒํ๋ฅผ ์ ์ฉํ๋ฉด ๊ด๋ จ ์๋ ์ ํ ๋ผ์ธ์ ๋ถํ์ํ ํ๊ท ํ ์คํธ๊ฐ ๋์ ๋ฉ๋๋ค.
- ํด๊ฒฐ์ฑ
: ์กฐ์ง์ ๋ชจ๋
ธ๋ ํฌ ๋ด์์ ์ปดํฌ๋ํธ๋ณ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๊ตฌํํฉ๋๋ค. ๋ํ ๊ฐํ๋ SemVer ๋ฉํ๋ฐ์ดํฐ(์:
@my-fin-lib/account-balance@1.2.1+compliance.fix.EU)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ์ปดํฌ๋ํธ์ ๋ํ ํน์ ๊ท์ ๋๋ ๊ฐ์ฌ ๊ด๋ จ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํฉ๋๋ค. - ์ด์ :
- ์๋งค ๊ธ์ต์ ํฌ์ ํ๋ซํผ์ด "์ฃผ์ ์ฐจํธ"๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ํ ์คํธํ๋๋ก ๊ฐ์ ํ์ง ์๊ณ ๋ ์ค์ํ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ฉฐ "๊ณ์ข ์์ก ํ์" ์ปดํฌ๋ํธ๋ฅผ ์ฆ์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
- ๋ฒ์ ๋ฌธ์์ด์ด ํน์ ์ปดํฌ๋ํธ์ ๋ํ ๊ท์ ์ค์ ์์ ์ ์ง์ ์ฐธ์กฐํ๋ฏ๋ก ์ ํํ ๊ฐ์ฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํ๊ฒํ ๋ ๋กค๋ฐฑ: "์ฃผ์ ์ฐจํธ" ์ปดํฌ๋ํธ์์ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ง ๋๋๋ฆฌ๋ฉด ๋๋ฏ๋ก ๋ค๋ฅธ ์ค์ํ ๊ธ์ต ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏธ์น๋ ์ํฅ์ด ์ต์ํ๋ฉ๋๋ค.
๊ธ๋ก๋ฒ ๊ธฐ์ฌ์ ๊ธฐ๋ฐ์ ๋ ์คํ์์ค UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๊ณผ์ : ์ธ๊ธฐ ์๋ ์คํ์์ค UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ก๋ถํฐ ๊ธฐ์ฌ๋ฅผ ๋ฐ์ผ๋ฉฐ, ๊ฒฝํ ์์ค์ด ๋ค์ํ๊ณ ์ข ์ข ์ฐ๋ฐ์ ์ผ๋ก ํ๋ํฉ๋๋ค. ์ผ๊ด๋ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ์ ์งํ๊ณ , ํ์ง์ ๋ณด์ฅํ๋ฉฐ, ์์ฒ ๋ช ์ ์ฌ์ฉ์์ ์๋ฐฑ ๋ช ์ ๊ธฐ์ฌ์์๊ฒ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๋ช ํํ ์ปค๋ฎค๋์ผ์ด์ ์ ์ ๊ณตํ๋ ๊ฒ์ ์์ฒญ๋ ๊ณผ์ ์ ๋๋ค.
- ํด๊ฒฐ์ฑ
: ์ด ํ๋ก์ ํธ๋ Conventional Commits๋ฅผ ์๊ฒฉํ๊ฒ ์ํํ๊ณ
semantic-release๋ฅผ ๋ชจ๋ ธ๋ ํฌ(Lerna ๋๋ Nx)์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ์ด ๊ด๋ฆฌ๋๋ ์ปดํฌ๋ํธ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. - ์ด์ :
- ์์ธก ๊ฐ๋ฅํ ๋ฆด๋ฆฌ์ค: ์๋ํ๋ ๋ฒ์ ๊ด๋ฆฌ๋ ๋ชจ๋ ์ปค๋ฐ ๋ฉ์์ง๊ฐ ๋ค์ ๋ฒ์ ๋ฒํ ๋ฐ ๋ณ๊ฒฝ ๋ก๊ทธ ํญ๋ชฉ์ ์ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ๋ฆด๋ฆฌ์ค๋ฅผ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
- ๊ธฐ์ฌ์๋ฅผ ์ํ ์ฉ์ด์ฑ: ์๋ก์ด ๊ธฐ์ฌ์๋ ์ปค๋ฐ ๋ฉ์์ง ๊ท์น์ ๋น ๋ฅด๊ฒ ๋ฐฐ์ ์์น๋ ์๊ฐ๋์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๊ธฐ์ฌ๋ฅผ ์ด์งํฉ๋๋ค.
- ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ ์ ๋ขฐ: ์ฌ์ฉ์๋ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ ๋ขฐํ ์ ์๊ณ ํฌ๋ช ํ๋ฉฐ, ๊ฐ ์ปดํฌ๋ํธ์ ๋ํด ์๋์ผ๋ก ์์ฑ๋ ์์ธํ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ํน์ ์ปดํฌ๋ํธ๋ฅผ ์์ ์๊ฒ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
- ์ ์ง ๊ด๋ฆฌ์ ๋ถ๋ด ๊ฐ์: ํต์ฌ ์ ์ง ๊ด๋ฆฌ์๋ ์๋ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๋ณ๊ฒฝ ๋ก๊ทธ ์์ฑ์ ์๊ฐ์ ๋ ์๋นํ์ฌ ์ฝ๋ ๊ฒํ ๋ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ง์คํ ์ ์์ต๋๋ค.
์ปดํฌ๋ํธ ๋ฒ์ ๊ด๋ฆฌ์ ๋ฏธ๋
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ด ๊ณ์ ์งํํจ์ ๋ฐ๋ผ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต๋ ๋ฐ์ ํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํจ์ฌ ๋ ์ ๊ตํ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ํ ์ ์์ต๋๋ค:
- AI ์ง์ ๋ฒ์ ๊ด๋ฆฌ: AI๊ฐ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ฌ์ง์ด ๋์์ธ ํ์ผ ๋ณ๊ฒฝ ์ฌํญ(์: Figma)์ ๋ถ์ํ์ฌ ์ ์ ํ ๋ฒ์ ๋ฒํ๋ฅผ ์ ์ํ๊ณ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์์ฑํ์ฌ ์๋ ์ค๋ฒํค๋๋ฅผ ๋์ฑ ์ค์ด๋ ๊ฒ์ ์์ํด ๋ณด์ญ์์ค.
- ๋์ฑ ํตํฉ๋ ๋๊ตฌ: ๋์์ธ ๋๊ตฌ(Figma ๋ฑ), ๊ฐ๋ฐ ํ๊ฒฝ(IDE), ๋ฒ์ ๊ด๋ฆฌ ์์คํ ๊ฐ์ ๋ ๊ธด๋ฐํ ํตํฉ์ ๋์์ธ ์ปจ์ ์์ ๋ฐฐํฌ๋ ์ปดํฌ๋ํธ๊น์ง ์ํํ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ, ๋ฒ์ ๊ด๋ฆฌ๋ ์๋ฌต์ ์ผ๋ก ๊ด๋ฆฌ๋ ๊ฒ์ ๋๋ค.
- ๋์์ธ ํ ํฐ๊ณผ์ ๊ธด๋ฐํ ์ฐ๊ด: ๋์์ธ ํ ํฐ ์์ฒด์ ๋ฒ์ ๊ด๋ฆฌ์ ์ด๋ฌํ ๋ฒ์ ์ด ์ปดํฌ๋ํธ ๋ด์ ์๋์ผ๋ก ๋ฐ์๋๋ ๊ฒ์ด ๋์ฑ ํ์คํ๋์ด, ๋์์ธ ์ธ์ด ์ ๋ฐ์ดํธ๊ฐ ์ฝ๋ ๋ณ๊ฒฝ๊ณผ ๋์ผํ ์ ๋ฐ๋๋ก ์ถ์ ๋๊ณ ๋ฐฐํฌ๋๋๋ก ๋ณด์ฅํ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๋ณต์กํ ๊ตฌ์กฐ ์์์, ํนํ ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ฐํ๊ฒ ์ ์ดํ๊ณ ์ ๋ฌํ๋ ๋ฅ๋ ฅ์ ๋ ์ด์ ์ฌ์น๊ฐ ์๋๋ผ ํ์์ ๋๋ค. ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธ๋ถํ๋ ๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ์ด ์ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ ์ฌ์ ์ธ ํผ๋์ ๊ตฌ์กฐํ๋๊ณ ์์ธก ๊ฐ๋ฅํ ์งํ๋ก ๋ณํ์ํต๋๋ค.
๋ชจ๋ ธ๋ ํฌ ๋ด์์ ์ปดํฌ๋ํธ๋ณ ํ์ ๋ฒ์ ๊ด๋ฆฌ์ ๊ฐ์ ์ ๋ต์ ์ฑํํ๊ณ , ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๊ฐํ๋ ์ ์์ ๋ฒ์ ๋์ ํ์ฉํ๋ฉฐ, Lerna, Nx, semantic-release์ ๊ฐ์ ๋๊ตฌ๋ก ๋ฆด๋ฆฌ์ค ์ํฌํ๋ก์ฐ๋ฅผ ์๋ํํจ์ผ๋ก์จ ์กฐ์ง์ ์ ๋ก ์๋ ์์ค์ ์์ ์ฑ์ ํ๋ณดํ๊ณ , ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๋ฉฐ, ๋ค์ํ๊ณ ๊ตญ์ ์ ์ธ ํ์ ์ํ ์ง์ ํ ํ์ ํ๊ฒฝ์ ์กฐ์ฑํ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ฑํํ๋ ค๋ฉด ๋๊ตฌ ๋ฐ ํ๋ก์ธ์ค ์ ์์ ๋ํ ์ด๊ธฐ ํฌ์๊ฐ ํ์ํ์ง๋ง, ์ํ ๊ฐ์, ๋ ๋น ๋ฅธ ๋ฐฐํฌ, ์ ์ง๋ณด์์ฑ ํฅ์, ๊ธ๋ก๋ฒ ํ์ ๊ฐํ์ ๊ฐ์ ์ฅ๊ธฐ์ ์ธ ์ด์ ์ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋ฏธ๋ ์งํฅ์ ์ธ ๋์งํธ ์ ํ์ ๊ตฌ์ถํ๋ ๋ฐ ์ง์งํ ๋ชจ๋ ์กฐ์ง์๊ฒ ํ์์ ์ธ ๊ดํ์ด ๋ฉ๋๋ค. ์ด์ ๊ธฐ๋ณธ์ ๋์ด ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ์์ ์ ๋ฐํจ์ ๊ธฐ์ ์ ๋ง์คํฐํ ๋์ ๋๋ค.