πŸ”§ λ°±μ—”λ“œ 개발 κ°€μ΄λ“œ

살가이 ν”„λ‘œμ νŠΈμ˜ λ°±μ—”λ“œ μ„œλ²„λŠ” FastAPI ν”„λ ˆμž„μ›Œν¬λ₯Ό 기반으둜 κ΅¬μΆ•λ˜μ—ˆμœΌλ©°, 라즈베리파이, LLM μ„œλ²„, ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Όμ˜ μ•ˆμ •μ μΈ 톡신을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€. μ‚¬μš©μž 등둝, 볡약 기둝 μ €μž₯, μŠ€μΌ€μ€„ 기반 μ•Œλ¦Ό μ œμ–΄, μŒμ„± ν…μŠ€νŠΈ 전달 λ“± λ‹€μ–‘ν•œ κΈ°λŠ₯을 API λ‹¨μœ„λ‘œ μ²˜λ¦¬ν•˜λ©°, λͺ¨λ“  μ²˜λ¦¬λŠ” κ²½λŸ‰ν™”λœ ꡬ쑰 λ‚΄μ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜ν–‰λ©λ‹ˆλ‹€.


βœ… μ„œλ²„ μ•„ν‚€ν…μ²˜

  • ν”„λ ˆμž„μ›Œν¬: FastAPI
  • 배포 ν™˜κ²½: AWS EC2 (Ubuntu 22.04 LTS κΈ°μ€€)
  • ν”„λ‘œμ„ΈμŠ€ 관리: Node.js 기반의 PM2 ν™œμš©
  • λ°μ΄ν„°λ² μ΄μŠ€: SQLite (ν…ŒμŠ€νŠΈμš©, ν–₯ν›„ PostgreSQL ν™•μž₯ κ°€λŠ₯)

API μ„œλ²„λŠ” /api둜 μ‹œμž‘λ˜λŠ” RESTful λΌμš°νŒ… ꡬ쑰λ₯Ό λ”°λ₯΄λ©°, μ£Όμš” κΈ°λŠ₯λ³„λ‘œ λΌμš°ν„°κ°€ λΆ„λ¦¬λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.


πŸ” 배포 및 μžλ™ν™” μ›Œν¬ν”Œλ‘œμš°

  • GitHub Actions λ˜λŠ” μˆ˜λ™ 방식 λͺ¨λ‘ 지원
  • main 브랜치둜 μ½”λ“œκ°€ push되면, EC2 μ„œλ²„μ—μ„œ μžλ™μœΌλ‘œ git pull β†’ pm2 restart μˆœμ„œλ‘œ μ‹€ν–‰
  • deploy-cicd.yml 슀크립트둜 λ‹€μŒμ„ μˆ˜ν–‰:
    1. μ €μž₯μ†Œ pull
    2. λ³€κ²½λœ μ˜μ‘΄μ„± μ„€μΉ˜
    3. μ„œλ²„ ν”„λ‘œμ„ΈμŠ€ μž¬μ‹œμž‘ (pm2 기반)

πŸš€ μ‹€ν–‰ 방식

1. FastAPI μ„œλ²„ μ‹€ν–‰

uvicorn main:app --host 0.0.0.0 --port 8000
#λ˜λŠ”

배포 ν™˜κ²½μ—μ„œλŠ” pm2둜 μ‹€ν–‰ν•˜λ©° λ°±κ·ΈλΌμš΄λ“œ μœ μ§€ 및 μžλ™ μž¬μ‹œμž‘μ„ 보μž₯ν•©λ‹ˆλ‹€.

2. PM2 관리

pm2 start "python main.py" --name main
pm2 restart main
pm2 logs main
  • 둜그 파일 μœ„μΉ˜: ~/.pm2/logs/main-out.log
  • μ—λŸ¬ 둜그: ~/.pm2/logs/main-error.log

πŸ” 인증 및 μ‚¬μš©μž 관리

  • κ΄€λ¦¬μž, 보호자, 일반 μ‚¬μš©μžλ‘œ κ΅¬λΆ„λœ 인증 κ΅¬μ‘°λŠ” μΆ”ν›„ OAuth λ˜λŠ” JWT 기반으둜 ν™•μž₯ μ˜ˆμ •
  • ν˜„μž¬λŠ” 둜그인 μ‹œμ—λ§Œ 토큰 기반 검증 λ‘œμ§μ„ μ‚¬μš© 쀑 (개발 편의 λͺ©μ )

πŸ“Œ μœ μ§€λ³΄μˆ˜ μ „λž΅

  • EC2 μ„œλ²„λŠ” ufw λ°©ν™”λ²½μœΌλ‘œ 포트λ₯Ό μ œν•œν•˜κ³ , API μ„œλ²„λŠ” 8000 포트만 외뢀에 곡개
  • SSH 접속은 κ³΅κ°œν‚€ 기반 인증 μ‚¬μš©
  • μΆ”ν›„μ—λŠ” Nginx λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ μ„€μ • 및 HTTPS 적용 μ˜ˆμ •

πŸ”š 마무리

살가이 λ°±μ—”λ“œ μ„œλ²„λŠ” λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€μ™€μ˜ 연동을 μ „μ œλ‘œ μ„€κ³„λœ κ²½λŸ‰ν™”λ˜κ³  μœ μ—°ν•œ REST API μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
FastAPI 기반 κ΅¬μ‘°λŠ” 비동기 μ²˜λ¦¬μ™€ λͺ¨λ“ˆ ν™•μž₯에 강점을 κ°€μ§€λ©°, EC2와 PM2λ₯Ό 톡해 높은 μ•ˆμ •μ„±κ³Ό 운영 νš¨μœ¨μ„±μ„ ν™•λ³΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
AI μΆ”λ‘ , μŒμ„± 데이터 μˆ˜μ§‘, 볡약 μŠ€μΌ€μ€„ 관리 λ“± λ‹€μ–‘ν•œ κΈ°λŠ₯이 ν•˜λ‚˜μ˜ λ°±μ—”λ“œ μ‹œμŠ€ν…œμœΌλ‘œ ν†΅ν•©λ˜μ–΄ 있으며, μΆ”ν›„ μ‚¬μš©μž 인증/λ³΄μ•ˆ κ°•ν™”, 데이터 μ‹œκ°ν™” κΈ°λŠ₯도 지속 ν™•μž₯될 μ˜ˆμ •μž…λ‹ˆλ‹€. ```