Moping ์๋น์ค ๋ฐฐํฌ ์ฃผ์ : https://www.moping.co.kr/
๋ถ์ผ | ์ด๋ฆ | ํฌ์ง์ | ๋ด์ฉ |
---|---|---|---|
๊ธฐํ | ๋ฐ๊ฐ์ | ๐ย PM, ์๋น์ค ๊ธฐํ | ์ ์ ๋ฆฌ์์น, ์์ด์ดํ๋ ์ ์์ฑ, ์๋น์ค ์ ์ฑ
ํ๋ฆฝ, ๋น์ฆ๋์ค ๋ชจ๋ธ ๊ตฌ์ถ |
๊ธฐํ | ๊น๊ท๋ฆฌ | ๐ ์๋น์ค ๊ธฐํ | ์ ์ ๋ฆฌ์์น, ์์ด์ดํ๋ ์ ์์ฑ, ์๋น์ค ์ ์ฑ
ํ๋ฆฝ, ๋น์ฆ๋์ค ๋ชจ๋ธ ๊ตฌ์ถ, ์๋น์ค ๋ง์ผํ ๋ฆฌ๋ |
๊ธฐํ | ์์ฌํ | ๐ย ์๋น์ค ๊ธฐํ | ์ ์ ๋ฆฌ์์น, ์์ด์ดํ๋ ์ ์์ฑ, ์๋น์ค ์ ์ฑ
ํ๋ฆฝ, ๋น์ฆ๋์ค ๋ชจ๋ธ ๊ตฌ์ถ, ์๋น์ค ๋ง์ผํ ๋ฆฌ๋ |
๋์์ธ | ๊น์ค์ | ๐จ ๋์์ธ ๋ฆฌ๋ | ux/ui๋์์ธ, gui ๋์์ธ |
๋์์ธ | ์ด์ด๋ น | ๐จ ๋์์ธ | ux/ui๋์์ธ, gui ๋์์ธ |
๊ฐ๋ฐ | ์ตํธ | ๐ฑ ํ๋ก ํธ์๋ ๋ฆฌ๋ | ํ๋ฉด UI ๊ตฌํ, API ์ฐ๋ |
๊ฐ๋ฐ | ์ต์ํฌ | ๐ฑ ํ๋ก ํธ์๋ | ํ๋ฉด UI ๊ตฌํ, API ์ฐ๋ |
๊ฐ๋ฐ | ๋ฌธํฌ์ | ๐ป ๋ฐฑ์๋ ๋ฆฌ๋ | API ๊ตฌํ, ERD ์ค๊ณ, ์๋ฒ ๋ฐฐํฌ |
๊ฐ๋ฐ | ์ค์๋ฏผ | ๐ป ๋ฐฑ์๋ | API ๊ตฌํ, ERD ์ค๊ณ, ์๋ฒ ๋ฐฐํฌ |
- ๋ง์์ ๋๋ ๊ณต๊ฐ์ ๋ค์ด๋ฒ ์ง๋์ ๋ถ๋งํฌํ๋ 20๋ ์ฌ์ฑ
SNS๋ฅผ ํตํด ํธ๋ ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ ํจ
์์ ์ ํ์คํ ์ถ๊ตฌ๋ฏธ๋ฅผ ๊ฐ์ง
์์ ์ ์ทจํฅ ๊ณต๊ฐ์ ๊ณต์
์น๊ตฌ์ ํจ๊ป ๊ทธ ๊ณต๊ฐ์ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ์ฆ๊น
- ๋ฐฉ๋ฌธํ๊ณ ์ ํ๋ ๊ณต๊ฐ์ ๊ฒฐ์ ํ ๋์ ์ด๋ ค์
- ํจ๊ป ๊ณต๊ฐ์ ๋ฐฉ๋ฌธํ๋ ์ฌ๋์๊ฒ ์ ๋ณด๋ฅผ ์ผ์ผ์ด ๊ณต์ ํ๋ ๊ณผ์ ์ ์๊ณ ๋ก์
- ํจ๊ป ๊ณต๊ฐ์ ๋ฐฉ๋ฌธํ๋ ์ฌ๋ ๋ชจ๋๊ฐ ์ฐฌ์ฑํ๋ ๊ณต๊ฐ์ ๊ฒฐ์ ํ๋ ๊ณผ์ ์์์ ๋ฒ๊ฑฐ๋ก์
- ์ ๋ขฐ์ฑ ์๋ ์ ๋ณด์ ํจ์จ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ ์ ํตํ ๊ณต๊ฐ ์ ํ
- ์์ ์ด ์ ๋ขฐํ๋ ์ง๋จ์ด ๋ถ๋งํฌํ ๊ณต๊ฐ์ ์ดํด๋ด์ผ๋ก์จ ์ ๋ขฐ๋ ์๋ ์ ๋ณด๋ฅผ ์ป๊ณ ์ถ์
- ์น๊ตฌ๋ค๊ณผ ์ฝ์ ์ฅ์๋ฅผ ์ ํ ๋ ๊ฐํธํ๊ฒ ์ปค๋ฎค๋์ผ์ด์ ํ๊ณ ์ถ์
(1) ์๋ฐฉํฅ ๊ณต๊ฐ ์ ํ
- MOPING์ N๋ช ์ ๊ณต๊ฐ์ ์ง๋์์ ํ๋ฒ์ ๋ชจ์์ผ๋ก์จ, ํ์ ๊ณผ์ ์ ์กฐ๊ธ ๋ ํจ์จ์ ์ผ๋ก ํ๊ณ ํฉ๋ฆฌ์ ์ธ ์ ํ์ ๋์์ ์ค
(2) ๋ชจ์ ๋งํฌ์ ์ถ์ ๋๋ ๊ณต๊ฐ ์ ๋ณด
- MOPING์ ๋ชจ์๋ณ๋ก ๊ณต๊ฐ ์ ๋ณด๊ฐ ์ถ์ ๋จ. ๋งค๋ฒ ์๋กญ๊ฒ ํ์ํ๊ณ ์ ํํ๋ ๊ฒ์ด ์๋, ๋งํฌ ๋ณ๋ก ๊ณต๊ฐ์ ๋ชจ์์ฃผ์ด ๋ชจ์์ ๊ณต๊ฐ ํ์ ๋ฐ ์ ํ์ ์๊ณ ๋ก์์ ๋์ด์ค
(3) ์๋ก์ด ๊ณต๊ฐ์ ๋ํ ํ์์ ๊ธฐํ
- MOPING์ ํตํด ์์ ์ด ์ ๋ขฐํ๋ ์ฌ๋์ด ๋ฑ๋กํ ๊ณต๊ฐ ์ ๋ณด๋ฅผ ์ป์ ์ ์์. ์ด๋ ๊ธฐ์กด์ ์์ง ๋ชปํ๋ ์๋ก์ด ๊ณต๊ฐ์ ๋ํ ํ์ ๊ธฐํ๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ, ์ด๋ MOPING์ ๊ณ์ ์ด์ฉํ๊ฒ ํ๋ ๋๊ธฐ๊ฐ ๋ ๊ฒ์ |
์ ๋ณ๋ ๊ณต๊ฐ ์ ๋ณด
- ๊ฐ์ ํ์ํด์จ ๊ณต๊ฐ์ ๋ชจ์์ค์ผ๋ก์จ ์ต์ข ํ์์ ๋์
ํจ๊ป ๊ณต๊ฐ์ ๋ฐฉ๋ฌธํ๋ ์ฌ๋๊ณผ ๋ง๋ค์ด๊ฐ๋ ์ง๋
- ์ง๋ ๋ทฐ๋ก ๋ณด๋ ๊ณต์ ๋ ๊ณต๊ฐ/๋ถ๋งํฌ ๋ชฉ๋ก
moping API ๋ช ์ธ์ ๋ค์ด๋ก๋
- Next.js: ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)๊ณผ ์ ์ ์ฌ์ดํธ ์์ฑ(SSG)์ ์ง์ํ์ฌ ํ์ด์ง ๋ก๋ฉ ์๋์ SEO๋ฅผ ์ต์ ํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- TypeScript: ๊ฐ๋ ฅํ ํ์ ๊ฒ์ฌ์ ์ ์ ํ์ ์ฒดํน์ ์ ๊ณตํ์ฌ, ๊ฐ๋ฐ ์ค ๋ฐ์ํ ์ ์๋ ๋ฐํ์ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐฉ์งํ๊ณ ์ฝ๋์ ์ ๋ฐ์ ์ธ ํ์ง์ ๋์ ๋๋ค. Next.js์์ ํตํฉ์ ํตํด ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๊ฐ์งํ๊ณ , ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์ ๊ด๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํด์ค๋๋ค.
- React: UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ํตํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI๋ฅผ ๊ตฌ์ถํ ์ ์์ผ๋ฉฐ, Next.js์ ํจ๊ป ์๋ฒ ๋ฐ ํด๋ผ์ด์ธํธ์์ ํจ์จ์ ์ผ๋ก ๋ ๋๋ง์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- CSS/SCSS: ์ฃผ๋ก Tailwind CSS๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ๋ง์ ์ฒ๋ฆฌํ์ง๋ง, ๋ณต์กํ ์ปค์คํฐ๋ง์ด์ง์ด๋ ํน์ํ ์คํ์ผ๋ง ์๊ตฌ์ฌํญ์ ๋์ํ๊ธฐ ์ํด ์ฌ์ ํ CSS/SCSS๊ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. Tailwind CSS๋ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ฅผ ํตํด ์ ์ํ๊ณ ํจ์จ์ ์ธ ์คํ์ผ๋ง์ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ํ๋ก์ ํธ์ ๋ฐ๋ผ CSS๋ SCSS๋ก ๋ณด์ํด์ผ ํ ๋๋ ์์ต๋๋ค.
- Tailwind CSS: ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฐ์ CSS ํ๋ ์์ํฌ๋ก, ๋ฏธ๋ฆฌ ์ ์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํด ์ง๊ด์ ์ด๊ณ ๋น ๋ฅธ ์คํ์ผ๋ง์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ณ๋์ CSS ํ์ผ ์์ด HTML์์ ์ง์ ์คํ์ผ์ ์ ์ฉํ ์ ์์ด ๊ฐ๋ฐ ์์ฐ์ฑ์ ๊ทน๋ํํ๋ฉฐ, ํ์ ์ ์ปค์คํฐ๋ง์ด์ง์ด ์ฉ์ดํฉ๋๋ค.
- ESLint์ Prettier: ์ฝ๋ ์คํ์ผ์ ์๋์ผ๋ก ๊ฒ์ฌํ๊ณ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉฐ, ์ฝ๋์ ํ์ง๊ณผ ๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋๋ค.
- Husky: Git hooks๋ฅผ ํ์ฉํด ์ฝ๋ ํธ์ ์ ์๋์ผ๋ก ์ฝ๋ ๊ฒ์ฌ๋ฅผ ์คํํ์ฌ ํ์ ์ค ์ฝ๋ ํ์ง์ ๋ณด์ฅํฉ๋๋ค.
- Vercel: Vercel์ CI/CD ํ์ดํ๋ผ์ธ์ ์๋ํ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ ํจ์จ์ฑ์ ๊ทน๋ํํฉ๋๋ค. ๊ฐ๋จํ ์ค์ ์ผ๋ก ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ค์๊ฐ์ผ๋ก ๋ฐฐํฌ๋๋ฉฐ, Next.js ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ์ ์ต์ ํ๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
- Slack: ์ค์๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ์ํ ํ์ ํด.
- Notion: ๋ฌธ์ํ, ์ผ์ ๊ด๋ฆฌ, ์์ ๊ด๋ฆฌ๋ฅผ ์ํ ํด.
- Gather: ๊ฐ์ ์คํผ์ค ํ๊ฒฝ์์ ํ์๋ค์ด ์ค์๊ฐ ํ์ ํ ์ ์๋ ํด.
branch๋ ์์ ๋จ์ & ๊ธฐ๋ฅ ๋จ์๋ก ์์ฑ๋ issue๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ ์์ ์์ ์ ์ด์ ์์ด๋ ๋ธ๋์น๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
-
Branch Naming Rule:
- ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋๋ ์ค์ํ ์์
: ์ด์๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. ์ด์ ๋ฒํธ์ ์์
์ ๋๋ฉ์ธ์ ์กฐํฉํ์ฌ ๋ธ๋์น ์ด๋ฆ์ ์ ํฉ๋๋ค.
- ์:
feature/25-ui-component
- ์:
- ์์ ์์ ์์
: ๋ฌธ์ ์์ , ๊ฐ๋จํ ์คํ์ผ๋ง ๋ณ๊ฒฝ ๋ฑ ์ฌ์ํ ์์
์ ์ด์ ์์ด๋ ๋ธ๋์น๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์:
docs/update-readme
,style/update-button-styles
- ์:
Prefix ์ค๋ช :
feature
: ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํฉ๋๋ค.bugfix
: ๋ฒ๊ทธ๋ฅผ ์์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.docs
: ๋ฌธ์๋ฅผ ์์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.config
: ์ค์ ํ์ผ ๋๋ ํ๊ฒฝ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋๋ ์ค์ํ ์์
: ์ด์๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. ์ด์ ๋ฒํธ์ ์์
์ ๋๋ฉ์ธ์ ์กฐํฉํ์ฌ ๋ธ๋์น ์ด๋ฆ์ ์ ํฉ๋๋ค.
- ํ์ผ๋ช
๊ท์น: ํ์ผ ๋ฐ ํด๋ ์ด๋ฆ์ ์ผ๊ด๋ ๋ค์ด๋ฐ์ ์ ์งํด์ผ ํ๋ฉฐ, ํ์ ๊ฐ ํ์ผ๋ช
์ ์ฝ๊ฒ ์ธ์ํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
- ์ปดํฌ๋ํธ ํ์ผ:
- ์ปดํฌ๋ํธ ํ์ผ๋ช ์ PascalCase๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์์:
Button.tsx
,UserProfile.tsx
- ์ผ๋ฐ ํ์ผ:
- ์ผ๋ฐ์ ์ธ ์ ํธ๋ฆฌํฐ ํจ์, ์ค์ ํ์ผ ๋ฑ์ camelCase๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์์:
formatDate.ts
,fetchData.ts
- ํด๋ ์ด๋ฆ:
- ํด๋ ์ด๋ฆ์ kebab-case๋ก ์์ฑํ๋ฉฐ, ์๋ฌธ์๋ง ์ฌ์ฉํฉ๋๋ค.
- ์์:
user-profile/
,button-styles/
- CSS/SCSS ํ์ผ:
- ์คํ์ผ ํ์ผ์ kebab-case๋ก ์์ฑํฉ๋๋ค.
- ์์:
header-styles.scss
,button.scss
- ์ปดํฌ๋ํธ ํ์ผ:
- Pull Request: develop & main branch๋ก mergeํ ๋์๋ pull request๊ฐ ํ์ํฉ๋๋ค. PR ์ ๋ชฉ์๋ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ค๋ช ์ ํฌํจํด์ผ ํฉ๋๋ค.
- Pull Request Naming Rule:
[<Prefix>] <Description>
์ ์์์ ์ค์ํ๋, prefix๋ commit message convention๊ณผ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
- ์๋ก์ด UI ์ปดํฌ๋ํธ ์ถ๊ฐ
- Pull Request Title:
[feat] ์๋ก์ด ๋ฒํผ ์ปดํฌ๋ํธ ์ถ๊ฐ
- Pull Request Title:
- ํ๊ฒฝ ์ค์ ํ์ผ ์์
- Pull Request Title:
[chore] ํ๊ฒฝ ์ค์ ํ์ผ ์ ๋ฐ์ดํธ
- Pull Request Title:
- ๋ฒ๊ทธ ์์
- Pull Request Title:
[fix] ๋๋กญ๋ค์ด ๋ฉ๋ด ๋ฒ๊ทธ ์์
- Pull Request Title:
- ๋ฌธ์ ์์ ์์
- Pull Request Title:
[docs] ํ๋ก์ ํธ README ์ ๋ฐ์ดํธ
- Pull Request Title:
- ์ค๋ช : ๋ฒ๊ทธ์ ๋ํ ๊ฐ๋จํ ์ค๋ช .
- ์ฌํ ๋ฐฉ๋ฒ: ๋ฒ๊ทธ๋ฅผ ์ฌํํ ์ ์๋ ๋จ๊ณ๋ณ ์ค๋ช .
- ์์ ๊ฒฐ๊ณผ: ๊ธฐ๋ํ๋ ๋์์ ๋ช ์.
- ํ๊ฒฝ: OS, ๋ธ๋ผ์ฐ์ ๋ฑ์ ํ๊ฒฝ ์ ๋ณด.
- ์ค๋ช : ์ ์ํ๋ ๊ธฐ๋ฅ์ ๋ํ ๊ฐ๋ตํ ์ค๋ช .
- ๋๊ธฐ: ์ด ๊ธฐ๋ฅ์ด ํ์ํ ์ด์ .
- ์์๋๋ ๊ธฐ๋ฅ: ์์๋๋ ๊ธฐ๋ฅ์ ๋์ ๋ฐฉ์ ์ค๋ช .
- ๊ด๋ จ ์ด์: ์์ ํ ์ด์ ๋ฒํธ๋ฅผ ๋ช ์ํฉ๋๋ค.
- ์์ ๋ด์ฉ: ๊ตฌํ๋ ๊ธฐ๋ฅ์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค.
- ์คํฌ๋ฆฐ์ท: ๋ณ๊ฒฝ๋ UI๋ ๊ธฐ๋ฅ์ด ์๋ค๋ฉด, ์คํฌ๋ฆฐ์ท์ ์ฒจ๋ถํฉ๋๋ค.
- ์ถ๊ฐ ์ฌํญ: ๋ ผ์๊ฐ ํ์ํ ์ฌํญ์ด ์์ผ๋ฉด ์ถ๊ฐ๋ก ์์ฑํฉ๋๋ค.
- ๋ฆฌ๋ทฐ ์๊ตฌ ์ฌํญ(์ ํ): ํน๋ณํ ๊ฒํ ๊ฐ ํ์ํ ์ฌํญ์ด ์์ผ๋ฉด ์ ์ด์ฃผ์ธ์.
[<Prefix>] #<Issue_Number> <Description>
์ ์์์ ์ค์ํฉ๋๋ค. ์ปค๋ฐ ๋ฉ์์ง๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ช
ํํ๊ฒ ์ ๋ฌํ ์ ์๋๋ก ๊ฐ๊ฒฐํ๊ณ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํด์ผ ํฉ๋๋ค.
- feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- ์์:
[feat] #11 ๋ฒํผ ์ปดํฌ๋ํธ ๊ตฌํ
- ์์:
- fix: ๋ฒ๊ทธ ์์
- ์์:
[fix] #10 UI ๋ ๋๋ง ์ค๋ฅ ์์
- ์์:
- docs: ๋ฌธ์ ์์
- ์์:
[docs] #14 README ํ์ผ ์ ๋ฐ์ดํธ
- ์์:
- style: ์ฝ๋ ํฌ๋งทํ
, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ ๋ฑ ์คํ์ผ ์์
- ์์:
[style] #23 ์ฝ๋ ํฌ๋งทํ ์ ์ฉ
- ์์:
- refactor: ์ฝ๋ ๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณํ ์์)
- ์์:
[refactor] #15 ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๊ฐ์
- ์์:
- chore: ๊ธฐํ ์์ํ ์์ (๋น๋ ์คํฌ๋ฆฝํธ ์์ , ํจํค์ง ๊ด๋ฆฌ ๋ฑ)
- ์์:
[chore] #21 ํจํค์ง ์์กด์ฑ ์ ๋ฐ์ดํธ
- ์์:
- test: ํ
์คํธ ์ฝ๋ ์ถ๊ฐ ๋๋ ์์
- ์์:
[test] #18 ๋ฒํผ ์ปดํฌ๋ํธ ํ ์คํธ ์ถ๊ฐ
- ์์:
- perf: ์ฑ๋ฅ ํฅ์ ๊ด๋ จ ์์
- ์์:
[perf] #20 ๋ ๋๋ง ์ต์ ํ ์์
- ์์:
- rename: ํ์ผ ๋ฐ ํด๋๋ช
์์
- ์์:
[rename] #22 ์ปดํฌ๋ํธ ํ์ผ๋ช ์์
- ์์:
- enhancement: ๊ธฐ์กด ๊ธฐ๋ฅ์ ๊ฐ์ ๋๋ ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ (์ฌ์ฉ์ ๊ฒฝํ, ์ฑ๋ฅ ๋ฑ)
- ์์:
[enhancement] #25 ์ฌ์ฉ์ ํผ๋๋ฐฑ ๋ฐ์ํ์ฌ ๋ฒํผ ๋์์ธ ๊ฐ์
- ์์:
- ๋จ์ ํ ์คํธ ์์ฑ(service ๋ฉ์๋ ๋ณ๋ก) : Kotest ์ฌ์ฉ
- ๋ค๋ฅธ ์ฌ๋์ด ์์๋ณด๊ธฐ ์ฝ๋๋ก ์ฃผ์์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. (controller, service ๋ฉ์๋๋ง๋ค)
- javadoc ํ์ https://jake-seo-dev.tistory.com/59
- issue ์์ฑ ๋ฐ PR์ ํตํด ๋ณธ์ธ์ด ๊ตฌํํ ๋ถ๋ถ์ ๋ํ ๊ธฐ๋ก์ ๋จ๊ฒจ์ผ ํฉ๋๋ค.
- ํ ์คํธ ๋ฐ ์ํ ํ ์๋ฒ ์ด์์ ์ํ ๋ก๊ทธ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.(์๋ฌ๋ ์ด์์ ํ์ํ ๋ก๊ทธ. ๊ฒ์์ ๊ฒ์์ด์ ๊ฐ์ ๋ก๊ทธ)
- ์์ธ์ฒ๋ฆฌ๋ ํญ์ ์ ๋ง๋ค์ด๋๊ธฐ (code, message, data)
- ๊ฐ๋ฐ ๊ธฐ๊ฐ : 9/30 ~ 11/24
- ์คํ๋ฆฐํธ (3์ผ๊ฐ๊ฒฉ) ์งํ (ํด์ฌ ๊ฒ์ ์ ํด์ ํด์ค๊ธฐ)
- ์์์ผ, ํ ์์ผ
-
- Kotlin์ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ ๋ฌธ๋ฒ์ผ๋ก ์ฝ๋ ์์ฐ์ฑ์ ๋์ด๋ฉฐ, Null ์์ ์ฑ์ ์ ๊ณตํ์ฌ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ๋ฐฉ์ง
- JPA๋ฅผ ํตํด SQL์ ์ง์ ์์ฑํ์ง ์์๋ ๋๋ฏ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์์๋๋ ์๊ฐ์ ์ค์ด๊ณ , ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ์ ์ง์ค ๊ฐ๋ฅ
-
- JUnit์ ๊ฐ๋จํ ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ ์ค์ ์ผ๋ก ํ ์คํธ ์์ฑ๊ณผ ์คํ์ ์ง๊ด์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด์ค
- MockK๋ ์ฝํ๋ฆฐ์ ํนํ๋ ๋ชจํน ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ฝ๋ฃจํด๊ณผ ๊ฐ์ ์ฝํ๋ฆฐ ๊ณ ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๋ชจํนํ ์ ์์ด ๋น๋๊ธฐ ์ฝ๋ ํ ์คํธ์ ๊ฐ์ ์ด ์์
-
- Jenkins๋ฅผ ์ฌ์ฉํ CI/CD ํ์ดํ๋ผ์ธ์ ์๋ํ๋ ํ ์คํธ, ๋น๋, ๋ฐฐํฌ๋ฅผ ํตํด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ
- Docker๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ก ํจํค์งํ์ฌ ์ผ๊ด๋ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ๊ณ , ๋ฐฐํฌ๋ฅผ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ํ ๊ฐ๋ฅ
-
- MySQL์ ๋ฐ์ด๋ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํ๋ฉฐ, ๊ด๋ฒ์ํ ์ปค๋ฎค๋ํฐ ์ง์๊ณผ ๋ค์ํ ํ๋ซํผ์์์ ์์ ์ฑ์ ๋ณด์ฅ
- MongoDB๋ ์ ์ฐํ ์คํค๋ง ์ค๊ณ๋ฅผ ํตํด ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ , ๋น ๋ฅธ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ์ ๊ณต
- Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ด๊ณ ์ ๋ฐ์ดํฐ ์ ๊ทผ๊ณผ ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์
-
- RestDocs๋ฅผ ํตํด ์์ฑ๋ ๋ฌธ์๋ฅผ Swagger UI๋ก ์๊ฐํํ์ฌ, ๊ฐ๋ฐ์์ ๋น๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ์ค์๊ฐ์ผ๋ก API๋ฅผ ํ ์คํธ ๊ฐ๋ฅ
- ํ ์คํธ ์ฝ๋ ์์ฑ๊ณผ ํจ๊ป API ๋ฌธ์๊ฐ ์๋์ผ๋ก ์์ฑ๋์ด, ์ค์ ์ฝ๋์ ๋ฌธ์์ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์
- ํ ์คํธ ์์ ๋ฌธ์๋ฅผ ๊ฒ์ฆํ ์ ์์ด ์ ๋ขฐ์ฑ์ ๋์
Naming
- ํจํค์ง : ์ธ๋์ค์ฝ์ด(
_
)๋ ๋๋ฌธ์๋ฅผ ์์ง ์๊ณ ์๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํฉ๋๋ค. - ํด๋์ค : ํด๋์ค ์ด๋ฆ์ ๋ช ์ฌ๋ ๋ช ์ฌ์ ๋ก ์ง์ผ๋ฉฐ, ๋๋ฌธ์ ์นด๋ฉํ๊ธฐ๋ฒ(Upper camel case)์ ์ฌ์ฉํฉ๋๋ค.
- ๋ฉ์๋ : ๋ฉ์๋ ์ด๋ฆ์ ๋์ฌ/์ ์น์ฌ๋ก ์์ํ๋ฉฐ, ์๋ฌธ์ ์นด๋ฉํ๊ธฐ๋ฒ(Lower camel case)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋๊ฐ ์ ๋ฌ๋๋๋ก ์ต๋ํ ๊ฐ๊ฒฐํ๊ฒ ํํํฉ๋๋ค.
- ๋ณ์ : ์๋ฌธ์ ์นด๋ฉํ๊ธฐ๋ฒ(Lower camel case)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ENUM, ์์ : ์ํ๋ฅผ ๊ฐ์ง์ง ์๋ ์๋ฃํ์ด๋ฉด์
static final
๋ก ์ ์ธ๋์ด ์๋ ํ๋์ผ ๋๋ฅผ ์์๋ก ๊ฐ์ฃผํ๋ฉฐ, ๋๋ฌธ์์ ์ธ๋์ค์ฝ์ด(UPPER_SNAKE_CASE)๋ก ๊ตฌ์ฑํฉ๋๋ค. - DB ํ ์ด๋ธ: ์๋ฌธ์์ ์ธ๋์ค์ฝ์ด๋ก(lower_snake_case) ๊ตฌ์ฑํฉ๋๋ค.
- ์ปฌ๋ ์ (Collection): ๋ณต์ํ์ ์ฌ์ฉํ๊ฑฐ๋ ์ปฌ๋ ์ ์ ๋ช ์ํฉ๋๋ค. (Ex. userList, users, userMap)
- LocalDateTime: ์ ๋ฏธ์ฌ์ *Time**๋ฅผ ๋ถ์ ๋๋ค.
Comment
// ํ์ด~
/**
* ๋ ์ ์๋ฅผ ๋ํฉ๋๋ค.
*
* <p>์ด ๋ฉ์๋๋ ๋ ๊ฐ์ ์ ์๋ฅผ ์
๋ ฅ๋ฐ์ ๊ทธ ํฉ๊ณ๋ฅผ ๋ฐํํฉ๋๋ค.</p>
*
* @param a ์ฒซ ๋ฒ์งธ ์ ์
* @param b ๋ ๋ฒ์งธ ์ ์
* @return ๋ ์ ์์ ํฉ
* @throws ArithmeticException ๋ง์ฝ ๊ณ์ฐ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด
*/
Import
ํ๋ ๋ฒจ ํด๋์ค(Top level class)๋ ์์ค ํ์ผ์ 1๊ฐ๋ง ์กด์ฌํด์ผ ํ๋ค. ( ํ๋ ๋ฒจ ํด๋์ค ์ ์ธ์ ์ปดํ์ผํ์ ์๋ฌ ์ฒดํฌ์ ๋ํด์๋ Java Language Specification 7.6 ์ฐธ์กฐ )
ํด๋์ค๋ฅผ importํ ๋๋ ์์ผ๋์นด๋(*) ์์ด ๋ชจ๋ ํด๋์ค๋ช ์ ๋ค ์ด๋ค. static import์์๋ ์์ผ๋์นด๋๋ฅผ ํ์ฉํ๋ค.
ํด๋์ค, ์ธํฐํ์ด์ค, ๋ฉ์๋, ์์ฑ์์ ๋ถ๋ ์ ๋ํ ์ด์ ์ ์ ์ธ ํ ์์ค์ ์ฌ์ฉํ๋ค. ์ด ์์น์์๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ์ ๋ํ ์ด์ 1๊ฐ๋ ๊ฐ์ ์ค์ ์ ์ธํ ์ ์๋ค.
๋ฐฐ์ด ์ ์ธ์ ์ค๋ ๋๊ดํธ([])๋ ํ์ ์ ๋ฐ๋ก ๋ค์ ๋ถ์ธ๋ค. ๋ณ์๋ช ๋ค์ ๋ถ์ด์ง ์๋๋ค.
longํ์ ์ซ์์๋ ๋ง์ง๋ง์ ๋๋ฌธ์ 'Lโ์ ๋ถ์ธ๋ค. ์๋ฌธ์ 'lโ๋ณด๋ค ์ซ์ '1โ๊ณผ์ ์ฐจ์ด๊ฐ ์ปค์ ๊ฐ๋ ์ฑ์ด ๋์์ง๋ค.
URL
URL์ RESTful API ์ค๊ณ ๊ฐ์ด๋์ ๋ฐ๋ผ ์์ฑํฉ๋๋ค.
- HTTP Method๋ก ๊ตฌ๋ถํ ์ ์๋ get, put ๋ฑ์ ํ์๋ url์ ํํํ์ง ์์ต๋๋ค.
- ๋ง์ง๋ง์
/
๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. _
๋์ ``๋ฅผ ์ฌ์ฉํฉ๋๋ค.- ์๋ฌธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ํ์ฅ์๋ ํฌํจํ์ง ์์ต๋๋ค.
Rules
์์ ์์ ์ ์ ํ๋์ด์ผ ํ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
issue๋ฅผ ์์ฑํฉ๋๋ค.feature branch๋ฅผ ์์ฑํฉ๋๋ค.add โ commit โ push โ pull request ๋ฅผ ์งํํฉ๋๋ค.pull request๋ฅผ develop branch๋ก merge ํฉ๋๋ค.์ด์ ์ merge๋ ์์ ์ด ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ branch์์ ์งํํ๋ ์์ ์ merge๋ ์์ ์ pull ๋ฐ์์ต๋๋ค.์ข ๋ฃ๋ issue์ pull request์ label์ ๊ด๋ฆฌํฉ๋๋ค.
IntelliJ๋ก ์์ ์ ์งํํ๋ ๊ฒฝ์ฐ, ์์ ์์ ์ ์ ํ๋์ด์ผ ํ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊นํ๋ธ ํ๋ก์ ํธ ์ ์ฅ์์์ issue๋ฅผ ์์ฑํฉ๋๋ค.์์ฑํ issue ๋ฒํธ์ ๋ง๋ feature branch๋ฅผ ์์ฑํจ๊ณผ ๋์์ feature branch๋ก checkout ํฉ๋๋ค.feature branch์์ issue ๋จ์ ์์ ์ ์งํํฉ๋๋ค.์์ ์๋ฃ ํ, add โ commit์ ์งํํฉ๋๋ค.remote develop branch์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ธฐ ์ํด pull ๋ฐ์ ์ดํ push๋ฅผ ์งํํฉ๋๋ค.๋ง์ฝ ์ฝ๋ ์ถฉ๋์ด ๋ฐ์ํ์๋ค๋ฉด, IntelliJ์์ ์ฝ๋ ์ถฉ๋์ ํด๊ฒฐํ๊ณ add โ commit์ ์งํํฉ๋๋ค.push โ pull request (feature branch โ develop branch) ๋ฅผ ์งํํฉ๋๋ค.pull request๊ฐ ์์ฑ๋๋ฉด ์์ฑ์ ์ด์ธ์ ๋ค๋ฅธ ํ์์ด code review๋ฅผ ์งํํฉ๋๋ค.์ต์ ํ ๋ช ์ด์์ ํ์์๊ฒ code review์ approve๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ pull request ์์ฑ์๊ฐ merge๋ฅผ ์งํํฉ๋๋ค.์ข ๋ฃ๋ issue์ pull request์ label๊ณผ milestone์ ๊ด๋ฆฌํฉ๋๋ค.
์ค์ํด์ผ ํ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
develop branch์์์ ์์ ์ ์์น์ ์ผ๋ก ๊ธ์งํฉ๋๋ค. ๋จ, README ์์ฑ์ develop branch์์ ์ํํฉ๋๋ค.commit, push, merge, pull request ๋ฑ ๋ชจ๋ ์์ ์ ์ค๋ฅ ์์ด ์ ์์ ์ผ๋ก ์คํ๋๋ ์ง ํ์ธ ํ ์ํํฉ๋๋ค.
Branch
branch๋ ์์ ๋จ์ & ๊ธฐ๋ฅ ๋จ์๋ก ์์ฑ๋ issue๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
branch๋ฅผ ์์ฑํ๊ธฐ ์ issue๋ฅผ ๋จผ์ ์์ฑํฉ๋๋ค. issue ์์ฑ ํ ์์ฑ๋๋ ๋ฒํธ์ domain ๋ช
์ ์กฐํฉํ์ฌ branch์ ์ด๋ฆ์ ๊ฒฐ์ ํฉ๋๋ค.ย <Prefix>/<Issue_Number>-<Domain>
ย ์ ์์์ ์ค์ํฉ๋๋ค.
main
ย : ๊ฐ๋ฐ์ด ์๋ฃ๋ ์ฐ์ถ๋ฌผ์ด ์ ์ฅ๋ ๊ณต๊ฐ์ ๋๋ค.develop
: feature branch์์ ๊ตฌํ๋ ๊ธฐ๋ฅ๋ค์ด merge๋ default branch ์ ๋๋ค.feature
: ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ branch ์ ๋๋ค. ์ด์ ๋ณ & ์์ ๋ณ๋ก branch๋ฅผ ์์ฑ ํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ฉฐ naming์ ์๋ฌธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
user
,map
, (error
,config
)
feature/7-user
,feature/5-config
Issue
์์ ์์ ์ issue ์์ฑ์ด ์ ํ๋์ด์ผ ํฉ๋๋ค. issue ๋ ์์ ๋จ์ & ๊ธฐ๋ฅ ๋จ์๋ก ์์ฑํ๋ฉฐ ์์ฑ ํ ํ์๋๋ issue number ๋ฅผ ์ฐธ์กฐํ์ฌ branch ์ด๋ฆ๊ณผ commit message๋ฅผ ์์ฑํฉ๋๋ค.
issue ์ ๋ชฉ์๋ ๊ธฐ๋ฅ์ ๋ํ์ ์ธ ์ค๋ช ์ ์ ๊ณ ๋ด์ฉ์๋ ์ธ๋ถ์ ์ธ ๋ด์ฉ ๋ฐ ์์ ์งํ ์ํฉ์ ์์ฑํฉ๋๋ค.
issue ์์ฑ ์ github ์ค๋ฅธํธ์ assignee, label์ ์ ์ฉํฉ๋๋ค. assignee๋ ํด๋น issue ๋ด๋น์, label์ ์์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
[<Prefix>] <Description>
ย ์ ์์์ ์ค์ํ๋, prefix๋ commit message convention์ ๋ฐ๋ฆ
๋๋ค.
[chore] spring data JPA ์์กด์ฑ ์ถ๊ฐ
Commit
[<Prefix>] #<Issue_Number> <Description>
ย ์ ์์์ ์ค์ํฉ๋๋ค.
- featย : ์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํย
[feat] #11 ๊ตฌ๊ธ ๋ก๊ทธ์ธ API ๊ธฐ๋ฅ ๊ตฌํ
- fixย : ์ฝ๋ ์ค๋ฅ ์์ ย
[fix] #10 ํ์๊ฐ์ ๋น์ฆ๋์ค ๋ก์ง ์ค๋ฅ ์์
- delย : ์ธ๋ชจ์๋ ์ฝ๋ ์ญ์ ย
[del] #12 ๋ถํ์ํ import ์ ๊ฑฐ
- docsย : README๋ wiki ๋ฑ์ ๋ฌธ์ ๊ฐ์ ย
[docs] #14 ๋ฆฌ๋๋ฏธ ์์
- refactorย : ๋ด๋ถ ๋ก์ง์ ๋ณ๊ฒฝ ํ์ง ์๊ณ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๊ฐ์ ํ๋ ๋ฆฌํฉํฐ๋งย
[refactor] #15 ์ฝ๋ ๋ก์ง ๊ฐ์
- choreย : ์์กด์ฑ ์ถ๊ฐ, yml ์ถ๊ฐ์ ์์ , ํจํค์ง ๊ตฌ์กฐ ๋ณ๊ฒฝ, ํ์ผ ์ด๋
[chore] #21 yml ์์
,[chore] #22 lombok ์์กด์ฑ ์ถ๊ฐ
- test: ํ
์คํธ ์ฝ๋ ์์ฑ, ์์
[test] #20 ๋ก๊ทธ์ธ API ํ ์คํธ ์ฝ๋ ์์ฑ
- style : ์ฝ๋์ ๊ด๋ จ ์๋ ์ฃผ์ ๋ฌ๊ธฐ, ์ค๋ฐ๊ฟ
- rename : ํ์ผ ๋ฐ ํด๋๋ช ์์
Pull Request
develop & main branch๋ก mergeํ ๋์๋ pull request๊ฐ ํ์ํฉ๋๋ค. pull request์ ๋ด์ฉ์๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ ๋ํ ์ค๋ช ์ ๋ช ์ํฉ๋๋ค.
[<Prefix>] <Description>
ย ์ ์์์ ์ค์ํ๋, prefix๋ commit message convention์ ๋ฐ๋ฆ
๋๋ค.
[feat] ์ฝ์ ์ก๊ธฐ API ๊ตฌํ
[chore] spring data JPA ์์กด์ฑ ์ถ๊ฐ