์๋์ ํ ํฌํ ์ฝ๋๋ฆฌ๋ทฐ์ ์ญ์ฌ
- #wonderwall
- #fromm
- #code review
- #์ฝ๋๋ฆฌ๋ทฐ
- #github
- #codestream
- #jira
๋ค์ด๊ฐ๋ฉฐ
์๋์ ํ
ํฌํ์ ํ์ด๋ถํฐ ํ์ฌ๊น์ง ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ์
๋ฌด์ ์์ด์ ํ๋์ ๋ฐฉ์์ผ๋ก ์ด์ด์ ธ ์จ ๊ฒ์ด ์์ต๋๋ค.
ํญ์ ๋ ๋์ ๋ฐฉํฅ๊ณผ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐ๋๋ฉด, ์๋ก์ด ๊ฒ์ ์๋ํ๊ณ ๋ณํํ๊ณ ๋ฅผ ๋ฐ๋ณต ์ค ์
๋๋ค.
์ฝ๋๋ฆฌ๋ทฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ช ๋
์ ๊ฑธ์ณ ๋ณํ๋์ด ์์ผ๋ฉฐ, ์์ผ๋ก๋ ๋ง์ ๋ณํ๊ฐ ์๊ฒ ์ง๋ง ํ์ฌ๊น์ง์ ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๊ณ ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.
ํ์ด
ํ์ด์ 1์ธ ๊ฐ๋ฐ ์ฒด๊ณ์์๋ ์ฝ๋๋ฆฌ๋ทฐ๊ฐ ์์์ต๋๋ค.
ํผ์ ์ฝ๋๋ฅผ ๋ค์ ๋ฏ์ด๋ณด๊ฑฐ๋ ํ๊ณ ๋ฅผ ํด๋ณด๊ฑฐ๋ ํ ์๋ ์์์ง๋ง, ํ์์ด ์์์ผ๋ ์ฌํ์ง๋ง ๋น์ฐํ๊ฒ๋ ํ ์ฝ๋๋ฆฌ๋ทฐ๋ ํ ์ ์์์ต๋๋ค.
์ ๋ ๊ธฐ (์์)
๋ ๋ช
์ด ํฉ๋ฅํด, ํ์ด ์ธ ๋ช
์ด ๋์์ ๋ ํ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์์ํ์ต๋๋ค.
๋น์์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ฌ์ฉํ ๋ง ํ ์ฝ๋๋ฆฌ๋ทฐ ํด์ ์ฐพ์๋ค๋๋ ์ค, New Relic CodeStream ์ด๋ผ๋ ์คํ์์ค๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
CodeStream์ VSCode ์ต์คํ
์
, JetBrains ๊ณ์ด IDE์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ ๊ณต๋์ด ๋น์ ํ์๋ค์ ๋ชจ๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์์ฝ๊ฒ ์ ์ฉํด ๋ณผ ์ ์์์ต๋๋ค.
๋ํ IDE์์ ๋ฐ๋ก ์ฝ๋๋ฅผ ๋๋๊ทธํด์ ์ด์๋ฅผ ๋จ๊ธฐ๊ณ , ๋๊ตฐ๊ฐ ๋จ๊ธด ์ด์๋ฅผ ํด๋ฆญํ๋ฉด ๋ฐ๋ก ์ฝ๋๋ก ์ด๋ํ๋ ๋ฑ ๋ค์ํ ํธ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋๊ณ ,
์ต์คํ
์
ํํ๋ก ์ ๊ณต๋์ด IDE์ ๋ถ์ด์๋ค๋ณด๋ ์ฝ๋ฉ์ค์๋ ์๋ฆผ์ ๋์น์ง ์๊ณ ๋ฐ์ ์ ์์ด ๋น ๋ฅธ ์
๋ฌด ์งํ์ด ๊ฐ๋ฅํ์ต๋๋ค.
(์ถ์ฒ: codestream.com)
์ฑ์ฅ๊ธฐ (๋ณํ)
์๋น์ค๊ฐ 2๋
์ฐจ ์ ๋ ๋๊ณ , ๊ฐ ํ๋ณ๋ก 2 ~ 3์ธ ์ผ ๋ ๊น์ง๋ CodeStream์ผ๋ก ๊ทธ๋ญ์ ๋ญ ๋ฒํธ๋ง ํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ํ์ฌ๊ฐ ์ฑ์ฅํ๋ฉฐ ์๋น์ค๊ฐ ์ปค์ง๊ณ ์ธ๋ถํ(๊ธฐํ, ์ด์, ๋์์ธ ๋ฑ)๊ณผ๋ ์ฒด๊ณ์ ์ผ๋ก ์
๋ฌด๋ฅผ ์ฒ๋ฆฌํด์ผ ํ ํ์์ฑ์ด ์๊ฒผ๊ณ
ํ
ํฌํ ๋ด๋ถ์์๋ ์๋ก์ด ํ์ด ์๊ธฐ๊ณ , ํ์์ด ๋์ด๋๊ณ , ์
๋ฌด๊ฐ ๋ณต์กํด์ง๊ณ , ํ์คํ ๋ฆฌ๊ฐ ์์ฌ๊ฐ์ ๋ฐ๋ผ ๋ณํ๊ฐ ํ์ํด์ก์ต๋๋ค.
์ธ๋ถํ๊ณผ์ ํ์
์ ์ํด Jira ๋ฅผ ๋์
ํ๊ฒ ๋์๊ณ , Jira ํฐ์ผ๊ณผ GitHub ๋ธ๋์น๋ฅผ ์ฐ๊ฒฐํ๊ฒ ํ๋ฉด์ ์ด ์๊ธฐ์ ๋ง์ถฐ ์ฝ๋๋ฆฌ๋ทฐ๋ GitHub Pull Request(PR)๋ก ์ฎ๊ธฐ๊ฒ ๋์์ต๋๋ค.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ CodeStream ์์๋ ํ์คํ ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ด๋ ค์ ๊ณ , ๋ฆฌ๋ทฐ ํ์ ์์นด์ด๋ธ๊ฐ ๋๊ธดํ์ง๋ง ํ๋ด์์ ํ๋ฐ๋๋ ๋๋์ด ๊ฐํ์ต๋๋ค.
(์ ํฌํ์ด ์ ๋๋ก ์ฌ์ฉ์ ๋ชปํ๊ฑฐ๋, ํ์ฌ๋ ๋ง์ด ๊ฐ์ ๋์์ ์ ๋ ์์ต๋๋ค.)
ํ์ง๋ง GitHub PR์ ์ฌ์ฉํ๊ฒ๋๋ฉด ์ฝ๋์ ๋ฆฌ๋ทฐ๊ฐ ํ ๊ณณ์ ์์ง๋๊ณ , ์๊ฐ์ด ์ง๋๊ณ ์๋ก์ด ํ์์ด ๋ค์ด์๋ ํ์คํ ๋ฆฌ ์ถ์ ์ด ํธํด์ง๋๋ค.
GitHub ๋ธ๋์น ์ฌ์ฉ ์ ๋ต, Jira ์ฌ์ฉ ์ ๋ต, ์ฝ๋๋ฆฌ๋ทฐ ๊ท์น ๋ฑ์ ๋ฌธ์๋ก ์ ๋ฆฝํ๊ณ ๋ชจ๋ ํ์์ด ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฆฌ๋ทฐํ๊ธฐ ์์ํ์ต๋๋ค.
์ด ๋ ์ ๋ง ๋ง์ ์กฐ์ฌ๋ฅผ ํ๊ณ ๋ค๋ฅธ ํ์ฌ์ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๋ฉฐ ์ฐ๋ฆฌํ์ ๋ง๋ ์ข์ ์ ๋ค์ ๋์
ํ๋ ค๊ณ ๋
ธ๋ ฅํ์ต๋๋ค.
ํ์ฌ๊น์ง ์ฌ์ฉ ์ค์ธ ๋ช ๊ฐ์ง ์ฝ๋๋ฆฌ๋ทฐ ๊ท์น์ ์๊ฐํ์๋ฉด
- 300์ค ์ดํ์ ๋ณ๊ฒฝ์ ๋ํ ๋ฆฌ๋ทฐ ์์ฒญ์ ๊ถ์ฅํฉ๋๋ค.
- ๋ถ๊ฐํผํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์ต๋ํ 300์ค ์ดํ๋ก ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ๋๋ก ๊ถ์ฅํ๊ณ ์์ต๋๋ค. ๋ฆฌ๋ทฐํ ์ฝ๋์ ์์ด ๋ง์ ์๋ก ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ ์ง์ค๋ ฅ์ด ๋จ์ด์ง๋ฉฐ ์ฝ๋๋ฆฌ๋ทฐ ํ์ง์ด ์ ํ๋ฉ๋๋ค.
- ๋ฆฌ๋ทฐ ์์ฒญ์๋ ๋ฆฌ๋ทฐ์ ์ฐ์ ์์๋ฅผ ๋ผ๋ฒจ๋ก ํ์ํฉ๋๋ค.
- priority: hotfix
- priority: high
- priority: medium
- priority: low
์ด ์ธ์๋ ๊ฐ ํ์ ์ํฉ์ ๋ง๊ฒ ๋ผ๋ฒจ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํฉ๋๋ค.
- ๋ฆฌ๋ทฐ ์์ฑ์๋ ๋ฆฌ๋ทฐ ์ค์๋(Wn)๋ฅผ ํ์ํฉ๋๋ค.
- W1 : ์ค๋ฅ๋ ๋ฒ๊ทธ ๋ฑ ๊ผญ ๋ฐ์ํด์ผํ๋ ๋ฆฌ๋ทฐ (Request Changes)
- W2 : ์ ๊ทน์ ์ผ๋ก ๋ฐ์ํ๊ธธ ๋ฐ๋ผ๋ ๋ฆฌ๋ทฐ (Request Changes)
- W3 : ์ฌ๋งํ๋ฉด ๋ฐ์ํ๊ธธ ๋ฐ๋ผ๋ ๋ฆฌ๋ทฐ (Comment)
- W4 : ๋ฐ์ํ์ง ์์๋ ๊ด์ฐฎ์ ๋ฆฌ๋ทฐ (Approve)
- W5 : ์ฌ์ํ ์๊ฒฌ (Approve)
W1, W2๊ฐ ํฌํจ๋๋ฉด Request Changes๋ก ๋ง๋ฌด๋ฆฌํ๊ณ , ๋ฆฌ๋ทฐ ์์ฑ์๊ฐ ์์ ์ฌํญ์ ํ์ธํ๊ณ resolve ํฉ๋๋ค.
W3๊ฐ ํฌํจ๋๋ฉด Comment, W4, W5๊ฐ ํฌํจ๋๋ฉด Approve๋ก ๋ง๋ฌด๋ฆฌํ๊ณ , ์์ ์ฌํญ์ด ์๊ธด๊ฒฝ์ฐ ๋ฆฌ๋ทฐ ์์ฑ์๊ฐ ์์ ์ฌํญ์ ํ์ธํ๊ณ resolve ํ๊ณ , ์์ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ฆฌ๋ทฐ ์์ฒญ์๊ฐ ๊ฐ๋จํ ์ฝ๋ฉํธ ํ resolve ํฉ๋๋ค.
- PR ํ ํ๋ฆฟ ์์ฑ
- ๊ธฐํ์, ํผ๊ทธ๋ง, ์ง๋ผ ๋ฑ์ ๋งํฌ
- ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ
- ๊ณ ๋ฏผํ๋ ๋ถ๋ถ
- ์ต์ข ๋ฐฐํฌ ์ผ์
์ด ์ธ์๋ ๊ฐ ํ์ ์ํฉ์ ๋ง๊ฒ ์ฌ๋ฌ๊ฐ์ง ํญ๋ชฉ์ ํ ํ๋ฆฟ(.github/PULL_REQUEST_TEMPLATE.md)์ ์ถ๊ฐํด์ ์ฌ์ฉํฉ๋๋ค.
ํ์ฌ (๊ณ์ ๋ณํ ์ค)
์ ๋ถ๋ถ์์ ์ธ๊ธํ๋ฏ์ด ์๋์ ํ
ํฌํ์ ์
๋ฌด ๋ฐฉ์์ ๊ณ์ํด์ ๋ณํํ๊ณ ์์ต๋๋ค.
ํญ์ ์ณ์ ๋ฐฉํฅ์ผ ์๋ ์๋๋ผ๋ ๊ณ์ ๋ณํํ๊ณ ๋ ๋์ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ ค๋ ๋ง์๊ฐ์ง์ด ์ค์ํ ๊ฒ ๊ฐ์ต๋๋ค.
์์ฆ์ ๋ฆฌ๋ทฐ ์์ฑ์๊ฐ ์ข ๋ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์๋๋ก, ์ปค๋ฐ ๋ฉ์์ง ๊ท์น์ด๋ ํ
์คํธ์ผ์ด์ค ์ ๋ฆฌํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ๋ํด ์ฐ๊ตฌ ์ค ์
๋๋ค.
์ ๋ฆฌ๊ฐ ๋๋ค๋ฉด ์ถํ์ ๋ ์๋ก์ด ๊ธ๋ก ๋์์ค๊ฒ ์ต๋๋ค.