22.11.07. - boostcampwm-2022/web24-Asnity GitHub Wiki
1์ฃผ์ฐจ์ ์ฐ์ถํด์ผํ๋ ๋ฌธ์ ์ ๋ฆฌ
๊ฐ๋ฐ ๋ฌธ์
- README.md
- ํ๋ก์ ํธ ์๊ฐ, ์ํค ๋งํฌ, ๋ฐ๋ชจ ๋งํฌ, ์ฃผ์ ๊ธฐ๋ฅ์ ๋ํ ์๊ฐ, ๊ธฐ์ ์คํ, ์ํคํ ์ฒ, ๊ทธ ์ธ(์ฐ๋ฆฌ๊ฐ ๊ณต์ ํ ๋งํ ๊ฒฝํ๋ค), ํ์ ์๊ฐ
- ๊ธฐํ์
- Feature List
- ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ ๋ฌธ์=์ ํ ๋ฐฑ๋ก๊ทธ
- ํต์ฌ ๊ธฐ์ ์๊ตฌ์ฌํญ
- API, ERD(๋ชจ๋ธ๋ง)
- ํผ๊ทธ๋ง(๋์์ธ, ํ๋กํ ํ์ )
- ํ๋ก ํธ-๋ฐฑ์๋ ๊ตฌ์กฐ(์ํคํ ์ฒ)
- ๊ธฐ์ ์คํ
๊ณํ
- ์ ์ฒด ๊ณํ
- ์คํ๋ฆฐํธ ๋ฐฑ๋ก๊ทธ(์ฃผ์ฐจ๋ณ)
๊ทธ๋ผ์ด๋ ๋ฃฐ
- ํ ๋ฃฐ
- ์ฝ๋ฉ ์ปจ๋ฒค์
- GitHub branch ์ ๋ต
- GitHub commit ์ปจ๋ฒค์
- GitHub Issue ์ปจ๋ฒค์
- GitHub PR ์ปจ๋ฒค์
ํ๊ณ
- ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
- ์ผ์ผ ํ๊ณ
- ์ฃผ์ฐจ ํ๊ณ
- ํผ์ด์ธ์
- ๋ฉํ ๋๊ณผ์ ๋ฏธํ
- ํ ๋ก , ๊ธฐ์ ๋ ผ์(์ ๊ทธ ๊ธฐ์ ์ ์ ์ ํ๋๊ฐ)
- ๋งํฌ ๋ชจ์
๋ฐํ ์๋ฃ
- ๊ณต์ ๋ฐํ์๋ฃ
- ๋ฐ๋ชจ์์
์ค๋ ํ ๊ฒ
- ์ฐ๋ฆฌ๊ฐ ๋์ค์ฝ๋ ํด๋ก ์ฝ๋ฉ์ธ๊ฑด ๋ง์ง๋ง ๋ฌด์จ ์ปจ์
์ธ์ง ๊ธฐํ์๋๊ฐ์๋ค.
- ์ผ์ค๋ํฐ๊ฐ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ํ๋ด๋๊น ์ด๋ค ์ปค๋ฎค๋ํฐ์ธ๊ฐ์ ๋ํ๊ฑธ ์ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
- ๊ทค์ด๋๊น ๊ฐ์ด ์์์ ๊ทค๊น๋จน์ผ๋ฉด์ ์ด์ผ๊ธฐํด์.. ์ด๋ฐ๊ฑฐ
- ๋ฆฌํฌ์งํ ๋ฆฌ ์์ฑ
- ์ค๋ ์คํฌ๋ผ ๊ธฐ๋ก
- ๋ฌธ์ ํ ํ๋ฆฟ ์์ฑํ๊ธฐ ํ ํ๋ฆฟ ๋ชจ์
- ๊ทธ๋ผ์ด๋ ๋ฃฐ ์ ํ๊ธฐ
- ํ ๋ฃฐ
-
์ฝ๋ฉ ์ปจ๋ฒค์ โ ๊ฐ๋ฐํ๊ฒฝ ์ค์ ํ ๋ ์์ฑํ๊ธฐ - GitHub commit ์ปจ๋ฒค์
- GitHub Contribution ์ปจ๋ฒค์
:
.github์ ํ ํ๋ฆฟ ๋ง๋ค๊ฒ์- GitHub Issue ์ปจ๋ฒค์
- GitHub PR ์ปจ๋ฒค์
- GitHub branch ์ ๋ต
-
1์ฃผ์ฐจ ์คํ๋ฆฐํธ ๋ฐฑ๋ก๊ทธ-> ์ ํ ๋ฐฑ๋ก๊ทธ ์์ฑ ์ํ์ -
์ ํ ๋ฐฑ๋ก๊ทธ (์์ฑ์ ์๋์๋)
github description ๋ญ๋ก ํ ๊น์
- ๋ ์ ๊ทค๋จน์ผ๋ฌ ์์์ด? ๐๐ ์ด๋๋ฅผ ์ํด์คฌ๋ ๋ฐ ์ด๋ป๊ฒ ๊ฐ์?
- ๊ฐ์ด ๊ฐ๊ทค ๋จน์๋? ๐
- ๊ฐ์ด ๊ทค ๊น ๋จน์๋?
GitHub branch ์ ๋ต ์ ํ๊ธฐ
- main: deploy
- dev: ๊ฐ๋ฐ
- fe
- be
- release๊ฐ ๋ฐฐํฌ ์ฐ๋๋์ด์๋์ง
- ์ main์ด๋ release ๊ตฌ๋ถํ๋์ง? main์ ํ๊ทธ๋ง ๋ฌ๋๋ฐ
https://techblog.woowahan.com/2553/
ํฐ์ผ, ๋ฐฑ๋ก๊ทธ โ ์ด์ํ๋๋น ๋ธ๋์น ํ๋ ๋น PR ํ๋
์) ๋ชจ๋ฌ์ ๋ง๋ค์!
- main ๋ธ๋์น ์์
- main์ผ๋ก๋ถํฐ dev ๋ธ๋์น๋ฅผ ํ๋ค.
- dev๋ก๋ถํฐ dev-frontend ๋ธ๋์น๋ฅผ ํ๋ค.
- dev-frontend์ผ๋ก๋ถํฐ feature/modal ๋ธ๋์น๋ฅผ ํ๋ค.
- feature/modal ๋ก๋ถํฐ issue#1/loayout ๋ธ๋์น๋ฅผ ํ๋ค.
- issue#1/loayout์์ ๋ง๋ ๋ค. ์ปค๋ฐํ๋ค. ํธ์ฌํ๋ค.
- feature/modal๋ก issue#1/loayout์ ์ปค๋ฐ์ ๋ํ PR ๋ ๋ฆฐ๋ค. ์ฝ๋๋ฆฌ๋ทฐ๋ฐ๋๋ค. rebase๋ก ๋จธ์ง ๋๋ฌ์ค๋ค.
- local๊ณผ remote์ ์๋ issue#1/loayout ๋ธ๋์น ์ง์ด๋ค.
- local origin ์ ์๋ feature/modal๋ก remote origin ์ ์๋ feature/modal์ ์ต์ ์ปค๋ฐ(rebase merge๋ ์ปค๋ฐ) ๋ก๊ฒจ์จ๋ค.
- local origin์ ์๋ feature/modal ๊ฐ๋ฐ ๋ค ๋๋จ.
- dev-frontend๋ก feature/modal ์ปค๋ฐ์ ๋ํ PR ๋ ๋ฆฐ๋ค. ๊ทธ๋ฅ merge(์๋๋ฉด ์ปค๋ฐ ์ค์ด๊ณ ์ถ์ผ๋ฉด squash)
- localorigin์ ์๋ dev-frontend๋ก remote origin์ ์๋ dev-frontend์ ์ต์ ์ปค๋ฐ ๋ก๊ฒจ์จ๋ค.
- dev-frontend์ dev-backend ๊ฐ๋ฐ ์๋ฃ
- dev๋ก dev-frontend, dev-backend PR๋ณด๋ด๊ณ ํ์ธ๋ฐ๊ณ ๊ทธ๋ฅ merge
- main๋ก dev PR๋ณด๋ด๊ณ ํ์ธ๋ฐ๊ณ ๊ทธ๋ฅ merge
๊ทผ๋ฐ ๋ชจ๋ ธ ๋ ํฌ๋ผ์ ํ๋ก ํธ๋ ๋ฐฑ์๋ ๋ฆด๋ฆฌ์ฆ ๋ธ๋์น ๋ฐ๋ก ํ์ผํ๋?
๋ฌผ์ด๋ณผ ๊ฒ
- git-flow์ ๋ํด์ ์ด๋ป๊ฒ ์ดํดํ๋์ง ๊ณต์
- git-flow์์ rebase์ squash ์ธ์ ์ฌ์ฉํ๋์ง
- ํ๋ก ํธ๋ ๋ฐฑ์๋ ๋ฐ๋ก ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ๋ฆด๋ฆฌ์ฆ์ฉ ๋ธ๋์น๋ ํ๋? ๋ ๊ฐ?
๋์ค์ ํด๋ณผ ๊ฒ/ ์กฐ์ฌํด๋ณผ ๊ฒ
- ์ฝ๋ ์คํ๋ฆฌํ
- ์ฑํ redis์ ๋ฃ๊ธฐ?
- ์ธ์ฆ ๋ฐฉ์ ๊ฒฐ์ ํ๊ธฐ(local์ด๋ oauth, ํ ํฐ์ด๋ ์ธ์ )
- socket์ด๋ api ์๋ฒ ๋ถ๋ฆฌํ ๊ฒ์ด๋ฏ๋ก nest ๊ฐ์ ๋น๋ํด์ผํจ
์ฐธ๊ณ
-
์ ์์ฌํญ
์ด๋ค ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ฑฐ๋ ๊ธฐ์ ์ ์๋ก ๋ฐฐ์ฐ๋ฉด์ ๊ฒช์๋ ๋ฌธ์ ๋ค์ ๋จ๊ฒจ๋๋ฉด ์ข์ ๊ฒ๊ฐ๋ค.
์๋๋ฉด ์ด๋ฐ๊ฑธ ๊ทธ๋๊ทธ๋ ์ ์ด๋์ง ์์ผ๋ฉด, ์๊ฐ์ด ์ง๋ ์๋ก ๊ฒฐ๊ณผ๋ง ๋จ๊ณ ๊ณผ์ ์ด ํ๋ฆฟํด์ง๊ธฐ ๋๋ฌธ
๋ด๊ฐ ํ์ต ์คํ๋ฆฐํธ๋ฅผ ํ๋ฉด์ ์ฌ์ฉํ๋ ์์ (์ฌ์ค ๋ค๋ฅธ ๊ฒ๋ค์ ๋ ์งง๊ฒ ์ผ๋๋ฐ ์์ธํ ์ ์ง์์๋ ๊ทธ ๋น์ ์ฌ๊ณ ์ ํ๋ฆ์ ๊ธฐ๋กํด๋๋ ๊ฒ์ด ๋ชฉ์ )
์์ฌ๊ฒฐ์ ์์(๊ถ๋์)
์ด๋ค ๊ตฌ์กฐ๋ก ๋ง๋ค ๊ฒ์ธ๊ฐ?
-
์ฒ์ ์๊ฐ
- SPA๋ฅผ ์ ๋ฒ์ ์จ๋ณด์ง ์์์ผ๋,
SPA๋ก ๋ง๋ค์. - ๋๋ SSR์ ์งํฅํ๋๊น
SSR๋ก ๋ง๋ค๋ฉด ๋๊ฒ ๋ค!
- SPA๋ฅผ ์ ๋ฒ์ ์จ๋ณด์ง ์์์ผ๋,
-
๋ฌธ์ ๋ฐ ๊ถ๊ธ์ฆ
- ๊ทผ๋ฐ MVC ๋ชจ๋ธ์ ๊ฐ์ง๊ณ ๊ฐ๋ฉด์ ์ด๋ป๊ฒ ๋ง๋ค์ง?
- Single page๋ฉด ์๋ฒ์์ ์ด๋ป๊ฒ ์์์ ๋ณด๋ด์ค ์ ์์ง?
- webpack๊น์ง ๋ผ์ฌ์์ผ๋๊น, ๋ฒ๋ค์ ์ด๋์ ์์ฑํด์ค์ผํ์ง?
- ๋ผ์ฐํฐ ๋ณ๋ก ์ถ์ํ๋ฅผ ํด์ฃผ์ด์ผํ ๊น?
-
ํ์ต ๋ฐ ํด๊ฒฐ ๊ณผ์
-
SPA๋ ๋๋ถ๋ถ SSR๋ณด๋ค CSR์ ์ ์ฉํ์ฌ ๋ง์ด ์ฐ๋๊น ์ด๋ฒ ํ๋ก์ ํธ๋
SPA+CSR๋ก ๊ฒฐ์ -
CSR์ ๊ฒฝ์ฐ
Model๋ง Server์ด๊ณView,Controller๋ Client์์ ์ฒ๋ฆฌํ๋ค.- SSR, CSR์ ์ฐพ์๋ณด๋ค๊ฐ ์ด ๋ธ๋ก๊ทธ์ ๊ทธ๋ฆผ์ ๋ณด๊ณ ์ค๋ง๋ฆฌ๋ฅผ ์ก์๋ค.
-
webpack์ ์ฐ์ dist์ ๋ค ๋ชจ์๋๊ณ ๋ฐฐํฌํ ๋๋ webpack ๋น๋๋ฅผ ๋ฐ๋ก ํ ๋ค์์ ์คํํ๋๋ก ํ๋ค.
-
๋ผ์ฐํฐ ๋ณ ์ถ์ํ
-
-
๊ฒฐ๋ก ๋ฐ ์๊ฐ
- SPA๋ก ๊ตฌํํ๋ค๊ณ ์๊ฐํ์ผ๋, ์ฌ์ค Header ๊ฒ์๋ฐ๋ ๊ณ์ ์ ๋ณด ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ณตํต์ธ๋ฐ ์ํธ๋ฆฌ ์ฝ๋์์ ๋ง๋ค์ด๋๊ณ article๋ง ๊ฐ์๋ผ์ฐ๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉ์์ธ ๊ฒ ๊ฐ๋ค (๋๋ฒ ์งธ ์ฝ๋๋ฆฌ๋ทฐ)
- CSR๋ก ํด๋ณด๋, ๋ SSR์ ์ด๋ป๊ฒ ํด์ผํ๋ ๊ฑด์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค..
์น ํ๋ก ํธ์ Observer Pattern ์ ์ฉํ๊ธฐ
- ์ฒ์ ์๊ฐ
- ์ํ๊ฐ ๋ณํ๋ฉด rendering ๋ค์ํ๋๊ฒ ์ ์ ํ๊ฑฐ๋ ๋์ผํ ์ด์น์๋๊ฐ?
- ์ผ๋จ ๊ณต๋ถํด๋ณด๊ณ ๋ค์ ์๊ฐํ์.
- ๋ฌธ์ ๋ฐ ๊ถ๊ธ์ฆ
- ์ด๋ฒ ํ๋ก์ ํธ์์ ๊ตณ์ด observer pattern์ ์ ์ฉํด์ผํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋ค.
- ํ์ต ๋ฐ ํด๊ฒฐ ๊ณผ์
- ๋ด๊ฐ ์๋ฌธ์ ๊ฐ์ง ์๊ฐ์ด ๋ฑ ์์๊ณ
์ค์ ์ง์ค์ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ ๋ ํจ๊ณผ์ ์ด๋ผ๋ ๋ง์ด ๋ฑ ์๋ค. - ๊ทธ๋ ๋ค๋ฉด, ์ด๋ฒ ํ๋ก์ ํธ์ SPA ์์ HomeโCategoryโHome ์ด๋ ๊ฒ ํ๋ฉด์ ๋ฐ๊ฟ์ค ๋ ๋ง๋ค ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด Server์ ๋ถ๋ด์ด ๋ค์ด์ ์ด๋ค๊ณ ์๋ฒฝ 3์ 27๋ถ์ ํผ์ ์ถ๋ก
- ๋ด๊ฐ ์๋ฌธ์ ๊ฐ์ง ์๊ฐ์ด ๋ฑ ์์๊ณ
- ๊ฒฐ๋ก ๋ฐ ์๊ฐ
- ๋ค์๋ ์ผ์ด๋์ ์๊ฐํ๊ณ ์กฐ์๋ค๊ณผ ํ ๋ก ํ ๋ด์ฉ
- Component Level์ ์ํ ๊ด๋ฆฌ
- component level ์ํ ๊ด๋ฆฌ์ ๊ฒฝ์ฐ ํ์ component๊ฐ ์ฆ๊ฐํ๊ฒ ๋๋ฉด, ํด๋น ์ํ๋ฅผ ์กฐ์์ด ๋ฐ์์ค๊ธฐ ์ํด์๋๋ง์ callback์ด ์ด๋ฃจ์ด์ ธ์ผํ๊ธฐ ๋๋ฌธ์ ๋ฒ๊ฑฐ๋กญ๋ค.
- Observer pattern์ ์ฌ์ฉํ๋ค๋ฉด ์ค์ ์ง์ค์ ์ ์ฅ์๋ก ๊ด๋ฆฌํ๊ธฐ๋๋ฌธ์ ํจ์ฌ ์ฉ์ดํ๋ค.
- Observer? Pub-Sub?
- Observer๋ 1:N์ ๊ด๊ณ, Pub-Sub๋ M:N์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.
- ๊ทธ๋ฌ๋ ๋ณดํต observer pattern์ ์ด๋ค๊ณ ํ๋ฉด ์ค์ ๊ด๋ฆฌ์๊ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ํด์ค๋ค๋ super-set์ ์๋ฏธ๋ก ์ฌ์ฉํ๋ค.
- Component Level์ ์ํ ๊ด๋ฆฌ
- ๋ค์๋ ์ผ์ด๋์ ์๊ฐํ๊ณ ์กฐ์๋ค๊ณผ ํ ๋ก ํ ๋ด์ฉ