๐๏ธ ์๊ธ์๊ธ ๊ธฐํ๋ฌธ์ - boostcampwm-2022/web17-waglewagle GitHub Wiki
์๊ธ์๊ธ ๋์์ธ ๋ณด๋ฌ๊ฐ๊ธฐ
์๊ธ์๊ธ ๊ธฐ์ ๋ช ์ธ์
์ปค๋ฎค๋ํฐ(50 ~ 300๋ช )๋ฅผ ์ํ ์๊ทธ๋ฃน ๋ฉ์ดํน์ ๋๋ ํค์๋ ๋ฐ์ดํฐ ์๊ฐํ ์๋น์ค
์์ฑ์: ๊น๊ด๊ฒฝ
์์ฑ์ผ: 2022๋ 11์ 10์ผ
์ต์ข ์์ ์ผ: 2022๋ 11์ 10์ผ
๋จ๊ณ: Draft > Review required > Reviewed > Approved
๋ฆฌ๋ทฐ์ด: ๊น๋ํธ, ๋ฌธ์ฑํ, ์ด์น๋ฏผ
Approvals: ๊น๋ํธ, ๋ฌธ์ฑํ, ์ด์น๋ฏผ, ๊น๊ด๊ฒฝ
Issue Tracker: Github
์์ฝ (Summary)
์ปค๋ฎค๋ํฐ ๋ด์์ ๊ณตํต ๊ด์ฌ์ฌ๋ฅผ ๊ฐ์ง ์ฌ๋๋ค์ ์ฝ๊ฒ ์ด์ด์ฃผ๊ธฐ ์ํด์ ์ ํ๋ ํค์๋๋ก ๊ทธ๋ฃนํํด์ฃผ๋ ์๊ฐํ ์๋น์ค
๋ฐฐ๊ฒฝ (Background)
๋ถ์คํธ์บ ํ์์ ๋ถ์คํธ์ด๋กฑ์ ์ฌ๋ ๊ฒ์ฒ๋ผ, ์ปค๋ฎค๋ํฐ๋ด์์ ์๊ทธ๋ฃน์ ๋ง๋๋ ๊ฒ์ด ๋ถํธํ๋ค. ์ด๊ฑธ ์ฝ๊ฒํด์ค ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น?
๋ชฉํ (Goals)
- ์ปค๋ฎค๋ํฐ์์ ์ ์ ๊ฐ ์์ ์ ํค์๋๋ฅผ ์ ํ๊ณ , ํค์๋๊ฐ ๊ณต์ ๋๋ ๊ณตํต ๊ด์ฌ์ฌ๋ฅผ ๊ฐ์ง๋ ์๊ทธ๋ฃน์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
- ๋ฐ์ดํฐ ์๊ฐํ์ ์๊ฐํ ์๋ฃ์ ์ธํฐ๋์ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ค.
- ๋ ๋๋ง ์๋๋ฅผ ์์นํ ํ ์ ์๋๋ก ํ ์คํธํ๊ณ , ๋ ๋๋ง์ ์ต์ ํํ๋ค.
- ๋ก๊ทธ์ธ์ OAuth๋ก ๊ตฌํํ๋ค.
- ์ ์ ๋ ๋ฉํฐํ๋กํ ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
- ์๊ทธ๋ฃน์์๋ ์ค๋ ๋๋ฅผ ๋ง๋ค ์ ์๋ค.
- ํ ์คํธ ์ฝ๋ ์์ฑ ๋ฐ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค.
- ๋ฐฑ์๋ ์คํธ๋ ์ค ํ
์คํธ๋ฅผ ์งํํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค.
- ์ ํ๊ธฐ, ์ฐ์ด ๋ฑ ๊ทผ๊ฑฐ์๋ ํธ๋ํฝ ๊ณผ๋ถํ ๊ฐ์ ํ๋ค.
- ๋ฐฐํฌ๊ณผ์ ์ ์ฝ๊ฒ ํ์ฌ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๋์ด๊ณ , ๋ฐฐํฌ ์ธก์ ์๊ฐ์ ์ค์ธ๋ค.
- ๋น๋ ์๊ฐ ์ธก์ ๋ฐ ๊ฐ์
- CI / CD ์ ์ฉ
- ๋ฏธ๋์ด ์์ ์๋น ์๋๋ฅผ ๊ฐ์ ํ๋ค. (ํฐํธ, ํ๋กํ ์ฌ์ง)
๋ชฉํ๊ฐ ์๋ ๊ฒ (Non-Goals)
- ์ ํ ๋์์ธ์ ํน๋ณํ ๊ณ ๋ คํ์ง ์๋๋ค.
- ๊ธฐํ์ ์คํ ๊ฐ๋ฅ์ฑ์ ๋ํด์๋ ํน๋ณํ๊ฒ ๊ณ ๋ คํ์ง ์๋๋ค. (ex. ๊ณตํต ํค์๋ ๊ทธ๋ฃน์ ์ค์ ๋ก ์ฌ๋๋ค์ด ๋ชจ์ผ ๊ฒ์ธ๊ฐ?)
- ์๊ทธ๋ฃน ๋ณ ์ค๋ ๋๋ ํต์ฌ์ ์ผ๋ก ๊ตฌํํ์ง ์๋๋ค. ๊ทธ๋ฃนํ์ ๋ถ๊ฐ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ ๋๋ก ๊ตฌํํ๋ค.
- ๋ก๊ทธ์ธ ๋ณด์๋ถ๋ถ์ ๊น๊ฒ ๊ณ ๋ฏผํ์ง ์๋๋ค.
๊ณํ (Plan)
-
ํต์ฌ ๊ธฐ๋ฅ
๋๋ฉ ํ์ด์ง(์๊ฐ UI)
ํ ํ์ด์ง(์ปค๋ฎค๋ํฐ ์ถ๊ฐ, ์ด๋ ์ฝ๋ ๋ฐ๊ธ)
๋ฐ์ดํฐ ์๊ฐํ(๋ฐ์ดํฐ ์๊ฐํ, ํค์๋ ์ถ๊ฐ ์ญ์ )
๊ด๋ฆฌ์ ํ์ด์ง(์ ์ ๊ด๋ฆฌ, ํค์๋ ๊ด๋ฆฌ)
์ค๋ ๋ ํ์ด์ง(์ค๋ ๋ CRUD, ๋๊ธ CRUD)
์ธ์ฆ ๋ชจ๋ฌ(๋ก๊ทธ์ธ, ํ์๊ฐ์ ) - ๊ณตํต
-
W1 - ๊ธฐํ
-
W2 - ๊ฐ๋ฐ
- FE - ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ (Create Next App), ํด๋ผ์ด์ธํธ ์๋ฒ CI / CD ๋ฐฐํฌ, ํ๋กํ ํ์ ์ ์
- BE - ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ , ๊ฐ๋ฐ์ฉ Mock ์๋ฒ ๋ฐฐํฌ, DB ์ค๊ณ, ํค์๋ CRUD API ๋ช ์ธ ์์ฑ, ํค์๋ CRUD API ๊ตฌํ
-
W3 - ๊ฐ๋ฐ
- FE - ๋ฐ์ดํฐ ์๊ฐํ
- BE - ๋ก๊ทธ์ธ API ๋ช ์ธ ์์ฑ ๋ฐ ๊ตฌํ, ์ค๋ ๋ API ๋ช ์ธ ์์ฑ ๋ฐ ๊ตฌํ
-
W4 - ๊ฐ๋ฐ - ๋ฐ๋ชจ ๋ฐฐํฌ(4์ฃผ์ฐจ ๋๋๊ณ )
- FE - ์ค๋ ๋ ํ์ด์ง, ๋๋ฉ ํ์ด์ง, ๊ด๋ฆฌ์ ํ์ด์ง
- BE - ์ปค๋ฎค๋ํฐ CRUD API ๋ช ์ธ ์์ฑ ๋ฐ ๊ตฌํ, ์ปค๋ฎค๋ํฐ์ ์ ์ CRUD API ๋ช ์ธ ์์ฑ ๋ฐ ๊ตฌํ, CI / CD ์๋ฒ ๋ฐฐํฌ
-
W5 - ๊ฐ๋ฐ
- FE - ๋ ๋๋ง, ์ ์ ์์ ์ ๊ณต ํ ์คํธ ๋ฐ ์ต์ ํ
- BE - ๋ถํํ ์คํธ, ์๋ฒ ๊ฐ์
-
W6 - ๋ฆฌํฉํ ๋ง / ํ ์คํธ / QA
- FE - ๋ฆฌํฉํ ๋ง / ํ ์คํธ / QA
- BE - ๋ฆฌํฉํ ๋ง / ํ ์คํธ / QA
์ํฉํธ ์ธก์ (Measuring Impact) - ํ๋ฉด์ ์ ํ๊ธฐ
- ์ฑ๋ฅ
- ๋ผ์ดํธ ํ์ฐ์ค?
- ๋ ๋๋ง ์๋?
- ํ์ง
- ํ ์คํธ ์ฝ๋?
- ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง?
- ์์ ํ์ฅ์ด ์ฉ์ดํ๊ฐ? โ ์์นํ๊ฐ ๊ฐ๋ฅํ ๊น? (์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์ด๊ฑธ๊น? SonarLint)
- ๋์์ ์๋
- ํ ๊ทธ๋ฃน ์ต๋ ์ธ์?
- ํ ๊ทธ๋ฃน ์ต๋ ํค์๋ ์๊ฐํ?
- ์ด๊ธฐ ์ ํ ๋ชจ๋ฌ์์ ์ต๋ ํค์๋ ๊ฐฏ์?
- ๋ฐฐํฌ ์ฑ๋ฅ
- ๋ฐฐํฌ ์๋ํ ๊ฐ๋ฅ ์ ๋ฌด
- ์ค์ผ์คํธ๋ ์ด์ ์ง์ ์ฌ๋ถ (๋ฐฐํฌ ํ๊ฒฝ์ ์ ์ฐ์ฑ)
- ๋ฐฐํฌ ์ํฌ ํ๋ก์ฐ์ ๋จ๊ณ ์ (๊ฐ์ํ ์ ๋)
- ๋ฐฐํฌ ์๋ (๋น๋ ๋ฑ)
๊ธฐํ ๊ณ ๋ ค์ฌํญ (Other Considerations)
- ๋ฐ์ดํฐ ์๊ฐํ๋ ์๋ ํด๋ผ์ฐ๋๋ก ์ฌ์ฉํ๋ฉฐ, ํค์๋ ์ถ๊ฐ ์ญ์ ์ ๋ฐ๋ฅธ ์ธํฐ๋์ ์ ๋ถ๊ฐ๊ธฐ๋ฅ์ผ๋ก ์๊ฐํ๋ค.
- ํ์์ฑํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฐ๋ฅ์ฑ์ด ์์.
- ๋ง์ด ํ์ด์ง์์ ๊ทธ๋์ ์ถ์ ํ ํค์๋๋ฅผ ์ด๋ํ ์ ์๋ค. - ์ ์ ์ดํ ์ค์ด๊ธฐ, ๋ฐฑ์๋ ๊ณผ๋ถํ ์ฒ๋ฆฌ, SSR + SSG
- ๊ด๋ฆฌ์ ํ์ด์ง์ ์ค์๋๋ ๋์ง ์๋ค.
- ๊ทธ๋ฃน ์ ์ ์ ์ญํ ์ ์ผ๋จ ์ ์ , ์์ ์๋ง ๋๋๋ค.
- ๊ด๋ฆฌ์ ํ์ด์ง์ ํต๊ณ
๋ง์ผ์คํค (Milestones)
- ๋ฐ์ดํฐ ์๊ฐํ ๊ตฌํ
- ์ฐธ์ฌ์์ ํค์๋ ์ถ๊ฐ ์ญ์ ๊ตฌํ
- ๋ก๊ทธ์ธ / ๋ก๊ทธ์์ ๋ฐ ๊ด๋ฆฌ์ ๊ธฐ๋ฅ
- ์ปค๋ฎค๋ํฐ ์์ฑ ๋ฐ ์ปค๋ฎค๋ํฐ ๋งํฌ ๊ณต์
- ๋ถ์คํธ์บ ํ์ ๋ฐ๋ชจ๋ฒ์ ผ ๋ฐฐํฌ
- ๊ทธ๋ฃน ๋ณ ์ค๋ ๋ ์์ฑ ๊ธฐ๋ฅ
๋ฐฐํฌ ๊ณํ (Deployment plan)
- ๋ค์ด๋ฒ ํด๋ผ์ฐ๋์ ๋ฐฐํฌ
- Github Actions์ ํตํด CI / CD๋ฅผ ์ฌ์ฉํ๋ค.
- ํจํค์ง๋ค์ Docker๋ก ๊ด๋ฆฌํ๋ค.
- Nginx๋ฅผ ํตํด์ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ค.
- ํด๋ผ์ด์ธํธ์๋ HTTPS ์ ์ฉํ๋ค.
- Client, DB, API, ์ด๋ฏธ์ง ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋ค.
- pm2๋ฅผ ํตํด์ ๋ฐฐํฌ ํ์ ์๋ฒ๋ฅผ ์ ์งํ๋ค.
- sentry๋ฅผ ์ฌ์ฉํด์ ์๋ฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
๊ด๋ จ ํ๋ก์ ํธ (Related projects)
- Slack - ๋ฒค์น๋งํน
- Slido - ๋ฐ์ดํฐ ์๊ฐํ
- ๋ค์ด๋ฒ ์นดํ - ์๊ทธ๋ฃน