๐ฉโ๐ป Team
์ด๋ฆ |
Github |
๋ด๋น ์ญํ |
์์์ |
tasddc1226 |
DB Modeling, ์์ง ์คํฌ๋ฆฝํธ(batch task)์์ฑ ๋ฐ Logging ๋ก์ง ์์ฑ |
๊ถ์๊ฒฝ |
fore0919 |
์ต๊ทผ ์ผ์ฃผ์ผ๋ด์ ์
๋ฐ์ดํธ ๋ ์์์ ๋ณด ๋ฆฌ์คํธ view, ์์์ ๋ณด ๊ฒ์ ๋ฐ Detail view, API ๋ฌธ์ํ |
์ค์๋ฏผ |
redtea89 |
Docker ๋ฐฐํฌ ๋ฐ ๋ฌธ์ํ, ์์ง ์คํฌ๋ฆฝํธ(batch task) ์์ฑ, ๊ฐ์ฐ์ ๊ธฐ๋ฅ ๊ตฌํ, ์คํ Guide ์์ฑ |
ใ
ค๐ช ใ
ค๊ณต๋์์
: ๊ณต๊ณต API ๋ฐ ์๊ตฌ์ฌํญ ๋ถ์
ํ๋ก์ ํธ ์งํ ๊ธฐ๊ฐ 2022.05.10 09:00 ~ 2022.05.13 18:00
- ๊ณผ์ ์๊ตฌ ๋ถ์ ๋ฐ ์ญํ ๋ถ๋ด, ๊ฐ๋ฐ ์ผ์ ๊ณต์ ๋ฅผ ์ํด ์ฌ์ฉ
์ฌ์ฉ ๊ธฐ์
ใ
คใ
คใ
คใ
คใ
ค
๊ฐ์ธ๋ณ ๊ตฌํ๋ฐฉ๋ฒ ๋ฐ ์ด๋ ค์ ๋ ์
-
์์์
-
๊ถ์๊ฒฝ
-
์ค์๋ฏผ
- ๋์ ๊ณผ์ batch_task(์คํจ)
- ์คํจ์ด์ : ๋์ ๊ณผ์ batch_task๋ฅผ ๊ตฌํํ๋๋ฐ ์คํจํ๋๋ฐ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋ฌธ์ ๋ฅผ ์ ํํ๊ฒ ์ดํดํ์ง ๋ชปํ ์ฑ ์ฝ๋์์ฑ์ ์์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์์์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋๋ค๋ฅธ API๋ฅผ ์ฐพ์์ ๊ธฐ์กด ๊ณผ์ ์ ๋ณํฉํ ์ ์๋๋๋ก ํด์ํด์ผ ํ ๊ฒ์, ์์์ ๋ณด์ ๊ด๋ จ๋ ๋๋ค๋ฅธ API๋ฅผ ์ฐพ์์ ๊ธฐ๋ณธ ๊ณผ์ ๋ฅผ ํ๋ฒ ๋ ํ์ด๋ผ๊ณ ์ดํดํ๋ค.
- ๋ณด์ํ ์ : ์๊ตฌ์ฌํญ ๋ถ์๋จ๊ณ์์ ๋ด๊ฐ ์ดํดํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ ๋ค์ ๋ค๋ฅธ ํ์๊ณผ ๊ณต์ ํ์ฌ ํฌ๋ก์ค์ฒดํน์ ๋ช
ํํ๊ฒ ํ์ด์ผ ํ๋๋ฐ ๊ทธ๋ฌ์ง ์๊ณ ์งํํ๊ธฐ ๋๋ฌธ์ด๊ณ , Pull request๋ฅผ ์ข ๋ ์ผ์ฐํ์ฌ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์๋ค๋ฉด ์๋ชป๋ ๊ธธ์ด์์์ ์ข ๋ ์ผ์ฐ ์์์ฑ ์ ์์์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
- ๋ฐฐํฌ
- ํด๋ผ์ฐ๋ ๊ฐ์๋จธ์ ์ ์ด์ฉํ์ฌ Docker๋ก ๋ฐฐํฌ๋ฅผ ์งํํ์๋ค. ์ฌ์ค ์ด ๋ถ๋ถ์ ์ด์ ํด ํด๋ณธ ์ ์ด ์์๊ธฐ์ ํฐ ์ด๋ ค์์ ๊ฒช์ง ์์๋ค.
- ๊ธฐํ
- ๋ฐฐํฌ์ ๊ทธ๋ฆฌ ๋ง์ ์๊ฐ์ ํ ์ ํ์ง ์์๊ณ ๋์ ๊ณผ์ ๋ ๋ง๋ฌด๋ฆฌ๋ฅผ ๋ชปํ๋ ์ ๋์๋ค๋ฉด ๋ถ๋ช
์๊ฐ์ด ๊ฝค ์์์ ํ
๋ฐ ๋ฌด์ผ ํ์ผ๋? ๋ผ๋ ์ง๋ฌธ์ ํ๊ฒ๋๋๋ฐ, ์ด๋ฒ ๊ณผ์ ์์ ๊ฐ์ฅ ์ด๋ ค์ ๋ ์ ์ ์๊ธฐ๊ด๋ฆฌ์๋ ๊ฒ ๊ฐ๋ค. ์ง๊ธ์ด 3์ฃผ์ฐจ ๊ณผ์ ๋ฅผ ์งํํ๊ณ ์๋๋ฐ, 1~2์ฃผ์ฐจ์ ์ด๊ณณ์ ์ ๊ฒฝ์ ์ง์คํ๋ค๋ ์ด์ ๋ก ์ด๋์ด๋ ์ทจ๋ฏธํ๋, ๋จน๋ ๊ฒ๋ค๊น์ง๋ ์ ๋๋ก ์ ๊ฒฝ์ฐ์ง ๋ชปํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ถ์ฑ๊ฐ ์ด๋ฒ์ฃผ์ ๋ํ๋๊ณ ์์๋ ๊ฒ ๊ฐ๋ค.
- ๋ณด์ํ ์ : ๋ชจ๋ํฐ์ ์์์๋ ์๊ฐ์ ๋ฌด์์ ๋๋ฆด ๊ฒ์ด ์๋๋ผ ์ํํจํด์ ์ ๊ฐ๊ฟ๊ฐ๋๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์ํ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ ํ๋ก์ ํธ ๊ธฐ๊ฐ์ด์๋ค.
ํ๋ก๊ทธ๋จ ์คํ๋ฐฉ๋ฒ
๋ก์ปฌํ๊ฒฝ์์ ์ด ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ ค๋ฉด Django SECRET_KEY์ API KEY๊ฐ ํ์ํ๋ค. ์ด ์คํ๋ฐฉ๋ฒ์ KEY๋ฅผ ์๊ณ ์๋ค๋ ๊ฐ์ ํ์ ์์ฑ๋์๋ค. (ํ์์ค window์ฌ์ฉ์๊ฐ ์์ด mac๋ง ์์ฑ)
MAC OS
1๋ฒ. ํฐ๋ฏธ๋์์์ ํ๋ก๊ทธ๋จ์ ๋ด๋ ค๋ฐ์ ํด๋๋ก ์ด๋ํ๋ค. (Documents ๋๋ ํฐ๋ฆฌ ์์)
% cd ~/Documents
2๋ฒ. git clone์ผ๋ก ํ์ผ์ ๋ฐ๊ณ ํ๋ก์ ํธ ํด๋๋ก ์ด๋ํ๋ค.
% git clone https://github.com/2nd-wanted-pre-onboarding-team-A/Human-Scape-A.git
% cd Human-Scape-A
3๋ฒ. ํด๋ ํธ๋ฆฌ ํ์ธ
% ls
# ์์ ํ๋ฉด
README.md human requirements.txt
__pycache__ manage.py research
core dockerfile paper
์์ผ๋ก ์ด ๋๋ ํฐ๋ฆฌ์ ์ํ๋ฅผ "ํ๋ก์ ํธ ํด๋"๋ผ ๋ถ๋ฅด๊ฒ ๋ค.
4๋ฒ. ํ์ด์ฌ ์ค์น ํ์ธ
% python --version
# ์์ํ๋ฉด
Python 3.8.10
๋ง์ฝ ํ์ด์ฌ 3.8์ด์์ด ์ค์น๋์ด์์ง ์๋ค๋ฉด ๋งํฌ ๋ก ์ด๋ํ์ฌ ํ์ด์ฌ 3.8.10 (ํน์ 3.8.12) ๋ฅผ ์ค์นํ๋ค.
5๋ฒ. (ํ์ด์ฌ ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด 3๋ฒ ํด๋ ์์น์์) ๊ฐ์ํ๊ฒฝ ์์ฑ
% python -m venv venv
6๋ฒ. ๊ฐ์ํ๊ฒฝ ์ง์
% source venv/bin/activate
7๋ฒ. ํ์ด์ฌ ๋ชจ๋ ์ค์น
% pip install --upgrade pip
% pip install -r requirements.txt
์ฌ๊ธฐ์ ์๋ฌ๊ฐ ๋๋ค๋ฉด 3๋ฒ๋ถํฐ ์ ์์ ์ผ๋ก ๋์๋์ง ํ์ธํ์ฌ์ผ ํ๋ค.
8๋ฒ. ํ๊ฒฝ๋ณ์ ํ์ผ ๋ง๋ค๊ธฐ
ํ๋ก์ ํธ ํด๋์์ ํ์ผ๋ช
my_settings.py๋ฅผ ๋ง๋ค๊ณ ์๋์ ๋ด์ฉ์ ๋ถ์ฌ๋ฃ๊ธฐํ๋ค. (KEY ๋ด์ฉ์ ์ด๋ฏธ ์๊ณ ์๋ ๋ด์ฉ์ ์ง์ด๋ฃ์ผ๋ฉด ๋๋ค.)
# my_settings.py
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'human',
'USER': 'root',
'PASSWORD': 'mysecretpassword',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'}
}
}
SECRET_KEY = ''
DEBUG = True
OPEN_API_SECRET_KEY = ''
OPEN_API_SECRET_KEY_CHALLENGE = ''
9๋ฒ. ๋ก์ปฌ ํ๊ฒฝ์ Mysql ์ค์น
์ด๋ฏธ Mysql์ด ์ค์น๋์ด์๋ค๋ฉด ์ด ๊ณผ์ ์ ๋์ด๊ฐ๋ ๋๋ค. ๋ง์ฝ brew๊ฐ ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์ด๊ณณ์ ์ฐธ๊ณ
% brew install mysql
% brew services start mysql
๋ฃจํธ ๋น๋ฐ๋ฒํธ ์ธํ
(์ด๊ณณ ๋น๋ฐ๋ฒํธ๊ฐ 8๋ฒ ํ๊ฒฝ๋ณ์ ํ์ผ ๋ง๋ค๊ธฐ์ ๋น๋ฐ๋ฒํธ์ ๋ค์ด๊ฐ์ผํ๋ค.)
% mysqladmin -u root password 'mysecretpassword'
ํฐ๋ฏธ๋์์ mysql ์ ์ํ์ธ(ํฐ๋ฏธ๋ ์๋ฌด์์น์์ํด๋ ์๊ด์์)
% mysql -u root -p
% mysecretpassword
10๋ฒ. database ์์ฑ
mysql์ ์ ์ํ์๋ค๋ฉด ํฐ๋ฏธ๋ ๋ช
๋ น์ฐฝ์ด ์๋์ ๊ฐ์ด mysql> ๋ก ๋ฐ๋๋ค.
mysql> create database human character set utf8mb4 collate utf8mb4_general_ci;
11๋ฒ. Django๋ฅผ ์ด์ฉํ Mysql DB ํ
์ด๋ธ ์์ฑ
ํ๋ก์ ํธ ํด๋(3๋ฒ ์ฐธ๊ณ )๋ก ์ด๋ํ์ฌ ์๋์ ๊ฐ์ด ์
๋ ฅ
% python manage.py migrate
12๋ฒ. Django ์๋ฒ ์คํ
ํ๋ก์ ํธ ํด๋์์ ์๋์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ค.
% python manage.py runserver --noreload
13๋ฒ. ๋ก์ปฌ APIํ
์คํธ
ํฐ๋ฏธ๋์์ ์๋์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ค. ์์ธํ APIํ
์คํธ๋ ์๋ API Documentation ์ฐธ๊ณ
curl http://localhost:8000/api/v1/research
API Documentation