๋ฐฑ์๋๊ฐ ์ด์ ๋๋
๊ฐ์๋ฅผ ๋ฃ๊ณ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋(์งํํ๊ธฐ์ ) ์ฐธ๊ณ ํ ๋งํ ์ฒดํฌ๋ฆฌ์คํธ๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด๋ดค๋ค. ์์ธํ ๋ด์ฉ์ ์๋ ๋ธ๋ก๊ทธ ์ฐธ๊ณ ํ๊ธฐ!
๋ฐฑ์๋๊ฐ ์ด์ ๋๋ ํด์ค์ผํจ - planB
์๋ฆฌ์ฆ | ๋ฐฑ์๋๊ฐ ์ด์ ๋๋ ํด์ค์ผ ํจ - city7310.log
์ด๋ฒ์ ์์กด์ฑ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๊ฒฐ์ ํ์. pip, npm, yarn, gem, maven, gradle ๋ฑ๊ณผ ๊ฐ์ ์์กด์ฑ ๊ด๋ฆฌ/๋น๋ ๋๊ตฌ๋ฅผ ์จ๋ณธ ์ ์๋ค๋ฉด ์ดํดํ๊ธฐ ์ด๋ ค์ธ ์ ์์ผ๋ ์์กด์ฑ ๊ด๋ฆฌ ๋๊ตฌ(Dependency Manager)๋ผ๋ ๊ธ์ ์ฝ์ด
velog.io
1. ํ๋ก์ ํธ ๊ธฐํ์(์๊ตฌ์ฌํญ ๋ถ์)
ํ๋ก์ ํธ์ ๋ํด ์ ๋ฆฌํ๊ธฐ
- ํ๋ก์ ํธ๋ฅผ 5๋ฌธ์ฅ/3๋ฌธ์ฅ/1๋ฌธ์ฅ์ผ๋ก ์ ์ํ๊ธฐ
- ๋น์ทํ ์๋น์ค๊ฐ ๋ฌด์์ด ์๊ณ ์ด๋ค ์ฐจ๋ณ์ ์ด, ๋ฌด์์ ๋ฐฐ์ธ์ ์๋์ง
- ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ(๋ฉ์ธ๊ธฐ๋ฅ)์ ๋ฌด์์ธ์ง
- ๊ธฐ๋ฅ ํ๋ฉด ์ค์ผ์น ํด๋ณด๊ธฐ
ํผ๋๋ฐฑํ๊ธฐ
- ๊ฐ์ฑ๋น๊ฐ ๋ฎ์ ๊ธฐ๋ฅ์ด ์๋์ง ํ์ธํ๊ธฐ (์ค์๋์ ๋นํด ์ค๋๊ฑธ๋ฆฌ๊ณ ๊ตฌํ์ด ์ด๋ ค์ด ๊ธฐ๋ฅ) -> ๊ธฐ๋ฅ์ ์ ์งํ๊ฑฐ๋ ๋ณ๊ฒฝ
- linearํ๊ฒ ๋์ด๋๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธํ๊ธฐ -> ๋ฌดํ์ ๋์ด๋์ง ์๋๋ก, ์ต์ ์ ์ํญ์ ์์ธก ๊ฐ๋ฅํด์ผํ๋ค.
- validation rule์ด ์์ธํ์ง ํ์ธํ๊ธฐ -> ๋น์ฐํด ๋ณด์ด๋ ๊ฒ๋ ์ธ๊ธํ๊ณ ๋์ด๊ฐ๊ธฐ, max ๊ฐ ์ง์ , ์ค๋ณต ๋ฐ์ ์ผ์ด์ค ๊ณ ๋ ค, ...
2. ํ๋ก์ ํธ ์ค๋นํ๊ธฐ
GitHub Organization ์ค์
: ๊ฐ์ธ ๋ ํฌ๋ก ๋ง๋ค์ด๋ ๋์ง๋ง organization ์ถ์ฒ.
์์ ํ๋ก์ธ์ค ๊ฒฐ์
- ์์
๊ด๋ฆฌ ๋๊ตฌ (Issue Tracker)
- SaaS(Trello, Asana, Monday, JIRA), GitHub Projrcts + Issues, Notion, ..
- ์์
๋ฐฉ์
- branch protection / forking workflow
- ๊ธฐ์ ์ ์์ฌ๊ฒฐ์
- API ์ ๊ณต ๋ฐฉ์ : REST
- ๋ฐ์ดํฐ ์ง๋ ฌํ : JSON
- ๊ธฐ์ ์คํ : ์ธ์ด/ํ๋ ์์ํฌ , ์๋ฒ ์ธํ๋ผ, ์ปดํจํ ์์ง, DB, DB ์๋ฒ
3. ํ๋ก์ ํธ ์งํ์ ๊ณ ๋ ค์ฌํญ
DataBase tips
- Schema ๋์์ธ์์ ์ ์์
- ํ์ ์ ํ์ ์ํ์ : ๋ฐ์ดํฐ์ ๊ฐ์ฅ ์ ๋ง๋ ํ์ ์ ์ ํํ๊ณ , size๋ ๊ฐ๋ฅํ ํ์ค์ ๊ทผ๊ฑฐํ์ฌ ์ฌ์ฉํ์.
- Key ์ค์ : ์์ฐkey๋ก ํ ๋งํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ(์ ๋ํฌํ ๊ฐ์ด ์์ ๊ฒฝ์ฐ) ๋์ฒดkey๋ฅผ ์ฌ์ฉํ๋ค.
- alter table์ด๋ update ์ฟผ๋ฆฌ ๋ฑ ํ๊ดด์ ์ธ ํ๋์์ ์ ์์
- soft delete : hard delete๋ก ์ญ์ ๋ ๊ฒ์ ์ฝ๊ฒ ๋ณต๊ตฌํ๋ ๊ฒ์ด ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ค. ํ์ง๋ง select ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ํญ์ where์ ์ ๊ฑธ์ด์ค์ผํ๋ ๋ถํธํจ์ด ์๊ธฐ๋๋ฌธ์ ๊ทธ์๋ฐ๋ฅธ ๋ ผ์์ด ์๋ค.
- DROP TABLE ๋ณด๋ค ALTER TABLE RENAME TO : ํ ์ด๋ธ์ DROP์ํค๋ฉด ๋ณต๊ตฌ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ ๋ฐ๊พผ ํ ๋ฌธ์ ๊ฐ ์๋์ง ๋ฉฐ์น ์ง์ผ๋ณธํ ๊ทธ๋ DROP์ ์งํํ๋ค.
- DB Lock์ ๊ดํด
- ALTER TABLE์ ๊ฒฝ์ฐ ํ ์ด๋ธ ์ ์ฒด์ lock์ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ ์กฐ์ฌํด์ผํ๋ค. -> Online DDL์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋ค.
- backfill ์์ ๊ณผ ๊ฐ์ด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๋ณ๊ฒฝ์ ํธ๋์ญ์ ์ด ๋๋๊ธฐ ์ ๊น์ง ๋ชจ๋ row๊ฐ lock์ ๊ฑธ๋ฆด ์ ์์ด lock์ ๋ฒ์์ ์ง์์๊ฐ์ ์ค์ด๊ธฐ ์ํด ์์ญ~์๋ฐฑ๊ฐ ์ ๋์ฉ ๋๋ ์ ์์ update๋ฅผ ์ฌ๋ฌ๋ฒ ๋ฐ์์ํค๋ ๊ฒ์ด ์ข๋ค.
- DB index์ ๊ดํด
- PK, UQ, FK ๋ ์๋์ผ๋ก index๊ฐ ๊ฑธ๋ฆฐ๋ค.
- where ์ ์ ์์ฃผ ์ธ๊ฑฐ๊ฐ์ ์ปฌ๋ผ, ๋ง์ ์์ ๋ฐ์ดํฐ์ ๋น์ผ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๊ฑฐ ๊ฐ์ ์ปฌ๋ผ์ ์ถ๊ธฐ์ ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ฑด๋ค. ์ฒ์๋ถํฐ ํด๋น ์ปฌ๋ผ์ ์๊ธฐ๋ ์ฝ์ง์๊ณ ์ฟผ๋ฆฌ๊ฐ ๋๋ ค์ง๋ฉด ์ถ๊ฐํ๋๋ก ํ๋ค.(query plan)
API tips
- API Design - Request
- Method
- URL : ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ์์ค์ ๋ฐ๋ผ URL์ ๋ถ๋ฅํ๋ค.
- Header
- API Design - Response
- Status Code
- ์ํ์ฝ๋ ์ข ๋ฅ๋ 4~5๊ฐ ์ ๋๋ก ์ ๊ฒ ์ ์งํ๋๊ฒ ์ข๋ค.
- ๊ถํ์ด ์๋ ์ฌ์ฉ์์ ๋ฆฌ์์ค์ ์ ๊ทผ์์๋ 403(Forbidden) ๋์ 404(Not Found) ์ฌ์ฉ์ ๊ณ ๋ คํ๋ค.
- Error Message
- Body
- Header : POST ๋ฉ์๋์ ๊ฒฝ์ฐ ์ํ์ฝ๋ 201(Created) + location ํค๋ ์ถ๊ฐ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ๋ค.
- Status Code
- API ๋ฌธ์ํ
- ์ฝ๋์ ๋ฌธ์๊ฐ ๊ฐ๊ฒฐํฉํ์ฌ ์๋ ์์ฑ๋๋ API Docs ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. -> ๋ฏธ์ค๋งค์น๋ฅผ ์ค์ด๊ณ , ์๋ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
- UI ์์ค์ ๋ฌธ์ํ ๋ฐฉ์์ผ๋ก README.COM์ ๊ฝค ๋ง์ด ์ฌ์ฉํ๋ค.
๋๊ธ