[The Monitor](https://the-monitor.vercel.app/) โโ
[[PR/ํ๋ณด๋ํ์ฌ ์ธํด ์ ๋ฌด_๋ชจ๋ํฐ๋ง]](https://blog.naver.com/lifefor0/222058462827)
[[PR]๋ด์ค ๋ชจ๋ํฐ๋งโฆ ๋ฐ๋ณต์ ์ ๋ฌด ๊ทธ๋ฌ๋ ์ค์์ ์ฐ์](https://blog.naver.com/ggggggggguda/222650339397)
์๋น์ค ํน์ฑ ์ User ์ Customer ๊ฐ ๋ค๋ฅด๋ค๊ณ ํ๋จํ์์ต๋๋ค.
๐ก- ๊ฐ์ค 1 ํ์ฌ ์์ฅ์ ์กด์ฌํ๋ ๋ชจ๋ํฐ๋ง ์๋น์ค๋ ๋ํ์ฌ์ ์ง์๋ค์๊ฒ๋ ์ ํฉํ์ง ์์ ๊ฒ์ด๋ค
- ๋ชจ๋ํฐ๋ง ์ ๋ฌด ์ ๋ณด์กฐ ์๋น์ค๋ฅผ ์ฌ์ฉํ์๋์?
- โ๋ด์ค๋ดโ์ด๋ผ๋ ์๋น์ค๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ์ ๊ฐ์?
- ๋ชจ๋ํฐ๋ง ์ ๋ฌด์์ ๊ฐ์ฅ ์๊ฐ์ด ๋ง์ด ํ์ํ ๋ถ๋ถ์ ์ด๋ ๋ถ๋ถ์ธ๊ฐ์?
- ๊ฐ์ค 2. ๊ณ ๊ฐ์ฌ ๋ณ๋ก ๋ชจ๋ํฐ๋ง์ ๋ํ ์๊ตฌ์ฌํญ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ํ์ฌ์์๋ ์๊ธฐ ์
๋ฌด๋ฅผ ์ ํธํ ๊ฒ์ด๋ค
- ๊ณ ๊ฐ์ฌ ๋ณ๋ก ๋ชจ๋ํฐ๋ง ๋ณด๊ณ ์์ ์์์ด ๋ค๋ฅธ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
- ๋ณด๊ณ ์์ ์์์ ๋ํ์ฌ์ ๊ณ ๊ฐ์ฌ ์ค ์ด๋ ์ชฝ์์ ์ ๊ณตํ๋์?
- ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํ์ฌ ๋ฉ์ผ์ด ์๋, ์๋น์ค์ ๋ฉ์ผ๋ก ๋ชจ๋ํฐ๋ง์ด ๊ฐํ ๋ฐ ๊ด์ฐฎ๋์?
- ๊ฐ์ค 3. ์ฑ๊ณผ ๋ณด๊ณ ๋ฅผ ๊ฐํธํํ๊ธฐ ์ํ ๋ชจ๋ํฐ๋ง ์๋น์ค๊ฐ ์๋ค๋ฉด ์ฌ์ฉํ ์ํฅ์ด ์์ ๊ฒ์ด๋ค.
- ๋ชจ๋ํฐ๋ง ๋ณด๊ณ ์๋ฅผ ํตํด ๋ง๋ค์ด์ง๋ 2์ฐจ ์ฐ์ถ๋ฌผ์๋ ๋ฌด์์ด ์๋์?
- ๋ชจ๋ํฐ๋ง ๊ฒฐ๊ณผ๋ฌผ์ ํด๋น ์ฐ์ถ๋ฌผ๋ก ์ฎ๊ธฐ๊ธฐ ์ํด ์๊ธฐ ์ด์ธ์ ๋ฐฉ๋ฒ์ ํ์ฉํ๊ณ ์๋์?
- ๊ฐ์ค 4. ์๋น์ค๋ฅผ ๊ตฌ๋งคํ๋ customer ๋ ์
๋ฌด ์๋ํ ์ด์์ ๊ฐ์น๋ฅผ ์ ๊ณตํด์ผ๋ง ๊ตฌ๋งคํ ๊ฒ์ด๋ค.
- ๋ชจ๋ํฐ๋ง์ ๋ณด๊ณ ์ด์ธ์ ๋ชฉ์ ๋ ์๋์? (์ ์ฐ์ฐจ ์ง์๋ค์ ๊ต์ก์ํค๊ธฐ ์ํ)
- AI ๊ธฐ๋ฅ์ ํ์ฉํด ์ ๋ต์ ์์ ๋ชจ๋ํฐ๋ง ๋ณด๊ณ ์์ ๋ํ ์ธ์ฌ์ดํธ๋ฅผ ๋์ถํ๋ ๊ธฐ๋ฅ์ ๋น๋ฉ๊ณผ์ ์์ ์ค๋๋ ฅ์ ๋ํ ์ ์๋ค๊ณ ์๊ฐํ์๋์?
- ๊ฐ์ค ์ธ์ ์ง๋ฌธ
- ๋ชจ๋ํฐ๋ง ์ธ์ ๊ฐ์ ๋์์ผ๋ฉด ํ๋ ์ ๋ฌด๊ฐ ์๋์?
- ๋ด์ค๋ด ์ฌ์ฉ์ฑ ํ๊ฐ
- ๋ํ์ฌ์๊ฒ ํ์ํ ๋ด์ค๋ถ์์ ๋ฌด์์ธ๊ฐ์?
- ์ ๋ฌด๋ณด์กฐ ์๋น์ค๋ฅผ ํ์ฌ์์๋ ์ด๋ค ๊ณผ์ ์ผ๋ก ๊ตฌ๋งค / ๊ฒฐ์ ํ๋์?
- ๋ณด์์ ์ํด ๋ฉ์ผ ์ธ์ฆ ๊ธฐ๋ฅ์ ํฌํจํ ํ์๊ฐ์ ๊ธฐ๋ฅ
- ๋ํ ๋ฉ์ผ๋ก ๋ก๊ทธ์ธ ํ, ๊ด๋ฆฌ์๊ฐ ์ถํ ์ด๋๋ฏผ ํ์ด์ง์์ ๊ฐ ๊ณ ๊ฐ์ฌ ๋ณ ๋ด๋น์์๊ฒ ๊ถํ์ ๋ถ์ฌ
- ๊ฐ๋จํ ์ ๋ณด ์ ๋ ฅ์ ํตํด ๊ณ ๊ฐ์ฌ ์ํฌ์คํ์ด์ค ์์ฑ
- ์์ฌ/๊ฒฝ์์ฌ/์ ๊ณ์ ๋ํ ๋ชจ๋ํฐ๋ง ํค์๋์ ์์ ์ธ ๋ฉ์ผ์ ์ฌ์ ์ ๋ฑ๋ก
- ์ถ๊ฐํ ๊ณ ๊ฐ์ฌ๋ค์ ์ํฌ์คํ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ชจ์๋ณผ ์ ์๋ ๋ฉ์ธ ํ๋ฉด
- ํค์๋๋ณ๋ก ๊ฒ์๋ ๊ธฐ์ฌ ์ค์์ ์ํ๋ ๊ธฐ์ฌ๋ฅผ ์ ํํ์ฌ ๋ณด๊ณ ์์ ์ถ๊ฐํ ์ ์๋ ํ์ด์ง๋ก, The Monitor์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ด ํฌํจ๋จ
- ๋ฐ์ผ๋ฆฌ ๋ชจ๋ํฐ๋ง์์ ์คํฌ๋ฉํ ๊ธฐ์ฌ์ ์ ๋ชฉ, ํค๋๋ผ์ธ, URL, ๊ธฐ์๋ช ๋ฑ์ด ํด๋ฆญ ํ ๋ฒ์ผ๋ก ๋ณด๊ณ ์ ํ์์ ๋ฐ์๋จ
- ๋ก๊ณ , ์ ๋ชฉ, ์์, ์นดํ ๊ณ ๋ฆฌ ๋ฑ์ ์ปค์คํ ํ์ฌ ํต์ผ๋ ๋ณด๊ณ ์ ํ์์์ ๋ฒ ๋ฆฌ์์ด์ ์ ์ถ๊ฐ
- ๋ณด๊ณ ์ ํธ์ง ํ ๊ณ ๊ฐ์ฌ ๋ด๋น์์๊ฒ ๋น ๋ฅด๊ฒ ๋ฉ์ผ ์ ์ก ๊ฐ๋ฅ
- ์ต๋ 1๋ ๊ฐ์ ๋ชจ๋ํฐ๋ง ๋ณด๊ณ ์๋ฅผ ๋ชจ์๋ณด๋ ๊ธฐ๋ฅ
- ์ด์ ์ ์์ ํ ๋ณด๊ณ ์๋ ํธ์ง ๊ฐ๋ฅํ๋ฉฐ ์คํฌ๋ฉํ ๋ด์ญ๋ ํจ๊ป ์ ์ฅ๋จ
- Vite: ๋น ๋ฅธ ๋ฒ๋ค๋ง๊ณผ ํซ ๋ฆฌ๋ก๋ฉ์ ์ ๊ณตํ๋ ์ต์ ํ๋ก ํธ์๋ ๋น๋ ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํด ์ ํํ์ต๋๋ค.
- React: ์ปดํฌ๋ํธ ๊ธฐ๋ฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ๋ณต์กํ UI๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด ์ ํํ์ต๋๋ค.
- TypeScript: JavaScript์ ์ ์ ํ์ ์ ์ถ๊ฐํ์ฌ ์ฝ๋์ ์์ ์ฑ์ ๋์ด๊ณ ๋ฒ๊ทธ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ์ํด ๋์ ํ์ต๋๋ค.
- Tailwind CSS: ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฐ CSS ํ๋ ์์ํฌ๋ก, ๋น ๋ฅด๊ณ ์ผ๊ด์ฑ ์๋ ์คํ์ผ๋ง์ด ๊ฐ๋ฅํ์ฌ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถ์ํค๊ณ ์ปค์คํฐ๋ง์ด์ง์ ์ ์ฐ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค.
- Java - version 21
- Spring boot JPA
- JWT
- ์ธ์ฆ ์ธ๊ฐ (๋ก๊ทธ์ธ ํ์๊ฐ์ )
- Restful API
- Redis
- ์ด๋ฉ์ผ ์ธ์ฆ๋ฒํธ ๋ฐ๊ธ
- S3
- ๋ณด๊ณ ์ ์ ์ฅ
- Docker
- Docker Image
- JIB
- Nginx
- ๋ก๋๋ฐธ๋ฐ์ฑ
- HTTP โ HTTPS
- AWS EC2 - ์๋ฒ
- ํ๋ ฅ์ IP
- RDS
- Apache Poi - MS ๋ฌธ์ํ
- Google Custom Search API
- ์ฝ๋ ์์ ์๋ฆผ: ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์์ ํ ๋๋ ๋ฐ๋์ ๋งํด์ค๋๋ค.
- ๋จธ์ง ์๋ฆผ: ๋ธ๋์น๋ฅผ ๋จธ์งํ๊ธฐ ์ ์ ํ์๋ค์๊ฒ ์๋ ค์ค๋๋ค.
- ์ปจ๋ฒค์ ์ค์: ์ฝ๋ฉ ์ปจ๋ฒค์ ๊ณผ ์ปค๋ฐ ๋ฉ์์ง ์ปจ๋ฒค์ ์ ์ ์งํต๋๋ค.
- ์ถฉ๋ ํด๊ฒฐ: ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณํฉํ์ ๋ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ํผ์ ํด๊ฒฐํ์ง ์๊ณ ์ฝ๋ ์์ฑ์์ ํจ๊ป ํด๊ฒฐํฉ๋๋ค.
public/
src/
โโโ main.tsx
โโโ App.tsx
โโโ TYPES/
โโโ API/
โโโ CONSTANTS/
โโโ UTILS/
โโโ STYLES/
โโโ COMPONENTS/
โโโ HOOKS/
โโโ ASSETS/
โโโ PAGES/
โ โโโ PageName/
โ โโโ index.tsx
โ โโโ components/
- ์ ํด์ง ํด๋๋ช (components, pages) ์ธ์๋ ๋ชจ๋ ๋๋ฌธ์๋ก ์์
- ํน์ ํ์ด์ง ๋ด์์๋ง ์ฐ์ด๋ ์ปดํฌ๋ํธ๋ ํด๋น ํ์ด์ง ํด๋ ๋ด๋ถ์ components ํด๋ ์์ ์ ์ฅ
- public/: ๋ฒ๋ค๋ง๋์ง ์๊ณ ๋น๋ ์ ๊ทธ๋๋ก ๋ณต์ฌ๋๋ ์ ์ ์์ฐ๋ค์ด ์ ์ฅ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ ๊ทผ ๊ฐ๋ฅํ ํ์ผ๋ค(์: favicon, ๋ก๊ณ , ์ ์ญ ํฐํธ ๋ฑ)์ด ํฌํจ๋ฉ๋๋ค.
- src/assets/: ์ฝ๋์์ importํ์ฌ ์ฌ์ฉํ๋ ์์ฐ๋ค์ด ์ ์ฅ๋ฉ๋๋ค. Vite์ ์ํด ๋ฒ๋ค๋ง๋๊ณ ์ต์ ํ๋๋ฉฐ, ์ฃผ๋ก ์ด๋ฏธ์ง, ํฐํธ ๋ฑ ์ฑ ๋ด๋ถ์์ ์ฐธ์กฐ๋๋ ํ์ผ๋ค์ด ํฌํจ๋ฉ๋๋ค.
์ปค๋ฐ ์ ํ | ์๋ฏธ |
---|---|
build | ๋น๋ ์์คํ ๋๋ ์ธ๋ถ ์ข ์์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ ์ฌํญ (์: webpack, npm) |
chore | ํจํค์ง ๋งค๋์ ์์ , ๊ทธ ์ธ ๊ธฐํ ์์ ex) .gitignore |
ci | CI ์ค์ ํ์ผ ๋ฐ ์คํฌ๋ฆฝํธ ์์ |
docs | ๋ฌธ์ ์์ |
feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
fix | ๋ฒ๊ทธ ์์ |
perf | ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ |
refactor | ์ฝ๋ ๋ฆฌํฉํ ๋ง |
revert | ์ด์ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ |
style | ์คํ์ผ ์ฝ๋ ๋ณ๊ฒฝ |
asset | svg, ์ด๋ฏธ์ง ๋ฑ ๋์์ธ ํ์ผ ์ถ๊ฐ |
test | ํ ์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ ์คํธ ์ฝ๋ ์ถ๊ฐ |
type | ํ์ ์์ |
rename | ํ์ผ ๋๋ ํด๋ ๋ช ์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์ ๋ง์ธ ๊ฒฝ์ฐ |
remove | ํ์ผ ์ญ์ ํ๋ ๊ฒฝ์ฐ |
hotfix | ๊ธํ๊ฒ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐ |
๐ ํด๋๋ช ์ ๊ฒฝ์ฐ ์๋ฌธ์ ์์ฑ
๐ ์ปดํฌ๋ํธ ํ์ผ๋ช ์ PascalCase๋ก ํต์ผ
๐ ๊ทธ ์ธ ํ์ผ๋ช ์ ์๋ฌธ์ ์์ฑ
ex) Home.tsx
ex) index.d.ts
โฐ ํจ์ํ ์ปดํฌ๋ํธ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ธํฉ๋๋ค.
const Welcome: React.FC<WelcomeProps> = ({ name }) => {
return <div>Welcome, {name}</div>;
};
- ์ปดํฌ๋ํธ์ props ํ์ ์ ์ ์ํ๋ ๊ฒฝ์ฐ, ํ์ ์ ๋ช ํํ๊ฒ ์ค์ ํ๊ณ React.FC๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ์ ์ธํฉ๋๋ค.
- props๋ ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ฌ์ฉํ์ฌ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํฉ๋๋ค.
โฐ ํจ์๋ช , ๋ณ์๋ช ์ camelCase๋ก ์์ฑ
- ์ด๋ฆ์ ํตํด ์ด๋ค ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง ์ ์ ์๋๋ก ์์ฑ
- ๋์
๋๋ฆฌ, ๋ฐฐ์ด ๋ฑ์ ๋ณต์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํ ๋ณ์๋ช
s ๋ถ์ด๊ธฐ
ex) heights
- ๋ก๋ฉ์ด๋ ๋ชจ๋ฌ์ฐฝ ๋ฑ์ ๋ณด์ฌ์ง ์ฌ๋ถ์ ๋ํ boolean state์ ๊ฒฝ์ฐ is ๋ถ์ด๊ธฐ
ex) isModalOpen, isLoading
- ๋ฐ์ดํฐ ์ ๊ทผ ํจ์์ ๊ฒฝ์ฐ get์ผ๋ก ์์ํ๊ธฐ
ex) getUserData
- ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๋ ํจ์๋ on์ผ๋ก ์์ํ๋ฉฐ, ์ด ํจ์๋ ์ฃผ๋ก ์ด๋ฒคํธ ๋ฐ์ ์์ ์ ํธ์ถ๋ฉ๋๋ค ex) onClick, onClose
- ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ก์ง์ ๋ด๋ ํจ์๋ handle๋ก ์์ํ๋ฉฐ, ์ฃผ๋ก on ํจ์ ๋ด์์ ํธ์ถ๋ฉ๋๋ค ex) handleClick, handleModalOpen
ํจ์๋ช | ๋์ฌ๊ตฌ ex) getUserData |
---|---|
๋ณ์๋ช | ๋ช ์ฌ๊ตฌ ex) userData |
1๏ธโฃ ์ธ๋ผ์ธ ์ฃผ์
- ๋ฌด๋ถ๋ณํ๊ฒ line by line ์ฃผ์์ ์ง์
- if๋ฌธ, for๋ฌธ, switch๋ฌธ ๊ทธ๋ฐ ๊ตฌ๋ฌธ ์ ์ธ ๋ถ๋ถ ์์ ๊ฐ๋จํ๊ฒ ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ์ค๋ช
- ์ค๋ช ์ ๋ํ ์ฃผ์์ ํ๊ธ๋ก ์์ฑ
2๏ธโฃ ํจ์ ์ฃผ์
/**
* ํจ์ ์ค๋ช
* @param a: ๋ง์
์ ์ํ ์ฒซ๋ฒ์งธ ์ธ์
* @param b: ๋ง์
์ ์ํ ๋๋ฒ์งธ ์ธ์
* @return: ์ธ์๋ก ๋ฐ์ ๋ ์ ์๋ฅผ ๋ํ ๊ฐ์ ๋ฆฌํด
*/
const filterDescription = (a, b) => {
return { a, b };
};
ํ์๋ค์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ด์๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก, ๋ค์์ ์ด์ ์ปจ๋ฒค์ ์ ๋ฐ๋ฆ ๋๋ค.
-
์นดํ ๊ณ ๋ฆฌ์ ์ด์ ๋ฒํธ๋ฅผ ํฌํจํ ํ์: ์ด์ ์ ๋ชฉ์ ์ด์์ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด๊ณ , ์นดํ ๊ณ ๋ฆฌ ๋ฐ ๊ด๋ จ ๋ฒํธ๋ฅผ ํฌํจํ์ฌ ์์ฑํฉ๋๋ค.
- ํ์:
[์นดํ ๊ณ ๋ฆฌ] ์ด์ ๋ด์ฉ
- ์:
[Chore] gitignore ํ์ผ ์์
- ํ์:
-
์นดํ ๊ณ ๋ฆฌ ๊ท์น:
- Feature: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ์ ๊ด๋ จ๋ ์ด์.
- Bugfix: ๋ฒ๊ทธ ์์ ๊ณผ ๊ด๋ จ๋ ์ด์.
- Refactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง๊ณผ ๊ด๋ จ๋ ์ด์.
- Docs: ๋ฌธ์ ์์ ๋ฐ ์ถ๊ฐ ์์ ๊ณผ ๊ด๋ จ๋ ์ด์.
- Chore: ์ค์ ๋ณ๊ฒฝ, ํ์ผ ๊ด๋ฆฌ ๋ฑ ๊ธฐํ ์์ํ ์์ ๊ณผ ๊ด๋ จ๋ ์ด์.
- Hotfix: ๊ธด๊ธํ ๋ฒ๊ทธ ์์ ๊ณผ ๊ด๋ จ๋ ์ด์.
- ์ด์์ ๋ชฉ์ ๊ณผ ํ์์ฑ์ ๋ช ํํ ์ค๋ช ํฉ๋๋ค. ๋ฐฐ๊ฒฝ ์ค๋ช ์ด๋ ์ด์๋ฅผ ํตํด ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ์ ๋ํด ๊ธฐ์ ํฉ๋๋ค.
- ์ด์ ํด๊ฒฐ์ ์ํด ํด์ผ ํ ์์ ์ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํฉ๋๋ค. ์ฒดํฌ๋ฆฌ์คํธ ํ์์ผ๋ก ์์ฑํ์ฌ ์งํ ์ํฉ์ ์ฝ๊ฒ ํ์ธํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ ๋ฆฌ๋ทฐ์ด๊ฐ ๊ฒํ ํ ๋ ์ฃผ์ํด์ผ ํ ์ฌํญ์ ๊ธฐ์ฌํฉ๋๋ค. ๊ด๋ จ ๋ฌธ์๋ ๋ฆฌ์์ค๋ฅผ ์ฒจ๋ถํ ์๋ ์์ต๋๋ค.
- ์ด์ ์ ๋ชฉ ์์ฑ: ์ปจ๋ฒค์ ์ ๋ง๊ฒ ์ด์ ์ ๋ชฉ์ ์์ฑํฉ๋๋ค.
- ์ด์ ๋ด์ฉ ์์ฑ: ํ ํ๋ฆฟ์ ๊ธฐ๋ฐ์ผ๋ก ์ด์์ ๋ชฉ์ ๊ณผ ์์ ๋ด์ฉ์ ์์ฑํฉ๋๋ค.
- ์ด์ ๊ด๋ฆฌ: ์ด์๊ฐ ์งํ๋๋ฉด์ ์์ ๋ด์ฉ์ ์ฒดํฌํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ด์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
Github Flow๋ ๋จ์ํ๊ณ ํจ๊ณผ์ ์ธ ๋ธ๋์น ์ ๋ต์ผ๋ก, ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ์ ๋ต์ ์ต์ ๊ธฐ๋ฅ์ด ํญ์ ๋ฐฐํฌ๋์ด๋ ๋๋ ํ๊ฒฝ๊ณผ CI/CD๊ฐ ์ ๊ฐ์ถฐ์ ธ ์์ด ๋ฒ๊ทธ์ ๋ํ ๋๋น๊ฐ ์ ๋์ด์๋ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค.
- main ๋ธ๋์น: ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. ์ด ๋ธ๋์น์ ๋จธ์ง๋ ์ฝ๋๋ ๊ณง๋ฐ๋ก ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌ๋ ์ ์์ต๋๋ค.
- feature ๋ธ๋์น: ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด main ๋ธ๋์น๋ก ๋ณํฉ๋ฉ๋๋ค.
-
main์ ๋จธ์ง๋ ๋ธ๋์น๋ ์ญ์ ํฉ๋๋ค
-
๋ธ๋์น ์ด๋ฆ์ ๋ช ํํ๊ฒ ์์ฑํฉ๋๋ค
- ๋ธ๋์น ์ด๋ฆ์ ๋ธ๋์น์ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ๋ํ๋ด์ผ ํฉ๋๋ค.
- ์๋ฌธ์์ ํ์ดํ(-)์ ์ฌ์ฉํฉ๋๋ค. ์: 'feature/#100'
- ๋ช
๋ช
๊ท์น:
feature
: ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์ฌ์ฉํฉ๋๋ค.bugfix
: ๋ฒ๊ทธ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค.hotfix
: ๊ธด๊ธํ ๋ฒ๊ทธ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค.refactor
: ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค.release
: ๋ฐฐํฌ ์ค๋น๋ฅผ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค. ์:experiment
: ์๋ก์ด ์์ด๋์ด๋ ๊ธฐ์ ์คํ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค.docs
: ๋ฌธ์ ์์ ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค.chore
: ์์ํ ์์ ์ด๋ ์ค์ ๋ณ๊ฒฝ ๋ฑ์ ์ํ ๋ธ๋์น ์ด๋ฆ์ ๋๋ค.
-
ํ๋์ ๋ธ๋์น์์๋ ํ๋์ ์์ ๋ง ํฉ๋๋ค
ํ์๋ค์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ํ ๋ฆฌํ์คํธ(PR)๋ฅผ ์์ฑํ๊ณ ๊ฒํ ํ ์ ์๋๋ก, ๋ค์์ PR ์ปจ๋ฒค์ ์ ๋ฐ๋ฆ ๋๋ค.
- PR ์ ๋ชฉ์ ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ๊ฒ ํด๋น PR์ ๋ชฉ์ ์ ํํํด์ผ ํฉ๋๋ค.
- PR ์ ๋ชฉ ํ์์ ์ด์ ์ ๋ชฉ๊ณผ ์ ์ฌํ ํ์์ผ๋ก ์์ฑ๋ฉ๋๋ค.
- ํ์:
[์นดํ ๊ณ ๋ฆฌ/#์ด์๋ฒํธ] PR ์ ๋ชฉ
- ์์:
[Feature/#101] ๋ก๊ทธ์ธ ํ์ด์ง UI ๊ตฌํ
- ํ์:
- PR์ ์์ฑํ ๋๋ ์๋ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ด PR๊ณผ ๊ด๋ จ๋ ์ด์ ๋ฒํธ๋ฅผ ๋ช ์ํฉ๋๋ค. ์: close #4
- ํด๋น PR์์ ๊ตฌํ๋ ๊ธฐ๋ฅ, ์์ ๋ ๋ฒ๊ทธ, ๋๋ ๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ์ ์์ธํ ์ค๋ช ํฉ๋๋ค.
- ๋ฆฌ๋ทฐ์ด๊ฐ ๋ฆฌ๋ทฐํ ๋ ์ ์ํด์ผ ํ ์ฌํญ์ด๋ ์๊ฐํด๋ณผ ๋ฌธ์ ๋ฅผ ๊ธฐ์ฌํฉ๋๋ค.
- ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ๊ณ , ์คํฌ๋ฆฐ์ท, GIF, ๋๋ ๋ผ์ด๋ธ ๋ฐ๋ชจ ๋งํฌ๋ฅผ ์ฒจ๋ถํฉ๋๋ค. ์คํฌ๋ฆฐ์ท์ ๊ถ์ฅํฉ๋๋ค.
-
PR์ ์ ์ถํ๊ธฐ ์ ์ ์๋ ํญ๋ชฉ๋ค์ ํ์ธํด ์ฃผ์ธ์:
-
Reviewers๋ฅผ ์ง์ ํ์ต๋๋ค.
-
Assignees๋ก ๋ณธ์ธ์ ์ ํํ์ต๋๋ค.
-
์ ์ ํ label์ ์ ํํ์ต๋๋ค.
- PR ์์ฑ: ์์ ์ ์๋ฃํ ํ, ๋ณ๊ฒฝ ์ฌํญ์ ์ค๋ช ํ๋ PR์ ์์ฑํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ์์ฒญ: PR์ด ์์ฑ๋๋ฉด ํ์๋ค์๊ฒ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ์งํ: ๋ฆฌ๋ทฐ์ด๋ ์ฝ๋๋ฅผ ๊ฒํ ํ๊ณ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ํผ๋๋ฐฑ ๋์: PR ์์ฑ์๋ ๋ฆฌ๋ทฐ์ด์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ์ฝ๋๋ฅผ ์์ ํฉ๋๋ค.
- ๋ฆฌ๋ทฐ์ด ๋์: ๋ฆฌ๋ทฐ์ด๋ ์์ ๋ ์ฝ๋๋ฅผ ๋ค์ ๊ฒํ ํ๊ณ ๋์ํฉ๋๋ค.
- PR ๋ณํฉ: ํ์ํ ์น์ธ ์๊ฐ ์ถฉ์กฑ๋๋ฉด, PR์ ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉํฉ๋๋ค.
๋ฆฌ๋ทฐ ํผ๋๋ฐฑ์ ์์ฑํ ๋๋ ํ์ํ ๋ถ๋ถ์ ๋ง๋จธ๋ฆฌ๋ฅผ ์ ์ด ๊ตฌ์ฒด์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- [๋ณ๊ฒฝ ์์ฒญ]: ๋ฐ๋์ ์์ ์ด ํ์ํ ๋ถ๋ถ
- [์ง๋ฌธ]: ์ฝ๋์ ์๋๋ ๊ตฌํ ๋ฐฉ์์ ๋ํ ์ค์ํ ์ง๋ฌธ
- [์ ์]: ์ฝ๋ ๊ฐ์ ์ ์ํ ์ ์ ์ฌํญ
- Required number of approvals before merging: 1
- PR์ด ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ๋๊ธฐ ์ํด์๋ ์ต์ 1๋ช ์ ์น์ธ์ด ํ์ํฉ๋๋ค.
- ๋ฆฌ๋ทฐ๋ฅผ ์ํ ๋ฆฌ๋ทฐ๋ฅผ ํ์ง ๋ง์ธ์: ํผ๋๋ฐฑํ ๊ฒ์ด ์์ผ๋ฉด ์นญ์ฐฌ์ ํด์ฃผ์ธ์. ๊ธ์ ์ ์ธ ํผ๋๋ฐฑ๋ ์ค์ํ ๋ฆฌ๋ทฐ์ ์ผ๋ถ์ ๋๋ค.
- ๊ตฌ์ฒด์ ์ด๊ณ ๋ช ํํ ํผ๋๋ฐฑ ์ ๊ณต: ํผ๋๋ฐฑ์ ๊ตฌ์ฒด์ ์ด๊ณ ๋ช ํํ๊ฒ ์์ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด, "์ด ๋ถ๋ถ์ ๋ณ๊ฒฝํ์ธ์"๋ณด๋ค๋ "์ด ๋ถ๋ถ์ ๋ณ๊ฒฝํ๋ฉด ์ฑ๋ฅ์ด ๊ฐ์ ๋ ๊ฒ์ ๋๋ค"์ ๊ฐ์ด ๊ตฌ์ฒด์ ์ธ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
- ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋ ์ค์: ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋์ ๋ฐ๋ฅธ ์ผ๊ด๋ ์ฝ๋ ์์ฑ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
- ํ ์คํธ ์ถ๊ฐ ์ฌ๋ถ ํ์ธ: ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์์ ์ฌํญ์ ๋ํ ํ ์คํธ๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธํฉ๋๋ค.
- ์๋ฏธ ์๋ ์ปค๋ฐ ๋ฉ์์ง: ์ปค๋ฐ ๋ฉ์์ง๊ฐ ์๋ฏธ ์๊ณ ๋ช ํํ๊ฒ ์์ฑ๋์๋์ง ํ์ธํฉ๋๋ค.
- ๋ฌธ์ํ: ํ์ํ ๊ฒฝ์ฐ ๋ฌธ์๊ฐ ์ ๋ฐ์ดํธ๋์๋์ง ํ์ธํฉ๋๋ค.
[๋ณ๊ฒฝ ์์ฒญ] ์ด ํจ์์ ์ด๋ฆ์ ๋ ๋ช
ํํ๊ฒ ๋ณ๊ฒฝํด์ฃผ์ธ์. ์: `calculateTotal` ๋์ `computeOrderTotal`.
[์ง๋ฌธ] ์ด ๋ถ๋ถ์์ ์ ์ด ๋ฐฉ๋ฒ์ ์ ํํ์
จ๋์ง ์ค๋ช
ํด ์ฃผ์ค ์ ์๋์? ๋ค๋ฅธ ์ ๊ทผ๋ฒ์ ๊ณ ๋ คํ์ง ์์ผ์
จ๋์?
[์ ์] ์ด ๋ก์ง์ ์ข ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ ์๋๋ฆฝ๋๋ค.