Docker Compose๋ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํฉ์ ์ผ๋ก Docker ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ , ๋ง๋ค์ด์ง ๊ฐ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ ๋ฐ ์ค์งํ๋ ๋ฑ์ ์์ ์ ๋ ์ฝ๊ฒ ์ํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ์ด๋ค.
Docker Compose์๋ docker-compose๋ผ๋ yamlํ์ผ์ด ์์ผ๋ฉฐ, ์ด ํ์ผ์์ ์ด๋ฌํ ๋ชจ๋ ์๋น์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ธ๋ฆฌ์ง ๋คํธ์ํฌ์ ๊ฐ์ ์ค์ ๋ docker-compose์์ ๋ชจ๋ ์ค์ ์ด ๊ฐ๋ฅํ๋ค. Redis, Mongo๋ ์ค์ ๋ก ๋ฐํ์ ์ปจํ ์ด๋์ผ ๋ฟ์ด์ง๋ง Docker Compose์์๋ ์๋น์ค๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
์๋น์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋น๋๋ฅผ ํด์ผ ํ๋ค. Dockerํ์ผ์ ์ค์ ํ๊ณ docker-compose.ymlํ์ผ์ ์ ์ํ์ฌ Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋น๋ํ๊ฒ ๋๋ฉฐ ์ด ๊ณผ์ ์ ํตํด Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค.
๊ทธ๋ฐ ๋ค์ Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ์์ํ๊ฒ ๋๋ฉฐ ์ด๋ ํ ๊ฐ ์ด์์ ์ปจํ ์ด๋๊ฐ ์์๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ค์์ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ค.
์ฌ์ฉ์ด ๋๋ ์๋น์ค๋ฅผ ํด์ฒดํ๊ณ ์ปจํ
์ด๋๋ฅผ ์ค์งํ๋ฉฐ ์ํ๋ ๊ฒฝ์ฐ ์ ๊ฑฐํ ์ ์๋ค.
์ฐธ๊ณ : SQL๊ณผ NOSQL์ ์ฐจ์ด
SQL์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ๋ณด๋ฅผ ํ ํ์์ผ๋ก ์ ์ฅํ๋ฉฐ, ํ๊ณผ ์ด์ ๋ค์ํ ๋ฐ์ดํฐ ์์ฑ๊ณผ ๋ฐ์ดํฐ ๊ฐ ๊ฐ์ ๋ค์ํ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. SQL์ ์ฌ์ฉํ๋ฉด RDBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์ , ์ญ์ ๋ฐ ๊ฒ์ ํ ์ ์๋ค.
NoSQL(Not only SQL)์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ๊ฐ๋ฆฌํค๋ฉฐ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ํ ์ด๋ธ๊ณผ๋ ๋ค๋ฅธ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ๊ทธ๋ฌ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ์ด๋ง๋ค ๊ด์ตํ๋ API, ์ ์ธ์ ๊ตฌ์กฐ์ ์ฟผ๋ฆฌ ์ธ์ด, ์ฟผ๋ฆฌ๋ณ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ํ ์ ์๋ค. NoSQL์์๋ ๋ ์ฝ๋๋ฅผ ๋ฌธ์(documents)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์์ง์ ํ์ฅ : ๋จ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ (ex. CPU ์ ๊ทธ๋ ์ด๋)
- ์ํ์ ํ์ฅ : ๋ ๋ง์ ์๋ฒ๊ฐ ์ถ๊ฐ๋๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ฒด์ ์ผ๋ก ๋ถ์ฐ๋จ์ ์๋ฏธ (ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ํ์ง๋ง ์ฌ๋ฌ ํธ์คํธ์์ ์๋)
Pymongo๋ NoSQL์ธ MongoDB๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๋ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด ์๋ฒ์ ์๋ DB๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ํด์ด๋ค. ์๋ฒ DB์๋ ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์๋ค.
MongoDB๋ ์คํ ์์ค ๊ธฐ๋ฐ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์ผ๋ก ํ ์ด๋ธ ๋ฐ ํ ๋์ ์ ์ฐํ ๋ฌธ์๋ฅผ ํ์ฉํด ๋ค์ํ ๋ฐ์ดํฐ ํ์์ ์ฒ๋ฆฌํ๊ณ ์ ์ฅํ๋ค.
MySQL์ ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ก ๋ณด๊ด๋ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ค. ๋ณธ ํ์์์๋ ๋ฐ์ดํฐ ์ ํ์ ํ์คํํ๋ ๋ฐฉ๋ฒ์ธ ํ ์ด๋ธ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๋๋ฐ ์คํค๋ง๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ๊ฐ์ ๊ฒ์ํ๊ณ ์ ์ ํ ์ฟผ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค. ์ฑ์๋๊ฐ ๋์ ์๋ฃจ์ ์ธ MySQL์ ์น์ฌ์ดํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ ํ๋ฆฌ์ผ์ด์ , ์์ ์ฉ ์ ํ ๊ด๋ฆฌ๋ฅผ ๋น๋กฏํ ๋ค์ํ ์ํฉ์ ์ ์ฉํ๋ค.
MySQL์ ๊ณ ์ ์ ์๊ฒฉํ ํน์ฑ์ผ๋ก ์ธํด, ํธ๋์ญ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ฐ ๊ฒฉ๋ฆฌ๊ฐ ํ์์ ์ธ ์ํฉ์ด๋ผ๋ฉด MongoDB๋ณด๋ค ์ ํธ๋ ์ ์๋ค. ํ์ง๋ง MongoDB๋ ๋ณด๋ค ๋ ์ ํ์ ์ธ ํ์๊ณผ ๋ณด๋ค ์ฐ์ํ ์ฑ๋ฅ์ ๋ณด์ ํ๊ณ ์์ด, ํน๋ณํ ๊ฐ์ฉ์ฑ๊ณผ ์๋๋ฅผ ํ๋ณดํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ ์ํฉ์์๋ ๋ณด๋ค ๋์ ์ ํ์ด ๋ ๊ฒ์ด๋ค.
Cassandra์ MongoDB๋ ๋ ๋ค NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ฐ์ฃผ๋์ง๋ง, ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค. Cassandra๋ ํ๊ณผ ์ด์ ๊ฐ์ถ ๊ธฐ์กด ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ปดํ์ผํ๊ธฐ ์ ํ์์ ์ง์ ํ๋ ๋ฐ ๊ท ์ผ์ฑ๊ณผ ๋ด๊ตฌ์ฑ์ ์ ์งํ ์ ์๋ค.
Cassandra๋ SQL๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ๋ณด์ ํ๊ณ ์์ด, NoSQL ์๋ฃจ์ ์ ์ฐพ๋ ๊ธฐ์ ๋ค๋ ๋ณด๋ค ์์ํ๊ฒ ์ ํํ ์ ์๋๋ก ์ง์ํ๋ฉฐ ๋ค์์ ๊ตฌ์ฑ ์์ด๋ ๋ฐฐํฌ ๋ฐ ๋ณต์ ๋ฅผ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ํ์ง๋ง ์ ํ ๋ฐ ๋น์ ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ๋ ์ ์ฐ์ฑ ์ธก๋ฉด์ด๋ ๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌ ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ์์ด์๋ MongoDB์ ํ์ ํ ์ ์๋ค.
git pull ํ์ฌ Pytest๋ฅผ ๋๋ ค๋ณด๋ ค๊ณ ํ ๋ ๊ณ์ ์ด๋ฌํ ์ค๋ฅ๊ฐ ๋ด์๋ค. ๋์ฒด backend ์ด๋ผ๋ ๋ชจ๋์ด ๋ญ์ง? ์๊ตฌ์ฌ์ด ๋ค๋ฉด์๋ ๊ทธ๋ฅ pip install backend
๋ฅผ ํด๋ณด์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ผ๋ผ ์ง์ง ๊ทธ๋ฐ ๋ชจ๋์ด ์๋ ๊ฒ์ด์๋ค.. ๋ญ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ง ๋ค์ด์ ํ๊ธธ๋ ์ด์ ๋๊ฒ ์ง ํ๋ฉด์ ๋ค์ pytest๋ฅผ ๋๋ฆฐ ์๊ฐ
๊ฑฐ์ง๋ง backend.main ์ด๋ผ๋ ๋ชจ๋์ด ์ด๋จ๋๋ฐ.. ๋ฐ์ ๋ฐ์ํ๋ฉฐ pip install backend.main
์ ์ณ๋ดค๋๋ฐ.. ์ณ๋ณด์ง ๋ง ๊ฑธ ๊ทธ๋ฌ๋ค ^^..
๊ทธ๋์ ์ด์ฐํ์ฌ ๊ณ ์ณค๋..
๊ทธ๋ฅ test ํด๋์ __init__.py
๋ผ๋ ๋น ํ์ผ์ ๋ง๋ค๊ณ ๋๋ฆฌ๋ ์ ๋ง ๊ฐ์ชฝ๊ฐ์ด ์ ๋์๊ฐ๋ค.. ๋๋ง ์ ์ ํ์ผ์ ๋ง๋ค์ด์ผ ๋์๊ฐ๋ ๊ฒ์ด์ง? ๋ค๋ฅธ ๋ถ๋ค์ ๊ทธ๋ฅ ๋์๊ฐ๋ ๊ฒ ๊ฐ์๋ฐ ๋ชจ๋ฅด๊ฒ ๋ค.. ๊ทธ๋์ ์ผ๋จ commitํ ๋ add ํ์ง๋ ์์๋ค.
__init__.py
ํด๋น ๋๋ ํฐ๋ฆฌ๊ฐ ํจํค์ง์ ์ผ๋ถ์์ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ๋ ํจํค์ง์ ํฌํจ์ด ์ ๋ฉ๋๋ค. Python3.3 ์ดํ ๋ฒ์ ๋ถํฐ๋__init__.py
์ด ์์ด๋ ํจํค์ง๋ก ์ธ์ํ์ง๋ง, ํ์ ๋ฒ์ ๊ณผ์ ํธํ์ ์ํด์๋ ์ด ํ์ผ์ ์์ฑํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
๋ผ๊ณ ํ๋๋ฐ ๋๋ ํ์ ๋ฒ์ ์ธ ๊ฑด๊ฐ..? 3.10.9๋ก ๋ง์ถฐ์ ๋๋ฆฌ๊ณ ์๋๋ฐ ใ ใ