[ํ๋ก์ ํธ] ๋ฐฑ์๋ ๊ฐ๋ฐ์ - ๊ธฐ๋ฅ ๊ฐ๋ฐ ํ๋ก์ธ์ค
๋ฐฑ์๋ ์ง๋ฌด ์ค๋ฌด์์ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ ์ ํ๋ฉด, ์๊ตฌ์ฌํญ ์ ๋ฆฌ๋ถํฐ ๊ตฌํ๊น์ง ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋์ง์ ๊ณผ์ ์ ์ ๋ฆฌํด๋ณธ๋ค.
์ ๊ธฐ๋ฅ ์ถ๊ฐ ํ๋ก์ธ์ค
- ์๊ตฌ์ฌํญ ์์ง ๋ฐ ๋ถ์
- ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
- ํ๋ก ํธ ๊ฐ๋ฐ์์ API ํ์ ๋ฐ ๋ฌธ์ ์ ๋ฆฌ
- DB, ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ
1. ์๊ตฌ์ฌํญ ์์ง ๋ฐ ๋ถ์
1-1. ์๊ตฌ์ฌํญ ์์ง
์ฌ์ฉ์๋ค์ ์๊ตฌ์ฌํญ์ ์์งํ๊ณ , ํ์ค์ธ๊ณ์ ๋์์ ๋ถ์ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ์ ๋ฒ์๋ฅผ ์ค์ ํ๋ค.
- ์ฌ์ฉ์ ์๋ณ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฉ๋ ์๋ณ
- ์ฌ์ฉ์ ์๊ตฌ์ฌํญ ์์ง ๋ฐ ๋ช ์ธ
์๊ตฌ์ฌํญ ์์ง ๋ฐฉ๋ฒ
- ์ค์ ๋ฌธ์ ์์ง ๋ฐ ๋ถ์
- ๋ด๋น์์์ ์ธํฐ๋ทฐ
- ์ค๋ฌธ์กฐ์ฌ
- ๋น์ทํ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์
- ๊ธฐํ ๋ฐฉ๋ฒ : ๊ฐ ์ ๋ฌด์ ์ฐ๊ด๋ ๋ชจ๋ ๋ถ๋ถ ์ดํด๋ณด๊ธฐ
1-2. ๊ธฐ๋ฅ ๋ฆฌ์คํธ ์์ฑ
์์งํ ์๊ตฌ์ฌํญ์ ์ ๋ฆฌํ์ฌ ๊ธฐ๋ฅ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
๋๋ถ๋ฅ | ๊ธฐ๋ฅ ๋ชฉ๋ก | ์ค๋ช |
ํ์ ๊ฐ์ | ์ด์ฉ ์ฝ๊ด | ์ด์ฉ ์ฝ๊ด ์ ๋ณด ๋ ธ์ถ |
ํ์ ๊ฐ์ | ID, PW, ์ด๋ฆ, e-mail, ์ ํ๋ฒํธ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ | |
๋ก๊ทธ์ธ | ๋ก๊ทธ์ธ | ID, PW ์ธ์ฆ์ ํตํ ๋ก๊ทธ์ธ |
ID ์ฐพ๊ธฐ | ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ or ์ ํ๋ฒํธ๋ก ID ์ฐพ๊ธฐ | |
๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ | ID๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ ํ๋ฒํธ, ๋๋ ๋ฉ์ผ๋ก ์ฐพ๊ธฐ |
2. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
๊ธฐ๋ฅ ๋ฆฌ์คํธ๊ฐ ์์ฑ๋๋ฉด, ๊ฐ ๊ธฐ๋ฅ์ ๋ํด ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ๋ฆฌํ๋ค.
2-1. ERD ๋ชจ๋ธ ์์ฑ
= E-R ๋ค์ด์ด๊ทธ๋จ, ERD(Entity Relationship Diagram)
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ ๋ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๋ผ๋ ์ญํ ์ ํ๋ฉฐ, ๋ฆด๋ ์ด์ ๊ฐ์ ๊ด๊ณ๋ค์ ์ ์ํ ๊ฒ
- ์์ ์ ๋ฆฌํ ์๊ตฌ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๋ ๋ชจ๋ธ์ด๊ณ , ์ด ERD๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ค.
- DB ๊ตฌ์ถ ํ์๋ ๋๋ฒ๊น , ํ๋ก์ธ์ค ์ฌ์ค๊ณ ๋ฑ์ ๊ฒฝ์ฐ ์ค๊ณ๋ ์ญํ ์ ๋ด๋นํ๊ธฐ๋ ํจ
- ๊ด๊ณํ ๊ตฌ์กฐ๋ก ํํํ ์ ์๋ ๋ฐ์ดํฐ ๊ตฌ์ฑ์๋ ํจ๊ณผ์ ์ด์ง๋ง, ๋น์ ํ ๋ฐ์ดํฐ๋ ์ถฉ๋ถํ ํํํ ์ ์๋ค๋ ๋จ์
* ๋น์ ํ ๋ฐ์ดํฐ : ๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ. ๋ฏธ๋ฆฌ ์ ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ์๊ฑฐ๋, ๋ฏธ๋ฆฌ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ ๋ฆฌ๋์ง ์๋ ์ ๋ณด
2-2. ERD ์์ฑ ๊ท์น
- ๋ถ๋ชจ-์์ ๊ด๊ณ : A ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ B ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์์ → Aํ ์ด๋ธ์ด ๋ถ๋ชจ, B ํ ์ด๋ธ์ด ์์ ํ ์ด๋ธ
- ์ค์ : ๋ถ๋ชจ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์์ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด๋ฅผ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ์ ์ : ๋ถ๋ชจ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์์ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์์ง๋ง ์ด๋ฅผ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
- <์๊ฐ๋ด์ญ> ํ ์ด๋ธ์ด <ํ์> ํ ์ด๋ธ ๊ธฐ๋ณธํค๋ฅผ ์ธ๋ํค๋ก ๊ฐ์ง๊ณ ์์ ⇒ <์๊ฐ๋ด์ญ> = ์์, <ํ์> = ๋ถ๋ชจ
- <ํ์>ํ ์ด๋ธ์ชฝ : 1์ ๋ปํจ. ํ๋์ ํ์
- <์๊ฐ๋ด์ญ> ํ ์ด๋ธ์ชฝ : 0~N์ ๋ปํจ. '0~N๊ฐ์ ์๊ฐ๋ด์ญ'
- ์ค์ : <์๊ฐ๋ด์ญ> ํ ์ด๋ธ์์ <ํ์> ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์์ ๋ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉํ๊ณ ์์
- ๋ถ๋ชจ ํ ์ด๋ธ : <๋ถ์>, ์์ ํ ์ด๋ธ : <์ฌ์>
- โ์ ์ : ์์ ํ ์ด๋ธ์ด ๋ถ๋ชจ ํ ์ด๋ธ์ PK๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ์ด๋ฅผ PK๋ก ์ฌ์ฉํ์ง๋ ์๋๋ค.
- ๊ด๊ณ : โํ๋์ ๋ถ์๋ 0~N ๋ช ์ ์ฌ์์ ๊ฐ์ง ์ ์๋ค.
- โ์ฌ์ ํ ์ด๋ธ์ ๋ถ์ ํ ์ด๋ธ์ PK์ธ ๋ถ์๋ฒํธ๋ฅผ FK๋ก ๊ฐ์ง๋ค.
2-3. ๋ํ์ ์ธ ERD Tool
- draw.io
- Gliffy
3. ํ๋ก ํธ ๊ฐ๋ฐ์์ API ํ์ ๋ฐ ๋ฌธ์ ์ ๋ฆฌ
๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก์, ํ๋ก ํธ์์ ์ด๋ค parameter ์์ฒญ/์ด๋ค URI ์์ฒญ์ด ๋ค์ด์์ ๋ ๋ด๊ฐ ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ค ๊ฒ์ธ์ง์ ๋ํด ํ๋ก ํธ ๊ฐ๋ฐ์์ ์์ธํ ํ์๋ฅผ ํ๋ค. ์ด๋ฅผ ํตํด ์์ธ ์ผ์ด์ค๋ค๊ณผ ์์ ์๋ต๊น์ง ๊ฐ๋ตํ ์ ๋ฆฌํ API ๋ฌธ์๋ฅผ ์์ฑํ๋ค.
ํ์์ ์ผ๋ก ๋ค์ด๊ฐ์ผ ํ๋ ํญ๋ชฉ์ Request Field, Field Type, Field Description ๋ฑ์ด ์๋ค.
์ ํต์ ์ธ ๋ฐฉ์์ excel ๋ฑ์ ์ฌ์ฉํ์ฌ API ๋ฌธ์๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ง๋ง, ์ต๊ทผ์๋ POSTMAN, Swagger ๋ฑ์ ๋ณ๋ ํด์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
* Swagger
API๋ฅผ ์ค๊ณํ๊ณ ๋ฌธ์ํ ๋ฐ ํ ์คํ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ํ๋ ์์ํฌ
- ๋ฌด๋ฃ ๋ฒ์ / ์์ฉ ๋ฒ์ ์ด ์กด์ฌํ๋ค.
- ๊ธฐ๋ฅ
- API ๋์์ธ(์ค๊ณ)
- API ๋น๋
- API ๋ฌธ์ํ
- API ํ ์คํธ
- API ํ์คํ
- ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์๋ ํด
- Swagger Codegen : ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ค๊ณ๋ API ์ฝ๋๋ฅผ ์์ฑํ๋ ํด
- Swagger Editor : API๋ฅผ ์ค๊ณ ๋ฐ ๋ฌธ์ํํ๋ ํด
- Swagger UI : ์ค๊ณ๋ API๋ฅผ HTML ํ์ด์ง๋ก ํ์ธํ ์ ์๋ ํด
4. DB, ๋ฐฑ์๋ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ
๊ฐ๋ฐ๊ณผ ๋์์ ํ ์คํธ๋ฅผ ์คํํ๊ฒ ๋๋ค.
- ๋จ์ ๊ธฐ๋ฅ ํ ์คํธ (๊ฐ๋ฐํ API ํ ์คํธ) : ๊ฐ๋ฐํ ๊ธฐ๋ฅ ํ๋ํ๋์ ๋ํ ํ ์คํธ
- ์ฐ๊ด ๊ธฐ๋ฅ ํ ์คํธ (์ ๊ท ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ) : ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๊ฐ๋ฐ → ์ ๊ท ํ์ / ํํดํ ํ์์ ๋ก๊ทธ์ธ ๊ฐ๋ฅ ์ฌ๋ถ ๋ฑ
- ํตํฉ ํ ์คํธ : ์์๋๋ ํ์์ ์๋๋ฆฌ์ค๋ฅผ ๊ฐ์ง๊ณ ์ผ๋ จ์ ํ๋ก์ธ์ค๋ฅผ ํ ๋ฌถ์์ผ๋ก ํตํฉ ํ ์คํธ → ๋ฌธ์ ๋ฅผ ๊ฐ๋ฐ์์๊ฒ ์ ๋ฌ
์ด๋ ๊ฒ ํ ์คํธ๊ฐ ์ธ๋ถํ๋ ๊ฒ๋ง ๋ณด์๋ ์ ์ ์๋ฏ์ด, ์ค์ ๊ฐ๋ฐ์์๋ ํ ์คํธ๊ฐ ๋งค์ฐ ์ค์ํ๋ค. ์ค์ ๋ก ํ ์คํธ ๊ด๋ จ QA ์ง๋ฌด๋ ๋ง์ด ์๊ฒจ๋๊ณ ์๋ค.
์ฐธ๊ณ ์๋ฃ
'Projects > Web Projects' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Project] ์น ๊ฐ๋ฐ์์์ ์ธ์ฆ ๊ตฌํ ๋ฐฉ๋ฒ - ์ธ์ /์ฟ ํค ๋ฐฉ์, JWT ๋ฐฉ์ (0) | 2022.08.03 |
---|---|
[๋ฏธ๋ ํ๋ก์ ํธ] ๋์ MBTI๋? ๊ฐ์ (0) | 2022.08.01 |
[ํ๋ก์ ํธ] ํฌ์คํธ๋งจ(Postman)์ผ๋ก REST API ์ค๊ณํ๊ธฐ (0) | 2022.07.16 |
[ํ๋ก์ ํธ] API ๋ช ์ธ ์์ฑํ๊ธฐ - 1 (0) | 2022.07.14 |
[ํ๋ก์ ํธ] ์ผ์ ๊ด๋ฆฌ ์น์ฌ์ดํธ ๊ฐ์ (0) | 2022.05.31 |