Skip to content

Latest commit

Β 

History

History
145 lines (113 loc) Β· 3.96 KB

File metadata and controls

145 lines (113 loc) Β· 3.96 KB

Ye! Chef β€” Backend Server

μžμ·¨μƒμ„ μœ„ν•œ AI 기반 ν•Έμ¦ˆν”„λ¦¬ μš”λ¦¬ 보쑰 μ•±μ˜ Spring Boot λ°±μ—”λ“œ μ„œλ²„μž…λ‹ˆλ‹€.
λ ˆμ‹œν”Ό 사진을 올리면 OCR + GPT둜 단계λ₯Ό μžλ™ κ΅¬μ‘°ν™”ν•˜κ³ , μΉ΄λ©”λΌΒ·μŒμ„± μΈμ‹μœΌλ‘œ ν„°μΉ˜ 없이 μš”λ¦¬λ₯Ό μ•ˆλ‚΄ν•©λ‹ˆλ‹€.


기술 μŠ€νƒ

Java Spring Boot MySQL Docker GitHub Actions AWS

λΆ„λ₯˜ 기술
Language / Framework Java 17, Spring Boot
Database / ORM MySQL 8.0, Spring Data JPA
Infra Docker, Docker Compose, AWS EC2, AWS S3
CI/CD GitHub Actions
API λ¬Έμ„œ Swagger (SpringDoc)
External API OpenAI GPT API, Kakao OAuth2, Kakao 이미지 API
AI 연동 Python Flask μ„œλ²„ (PaddleOCR, YOLOv8, ResNet)

μ•„ν‚€ν…μ²˜

[GitHub Push]
      β”‚
      β–Ό
[GitHub Actions]  ──  Docker 이미지 λΉŒλ“œ
      β”‚
      β–Ό
[AWS EC2]  ──  Docker Compose
      β”œβ”€β”€ Spring Boot  (λ°±μ—”λ“œ API :8080)
      β”œβ”€β”€ MySQL 8.0
      └── Python Flask (AI μ„œλ²„ β€” OCR / 객체·행동 인식)
                            β”‚
                        [AWS S3]  ──  λ ˆμ‹œν”Ό 이미지 / 썸넀일

λ ˆμ‹œν”Ό μ—…λ‘œλ“œ 흐름

이미지 μ—…λ‘œλ“œ
  β†’ S3 원본 μ €μž₯
  β†’ Flask AI μ„œλ²„: PaddleOCR둜 ν…μŠ€νŠΈ μΆ”μΆœ
  β†’ GPT API: λ‹¨κ³„Β·μž¬λ£Œ JSON ꡬ쑰화
  β†’ Kakao 이미지 API: 썸넀일 μžλ™ μ €μž₯
  β†’ DB μ €μž₯ β†’ ν΄λΌμ΄μ–ΈνŠΈμ— λ ˆμ‹œν”Ό ID λ°˜ν™˜

κ΅¬ν˜„ λ‚΄μš©

인프라 Β· 배포

  • Dockerfile + Docker Compose둜 λ°±μ—”λ“œ / AI / DB / S3 ν™˜κ²½ 톡합 ꡬ성
  • GitHub Actions CI/CD β†’ AWS EC2 μžλ™ 배포 νŒŒμ΄ν”„λΌμΈ ꡬ좕
  • CORS μ„€μ •, Swagger REST API λ¬Έμ„œν™”

도메인 개발

  • JPA μ—”ν‹°ν‹° 섀계: Member, Recipe, Ingredient, RecipeStep, MemberRecipe, Image
  • BaseEntity μƒμ†μœΌλ‘œ createdAt / updatedAt / μ†Œν”„νŠΈ μ‚­μ œ 곡톡 처리
  • κ³΅κ°œΒ·λΉ„κ³΅κ°œ λ ˆμ‹œν”Ό ꡬ뢄, 즐겨찾기(isLiked), νŒŒμƒ λ ˆμ‹œν”Ό(originalRecipeId 자기참쑰)

μ™ΈλΆ€ API 연동

  • Kakao OAuth2 μ†Œμ…œ 둜그인 + JWT 인증 흐름 κ΅¬ν˜„
  • Kakao 이미지 API 연동 β†’ λŒ€ν‘œ 썸넀일 μžλ™ μ €μž₯
  • GPT API ν”„λ‘¬ν”„νŠΈ 섀계 β†’ μΆ”μΆœ ν…μŠ€νŠΈλ₯Ό λ‹¨κ³„Β·μž¬λ£Œ JSON으둜 ꡬ쑰화
  • Flask AI μ„œλ²„μ™€ OCR νŒŒμ΄ν”„λΌμΈ 연동

ν”„λ‘œμ νŠΈ ꡬ쑰

server/yechef/
β”œβ”€β”€ .github/              # GitHub Actions μ›Œν¬ν”Œλ‘œμš°
β”œβ”€β”€ yechef/
β”‚   └── src/
β”‚       └── main/java/    # 도메인별 νŒ¨ν‚€μ§€ (member, recipe, ingredient ...)
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ build.gradle
└── settings.gradle

둜컬 μ‹€ν–‰

1. .env 파일 생성

docker-compose.yml이 env_file: .envλ₯Ό μ°Έμ‘°ν•©λ‹ˆλ‹€.

# DB
DB_ROOT_PASSWORD=
DB_NAME=
SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/yechef
SPRING_DATASOURCE_USERNAME=
SPRING_DATASOURCE_PASSWORD=

# OpenAI
OPENAI_MODEL=
OPENAI_API_URL=

# Kakao
KAKAO_REST_API_KEY=

# AWS S3
AWS_ACCESS_KEY=
AWS_SECRET_KEY=
S3_BUCKET_NAME=

2. μ‹€ν–‰

docker-compose up --build
  • API μ„œλ²„: http://localhost:8080
  • Swagger: http://localhost:8080/swagger-ui/index.html

νŒ€μ›

μ—­ν•  이름
λ°±μ—”λ“œ (νŒ€μž₯) κΉ€μ†Œμ˜
λ°±μ—”λ“œ μ „μ„œμ§„
ν”„λ‘ νŠΈμ—”λ“œ 김지원
AI κΉ€ν˜œλ¦¬