Spaces:
Running
05. ๋ฐฐํฌ ๊ณํ
ํ์ฌ ์คํ ๋ฐฉ์
ํ์ฌ ํ๋ก์ ํธ๋ Docker Compose๋ก ๋ก์ปฌ ์คํ ํ๊ฒฝ์ ๋ง์ถ๋ ๊ตฌ์กฐ์ ๋๋ค.
์ฃผ์ ์๋น์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
postgres: PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์คcert-study-app: Streamlit ์น ์ฑairflow-init: Airflow ์ด๊ธฐํairflow-webserver: Airflow ์น ํ๋ฉดairflow-scheduler: Airflow ์์ ์ค์ผ์ค๋ฌ
๋ก์ปฌ ์คํ
cp .env.example .env
docker compose up --build
์ ์ ์ฃผ์:
- Streamlit ์ฑ:
http://localhost:8501 - Airflow:
http://localhost:8080 - PostgreSQL:
localhost:5432
Streamlit ํ๋ฉด๋ง ๋น ๋ฅด๊ฒ ํ์ธํ ๋๋ Docker ์์ด ์คํํ ์๋ ์์ต๋๋ค.
DATABASE_URL=sqlite:////tmp/cert-study-local-check.db \
python -m streamlit run streamlit_app.py
์ด ๋ฐฉ์์ ์์ SQLite DB๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ก์ปฌ ํ๋ฉด ํ์ธ์ ์ ํฉํฉ๋๋ค. ๊ธฐ์กด data/questions.db ํ์ผ ๊ถํ์ด ๊ผฌ์๊ฑฐ๋ ์ฝ๊ธฐ ์ ์ฉ ์ํ์ผ ๋๋ ์ DB๋ก ๋ฌธ์ seed ๋์์ ํ์ธํ ์ ์์ต๋๋ค.
Docker๋ฅผ ์ฐ๋ ์ด์
์ด ํ๋ก์ ํธ๋ Streamlit, PostgreSQL, Airflow, PDF ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Chroma ๋ฑ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
๊ฐ๋ฐ PC์์ ์ง์ ๋ชจ๋ ์ค์นํ๋ฉด ๋ฒ์ ์ถฉ๋์ด ์๊ธฐ๊ธฐ ์ฝ์ต๋๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ ํ๊ฒฝ์ ์ฝ๋๋ก ์ ๋ฆฌํ ์ ์๊ณ , ๋ค๋ฅธ PC๋ ์๋ฒ์์๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
Docker๋ฅผ ์ฐ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์คํ ํ๊ฒฝ์ ํต์ผํ ์ ์๋ค.
- PostgreSQL๊ณผ Airflow๋ฅผ ํจ๊ป ๋์ฐ๊ธฐ ์ฝ๋ค.
- ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์๋ฒ ํ๊ฒฝ ์ฐจ์ด๋ฅผ ์ค์ผ ์ ์๋ค.
- ๋ฐฐํฌํ ๋ ํ์ํ ๋ช ๋ น์ ๋จ์ํํ ์ ์๋ค.
Docker Compose ๋ณผ๋ฅจ
ํ์ฌ Compose์์๋ ๋ฐํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋ณผ๋ฅจ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์:
postgres_data: PostgreSQL ๋ฐ์ดํฐ./data: ์ ๋ก๋ PDF, ํ์ฑ ๊ฒฐ๊ณผ ๋ฑ ๋ฐํ์ ๋ฐ์ดํฐ./chroma_db: Chroma ์ธ๋ฑ์ค./airflow_logs: Airflow ๋ก๊ทธ./airflow_db: Airflow ๋ฉํ๋ฐ์ดํฐ
์ด๋ฐ ํ์ผ์ ์คํ ์ค ์์ฑ๋๋ ๋ฐ์ดํฐ์ด๋ฏ๋ก ๋ณดํต Git์ ์ฌ๋ฆฌ์ง ์์ต๋๋ค.
Hugging Face Space ๋ฐฐํฌ
Hugging Face Space๋ GitHub Actions๋ฅผ ํตํด ํ์ฌ ํ๋ก์ ํธ ์ค๋ ์ท์ ๋๊ธฐํํฉ๋๋ค.
Space์๋ ์๋ ๋ฐํ์ ๋ฐ์ดํฐ๋ ์ฌ๋ฆฌ์ง ์์ต๋๋ค.
- ์ ๋ก๋ PDF ์๋ณธ
- ๋ก์ปฌ PostgreSQL/SQLite DB
- Chroma ์ธ๋ฑ์ค
- Airflow ๋ก๊ทธ์ ๋ฉํ๋ฐ์ดํฐ
๋์ cert_study_app/demo_data/questions_seed.json๊ณผ static/question_assets/๋ฅผ ํฌํจํฉ๋๋ค. ์ฑ ์์ ์ DB๊ฐ ๋น์ด ์๊ฑฐ๋ ๊ธฐ์กด seed๊ฐ ์ค๋๋ ๊ฒฝ์ฐ seed ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ๋ฅผ ์ถ๊ฐ/๊ฐฑ์ ํฉ๋๋ค.
ํ์ฌ seed์๋ 321๋ฌธํญ, ๊ณตํต ์ง๋ฌธ ํฌํจ 36๋ฌธํญ, ์๋ฌธ ์ด๋ฏธ์ง, Yes/No ์ง์ ํ ๋ฌธ์ ๊ตฌ์กฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
seed๋ฅผ ๋ค์ ๋ง๋ค๋ฉด ๊ฒ์ฆ ๋ฆฌํฌํธ๋ ํจ๊ป ์์ฑ๋ฉ๋๋ค.
python scripts/export_hf_seed.py
์์ฑ ํ์ผ:
cert_study_app/demo_data/questions_seed.jsoncert_study_app/demo_data/questions_seed.report.json
๋ฆฌํฌํธ์์๋ ์ ์ฒด ๋ฌธํญ ์, ๊ณตํต ์ง๋ฌธ ํฌํจ ๋ฌธํญ ์, ์ ํ๋ณ ๊ฐ์, ์ค๋ณต ๋ฒํธ, ์ ๋ต ๋๋ฝ, ์ด๋ฏธ์ง ๋๋ฝ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
ํ๊ฒฝ ๋ณ์
๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ PostgreSQL์ ์ฌ์ฉํฉ๋๋ค.
DATABASE_URL=postgresql+pg8000://cert_study:cert_study@postgres:5432/cert_study
LLM๊ณผ ์๋ฒ ๋ฉ ๊ด๋ จ ํ๊ฒฝ ๋ณ์ ์์:
CERT_STUDY_LLM_PROVIDER=ollama
OLLAMA_MODEL=qwen2.5:14b
OLLAMA_FAST_MODEL=qwen3.5:9b
OLLAMA_VISUAL_MODEL=qwen3-vl:8b-instruct-q4_K_M
EMBEDDING_MODEL=BAAI/bge-m3
OLLAMA_BASE_URL=http://host.docker.internal:11434
์ด์ ๋ฐฐํฌ์์๋ ๋น๋ฐ๋ฒํธ์ API ์ ๋ณด๊ฐ ์ฝ๋์ ์ง์ ๋ค์ด๊ฐ์ง ์๋๋ก .env ๋๋ ์๋ฒ ๋น๋ฐ๊ฐ ๊ด๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฒ์ ์คํํ ๋๋ ์์ ํ์ผ์ ๋ณต์ฌํด์ ์์ํฉ๋๋ค.
cp .env.example .env
์ด์ ํ๊ฒฝ์์๋ ์ต์ํ ์๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์์ ๋ฐ๊พธ๋ ๊ฒ์ด ์ข์ต๋๋ค.
POSTGRES_PASSWORDDATABASE_URLAIRFLOW_API_PASSWORDAIRFLOW_ADMIN_PASSWORD
Oracle Cloud Ubuntu์ ๋ฐฐํฌํ๋ ค๋ ์ด์
ํฅํ ๋ฐฐํฌ ๋์์ Oracle Cloud Ubuntu ์๋ฒ๋ฅผ ๊ณํํ๊ณ ์์ต๋๋ค.
์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์ธ๋ถ์์ ์ ์ ๊ฐ๋ฅํ ํํ๋ก ์ด์ํด ๋ณผ ์ ์๋ค.
- Ubuntu ์๋ฒ๋ Docker ๊ธฐ๋ฐ ๋ฐฐํฌ ์๋ฃ๊ฐ ๋ง์ ํ์ตํ๊ธฐ ์ข๋ค.
- Streamlit, PostgreSQL, Airflow ๊ฐ์ ๊ตฌ์ฑ ์์๋ฅผ ํ ์๋ฒ์์ ์คํํ๊ธฐ ์ฝ๋ค.
- ํฌํธํด๋ฆฌ์ค ํ๋ก์ ํธ๋ก ์ค์ ๋ฐฐํฌ ๊ฒฝํ์ ๋จ๊ธธ ์ ์๋ค.
์์ ๋ฐฐํฌ ํ๋ฆ
- Oracle Cloud์์ Ubuntu ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค.
- ์๋ฒ์ Docker์ Docker Compose๋ฅผ ์ค์นํ๋ค.
- GitHub ์ ์ฅ์๋ฅผ ์๋ฒ์ cloneํ๋ค.
.envํ์ผ์ ์๋ฒ ํ๊ฒฝ์ ๋ง๊ฒ ์์ฑํ๋ค.docker compose up -d --build๋ก ์คํํ๋ค.- ๋ฐฉํ๋ฒฝ๊ณผ ๋ณด์ ๋ชฉ๋ก์์ ํ์ํ ํฌํธ๋ฅผ ์ฐ๋ค.
- ์ ์ ์ฃผ์๋ฅผ ํ์ธํ๋ค.
- ํ์ํ๋ฉด Nginx์ HTTPS๋ฅผ ์ถ๊ฐํ๋ค.
๋ฐฐํฌ ์ ์ ์ ๋ฆฌํ ๊ฒ
- ์ด์์ฉ ๋น๋ฐ๋ฒํธ๋ฅผ
.env๋ก ๋ถ๋ฆฌ - PostgreSQL ๋ฐ์ดํฐ ๋ฐฑ์ ๋ฐฉ์
- Chroma ์ธ๋ฑ์ค ์ฌ์์ฑ ๋ฐฉ์
- Airflow ๊ด๋ฆฌ์ ๊ณ์ ์ค์
- ์ ๋ก๋ ํ์ผ ์ ์ฅ ์์น
- ๋ก๊ทธ ๊ด๋ฆฌ
- HTTPS ์ ์ฉ ์ฌ๋ถ
python scripts/check_quality.pyํต๊ณผ ์ฌ๋ถ
ํ์ฌ ์ํ
ํ์ฌ๋ Docker Compose ๊ธฐ๋ฐ ๋ก์ปฌ ์คํ ๊ตฌ์กฐ๊ฐ ์ค์ฌ์ ๋๋ค. Oracle Cloud ๋ฐฐํฌ๋ ํฅํ ์งํํ ๊ณํ์ด๋ฉฐ, ๋ฐฐํฌ ์ ์ ํ๊ฒฝ ๋ณ์, ๋ฐ์ดํฐ ๋ณผ๋ฅจ, ๋ณด์ ์ค์ ์ ๋ ์ ๋ฆฌํด์ผ ํฉ๋๋ค.