์ ๊ตญ ์ ๊ธฐ๋๋ฌผ ๋ณดํธ์์ ์ ์์, ํ์์๋ฅผ ์ฐ๊ฒฐํ๋ ํตํฉ ๊ด๋ฆฌ ํ๋ซํผ
Animal-Care-Platform์ ์ ๊ธฐ๋๋ฌผ ๋ณดํธ์, ์
์์, ํ์์ ๋ฑ ๋ค์ํ ์ฌ์ฉ์ ์ฃผ์ฒด๊ฐ ์ฐธ์ฌํ๋
์ ๊ธฐ๋๋ฌผ ํตํฉ ๊ด๋ฆฌ ํ๋ซํผ์
๋๋ค.
์
์ ์ ์ฒญ, ๋ด์ฌ ํ๋, ํ์ ์ฐธ์ฌ ๋ฑ ์ค์ ๋ณดํธ์ ์ด์ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ์์ผ๋ฉฐ,
๋ณดํธ์ ๊ด๋ฆฌ์์ ์ด์์(๊ด๋ฆฌ์ ๊ณ์ )์ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํด ์ค๋ฌด์ ๊ฐ๊น์ด ์ญํ ์ฒด๊ณ๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
ํด๋น ํ๋ก์ ํธ๋ 4์ธ ํ ํ๋ก์ ํธ๋ก ์งํ๋์์ผ๋ฉฐ, ์ ๋ ๋ค์๊ณผ ๊ฐ์ ํต์ฌ ์์ญ์ ๋ด๋นํ์ต๋๋ค.
- [์ฌ์ฉ์] ์ ๊ธฐ๋๋ฌผ ํํฐ ์กฐํ ๋ฐ ์ ์ ์ ์ฒญ ๊ธฐ๋ฅ ๊ตฌํ
- [๋ณดํธ์] ์ ๊ธฐ๋๋ฌผ ๋ฑ๋กยท์์ ยท์ญ์ , ์๋ณ ํต๊ณ API ๋ฐ Chart.js ์๊ฐํ ์ฒ๋ฆฌ
- [๊ด๋ฆฌ์] ๋ณดํธ์ ๊ฐ์ ์น์ธ/๊ฑฐ์ ๋ฐ ๋ฉ์ผ ๋ฐ์ก, ๊ณต์ง์ฌํญ ํธ๋ฆฌํ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ CRUD ๊ตฌํ
- ๊ณตํต ์๋ต ๊ตฌ์กฐ:
OkResponseDTO,ErrorResponseDTO,PageInformationDTO์ง์ ์ค๊ณ ๋ฐ ์ ์ฉ - ํ์ผ ์
๋ก๋ ์ ํธ:
FileManager์ ํธ ์ค๊ณ ๋ฐ ๋ชจ๋ ํ์ผ ๊ธฐ๋ฅ ํตํฉ ์ ์ฉ - MyBatis:
useGeneratedKeysํ์ฉํด ํ์ผ-๋ฐ์ดํฐ ์ฐ๊ฒฐ ์ ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ - RESTful API ๊ตฌ์กฐ ๋ฐ ์๋ต ์ผ๊ดํ ์ค๊ณ
- AWS ๋ฐฐํฌ: EC2 + RDS ์๋ ๋ฐฐํฌ, ๋ณด์ ๊ทธ๋ฃน ์ค์ , WAR ์ด์ ํ๊ฒฝ ๊ตฌ์ฑ
- GitHub ํ์ ์ ๋ต: Git Flow ์ ์ ๋ฐ ๋ธ๋์น/PR ๊ธฐ๋ฐ ํ์ ๊ตฌ์กฐ ์ ๋ฆฝ
RESTful ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์, ๋ณดํธ์, ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ฉฐ,
๐ API ๋ช
์ธ์ ๋ณด๊ธฐ
| ๋ฉ์ธํ์ด์ง | ์ ์ ๋๋ฌผ ์กฐํ |
|---|---|
![]() |
![]() |
| ๋ณดํธ์์ค ์กฐํ | ๋ณดํธ์์ค ํต๊ณ |
|---|---|
![]() |
![]() |
| ๋ถ์ผ | ๊ธฐ์ |
|---|---|
| ์ธ์ด | |
| ๋ฐฑ์๋ | |
| ํ๋ก ํธ์๋ | |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค | |
| ์๋ฒ / ๋ฐฐํฌ | |
| ํ์ ๋๊ตฌ | |
| ๊ธฐํ ๋๊ตฌ |
Spring Boot๊ฐ ์๋ Spring Framework ๊ธฐ๋ฐ์ ๋ ๊ฑฐ์ ํ๊ฒฝ์ ์ง์ ๊ตฌ์ฑํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋ ์์ํฌ์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊น์ด ์ดํดํ๊ณ ์ ํจ
- DI, ํธ๋์ญ์ , ViewResolver ๋ฑ ํต์ฌ ์ค์ ์ ์ง์ ๊ฒฝํ
- ์ผ๋ถ ๊ธฐ์ ์ ๋ ๊ฑฐ์ ์์คํ ์ด์ ํ๊ฒฝ์ ๋ํ ์ค๋ฌด ๋์๋ ฅ ํ๋ณด
- Boot ๊ธฐ๋ฐ ํ๋ก์ ํธ์์๋ ๋ฌธ์ ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๊ธฐ๋ฐ ๋ง๋ จ
Animal-Care-Platform์ ์
์, ๋ด์ฌ, ํ์, ๊ฒ์ํ ๋ฑ ๋ค์ํ ์ฃผ์ฒด์ ๊ธฐ๋ฅ ํ๋ฆ์ ๊ณ ๋ คํ์ฌ
์ด 28๊ฐ ํ
์ด๋ธ์ ํ์๋ค๊ณผ ์ค๊ณํ๊ณ ์ ๊ทํํ์ต๋๋ค.
- ๊ฐ๋
๋ชจ๋ธ:
Peter Chen ๋ชจ๋ธ์ ํ์ฉํด ์ด๊ธฐ ์ํฐํฐ ๊ฐ ๊ด๊ณ ์ ์ - ๋
ผ๋ฆฌ/๋ฌผ๋ฆฌ ๋ชจ๋ธ:
IE ๋ฐฉ์์ผ๋ก ์ ๊ทํ, ํค ์ค์ , ์ ์ฝ ์กฐ๊ฑด ๋ฐ์ - ๊ธฐ๋ฅ ์ค์ฌ ๋ฐ์ดํฐ ํ๋ฆ ๋ฐ์
โ ํ์-์ ์, ๋ณดํธ์-์ ๊ธฐ๋๋ฌผ, ํ์-๋๊ธ ๋ฑ ์ค์ฌ์ฉ ํ๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ
- ํ ์ด๋ธ์ ๊ธฐ๋ฅ ๋จ์๋ก ๋ช ํํ ๋ถ๋ฆฌํ์ฌ ์ฑ ์์ ๋ถ์ฐ
- ๋ชจ๋ ์ฐ๊ด ๊ด๊ณ๋ ์ธ๋ํค๋ก ์ฐ๊ฒฐ โ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
- ๋ถํ์ํ ์ค๋ณต ์ ๊ฑฐ ๋ฐ ์ ๊ทํ๋ก ์ ์ง๋ณด์์ฑ ํฅ์
๐ ERD ๋ค์ด์ด๊ทธ๋จ ๋ณด๊ธฐ
Animal-Care-Platform์ ๊ธฐ๋ฅ๋ณ ๋ณต์ก๋๊ฐ ๋์ ๊ตฌ์กฐ ์์์๋
์ผ๊ด๋ ์๋ต ํฌ๋งท๊ณผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ผ ์ฒ๋ฆฌ ๋ก์ง์ ๊ตฌํํ๊ธฐ ์ํด
๊ณตํต ์ ํธ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ์ ์ฉํ์ต๋๋ค.
-
๋ชจ๋ API ์๋ต์ ์ผ๊ด๋ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ค์ DTO๋ฅผ ์ง์ ์ค๊ณ ๋ฐ ์ ์ฉํจ:
OkResponseDTO: ๋จ์ผ ๋ฐ์ดํฐ ์๋ต (code,message,data)OkPageResponseDTO: ๋ชฉ๋ก + ํ์ด์ง ์๋ต (code,data,PageInformationDTO)ErrorResponseDTO: ์์ธ ์๋ต (code,message)
-
ํ๋ก ํธ์์๋
code์message๋ง์ผ๋ก๋ ์ฑ๊ณต/์คํจ ํ๋จ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋จ -
ํ์ด์ง๋ค์ด์ ์ ๋ณด๋ ํฌํจ๋์ด ๋ณ๋ API ํธ์ถ ์์ด UI ๊ตฌํ ๊ฐ๋ฅ
- ๋ชจ๋ ์์ธ๋ ์ ์ญ์ ์ผ๋ก
ErrorResponseDTOํํ๋ก ๋ํ๋์ด ์๋ต๋จ - ํ๋ก ํธ์๋๋ ์ฑ๊ณต/์คํจ ์ฌ๋ถ๋ฅผ
code๊ฐ์ผ๋ก ์ผ๊ด๋๊ฒ ๋ถ๊ธฐ ๊ฐ๋ฅ - ์ปจํธ๋กค๋ฌ/์๋น์ค/DAO ์ ๊ตฌ๊ฐ์์ ๋ฐ์ ๊ฐ๋ฅํ ์ค๋ฅ์ ๋ํด ๊ณตํต ๋ฉ์์ง ์ ์
- ํ์ผ ์ ๋ก๋ ๋ฐ ์ญ์ ๋ก์ง์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํธ ํด๋์ค๋ก ์ค๊ณ
multipart/form-data๊ธฐ๋ฐ ์ ๋ก๋ ์:- ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์๋ ์์ฑ
- ์ ์ฅ ํ ์ ์ฅ ๊ฒฝ๋ก๋ฅผ ๋ฐํํ์ฌ DB ์ ์ฅ ๋๋ ํ๋ก ํธ ๋ ๋๋ง ๊ฐ๋ฅ
- ์ญ์ ์ ํ์ผ ์กด์ฌ ์ฌ๋ถ ๊ฒ์ฆ ํ ์์ธ ์ฒ๋ฆฌ ํฌํจ
- ๋ชจ๋ ๋๋ฉ์ธ์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ โ ์ฝ๋ ์ค๋ณต ์ ๊ฑฐ + ์ ์ง๋ณด์ ์ฉ์ด
์ด ๊ตฌ์กฐ๋ฅผ ํตํด API ์๋ต ์ฒ๋ฆฌ, ํ์ผ I/O, ์์ธ ๋์ ๋ฑ์์
์ค๋ณต ์์ด ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์คํ
๊ธฐ๋ฐ์ ํ๋ณดํ์ต๋๋ค.
Animal-Care-Platform์ ์ฌ์ฉ์, ๋ณดํธ์์ค, ๊ด๋ฆฌ์ 3๊ฐ์ง ์ญํ ๊ธฐ๋ฐ ํ์ด์ง๋ก ๊ตฌ์ฑ๋๋ฉฐ,
๋ค์ ์์ญ์ ํต์ฌ ๊ธฐ๋ฅ๋ค์ ์ค๊ณ ๋ฐ ๊ตฌํํ์ต๋๋ค.
- ํ์ข , ์ง์ญ, ์ฑ๋ณ, ์ ์ ์ํ ๋ฑ ๋ค์ค ์กฐ๊ฑด ํํฐ๋ง ๊ฒ์ API
- ํ์ด์ง๋ค์ด์ ํฌํจ ์๋ต โ ํ๋ก ํธ ๋จ ๋ ๋๋ง ์ต์ ํ
- ์์ธ ์กฐํ ์ ๋ณดํธ์ ์ ๋ณด ๋์ ๋ฐํ
- ์ ์ ์ ์ฒญ ์ ๋ก๊ทธ์ธ ์ฌ๋ถ ๋ฐ ๊ด๋ จ ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฆ
- ๋ณดํธ์๋ช / ์ง์ญ๋ช ๊ธฐ์ค ํํฐ๋ง ๋ฐ ํ์ด์ง ์ฒ๋ฆฌ
- ์์ธ ์๋ต ์ ํ๊ธฐ, ๋ด์ฌ ์๋ด ๋ฑ ์ฝํ ์ธ ํฌํจ
- ๋ณดํธ์ ID์ ์ฐ๊ด ์ฝํ ์ธ ๊ฐ ์์ ๊ด๊ณ ๊ฒ์ฆ
- ๋ณดํธ์ ๊ณ์ ์ ์ฉ REST API ๊ตฌ์ฑ
multipart/form-data๋ฐฉ์ ํ์ผ ์ ๋ก๋ ์ฒ๋ฆฌ- ์ ์ฅ ๊ฒฝ๋ก ์์ฑ ๋ฐ ๋ฐํ, ์ญ์ ์ฒ๋ฆฌ ๊ณตํตํ
- ์ฒ๋ฆฌ ์ํ ๋ฐ ๊ถํ ์ ํจ์ฑ ๊ฒ์ฌ ๊ตฌ์กฐ ์ค๊ณ
- ์ต๊ทผ 6๊ฐ์ ๊ธฐ์ค ์ ์/๋ด์ฌ/๊ฒ์๊ธ ์๋ณ ์ง๊ณ API
- ๋๋ฝ๋ ์ ๋ณด์ ์ ์ํ ๋ฐ์ดํฐ ๊ธฐ๋ณธ๊ฐ ํฌํจ
- Chart.js ์ ์ฉ์ ์ํ ์๋ต ํฌ๋งท ๊ณ ์ ํ
- ๊ฐ์ ์์ฒญ ๋ชฉ๋ก ํ์ด์ง ์กฐํ
- ์ํ ๊ธฐ๋ฐ ์น์ธ/๊ฑฐ์ ์ฒ๋ฆฌ ๋ฐ ๋ฉ์ผ ๋ฐ์ก
- ๊ฑฐ์ ์ฌ์ ์ ๋ ฅ โ ์ฌ์ฉ์ ์๋ฆผ ๋ฉ์ผ ์๋ ์ ์ก
ref,lev,turn๊ธฐ๋ฐ ํธ๋ฆฌํ ๊ฒ์ํ ๊ตฌ์กฐ- ๋ฑ๋ก/์์ /์ญ์ API ๊ตฌํ
- ๊ตฌ์กฐ์ ํ์ฅ์ฑ ๊ณ ๋ คํ ์ค๊ณ (์์ ๊ฒ์ํ, ๋ต๊ธ ๊ตฌ์กฐ ์ง์ ๊ฐ๋ฅ)
- ์๋ต ๊ตฌ์กฐ ํ์คํ DTO (
OkResponseDTO,ErrorResponseDTO,OkPageResponseDTO) ์ค๊ณ ๋ฐ ์ ์ฉ - ํ์ผ ์
๋ก๋ ๋ฐ ์ญ์ ๋ ๊ณตํต ์ ํธ
FileManager๋ก ํตํฉ ์ฒ๋ฆฌ - ๋ชจ๋ ๊ธฐ๋ฅ API๋ RESTful ๊ตฌ์กฐ ์ค์
Animal-Care-Platform ๊ตฌํ ์ค ์ค๋ฌด์์ ๋ง์ฃผ์น ์ ์๋
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ, ๋์์ฑ, ์์ธ ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ๋ฌธ์ ๋ค์ ๊ฒฝํํ๊ณ ํด๊ฒฐํ์ต๋๋ค.
- ์ด๊ธฐ์๋
MAX(IDX)๋ฐฉ์์ผ๋ก ์ ๊ธฐ๋๋ฌผ ๋ฑ๋ก ํ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํ์ผ๋, - โ ๋์์ ๋ฑ๋ก ์์ฒญ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋๋ฌผ์ ํ์ผ๊ณผ ์ฐ๊ฒฐ๋๋ ๋ฌธ์ ๋ฐ์
- โ
ํด๊ฒฐ:
useGeneratedKeys๋ฅผ ํตํด DB๊ฐ ์์ฑํ IDX๋ฅผ ์ฆ์ ๋ฐ์์ ์ ํํ ํ์ผ ๊ฒฝ๋ก ์ค์
- ๊ด๋ฆฌ์๊ฐ ์ด๋ฏธ ์น์ธํ ๋ณดํธ์ ๊ณ์ ์ด ๋ค์ ์น์ธ๋๋ ๋ฌธ์ ๋ฐ์
- โ
ํด๊ฒฐ:
checkJoinStatus()๋ฉ์๋๋ฅผ ํตํด ํ์ฌ ์ํ๋ฅผ ์ ๊ฒ์ฆํ๊ณ
์น์ธ ๊ฐ๋ฅํ ์ํ์์๋ง ์ฒ๋ฆฌ๊ฐ ๋๋๋ก ๋ก์ง ๋ณด์
- ๊ณต์ง์ฌํญ ๋ฑ๋ก ์
MAX(ref)๋ฅผ ์กฐํ ํ INSERTํ๋ ๊ตฌ์กฐ - โ ๋์ ์์ฒญ ์ ๋์ผํ ref ๊ฐ์ด ๋ฐ์๏ฟฝ๏ฟฝ ๊ฒ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ ๊นจ์ง
- โ
ํด๊ฒฐ:
INSERT ... SELECTํธ๋์ญ์ ์ฒ๋ฆฌ๋ก
ref ๊ฐ ์์ฑ๊ณผ INSERT๋ฅผ ์์์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ถฉ๋ ๋ฐฉ์ง
- ์๋ณ ํต๊ณ API์์ ๊ฐ์ด ์๋ ์์ ์๋ต ์์ฒด์์ ๋น ์ง๋ ๋ฌธ์ ๋ฐ์
- โ
ํด๊ฒฐ: ๋๋ฝ๋ ์์ ์๋ฒ์์ ์ง์ ํ์ธ ํ ๊ธฐ๋ณธ๊ฐ 0์ ์ฑ์
์๋ต์ ํฌํจ โ Chart.js์์ ์์ ์ ์ผ๋ก ์๊ฐํ ๊ฐ๋ฅ
- ํ๊ธฐ๋ ๋ด์ฌ ์๋ด ์์ฒญ ์ ๋ณดํธ์ ID๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ์๋ ์๋ต ์๋๋จ
- โ
ํด๊ฒฐ: ๋ณดํธ์์ ์ฐ๊ด ์ฝํ
์ธ ๊ฐ ์์ ๊ด๊ณ๋ฅผ ์๋ฒ์์ ๊ฒ์ฆ
โ ๋ฌดํจ ์์ฒญ์ErrorResponseDTO๋ฅผ ํตํด ์ผ๊ด๋ ์์ธ ์ฒ๋ฆฌ
- ๋ก๊ทธ์ธํ์ง ์์ ์ฌ์ฉ์๊ฐ ์ ์ฒญํ๊ฑฐ๋, ์กด์ฌํ์ง ์๋ ๋๋ฌผ ID ์ ๋ ฅ ์ ์๋ฒ ์ค๋ฅ ๋ฐ์
- โ
ํด๊ฒฐ: ์๋ฒ ๋จ์์ ๋ก๊ทธ์ธ ์ฌ๋ถ, ๋๋ฌผ ID, ๋ณดํธ์ ID๊น์ง ๋ชจ๋ ์ฌ์ ๊ฒ์ฆ
โ 500 ์ค๋ฅ ๋ฐ์ ๋ฐฉ์ง ๋ฐ ์ฌ์ฉ์ ํผ๋๋ฐฑ ๋ช ํํ
์ด๋ฒ ํ๋ก์ ํธ๋ ์ค์ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ ์์ค์ ์์ฑ๋๋ฅผ ๋ชฉํ๋ก
AWS EC2 + RDS ํ๊ฒฝ์ ์ง์ ๋ฐฐํฌ ๋ฐ ์ด์์ ๊ตฌ์ฑํ๋ฉฐ ์ค์ ์ธํ๋ผ ๊ฒฝํ์ ์์์ต๋๋ค.
- EC2 ์ธ์คํด์ค ์์ฑ ํ, Apache Tomcat 9.0 ์๋ ์ค์น
- WAR ํ์ผ์
/webapps์ ์ง์ ๋ฐฐํฌํ์ฌ ์๋ ์ด์ ๊ตฌ์กฐ ๊ตฌ์ฑ - ๋ณด์ ๊ทธ๋ฃน ์ค์ :
22,80,9090ํฌํธ ๊ฐ๋ฐฉ
- ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ์ผ๋ก Java 11, Maven ํ๊ฒฝ ์ค์น
- Tomcat ํ๊ฒฝ ๋ณ์ ์ค์ (
JAVA_HOME,CATALINA_HOME)
- RDS์์ MySQL ์ธ์คํด์ค ์์ฑ, ํ๋ผ๋ฏธํฐ ๋ฐ ๋ณด์ ๊ทธ๋ฃน ์ค์
- ์๋ฒ ๊ณผ๋ถํ ์๋ฐฉ์ ์ํ ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง (
htop,top,df -h๋ฑ) - ํ๋ฆฌํฐ์ด EC2์ ๋ฉ๋ชจ๋ฆฌ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด 1GB Swap Memory ์๋ ์ค์
- ๋ฐฐํฌ ํ๊ฒฝ์ ๋ฐ๋ผ
localhost๊ธฐ๋ฐ API URL์ ์ค์ EC2 Public IP๋ก ๋ณ๊ฒฝ mapKey.propertiesํ์ผ์ ํตํ Kakao ์ง๋ API Key ์ค์ ๋ถ๋ฆฌ
- ์ค์ ๋ฐฐํฌ ํ๊ฒฝ์์ ์ฌ์ฉ์ ์๋น์ค ๊ฐ๋ฅํ ์์ค์ผ๋ก ํ๋ก์ ํธ ์์ฑ
- ๋ณดํธ์/์ ๊ธฐ๋๋ฌผ/์ ์/ํ์ ๋ฑ ์ค์ ํ๋ฆ์ ๋ง์ถ ๊ธฐ๋ฅ ๊ตฌํ
- ํ๋ฆฌํฐ์ด EC2 ํ๊ฒฝ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ค์ ๋ฉ๋ชจ๋ฆฌ, ๋ฆฌ์์ค ๋ถ๋ฆฌ ๋ฑ์ผ๋ก ์ง์ ํด๊ฒฐ
- ์ฌ์ฉ์/๋ณดํธ์/๊ด๋ฆฌ์ ๊ฐ ๊ถํ ๊ตฌ์กฐ๋ฅผ ์ง์ ์ค๊ณํ๊ณ ์ ์์ ์ผ๋ก ๋ถ๊ธฐ ์ฒ๋ฆฌ
- ERD/Figma ๊ธฐ๋ฐ์ ํ์ ๊ตฌ์กฐ ์๋ฆฝ, ํ์ ๊ฐ ๊ธฐ๋ฅ ํ๋ฆ ๊ณตํต ์ดํด ๊ณต์
- Git Flow ๋์ ๋ฐ PR ๋ณํฉ ์ ๋ต ๊ฐ์ด๋ โ ํ์ ๊ฐ ํ์ ํ์ง ํฅ์
- RESTful API URI/์๋ต ๊ตฌ์กฐ ์ผ๊ดํ ๋ฐ DTO ๊ธฐ๋ฐ ์ค๊ณ ๊ฒฝํ
- ์๋ฌ ์๋ต ํฌ๋งท ํต์ผ (
status,messageํฌํจ) - ๊ถํ ๋ถ๊ธฐ, ์ ๋ ฅ ๊ฒ์ฆ, ์์ธ ๋์์ Controller ๋จ์์ ๊ตฌ์กฐํ
- ์๋ฌ ์๋ต ํฌ๋งท ํต์ผ (
- JSP/Servlet + MyBatis ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ค์ ์์ค๊น์ง ๊ตฌ์ฑํ๋ฉฐ ๋ฐฑ์๋ ๊ธฐ๋ฐ ๋ค์ง
- ํ์ผ ์ ๋ก๋, ์ด๋ฏธ์ง ๊ฒฝ๋ก ์ฒ๋ฆฌ, ๋ค์ค ํ ์ด๋ธ ์กฐํ ๋ฑ ์ค์ ์น ๊ธฐ๋ฅ ํ๋ฆ์ ๋ํ ๊น์ด ์๋ ์ดํด
- DB ์ค์ฌ์ ๋น์ฆ๋์ค ๋ก์ง ์ค๊ณ ๋ฅ๋ ฅ ๊ฐํ (JOIN/์กฐ๊ฑด ๋ถ๊ธฐ/์์ธ ๋์ ๋ฑ)
- RESTful ๊ฐ๋ฐ ๋ฐฉ์ ์ ์ฉ
โ URL ๋ช ์ธ ์ค๊ณ, ์๋ต ํฌ๋งท ์ผ๊ดํ, ์์ธ ์ฒ๋ฆฌ ํตํฉ ๋ฑ์ ์ง์ ๊ตฌ์กฐํ - ํ๋ฆฌํฐ์ด ์๋ฒ ๊ตฌ์ฑ, ๋ก๊ทธ ๋ถ์, ์ธํ๋ผ ์ด์ฉ ๋ฑ ์ด์๋จ ๋ ๋ฒจ๊น์ง ๊ฒฝํ
- ํ์ ๊ธฐ์ ์ญ๋๊ณผ ์ผ์ ํ์ค์ฑ์ ํจ๊ป ๊ณ ๋ คํ์ฌ ๊ตฌ์กฐ์ ๋ฐฉํฅ ์ ์
- ๊ธฐ๋ฅ ์ค๊ณ ์๋ง๋ค ํ๋ฉด ํ๋ฆ, ERD, ๊ถํ ๊ตฌ์กฐ๋ฅผ ๋จผ์ ์๊ฐํํ๋ฉฐ ์ํต
- ํผ์ ๊ตฌํํ๋ ๊ฒ์ ๋์ด์ ๊ฐ์ด ์์ฑํด๊ฐ๋ ํ์ ํ๋ฆ์ ์ค์์ฑ ์ฒด๊ฐ
๋จ์ํ ๊ตฌํ๋ง ํ๋ ํ๋ก์ ํธ๊ฐ ์๋๋ผ,
"๊ธฐํ โ ์ค๊ณ โ ๊ตฌํ โ ์ด์" ์ ์ฒด ์ฌ์ดํด์ ์ค์ ์ฒ๋ผ ๊ฒช์ ๊ฒฝํ์ด์์ต๋๋ค.




