์คํ๋ฆฐํธ 1ํ์ฐจ ํ๊ณ
- ์ฐธ๊ณ : DAY 10
- ๋์ด
- ๋ชฉํํ๊ฒ๋ค์ ์๋ฃ ๋ค ๋ชปํด์ ๊ต์ฅํโฆ. ์ค๋ง์ค๋ฌ์ด ์คํ๋ฆฐํธ์๋ค.
- FLYWAY ๋ฅผ ์ ์ฉ์์ผํด๋ณด๋ คํ๋๋ฐ ๋ง์ด ํด๋งค์ โฆ
- ์ฐ๊ณํด์ ํ์ ํ๋๊ฒ ์ด์ํด์ ๊ทธ๋ฐ์ง ๊ธฐ๋ฅ ๊ตฌํ ์๋๊ฐ ๋๋ ธ๋ค.
- ๋ณ์ฐ
- ์ฌ์ฉ์ ๋ชฉ๋ก์กฐํ ๊น์ง๋ ๋ค ํ์ด์ผ ํ๋๋ฐ ์๋ฃ ๋ชปํด์ ์กฐ๊ธ ๋ ์๋ ฅ์ ๋ด์ผ๋ ๊ฒ ๊ฐ๋ค.
- ์ค๊ฐ์ค๊ฐ ์์ ํด์ผ๋ ๊ฒ ๊ฐ์ ๊ฒ๋ ์ฑ๊ฒจ์ผ๋๋๋ฐ ๋ชป์ฑ๊ฒผ๋ค.. ์๋ ฅ์ด ํ์ํ๋ค
- ์คํ์ด ์๋์ ๊ณ ์
- ํ ์คํธ ์ฝ๋์งค๋๋ ํ์ ๋ง์ถ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
- ํ์ฑ
- ์คํฌ๋ผ ๋ง์คํฐ ์ญํ ์ ๋งก์๋๋ฐ ๋ฌธ์ํ ๋ถ๋ถ์ด๋ ์งํ ๋ถ๋ถ์ ์์ด์ ๋ง์ด ๋ฏธ์ํจ์ด ์์ด์ ํ์๋ถ๋คํํ ์ฃ์กํ ๋ถ๋ถ์ด ์์๋ค. ํ์ ๋ถ๋ค๋ ๋ง์ด ๋์์ฃผ์ ์ ๊ฐ์ฌํ์ต๋๋ค.
- ์ง๋ผ๋ฅผ ํตํด์ ํ์ ์ ํ๋ ๊ณผ์ ๋ ๋ถ์กฑํ๊ธด ํ์ง๋ง ์ ์ ๋ ๊ด์ฐฎ์ ์ง์ง ์์๊นโฆ?
- ํด์ผํ ๋ถ๋๋ง ๋ฑ ์ ์ ํด์ผ๊ฒ ๋ค.
- ์งํ
- ๊ฐ์ธ์ ์ผ๋ก ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ ๋๋ฌด ๋ง์ ์๊ฐ์ ๋ค์ธ ๊ฒ ๊ฐ์์ ๋ค๋ฅธ ๊ณณ์ ํ์ ์ถ๊ฐ์ ์ผ๋ก ์ธ ์ ์๋๋ก ๋ ธ๋ ฅํด์ผ๋ ๋ฏ ํจ๋ค.
- ํ๋น
- ์ง๋ผ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ์ ์ ํ๋ ๋ถ๋ถ์ด ์ํด๋ฌ์ ํค๋งจ ๋ถ๋ถ์ด ์์๋ค .
- ๋ชฉํ๋ฅผ ์๊ฒ ์ก์๋ค๋ ์๊ฐ์ด ๋ ๋ค. โ ๋ชฉํ ์ค์ ์คํจ
๋ฉํ ๋
- ์ด๋ฒ ์คํ๋ฆฐํธ๋ ์ต์ํด์ง๊ธฐ๋ก ๊ฐ์ ธ๊ฐ๋๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- ์๋๋ฅผ ์กฐ๊ธ ๋ด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- ํ๋ก ํธ
- ํ๋ฉด์ ์๋ฌด๋ ์์์ ์ ํ๋๋ฐ ํ๋ฉด๋ถํฐ ์ก๊ณ ๋ค์ด๊ฐ์ผํ ๊ฒ ๊ฐ์ต๋๋ค.
- ํ๋ฉด๋ ์๋๋ฐ API ๋ถํฐ ๋ง๋ค๋ฉด ์ธ๋ชจ๊ฐ ์์ด์ ์ฐ๋๋ง ๊ฐ๋ฅํ๋ฉด ๋ฉ๋๋ค. โ ๋ฐฑ์๋๊ฐ ํ๋ก ํธ ์งฐ๊ตฌ๋? ์๊ฐ ๋ค์ด๋ ๋๋ค
- ์ต๋ํ ๋จธ์ง ํ์ ๋ force ์ ๋๊ฐ๊ฒ ํด์ผํฉ๋๋ค.
- pr ๋จธ์ง๋ ๋ฆฌ๋ฒ ์ด์ค๋ ์ค์ฟผ์๋ ํ์ง ์๋๋ก
KPT ํ๊ณ
Keep
- ๋์ด๋
- ๋ณ์ฐ๋
- ํ์ฑ๋
- ์งํ๋
- ํ๋น๋
Problem
- ๋์ด๋
- ๋ณ์ฐ๋
- ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ๋ฆ์ด์ ธ ๋ณ๋ชฉ์ด ์ข ์๊ฒผ๋ค.
- ํ์ฑ๋
- ์งํ๋
- ์ปค๋ฐ์ด ์ค๋ณต๋์ด ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์ค๋ณต์ผ๋ก ํ๋ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค.
- ํ๋น๋
Try
- ๋์ด๋
- ๋ณ์ฐ๋
- ํ์ฑ๋
- ์งํ๋
- ํ๋น๋
์งํํ ์์
- 10๊ณ๋ช ์ ๋ฆฌ
- ์คํ๋ฆฐํธ ์๋ช ์ฃผ๊ธฐ
- 3์ผ ๋จ์๋ก ๊ฐ์ ธ๊ฐ์ !
- ์ฃผ๋ง์ 1์~3์๊น์ง ๊ณตํต์ ์ผ๋ก ๊ฐ์ ธ๊ฐ๊ณ ๋ ํ์ํ ๊ฒฝ์ฐ ์ ๋ ์ ํ๋ฒ ๋ ๋ชจ์ด์ !
- ์ฝ๋๋ฆฌ๋ทฐ ๋ฐฉ์
- PR์ 24์๊ฐ ๋ด๋ก ํ์
- ๋ฆฌ๋ทฐ๋ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ์์ ์ํด ์ต๋ํ ๋นจ๋ฆฌ ํด์ฃผ๊ธฐ
- ๋ฏธ๋ฆฌ ์ด์ผ๊ธฐ ๊ฐ๋ฅํ๋ค๋ฉด PR ์๊ณ ํด์ฃผ๊ธฐ
- 2~3๋ช ์ด์์ approve ๋ฐ์ผ๋ฉด ๋์ด๊ฐ๋๋ก ์ ์ฐํ๊ฒ ์ด์ํ๊ธฐ
- PR ๋ด์ฉ์?
- ์ฌ์ํ ๊ฒ์ด๋ผ๋ ๋ชจ๋ PR ๋ณด๋ด๊ธฐ
- ์ญํ ๋ถ๋ฐฐ(SM, PO, Developer)
- PO - ๊ณฝ๋์ด
- SM - ๊นํ์ฑ
- Developer - ๊น๋ณ์ฐ, ๋ฐ์งํ, ๋ฐํ๋น
- ์ค๋ฅ ์ํฉ ๋์ฒ ๊ฐ์ด๋
- Issus ๋ฐ์์ Fix !
- ๋ฌธ์ํ ๋ฐ ๊ณต์ โ ํด๊ฒฐ
- ๋ฌธ์๋ฅผ ์์ธํ ์์ฑํ์
- ํฐ ์ด์๊ฐ ์๋๋ผ๊ณ ํ๋จ๋๋ฉด ์งํ ํ์ ๋ฌธ์ํ ๋ฐ ๊ณต์ ํ์
- ์ด์ ์ฝ์ง ์๊ฐ ์ต๋์น : 1์๊ฐ
- ๊น ์ปจ๋ฒค์
Git Hook ๊ธฐ๋ฅ ์ฌ์ฉํ๊ธฐ
feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ fix : ๋ฒ๊ทธ ์์ (ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง) refactor : ์ฝ๋ ๊ตฌ์กฐ ๋ณ๊ฒฝ ๋ฐ, ๋ค์ด๋ฐ ๋ณ๊ฒฝ ํฌํจ - (์ญ์ ํ์ผ ํฌํจ) style : ๋ง๊ฐ ์ฒ๋ฆฌ , ์ปจ๋ฒค์ setting : dependency ์ค์ test : ${xxxx} ํ ์คํธ docs : readme ๊ธฐ๋ฅ ๋ฆฌ์คํธ ์ถ๊ฐ
feat: ${function} ๊ฐ๋ฐ
test: ${function} ๋จ์ ํ ์คํธ
test: ${function} ํตํฉ ํ ์คํธ
test : Following ๋จ์ํ ์คํธ(repository, service ,controller) test : Follwing ํตํฉํ ์คํธ feat : Following ๊ธฐ๋ฅ ๊ฐ๋ฐ
- ๋ธ๋์น ์ ๋ต
- main - ์ต์ข ๋ฐฐํฌ ๋ธ๋์น ์ ๋๋ค.
- develop - ๋ฐฐํฌ ์ ๋ชจ๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ์์ ์ฌํญ์ ํด๋น ๋ธ๋์น๋ก Merge๋ฉ๋๋ค.
- ์ด์ID - ๋ชจ๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฆฌํฉํ ๋ง, ๋ฒ๊ทธ ํฝ์ค ๋ฑ์ ์ด์ ID๋ก ์์ฑํด์ ํด๋น ๋ธ๋์น์์ ์์ ํฉ๋๋ค.
- ์ฝ๋ฉ ์ปจ๋ฒค์
- ์งํ๋๊ป์ XML ํ์ผ ์ ๋ฌ ์๋ฃ
- ์ง๋ผ / ๋ ํฌ ์์ฑ
- ์ ์ ์คํ ๋ฆฌ ์์ฑ
- ํ์คํฌ ๋ถํ
- ERD : ๋ณ์ฐ๋, ํ์ฑ๋
- UseCase: ์งํ๋, ํ๋น๋
- jira : ๋์ด๋
- Domain
- POST, COMMENT : ๋์ด, ํ์ฑ, ํ๋น
- USER : ๋ณ์ฐ, ์งํ
- ๊ฐ๋ฐํ๊ฒฝ ์ ํ
- BackEnd
- SpringBoot 2.7.0
- Java 17
- Gradle 7.4.2
- Junit5 / Mockito
- MySQL
- FrontEnd
- Thymeleaf
- Collaboration
- Jira
- Notion
- Slack
- Git
- ์ด์๊ด๋ฆฌ
- ์ง๋ผ + ๋ ธ์
- DTO / Validation ๊ท์น ์ ํ๊ธฐ
- API ์ค๊ณ & ์ํ์ค ๋ค์ด์ด๊ทธ๋จ ๊ทธ๋ฆฌ๊ธฐ
- ์์ธ์ฒ๋ฆฌ ํ์ ์ ํ๊ธฐ
์ฑ๊ณต์์
// ๋จ์ผ๊ฑด { "response": { "id": 3000001, "barcode": "49319927-68ed-4bc3-b022-6c099195f48c", "itemId": 10, "qty": 1 }, } // ๋ค์ค๊ฑด { "response": [ { "id": 3000000, "barcode": "12cbf5bf-2c96-4172-acb6-4c24a853d255", "itemId": 6, "qty": 1 }, { "id": 3000001, "barcode": "49319927-68ed-4bc3-b022-6c099195f48c", "itemId": 10, "qty": 1 } // ... ], }
์คํจ์์
{ "code" : V0001 "message" : ๊ฐ๋จ ๋ฉ์์ง }
์ฝ๋ | ๋ด์ฉ |
v0012 | ์์ด๋๊ฐ ์ค๋ฅ |
v1231 | ๋น๋ฐ๋ฒํธ ์ค๋ฅ |
- Swagger vs RestDocs ๋น๊ต ์ ๋ฆฌ