- ๋ก๊ณ ํด๋ฆญ์ ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค
- ํ๋ก์ ํธ ์ด๋ฆ: ReelVision
- ํ๋ก์ ํธ ์ค๋ช : ์ฐ๊ทน์ํ๊ณผ ์กธ์ ์ํ ํ๋ณด/ํ์ ํ๋ซํผ
-
์กธ์ ์ํ์ ์ ๋ณด์ผ ํ๋ซํผ ๋ถ์กฑ ํ์ฌ ์กธ์ ์ํ์ ์ํ์ ํน์ ์งง์ ์๊ฐ ์ํ๊ด์ ๋์ฌํ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ์ธ๋ถ์ ๊ณต๊ฐํ ์ ์๋ ๊ธฐํ๊ฐ ์ ํ๋์ด์๋ค. ์ค๋ ์๊ฐ ๊ณต๋ค์ฌ ์์ฑํ ์ํ์ด ์กฐ๊ธ ๋ ๋ค์ํ ๊ณณ์์ ๊ณต๊ฐ๋ ์ ์๋ค๋ฉด ์ํ๊ณผ ํ์๋ค์ ์ฐฝ์์์ง๊ฐ ๋์ฑ ์ปค์ง ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
-
์ํ๊ณผ ์กธ์ ํ์๋ค์ ํ๊ฒ์ผ๋ก ํ ํ๋ซํผ์ ํ์์ฑ ์กธ์ ์ํ๋ ๋๋ถ๋ถ ์ฌ๋น๋ก ์ ์๋น์ฉ์ ์ถฉ๋นํ๊ณ , ๋๋จธ์ง๋ ํฌ๋ผ์ฐ๋ ํ๋ฉ ํ๋ซํผ์ผ๋ก๋ถํฐ ํ๋ฉ์ ๋ฐ์์ ์ ์๋๊ณ ์๋ค. ํ์ง๋ง ๋ง์ ํ๋ฉ์ ์ ์๋น์ฉ์ ๋ง์ ๋น์จ์ ์ฐจ์งํ์ง ์๊ณ ์๋ค. ๋น์ฉ์ ๋ํ ๊ฐ์ฆ์ด ์กฐ๊ธ์ด๋๋ง ํด์๊ฐ ๋๋ค๋ฉด ์กธ์ ์ํ์ ํ๋ฆฌํฐ๊ฐ ๋์์ง๊ณ ๊ทธ๊ฒ์ด ๊ณง ์กธ์ ์ํ์ ๋ํ ๊ด์ฌ์ผ๋ก ์ด์ด์ง ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
-
์คํ์์ค์ํํธ์จ์ดํ๋ก์ ํธ 2์กฐ:
- ๊ณ ์ค๊ฑด: BE
- ์ ์์ฑ: FE
- ์ ๊ฐ๊ฒฝ: BE
- ํ์ฌ์: BE
- ํ๊ด์: BE
-
ํ์๊ด๋ฆฌ:
- ํ์๊ฐ์ : ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ, ์ค๋ณต ํ์ธ ๋ฑ์ ์ ์ฐจ๋ฅผ ํฌํจํ๊ณ ์์
- ๋ก๊ทธ์ธ: ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ์ผ์นํ๋ ๊ฒฝ์ฐ ๋๋ ์ธ์ ํ ํฐ์ ๋ฐ๊ธํจ
- ๋ก๊ทธ์์: ์ฌ์ฉ์ ์ธ์ ์ ์ข ๋ฃํจ
-
๋ง์ดํ์ด์ง:
- ํ๋กํ ํ์ธ ๋ฐ ์์ : ํ์๊ฐ์ ์์ ๋ฑ๋กํ user์ ์ ๋ณด ์์ , ํ๋ก์ ํธ๋ฅผ ๋ฑ๋กํ ๋์ ํ๋ก์ ํธ์ ํ์ํ ๊ธ์ก ํ๋ถ
- ์ํ ๋ชฉ๋ก ํ์ธ: user๊ฐ ๊ตฌ๋งคํ ์ํ, ํ์ํ ์ํ, user๊ฐ ๋ฑ๋กํ ํ๋ก์ ํธ ํ์ธ
-
๊ฒฐ์ :
- ํ์ ๊ฒฐ์
- ์คํธ๋ฆฌ๋ฐ ๊ฒฐ์
- ๊ฒฐ์ ํ์ด์ง ๋ฆฌ๋๋ ์
-
์ํ ๋ฑ๋ก/์ฌ์:
- ์ํ๋ฅผ ๋ฑ๋กํ๊ณ ์ฌ์ํ ์ ์์
-
admin:
- ํ์ ์ ๋ณด ๋ฐ ํ๋ก์ ํธ ์ ๋ณด ์์
-
ํ๋ก๊ทธ๋จ ์ ์ฒด ERD:
- ์์คํ ๊ตฌ์ฑ ๋ค์ด์ด๊ทธ๋จ:
- Use-case ๋ค์ด์ด๊ทธ๋จ:
- ์์คํ ๊ตฌ์กฐ:
- ํ๋ก์ ํธ ๊ตฌ์กฐ:
โโโ common
โย ย โโโ __init__.py
โย ย โโโ admin.py
โย ย โโโ apps.py
โย ย โโโ authentication.py
โย ย โโโ middleware.py
โย ย โโโ migrations
โย ย โโโ session_backend.py
โย ย โโโ static
โย ย โโโ templates
โย ย โโโ tests.py
โย ย โโโ urls.py
โย ย โโโ views.py
โโโ db.sqlite3
โโโ funding
โย ย โโโ __init__.py
โย ย โโโ forms.py
โย ย โโโ migrations
โย ย โโโ models.py
โย ย โโโ static
โย ย โโโ templates
โย ย โโโ urls.py
โย ย โโโ views.py
โโโ get-pip.py
โโโ main_page
โย ย โโโ __init__.py
โย ย โโโ __pycache__
โย ย โโโ admin.py
โย ย โโโ apps.py
โย ย โโโ migrations
โย ย โโโ models.py
โย ย โโโ static
โย ย โโโ templates
โย ย โโโ tests.py
โย ย โโโ urls.py
โย ย โโโ views.py
โโโ manage.py
โโโ mongodbconnect
โย ย โโโ __init__.py
โย ย โโโ __pycache__
โย ย โโโ asgi.py
โย ย โโโ settings.py
โย ย โโโ urls.py
โย ย โโโ wsgi.py
โโโ mypage
โย ย โโโ __init__.py
โย ย โโโ admin.py
โย ย โโโ apps.py
โย ย โโโ forms.py
โย ย โโโ migrations
โย ย โโโ static
โย ย โโโ templates
โย ย โโโ tests.py
โย ย โโโ urls.py
โย ย โโโ views.py
โโโ payments
โย ย โโโ __init__.py
โย ย โโโ admin.py
โย ย โโโ apps.py
โย ย โโโ models.py
โย ย โโโ templates
โย ย โโโ tests.py
โย ย โโโ urls.py
โย ย โโโ views.py
โโโ static
โย ย โโโ images
โย ย โโโ style.css
โโโ streaming
โโโ __init__.py
โโโ admin.py
โโโ apps.py
โโโ forms.py
โโโ migrations
โโโ models.py
โโโ serializers.py
โโโ static
โโโ templates
โโโ tests.py
โโโ urls.py
โโโ views.py
- ์ธ์คํด์ค ์ด๋ฆ: ReelVision
- ์ธ์คํด์ค ์ ํ: t2.micro
- AMI: Ubuntu
- ๋คํธ์ํน: ํผ๋ธ๋ฆญ IP ํ์ฑํ (์ธ๋ถ ์ฐ๊ฒฐ ํ์ฉ)
- ๋ณด์ ๊ทธ๋ฃน ์ค์ :
- ํฌํธ 22: SSH ์ ์ ํ์ฉ
- ํฌํธ 8000: Django ์ ์ ํ์ฉ
- ํฌํธ 27017: MongoDB ์ ๊ทผ ํ์ฉ
- SSH๋ฅผ ํตํด EC2 ์ธ์คํด์ค ์ ์
- ๋ก์ปฌ์์ ์์ฑํ Django ํ๋ก์ ํธ๋ฅผ EC2 ์๋ฒ๋ก ์ฎ๊ธฐ๊ธฐ
- Docker ๋ฐ Docker Compose ์ค์น
- Docker์
docker-compose.yml
ํ์ผ์ ์ด์ฉํด ํ๊ฒฝ ๊ตฌ์ฑ
- Docker์
- ํ๋ก์ ํธ ๋ฐ DB ์ปจํ
์ด๋ ๊ตฌ์ฑ ๋ฐ ์คํ
- Docker ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ Django ํ๋ก์ ํธ์ DB ์คํ
- Django ์ ํ๋ฆฌ์ผ์ด์
DB์ ์ฐ๊ฒฐ
- EC2 ์๋ฒ์์ Django ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ณ DB ์ฐ๊ฒฐ ํ์ธ
- ํผ๋ธ๋ฆญ IP๋ฅผ ์ฌ์ฉํ ์ธ๋ถ ์ ๊ทผ ํ์ฉ
- AWS EC2์ ํผ๋ธ๋ฆญ IP๋ฅผ ์ฌ์ฉํ์ฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ์ค์
๊ธฐ๋ฅ | HTTP Method | API ๊ฒฝ๋ก | ์ค๋ช |
---|---|---|---|
ํ์๊ฐ์ /๋ก๊ทธ์ธ | |||
ํ์๊ฐ์ | POST | /signup/ |
์ ๊ท ์ฌ์ฉ์ ํ์๊ฐ์ |
๋ก๊ทธ์ธ | POST | /signin/ |
์ฌ์ฉ์ ๋ก๊ทธ์ธ |
๋๊ตญ๋ ์ธ์ฆ ๋ฉ์ผ ๋ฐ์ก ์์ฒญ | POST | /verify-email/<str:token>/ |
์ด๋ฉ์ผ ์ธ์ฆ ์์ฒญ |
๋ฉ์ผ ์ธ์ฆ ํ์ธ | GET | /verify-email/<str:token>/ |
์ด๋ฉ์ผ ์ธ์ฆ ํ์ธ |
๋ก๊ทธ์์ | GET | /logout/ |
์ฌ์ฉ์ ๋ก๊ทธ์์ |
๋ง์ดํ์ด์ง | |||
ํ๋กํ ์กฐํ | GET | /mypage/ |
๋ง์ดํ์ด์ง ํ๋กํ ์ ๋ณด ์กฐํ |
ํ๋กํ ์์ | GET | /update_profile/ |
ํ๋กํ ์ ๋ณด ์์ |
๋น๋ฐ๋ฒํธ ์์ | GET | /change_password/ |
๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ |
๋ฑ๋กํ ํ๋ก์ ํธ ์กฐํ | GET | /my_projects/ |
๋ด๊ฐ ๋ฑ๋กํ ํ๋ก์ ํธ ๋ชฉ๋ก |
ํ์ํ ํ๋ก์ ํธ ์กฐํ | GET | /funded_movie/ |
ํ์ํ ํ๋ก์ ํธ ๋ชฉ๋ก |
๊ตฌ๋งคํ ํ๋ก์ ํธ ์กฐํ | GET | /purchased_movie/ |
๊ตฌ๋งคํ ํ๋ก์ ํธ ๋ชฉ๋ก |
ํ๋ฉ | |||
ํ๋ฉ ์ํ ์ ๋ก๋ | POST | /funding/upload |
ํ๋ฉ ์ํ ์ ๋ก๋ |
ํ๋ฉ ์ํ ์์ธ ์กฐํ | GET | /funding/<str:movie_id>/ |
ํน์ ํ๋ฉ ์ํ ์์ธ ์กฐํ |
ํ๋ฉ ์ํ ๋ชฉ๋ก ์กฐํ | GET | /funding/movie/list |
ํ๋ฉ ์ํ ๋ชฉ๋ก ์กฐํ |
์ด๋ฏธ์ง ์กฐํ | GET | /funding/poster/<str:poster_id>/ |
ํฌ์คํฐ ์ด๋ฏธ์ง ์กฐํ |
๊ฒฐ์ ์ฑ๊ณต | GET | /funding/payment/success/ |
๊ฒฐ์ ์ฑ๊ณต ๋ฆฌ๋๋ ์ |
๊ฒฐ์ ์คํจ | GET | /funding/payment/fail |
๊ฒฐ์ ์คํจ ๋ฆฌ๋๋ ์ |
๊ฒฐ์ ์ฌ๋ถ ํ์ธ | GET | /funding/check_payment_status/ |
๊ฒฐ์ ์ํ ํ์ธ |
์คํธ๋ฆฌ๋ฐ | |||
์คํธ๋ฆฌ๋ฐ ์ํ ์ ๋ก๋ | POST | /streaming/upload |
์คํธ๋ฆฌ๋ฐ ์ํ ์ ๋ก๋ |
์คํธ๋ฆฌ๋ฐ ์ํ ์์ธ ์กฐํ | GET | /streaming/<str:movie_id>/ |
ํน์ ์คํธ๋ฆฌ๋ฐ ์ํ ์์ธ ์กฐํ |
์คํธ๋ฆฌ๋ฐ ์ํ ๋ชฉ๋ก ์กฐํ | GET | /streaming/movie/list |
์คํธ๋ฆฌ๋ฐ ์ํ ๋ชฉ๋ก ์กฐํ |