개발 청사진 짜기
개발 청사진 짜기
1단계: 기본 인프라 구축 (1-2주)
- FastAPI 프로젝트 세팅
- 기본 디렉토리 구조 설정
- 환경 변수 설정 (.env)
- 의존성 관리 (requirements.txt)
- React 프로젝트 세팅
- Next.js + TypeScript 초기 설정
- 기본 레이아웃 구성
- API 통신 기본 설정
- PostgreSQL 데이터베이스 세팅
- 기본 테이블 설계
- DB 연결 설정
2단계: MVP - 최소 기능 구현 (2-3주)
- OCR 기능 구현
- Upstage OCR API 연동
- 이미지 업로드 UI
- 텍스트 추출 테스트
- 기본 피드백 시스템
- Chat API 연동
- 간단한 프롬프트 설계
- 기본적인 피드백 UI
3단계: 사용자 관리 시스템 (1-2주)
- 회원가입/로그인 기능
- JWT 인증 구현
- 사용자 DB 연동
- 인증 UI 구현
- 기본 마이페이지
- 학습 이력 조회
- 간단한 프로필 관리
4단계: 학습 관리 시스템 고도화 (2-3주)
- Solar Teacher 핵심 로직 구현
- LangChain 연동
- 프롬프트 체인 설계
- 피드백 생성 로직 고도화
- 학습 데이터 관리
- 피드백 로그 저장
- 학습 진도 추적
- 이해도 평가 기본 로직
5단계: 분석 및 개선 기능 (2주)
- Embeddings 구현
- 유사 문제 추천
- 개념 연관성 분석
- Groundedness 체크
- 피드백 신뢰도 검증
- 품질 관리 시스템
6단계: UI/UX 개선 (2주)
- 대시보드 구현
- 학습 통계 시각화
- 진도율 표시
- 반응형 디자인
- 모바일 대응
- UI 애니메이션
7단계: 시스템 안정화 (1-2주)
- 에러 처리
- 예외 상황 핸들링
- 로깅 시스템
- 성능 최적화
- API 응답 속도 개선
- 캐싱 구현
8단계: 베타 테스트 및 피드백 (1-2주)
- 테스트 사용자 모집
- 피드백 수집 및 개선
- 버그 수정
총 예상 개발 기간: 12-16주
각 단계별 중요 체크포인트:
- MVP 단계에서 OCR과 Chat이 제대로 작동하는지
- 사용자 데이터가 안전하게 저장/관리되는지
- Solar Teacher가 의미 있는 피드백을 생성하는지
- 시스템이 안정적으로 작동하는지
우선 1-3단계까지 진행하면서 기본 기능을 검증하고, 그 후에 4-8단계를 진행하는 것이 좋을 것 같습니다.
어, 음 너무길다. 난 한달밖에 없는데
- 백엔드 배포 (AWS EC2 사용):
bashCopy# 1. EC2 인스턴스 설정
- Ubuntu Server 생성
- Security Group: 8000번 포트 개방 (FastAPI용)
- PostgreSQL용 5432 포트 개방
# 2. PostgreSQL 설치 및 설정
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql
sudo -u postgres psql
CREATE DATABASE solar_db;
CREATE USER solar_user WITH PASSWORD 'solar1234';
GRANT ALL PRIVILEGES ON DATABASE solar_db TO solar_user;
# 3. Python 환경 설정
sudo apt install python3-pip
git clone https://github.com/your-repo/project.git
cd project/backend
pip install -r requirements.txt
# 4. 환경 변수 설정
cp .env.example .env
# .env 파일 수정하여 실제 값 입력
# 5. Gunicorn으로 서버 실행
pip install gunicorn
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker
- 프론트엔드 배포 (Vercel 사용):
bashCopy# 1. Vercel CLI 설치
npm install -g vercel
# 2. 프로젝트 최적화
cd frontend
npm run build
# 3. Vercel로 배포
vercel
- 도메인 및 SSL 설정:
bashCopy# 1. 도메인 구매 (예: AWS Route 53)
# 2. SSL 인증서 설정 (Let's Encrypt)
sudo apt install certbot
sudo certbot --nginx -d yourdomain.com
- NGINX 설정 (백엔드용):
nginxCopyserver {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
- 환경 변수 수정:
bashCopy# frontend/.env.production
NEXT_PUBLIC_API_URL=https://api.yourdomain.com
# backend/.env
DATABASE_URL=postgresql://solar_user:solar1234@localhost:5432/solar_db
CORS_ORIGINS=https://yourdomain.com
- 배포 자동화 (GitHub Actions):
yamlCopy# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: $
username: $
key: $
script: |
cd project
git pull
cd backend
pip install -r requirements.txt
sudo systemctl restart gunicorn
- 모니터링 설정:
bashCopy# Prometheus + Grafana 설치
sudo apt install prometheus
sudo apt install grafana
# FastAPI 메트릭스 추가
pip install prometheus-fastapi-instrumentator
- 백업 설정:
bashCopy# PostgreSQL 자동 백업 스크립트
#!/bin/bash
BACKUP_DIR="/backup"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
pg_dump solar_db > $BACKUP_DIR/solar_db_$TIMESTAMP.sql
원래 이렇게 하려다가 테스트만 해보는건데 너무 귀찮을 것 같아 간소화해서 테스트해보기로 했다.