ํ๋ก์ ํธ ์ผ์ : 2022.07.07 ~ 2022.08.16
ํ๋ก ํธ์๋ ๊นํ ๋งํฌ : https://github.com/MeoSeon12/egodaeyeo-frontend
๋ฐฑ์๋ ๊นํ ๋งํฌ : https://github.com/MeoSeon12/egodaeyeo-backend
S.A ๋งํฌ : https://quixotic-wok-871.notion.site/S-A-3183ff7202e942099238af3effd956ea
์ค๊ณ ๋ฌผํ์ ์ฌ๊ณ ํ ์ ์๋ ํ๋ซํผ์ ๋ํ์ ์ผ๋ก ์ค๊ณ ๋๋ผ์ ๋น๊ทผ๋ง์ผ์ด ์๋ ๊ฒ์ฒ๋ผ
์ ๊น ๋์ ํ์ํ ๋ฌผ๊ฑด์ด๋, ๋ด๊ฐ ์ฌ๊ณ ์ถ์๋ ๋ฌผ๊ฑด์ ๋น๋ ค์ ์จ๋ณด๊ธฐ ์ํ
๋์ฌ ์๋น์ค๋ฅผ ๋ํํ๋ ํ๋ซํผ์ด ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์์ ์ถ๋ฐํ์ต๋๋ค.
-
๊น๊ท๋ฏผ @Roshu2
๋ฌผํ ๋ชฉ๋ก ํ์ด์ง / ๋ง์ดํ์ด์ง / ์์ ๋ก๊ทธ์ธ / ๊ฒ์ ๊ธฐ๋ฅ / Contract ๊ธฐ๋ฅ / ์ฑํ ๊ธฐ๋ฅ / ๋ฐฑ์๋ ๋ฐฐํฌ
-
๊น์ฒ ํ @KimmyJay
ํ์๊ฐ์ / ๋ก๊ทธ์ธ / ์์ ๋ก๊ทธ์ธ / ๋ฆฌ๋ทฐ ๋ชจ๋ฌ / ์ฑํ ๋ชจ๋ฌ / ์ฑํ ๊ธฐ๋ฅ / ๋คํฌ๋ชจ๋ / ์ ๊ณ ๊ธฐ๋ฅ / ๋ฐฑ์๋ ๋ฐฐํฌ
-
์ต์ฌ์ @Jaewan-Choi
์ฑํ ๊ธฐ๋ฅ / ์๋ฆผ ๊ธฐ๋ฅ / ๋ฌผํ ์์ธํ์ด์ง / ๋ฌผํ ๋ฑ๋ก, ์์ ํ์ด์ง / ํ๋ก ํธ ๋ฐฐํฌ / ๋คํฌ๋ชจ๋ / ๋ฉ์ธํ์ด์ง ์ฐ์ปด ๋ฐ์ค
-
- ์ผ๋ฐ ํ์๊ฐ์ ์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ ์ ๊ทํํ์ ํํฐ๋ง๋จ
- ๋ค์์ฃผ์ API๋ฅผ ์ฌ์ฉํด ๊ฐํธํ ์ฃผ์ ์ ๋ ฅ
- ์นด์นด์คํก ์์ ํ์๊ฐ์ ์ ์ฃผ์๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ ๋ ฅํ๋๋ก ์ฐํํ ํ PUT์ผ๋ก ์์
- ๋ก๊ทธ์ธ์ JWT ํ ํฐ ๋ฐ๊ธ ํ ํ ํฐ ํ์ด๋ก๋์๋ ์ ์ PK๊ฐ์ด ์ ์ฅ๋จ
-
- ์ฌ์ฉ์ ์ฃผ์์ ์๊ตฐ๊ตฌ๊น์ง๋ง splitํ ํ Q๊ฐ์ฒด๋ฅผ ํ์ฉํด์ ์๊ตฐ๊ตฌ๊ฐ ํฌํจ๋ ๋ฌผํ๋ง __contains filterํ์ฌ ๊ฐ์ ์ง์ญ๋ง ์กฐํ
- ํ๋ผ๋ฏธํฐ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ด์์ request.GET.get์ ํตํด ๊ฐ์ ๋ณ์์ ์ ์ฅํ ํ Q๊ฐ์ฒด๋ฅผ ํ์ฉํด์ filterํ์ฌ ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๊ฒ์๊ธ ์กฐํ
- ๊ฒ์ ์ ๋ ฅ๊ฐ์ ํ๋ผ๋ฏธํฐ์ ๋ด์์ request.GET.get์ผ๋ก ๊ฐ์ ๋ณ์์ ์ ์ฅํ ํ Q๊ฐ์ฒด๋ฅผ ํ์ฉํด์ __icontains filterํ์ฌ ์ ๋ชฉ์ผ๋ก ๊ฒ์
- item์ id๊ฐ์ url์ ํฌํจํด ItemModel์์ ํด๋น id๊ฐ์ผ๋ก objects.get ํ ๋ค serializer์์ ํ์ํ ๋ฐ์ดํฐ ์ง๋ ฌํ ํ ํ returnํ์ฌ ์์ธ ์ ๋ณด ์กฐํ
-
- ์ฌ์ฉ์์ ์ธํ๊ฐ์ ๋ฐ์ ํผ๋ฐ์ดํฐ๋ฅผ POST ์์ฒญ์ ํตํด DB์ ์ ์ฅ
- ํ๋ก ํธ์์๋ ์ธํ์ ํฌ๋งท์ ์ ํ ๋๊ธฐ, null ์ฒดํฌ ๋ฑ์ ์งํ
- ๋ฐฑ์๋์์๋ ๋ฒจ๋ฆฌ๋ฐ์ด์ ์ ํตํด ๋ชจ๋ธ์ ์ ํฉํ ๋ฐ์ดํฐ์ธ์ง ๊ฒ์ฌ
- ์์ ์ ๊ฒ์๊ธ์ ID๊ฐ์ ํ์ฉํ์ฌ GET ์์ฒญ์ผ๋ก DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉ
- ์์ ์ ์ต์ข ์ ์ผ๋ก ์์ ๋ ๋ฐ์ดํฐ๋ฅผ PUT ์์ฒญ์ ํตํด DB์ ๋ฐ์
- ์ญ์ ์ ์์ฑ์ ๋ณธ์ธ ์ฌ๋ถ๋ฅผ ํ ํฐ์ payload์ DB์ ๋ฐ์ดํฐ๋ฅผ ๊ต์ฐจ๊ฒ์ฆ์ ํตํด ์ฒดํฌ ํ ์ญ์
-
- ๋ฌผํ ์์ธํ์ด์ง์์ ๋ถ์ ์ ํ๋ค๊ณ ํ์ ๋๋ ๋ฌผํ ์ ๊ณ ๊ฐ๋ฅ
- ๋๋๋ค์ด ๋ฉ๋ด๋ก ์ ๊ณ ์ฌ์ ์ ํ, ์ถ๊ฐ์ ์ธ ๋ด์ฉ ์์ฑ ๊ฐ๋ฅ
- ์ด๋ฏธ ์ ๊ณ ํ ๋ฌผํ์ ์ค๋ณต์ ๊ณ ๋ถ๊ฐ
-
- ๋ง์ดํ์ด์ง์ ์ฑํ ๋ชจ๋ฌ์์ ๋์ฌ์ข ๋ฃ๋ ๋ฌผํ์ ๋ฆฌ๋ทฐ์ฐ๊ธฐ ๊ฐ๋ฅ.
- ๋์ฌ์๋ ๋ณ์ (1-5)๋ฅผ ์ ํ ํ ์ถ๊ฐ์ ์ธ ๋ฆฌ๋ทฐ ์์ฑ ๊ฐ๋ฅ.
- ๋ณ์ ์ 100์ ์ค์ผ์ผ๋ก ์ ํ๋ ํ ์ ์ ์ ์์ ๋ฐ์๋จ.
- ๋ฆฌ๋ทฐ๋ ๋ฌผํ ์์ธํ์ด์ง์ ์๋์ ์ผ๋ก ๋ฐ์๋จ.
-
- ๊ฐ๋ณ ์ฑํ ๋ฐฉ ์คํ ์ ๊ฐ๋ณ ์ฑํ ๋ฐฉ์ ID๊ฐ์ ํ์ฉํด ์ฑํ ๋ฐฉ ๋ง๋ค ๋ค๋ฅธ ์น์์ผ ์ฃผ์์ ์ฐ๊ฒฐ
- ์ฑํ ์์ฑ ํน์ ๊ฑฐ๋ ์ํ ์ ๋ฐ์ดํธ ์ send()๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋์ ์ ์ก
- Django Channels์ @database_sync_to_async ๋ฐ์ฝ๋ ์ดํฐ์ create() ๋ฉ์๋๋ก ๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅ
- ์ฑํ ๊ทธ๋ฃน์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ sender ๊ฐ์ ์ฒดํฌํ์ฌ ์์ฑ์์ ์์ ์์ ๋ง๊ฒ ๋ ์ด์์์ ๋ณด์ฌ์ค
- ์ฑํ ๋ฐฉ์ ๋ซ๊ฑฐ๋ ๋ค๋ฅธ ์ฑํ ๋ฐฉ ์คํ ์ ๊ธฐ์กด ์ ์ ์ฑํ ์น์์ผ websocket.close() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ์ ๋์
-
- ๋ก๊ทธ์ธ ์ ์ ์ ๊ณ ์ ์ ์น์์ผ ์ฃผ์๋ก ์ฐ๊ฒฐ
- ์ฑํ ์ ๋ณด๋ผ ๋ ์์ ์ ์ ์ ์น์์ผ ์ฃผ์๋ก send()
- Django Channels๋ก wss ํ๋กํ ์ฝ(ASGI)์ ์ฒ๋ฆฌ
- ์ฑํ ๋ฉ์์ง DB ๋ชจ๋ธ์ is_read ํ๋๋ฅผ ์ถ๊ฐํ์ฌ ์ฝ์ ์ฌ๋ถ๋ฅผ ํ๋จ ํ ์๋ฆผ์ ๋ณด๋
- ์์ ์๋ onmessage()๋ฅผ ํตํด ์๋ต ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
- ์ฑํ ์ ์ฝ์ผ๋ฉด is_read ํ๋๋ฅผ True๋ก ์์
-
- ๋ง์ดํ์ด์ง์ ์ข์ธก ํญ๋ณ๋ก html์ id๊ฐ์ ongoing, closed, bookmarks, myitems ๋ก ์ง์ ํ ๋ค tab์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ํ๋ผ๋ฏธํฐ์ id๊ฐ์ GET์์ฒญํ ๋ ๋ด์์ ๋ฐฑ์๋๋ก ๋ณด๋ด๊ณ request.GET.get์ผ๋ก ๋ฐ์ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์ ํตํด ๋น๊ตํด์ ํด๋น ๊ฐ์ ํ์ํ Data๋ฅผ filter ํ returnํ์ฌ ๋์ฌ ๋ด์ญ, ์ฐ ๋ชฉ๋ก, ๋ด๊ฐ ์ฌ๋ฆฐ ๋ฌผํ ์กฐํ
- ํ์ ์ ๋ณด๋ฅผ ํ๊ฐ์ง๋ง ์์ ํด๋ ์์ ํ ์ ์๊ฒ ํ๊ธฐ ์ํด ์กฐ๊ฑด๋ฌธ์ ํ์ฉ, request.data๋ immutableํ QueryDict์ด๊ธฐ ๋๋ฌธ์ request.data๋ฅผ data๋ผ๋ ๋ณ์์ ๋ด๊ณ data = data.copy()๋ก ๋ณต์ฌํ์ฌ ๋ณต์ฌํ ๋ฐ์ดํฐ๋ฅผ data๋ก ๋ฎ์ด์์ด๋ค data.pop(โ์์ ์ํ ํญ๋ชฉโ) ํ์ฌ serializer๋ก data๋ฅผ ๋ณด๋.
- ํ์์ ๋ณด ์ค ๋น๋ฐ๋ฒํธ ์์ ์ django์ ๋ด์ฅํจ์์ธ check_password๋ฅผ ํ์ฉํด์ ํ์ฌ ๋น๋ฐ๋ฒํธ์ ์ ๋ ฅํ ํ์ฌ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง check
-
- ๋ก๊ทธ์ธ ์ ์ ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ๋คํฌ๋ชจ๋ ์ฌ๋ถ๋ฅผ ์ ์ฅ
- ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ๋คํฌ๋ชจ๋ ๊ฐ์ if๋ฌธ์ ๋ถ๊ธฐ์ ์ผ๋ก ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉ
-
- Python 3.9
- Django 4.0
- Django Rest Framework 3.13
- Django Rest Framework simple-jwt 5.2.0
- Django Channels 3.0.5
- Docker 20.10.12
- Nginx 1.22.0
- Gunicorn 20.1.0
- Daphne 3.0.2
-
- Websocket
- HTML5
- Javascript
- JQuery
- CSS
-
- AWS RDS PostgreSQL
- AWS S3
-
- AWS EC2
- AWS Route 53
- Github Actions
- Netlify
- Django / DRF
Serializer, ์ ์ ๊ด๋ฆฌ, REST API ๋ฑ Django์์ ์ ๊ณตํ๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฑ์ฉ
- Django Channels
์ค์๊ฐ ๋น๋๊ธฐ๋ก ๋ค์ด์ค๋ ws/wss ํ๋กํ ์ฝ์ ์ฅ๊ณ ์์ ๋์ํ๊ธฐ ์ํด ์ฌ์ฉ
- Django Rest Framework simple-jwt
์ ์ ์ธ์ฆ์ ํ ํฐ๋ฐฉ์์ผ๋ก ์ํธํํ๊ธฐ ์ํด ์ฌ์ฉ
- Websocket
์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ ๊ตฌํ์ ์์ด ์ฑํ ์ ์น ๋๋ง๋ค ๋งค๋ฒ HTTP ํต์ ์ ํ๋ ๊ฒ์ ๋๋ฆฌ๊ณ ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ์ค์๊ฐ ๋น๋๊ธฐ ํ๋กํ ์ฝ์ ์ ๊ณตํ๋ ์น์์ผ ๊ธฐ์ ์ ์ฌ์ฉ
- Netlify
๊ฐ์ฅ ๊ฐํธํ๊ณ ๋น์ฉ ์ง๋ถ์์ด ์ ์ ์น์ฌ์ดํธ ํธ์คํ ์ด ๊ฐ๋ฅํ๋ฉฐ, ํน๋ณํ ์ค์ ์์ด ๊นํ๊ณผ๋ ๋๊ธฐํ๋๋ฏ๋ก ์ฌ์ฉ
- AWS EC2
์ฉ๋์ ์ค์ด๊ฑฐ๋ ๋๋ฆด ์ ์๋ ํ๋ ฅ์ฑ์ ๊ฐ์ง๊ณ ์๊ณ , ๋ณด์ ๋ฐ ๋คํธ์ํฌ ๊ตฌ์ฑ, ์คํ ๋ฆฌ์ง ๊ด๋ฆฌ์ ํจ๊ณผ์ ์ด๋ฉฐ ๊ฐ๋จํ ํ๋ก์ ํธ ๋ฐฐํฌ๋ฅผ ํ๋ฆฌํฐ์ด๋ก ๋ฌด๋ฃ๋ก ์ด์ฉํ ์ ์๋ค๋ ์ ์์ ์ฑ์ฉ
- AWS S3
์๋น์ค์์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ ํ ๋, EC2์ ์ ์ฅ์ ํ๊ฒ๋๋ฉด ์ฉ๋์ด ๋ถ์กฑํด์ง๊ณ ํ์ผ๋ค์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ ํ์ผ ์ ์ฅ์ ์ต์ ํ ๋์ด์๊ณ , ์ ์ฅ์ฉ๋์ด ๋ฌดํ๋์ ๊ฐ๊น์ด S3๋ฅผ ์ฌ์ฉํด์ ์ด๋ฏธ์ง ํ์ผ๋ค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌ ํ์ต๋๋ค.
- Github actions
ํ๋ก์ ํธ๊ฐ ์ ๋ฐ์ดํธ ๋ ๋๋ง๋ค ์๋์ผ๋ก ๋ฐฐํฌ ์๋ฒ๋ฅผ ์ ๋ฐ์ดํธ ํด์ผํ๋ ๋ถํธํจ์ ๊ฐ์ ํ๊ธฐ ์ํด ๊นํ๊ณผ ์๋์ผ๋ก ๋๊ธฐํ๋ฅผ ์ง์ํ๋ ๊นํ ์ก์ ์ ์ฑ์ฉ
- Docker
Docker๋ ์ํํธ์จ์ด๋ฅผ ์ปจํ ์ด๋๋ผ๋ ํ์คํ๋ ์ ๋์ผ๋ก ํจํค์งํ๋๋ฐ, ์ปจํ ์ด๋์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์์คํ ๋๊ตฌ, ์ฝ๋, ๋ฐํ์ ๋ฑ ์ํํธ์จ์ด๋ฅผ ์คํํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ํน์ง์ ๊ฐ์ง Docker๋ฅผ ํ์ฉํด์ ํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ๋ฐฐํฌ ๋ฐ ํ์ฅํ๊ณ ๊ท๋ชจ๊ฐ ๋ฌ๋ผ์ ธ๋ ์์ ์ ์ผ๋ก ์ ๋ ดํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถ, ์ ๊ณต ๋ฐ ์คํ ํ๊ธฐ์ํด ์ฌ์ฉํ์ต๋๋ค.
- Nginx
event-driven์ ๋น๋๊ธฐ ๊ตฌ์กฐ์ธ ํน์ง์ ๊ฐ์ง๊ณ ์๋ nginx๋ ์ฑํ ๊ธฐ๋ฅ ๋๋ฌธ์ ๋์์ ์์ ์์ ์ฆ๊ฐ์ ๋์ํ๊ธฐ์ ์ ํฉํ ๋ฐฉ์์ ์น์๋ฒ๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋ํ ๋ฌด์ค๋จ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ์ฌ ์ฑํ ๊ธฐ๋ฅ์ด ์๋ ์น์ฌ์ดํธ์์ ๋ฐฐํฌ์ ์ค๋จ๋์ง ์๋์ ์ด ์ฌ์ฉ์๋ค์๊ฒ ์ฌ์ฉ์ฑ ๋ฐ ํธ์์ฑ์ ์ฆ๋์ํต๋๋ค.
- Gunicorn
๋ก์ปฌ๊ฐ๋ฐํ๊ฒฝ์์๋ django์ runserver๋ฅผ ์ฌ์ฉํ์ฌ gunicorn์ด ์์ด๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ ํ ์ ์์ง๋ง, ๋ฐฐํฌํ๊ฒฝ์์๋ runserver๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก django์์๋ ๊ถ์ฅ๋์ด์์ต๋๋ค. ๊ทธ๋์ Python WSGI ๋ํ์ ์ผ๋ก ์ฑ๋ฅ์ด ๊ฒ์ฆ๋ Gunicorn์ ํ์ฉํด์ Nginx๋ก๋ถํฐ ๋ฐ์ ์๋ฒ์ฌ์ด๋ ์์ฒญ์ gunicorn์ ํ์ฉํด์ django๋ก ์ ๋ฌํ๊ฒ๋ ํ์ต๋๋ค.
- Daphne
Gunicorn์ด WSGI HTTP์์ฒญ์ ์ฒ๋ฆฌํ๋ค๋ฉด ์ ํฌ ์๋น์ค์ ์๋ ์ฑํ ๊ธฐ๋ฅ์ ASGI WS ์์ฒญ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. Daphne๋ Channels ๋ฅผ ์ค์นํ๋ฉด ์๋์ผ๋ก ์ค์น๋๋ฉฐ Channels์์ ์ง์ํ๋ ์๋ฒ๋ก ASGI ํ๋กํ ์ฝ๋ก ๋ฐ์ WS์์ฒญ์ ์ฒ๋ฆฌํ๋ ค๊ณ ์ฌ์ฉํ์ต๋๋ค.
- PostgreSQL
PostgreSQL์ MySQL๋ณด๋ค ํ์ค์ ๋ ๊ฐ๊น๊ฒ ๊ตฌํํ๋๊ฒ์ ๋ชฉํ๋ก ๋๊ณ ์๊ณ , ์คํ์์ค ๋ฐ ์ปค๋ฎค๋ํฐ๊ฐ ์ด๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋๋ค. django์์ ๊ฐ์ฅ ๊ถ์ฅํ๋ RDBMS๊ฐ PostgreSQL์ด์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ง์ ์ฌ์ฉํด๋ด์ผ๋ก์จ MySQL๊ณผ๋ ์ด๋ ํ ์ฐจ์ด์ ์ด ์๋์ง ๊ณต๋ถ๋ ํ๊ณ , ๋ค๋ฅธ RDBMS๋ฅผ ์ฌ์ฉํด๋ด์ผ๋ก์จ ๊ฒฝํ์น๋ฅผ ์๊ณ ์ ์ฌ์ฉํ์ต๋๋ค.
- ํผ๋๋ฐฑ ๊ธฐ๊ฐ : 22.08.08 ~ 22.08.12
- ํผ๋๋ฐฑ ์๋ต ์ : 44๊ฐ
- ์์ธ : ๋ฆฌํ๋ ์ ํ ํฐ์ ๊ฐฑ์ ํ๋ ํจ์๊ฐ ํ์ด์ง ๋ก๋ ์์๋ง ์๋ํ๊ณ , ๋น๋๊ธฐ ๊ธฐ๋ฅ์ ์คํ ์์๋ ํด๋น ํจ์๊ฐ ๋์ํ์ง ์์
- ๊ฐ์ : ํ ํฐ ๊ฐฑ์ ํ๋ ํจ์๋ฅผ ๊ธฐ๋ฅ๋ง๋ค ํธ์ถํ๋๋ก ์์
async function onAddressEnter() {
var payload = JSON.parse(localStorage.getItem('payload'))
const token = await refreshToken(payload)
-
์์ธ : ๋ฒํผ ์์ด์ฝ๋ค์ ๊ฐ์์ฑ๊ณผ ๋์ฌ ์ํ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ์ด ์ฑํ ์ฐฝ์๋ง ์กด์ฌํจ์ผ๋ก ์ธํด ์ ๊ทผ์ฑ ๋ถ์กฑ
-
๊ฐ์
- ์นดํ ๊ณ ๋ฆฌ ๋ฒํผ๋ค์ ํธ๋ฒ์ ๋ฑ์ฅํ๋ ๋ชจ๋ฌ์ด ์๋ ํ์ด์ง์์ ๋ฐ๋ก ๋ณด๊ณ ์ ํํ ์ ์๋๋ก ๊ฐ์
- ๋ฌผํ ๋ฑ๋ก ๋ฒํผ์ fixed ๋ ๋ฐ์ค์์๋ ์ถ๊ฐํ์ฌ ํญ์ ๋์ ๋ณด์ด๊ณ ์ ๊ทผํ ์ ์๋๋ก ์ถ๊ฐ
- ๋์ฌ ์ํ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ๋ค์ ๋ง์ดํ์ด์ง์์๋ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ถ๊ฐ
-
์์ธ : ๋ถ์ ์ ํ ๊ฒ์๊ธ์ ์ ๊ณ ํ ์ ์๋ ๊ธฐ๋ฅ ๋ถ์ฌ
-
๊ฐ์
- ์ ๊ณ ๋ด์ฉ์ ์ ์ฅํ๋ DB ๋ชจ๋ธ์ ์ถ๊ฐ
- ์ฌ์ฉ์๊ฐ ํน์ ๊ฒ์๊ธ์ ๋ํด ์ ๊ณ ์ฌ์ ๋ฅผ ์ ํ, ๋ด์ฉ ์์ฑ ํ ์ด์์ง์๊ฒ ์ ๋ฌํ ์ ์๋ ์์คํ ๊ตฌ์ถ
-
- ๋ฐฐํฌ
-
- 401 ์๋ฌ ์์
- ์ฑํ ์๋ฆผ ๋๊ธฐํ
- ์ฌ๊ฑฐ๋ ์ ์๋ฌ ์์
-
- ๋ฌผํ ํ์ด์ง์ ์ฌ์ดํธ ์๊ฐ ํ์ด์ง ๋ณํฉ
- ์นดํ ๊ณ ๋ฆฌ & ์น์ ํํฐ UI ๋ณ๊ฒฝ
- ๋ง์ดํ์ด์ง์ ๋์ฌ ์ํ ์ ๋ฐ์ดํธ ๋ฒํผ ์ถ๊ฐ
-
- ์ ๊ณ ๊ธฐ๋ฅ ์ถ๊ฐ
- ๋คํฌ๋ชจ๋ ์ถ๊ฐ
ํฌ์คํธ๋งจ DOCS ๋ฐ๋ก๊ฐ๊ธฐ
https://www.erdcloud.com/d/zfZo5E3pKdEorSGBX