์ํ ์ฐ๋ ๊ธฐ ์ข ๋ฅ AI ๋ถ์ ๋ฐ ๋ถ๋ฆฌ์๊ฑฐ ์ํํ๋ฅผ ์ํ ํ๋ซํผ
Dev-Ops | |
---|---|
Frontend | |
Backend | |
DB | |
AI | |
Monitoring | |
Others |
acitions
โฟ DecodeActions.tsx
dispatch๊ฐ ์ด๋ค type์ ๋ฐ๋ผ ํจ์๋ฅผ ์คํํด์ค์ง ์ ํ๋ค. state๊ฐ์ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ ์ง ์ ํด์ฃผ๋ ํ์ผ
์ธ์๋ก token๊ฐ์ ๋ฐ์์ ๊ทธ๊ฑธ ๋์ฝ๋ฉ ํด์ค๋ค .
๊ทธ๋ฆฌ๊ณ payload์ [success, action[success, payload]] ๋ฅผ ์ค์
โฟ ImgIDReducer.tsx
dispatch๋ก ์คํํ ์ก์
๊ฐ 1๊ฐ (SAVE_ID) ์ด๊ฑธ๋ก id ๊ฐ์ ๋๊ฒจ์ค๋ค.
reducer
โฟ DecodeReducer.tsx
state ์ด๊ธฐ๊ฐ ์ค์ ๋ฐ dispatch๋ฅผ ํฌํจํ๊ณ ์๋ ๊ณณ action ์ด ๋ค์ด์์ action.payload๋ก
id, alias ๋ฅผ ๊ฐ์ ธ์ state๊ฐ์ dispatch์์ ๋์ด์จ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ๋ณ๊ฒฝํด์ค๋ค .(์ ์ญ๊ด๋ฆฌ ์์)
ex. const userIdtoRedux = ReduxModule().decodeInfo?.id;
โฟ ImgIDReducer.tsx
SAVE_ID ํ์
์ผ๋ก dispatch ๊ฐ ์คํ๋์ผ๋ฉด ๊ฑฐ๊ธฐ์ ์ ์ฅ๋ payload๋ฅผ ๊ฐ์ ธ์ ๊ทธ ๊ฐ์ ๋ฆฌํดํด์ค๋ค.
dispatch(save_ID(res.data.image_id)); ์คํํ itemID ๋ฆฌํด
ex. const itemID = useSelector((state: RootReducerType) => state.ImgIDReducer);
โฟ index.tsx
root ๋ฆฌ๋์ ๊ด๋ฆฌ ๋ง๋ค์ด ๋์ DecodeReducer, ImgIDReducer๋ฅผ ์ด๊ดํ๋ค. app.tsx์์ ๋ถ๋ฌ์ ์ฌ์ฉ
ReduxModule ํ ํฐ์ด ์์ ๋๋ง dispatch๋ฅผ ํตํด id๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ๋ฐ๋ก ๋ชจ๋๋ก ๋บด๋์ ํ ํฐ์ decoderedux๋ฅผ ํตํด ๋์ฝ๋ฉ์ํจ ํ id๋ฅผ ๋ฆฌํดํ๋ค.
- ์ ๋ฆฌ
- redux๋ฅผ ํตํด token decode ํ uuid ์ ์ญ๊ด๋ฆฌ
- ์ปดํฌ๋ํธ ์ฌํ์ฉ์ ์ํด uploadํ ์ด๋ฏธ์ง ๋ฐ ๋ด๊ฐ ๋ฒ๋ฆฐ ์ฐ๋ ๊ธฐ ์์ธํ์ด์ง๋ฅผ ์ํ trash_id ์ ์ญ๊ด๋ฆฌ
-
MyTrashcan โ ์ฌ๋ ธ๋ ์ฌ์ง๋ค์ ๋ชจ๋ ํ์ธ๊ฐ๋ฅ
autosave - On : ์ฌ๋ฆฐ ์ฌ์ง์ ์๋ ์ ์ฅ / Off : ์ ์ฅ๋์ง ์์
-
Graph โ ์ฌ๋ฆฐ ์ฌ์ง์ ์ข ๋ฅ์ ์ ํ์ ๊ฐ๋ฅ
Default : ์ง๊ธ๊น์ง ์ฌ๋ ธ๋ ์ด ์ฌ์ง ์ข ๋ฅ, ๊ฐ์
์์ ๋ ์ง, ๋ ๋ ์ง๋ฅผ ์ง์ ํ์ฌ ์ํ๋ ๋ ์ง์ ์ฌ๋ฆฐ ์ฐ๋ ๊ธฐ ์ข ๋ฅ ํ์ธ
-
Challenge โ ์ฌ์ง์ ์ฌ๋ ธ์ ๋ ํ์ฑํ/Change Info โ ๋น๋ฐ๋ฒํธ, ๋๋ค์ ๋ณ๊ฒฝ/Log Out
- api/users/
GET
: ํ์๊ฐ์ ์ ์์ด๋, ๋๋ค์ ์ค๋ณต ์ฒดํฌ ๊ฒฐ๊ณผPOST
: ํ์ ๊ฐ์ ์ ๋ณด ์ ์ฅPATCH
: ํ์ ์ ๋ณด ์์
- api/users/auth
POST
: access token, refresh token ๊ฐฑ์
- api/users/autosave
GET
: ์ ๋ก๋ ์ฌ์ง ์๋์ ์ฅ ์ฌ๋ถPATCH
: ์ ๋ก๋ ์ฌ์ง ์๋์ ์ฅ ์ฌ๋ถ ๋ณ๊ฒฝ
- api/challenges
GET
: ๋ชจ๋ ๋์ ๊ณผ์ ์ ๋ณด
- api/statistics/ranking
GET
: ์ธ๊ธฐ์์ผ๋ก ์ ๋ ฌ๋ ์ผ์ฃผ์ผ๊ฐ์ ์ฌํ์ฉ ๋ฐ์ดํฐ
- api/users/{user_id}/results/tasks
POST
: ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ์ฌ์ง ๋ถ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- api/users/{user_id}/results/tasks/{task_id}
GET
: task_id๋ก ๋ถ์ ์๋ฃ ์ฌ๋ถ ํ์ธ, ํ๋ก ํธ์์ polling
- api/users/{user_id}/challenges
GET
: ์ฌ์ฉ์๊ฐ ๋ฌ์ฑํ ๋์ ๊ณผ์ ์ ๋ณด
- api/users/{user_id}/pages/{page_number}
GET
: ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ์ฌํ์ฉ ์ด๋ฏธ์ง ๋ฐ์ดํฐ, ํ์ด์ง๋ค์ด์ ์ด์ฉ
- api/trash/users/{user_id}/statistics
GET
: ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ๋ชจ๋ ์ฌํ์ฉ ๋ฐ์ดํฐ์ ํต๊ณ
- api/trash/users/{user_id}/statistics/period/{from_date}/{to_date}
GET
: ์ฌ์ฉ์๊ฐ ์ค์ ํ ๋ ์ ๋ฐ๋ฅธ ์ฌํ์ฉ ๋ฐ์ดํฐ ํต๊ณ
- api/search/
POST
: value ๊ฐ์ ๋ง๋ ๊ฒ์ ๊ฒฐ๊ณผ ๋ฐํ
-
used_library
elasticsearch
django_elasticsearch_dsl
-
setup_es.py
-
elastic_search on Search api
-
get search_value from query_param
<img src="https://user-images.githubusercontent.com/41159837/183143129-e310f3db-c82d-43fa-852b-38f8487959b2.png"width="50%" height="50%"/>
-
make connection with elastic_search by using
django_elasticsearch_dsl
-
get data which contained key that has correlation with search_value
-
example
-
-
why_elastic_search?
- ์ผ๋ผ์คํฑ ์์น์ ๊ฐ ๋ฐ์ดํฐ๋ค์ ์๊ฐํํ๋ฉฐ, ํด๋น ๋ฐ์ดํฐ๋ค์ ๊ด๋ฆฌํ๋๋ฐ ๋์์ ์ฃผ๋ ํ๋ก๊ทธ๋จ
- ์ถํ. ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ, ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํตํ ๋ณด๋ค ์ข์ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ,
-
used_library
djangorestframework-jwt
-
JWT_Settings.py
-
JWT on frontEND
- restore tokens by using redux
- if we need some user data, we donโt need to make connection with backend by opening JWT payload, we can get user data
-
JWT on backEND
- after we identify user by check login data, give authorization by using JWT
- by using refresh_token, we enhanced our security level
- exporter๊ฐ ๋งคํธ๋ฆญ์ ์์งํ๊ณ HTTP ํต์ ์ ํตํด metric data๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๊ฒ /metrics ๋ผ๋ HTTP ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๋ค. ๊ทธ๋ฌ๋ฉด Prometheus server๊ฐ ์ด exporter์ ์๋ํฌ์ธํธ์ HTTP GET ์์ฒญ์ ์ด์ฉํ์ฌ metric data๋ฅผ pull ํ๋ค.
- ํด๋น ๋ ธ๋์ metric data
- Prometheus์ ์๊ฐํ ๋๊ตฌ๊ฐ ๋ถ์กฑํ์ฌ ์ด๋ฅผ ์ง์ ์ฌ์ฉํ์ง๋ ์๊ณ ๋๊ฒ Grafana๋ผ๋ Data Visualization tool์ ์ด์ฉํ์ฌ ์๊ฐํํ๊ณ ์๋ค.
CPU load / RAM usage / Memory swap
- ์์ฑ๋ ๋์ปค ์ปจํ ์ด๋๋ฑ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์์งํด์ค๋ค.
์ด๋ฆ | ๊ฐ๋ฐ๋ถ์ผ | ์๊ฐํ์ด์ง |
---|---|---|
๐ฆฅ๊น์ฉ๋ฏผ | Back-end,DevOps | https://github.com/Ryokuman |
๐๊น์ ๋ฆผ | Back-end,DevOps,AI | https://github.com/Ellie010707 |
๐๋ฐ์ฑ๋น | Back-end,DevOps | https://github.com/SeongbinPark |
๐ง๐ปโโ๏ธ์ด์ฑํ | Front-end | https://github.com/chloe1129 |
๐น์ด์ ์ฐ | Front-end | https://github.com/RayLee-Kor |
๐ผ์งํธ๋ณ | Front-end | https://github.com/bicco2 |