AI๋ฅผ ํ์ฉํ ์์ฌ๋ฃ ๊ด๋ฆฌ ๋ฐ ๋ ์ํผ ์ถ์ฒ ์๋น์ค
๋์ฅ๊ณ ์ ์์ฌ๋ฃ๋ฅผ ๋ฑ๋กํ๋ฉด, ๋ณด์ ์ฌ๋ฃยท์๋น๊ธฐํยท๊ฐ์ธ ์์ต๊ด์ ๋ฐํ์ผ๋ก AI๊ฐ ๋ง์ถค ๋ ์ํผ๋ฅผ ์ถ์ฒํด ์ฃผ๋ ์น ์๋น์ค์ ๋๋ค.
๋ฐ์ ์ผ์ ์์์ "๋จ์ ์์ฌ๋ฃ๋ก ๋ญ ํด ๋จน์ง?"๋ผ๋ ๊ณ ๋ฏผ๊ณผ, ๊ด๋ฆฌ๋์ง ์๊ณ ๋ฒ๋ ค์ง๋ ์์ฌ๋ฃ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์ํ ํ๋ก์ ํธ์ ๋๋ค.
Algorithm Chef๋ ๋ค์ ์ธ ๊ฐ์ง ํต์ฌ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์์ฌ๋ฃ ์ ๋ ฅ ์๋ํ โ OCR๋ก ์์์ฆ์ ์ค์บํ๊ฑฐ๋ ์์ฑ์ผ๋ก ์ ๋ ฅํด, ์ผ์ผ์ด ํ์ดํํ์ง ์์๋ ๋์ฅ๊ณ ๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค.
- ๊ฐ์ธํ๋ ๋ ์ํผ ์ถ์ฒ โ ๋ณด์ ์์ฌ๋ฃ, ์๋น๊ธฐํ ์๋ฐ ์ฌ๋ฃ, ์ฌ์ฉ์ ์ฑํฅ ์ค๋ฌธ์ ์ข ํฉํด AI๊ฐ ๋ฉ๋ด๋ฅผ ์ถ์ฒํฉ๋๋ค.
- ์์ฌ๋ฃ ๊ด๋ฆฌ + ๋๋ โ ๋์ฅ๊ณ ์ฌ๊ณ ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ๋จ๋ ์ฌ๋ฃ๋ ๋๋ ๊ฒ์ํ์ ํตํด ์ด์๊ณผ ๊ณต์ ํฉ๋๋ค.
- OCR ์์์ฆ ์ธ์ โ ๋งํธ ์์์ฆ ์ฌ์ง์ ์ ๋ก๋ํ๋ฉด ํ๋ชฉ์ ์๋์ผ๋ก ์ถ์ถํด ๋์ฅ๊ณ ์ ๋ฑ๋กํฉ๋๋ค.
- ์์ฑ ์ธ์(STT) ๋ฑ๋ก โ ๋ง๋ก ์์ฌ๋ฃ๋ฅผ ๋ถ๋ฌ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ์๋ ๋ฑ๋ก / ์์ โ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์ฌ๋ฃ์ ์๋, ๋ฑ๋ก์ผยท์๋น๊ธฐํ์ ์ง์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ณด์ ์์ฌ๋ฃ ๊ธฐ๋ฐ ์ถ์ฒ โ ํ์ฌ ๋์ฅ๊ณ ์ ์๋ ์ฌ๋ฃ๋ก ๋ง๋ค ์ ์๋ ๋ฉ๋ด๋ฅผ ์ถ์ฒํฉ๋๋ค.
- ์๋น๊ธฐํ ์๋ฐ ์ฌ๋ฃ ์ฐ์ ์ถ์ฒ โ ๋นจ๋ฆฌ ์๋นํด์ผ ํ๋ ์ฌ๋ฃ๋ฅผ ํ์ฉํ๋ ๋ ์ํผ๋ฅผ ์ฐ์ ์ ์ํด ์์๋ฌผ ๋ญ๋น๋ฅผ ์ค์ ๋๋ค.
- ์ฌ์ฉ์ ์ฑํฅ ๊ธฐ๋ฐ ์ถ์ฒ โ ๊ฐ์ ์ ์ ๋ ฅํ ์์ต๊ดยท์ ํธ ์ค๋ฌธ์ ๋ฐ์ํ ๋ง์ถค ์ถ์ฒ์ ์ ๊ณตํฉ๋๋ค.
- ๋ ์ํผ ์ฌ์ถ์ฒ / ์์ โ ์ถ์ฒ ๊ฒฐ๊ณผ๊ฐ ๋ง์์ ๋ค์ง ์์ผ๋ฉด ๋ค์ ์ถ์ฒ๋ฐ๊ฑฐ๋, ์กฐ๊ฑด์ ๋ฐ๊ฟ ๋ ์ํผ๋ฅผ ๋ค๋ฌ์ ์ ์์ต๋๋ค.
- ๋ ์ํผ ์์ธ ๋ณด๊ธฐ โ ์ถ์ฒ๋ ๋ฉ๋ด์ ์ฌ๋ฃ, ์กฐ๋ฆฌ ์์๋ฅผ ์์ธ ํ์ด์ง์์ ํ์ธํฉ๋๋ค.
- ์นดํ ๊ณ ๋ฆฌ(์ก๋ฅยท์ฑ์ยท์ ์ ํ ๋ฑ)๋ณ ์ฌ๊ณ ํํฉ์ ํ๋์ ํ์ธํฉ๋๋ค.
- ๋ฑ๋ก์ผยท์๋น๊ธฐํ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฃ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ๋จ๋ ์์ฌ๋ฃ๋ฅผ ๋๋ ๊ธ๋ก ๋ฑ๋กํ๊ณ , ๋๊ธ๋ก ์ํตํ ์ ์์ต๋๋ค.
- ๊ธ ์์ฑยท์์ ยท์ญ์ ๋ฐ ๋๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ํ์๊ฐ์ ๋ฐ ์ฑํฅ ์ ๋ณด ๋ฑ๋ก โ ๊ฐ์ ์ ์์ต๊ดยท๊ฑด๊ฐ ๋ชฉํ ๋ฑ ์ฑํฅ ์ค๋ฌธ์ ํจ๊ป ์์งํฉ๋๋ค.
- ์ธ์ฆ/์ธ๊ฐ โ Spring Security + JWT ๊ธฐ๋ฐ ๋ก๊ทธ์ธ ๋ฐ ํ ํฐ ์ธ์ฆ.
- ์์ด๋ ์ฐพ๊ธฐ / ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ โ ์ด๋ฉ์ผ์ ํตํ ๊ณ์ ๋ณต๊ตฌ.
- ์์ ๋น๋ฐ๋ฒํธ ๋ฐ๊ธ โ ๋ฉ์ผ๋ก ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์กํ๊ณ ๋ณ๊ฒฝํ๋๋ก ์๋ด.
- ๋ง์ดํ์ด์ง โ ๋ด ์ ๋ณด, ์ฑํฅ ์ค์ , ์๋ฆผ ์ค์ ๊ด๋ฆฌ.
- Web Push ์๋ฆผ โ ์๋น๊ธฐํ ์๋ฐ ๋ฑ ์ฃผ์ ์ด๋ฒคํธ๋ฅผ ํธ์๋ก ์๋ดํฉ๋๋ค.
| ๊ตฌ๋ถ | ๊ธฐ์ |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 3.5.7 |
| Build | Gradle |
| Persistence | Spring Data JPA (Hibernate) + JDBC |
| Security | Spring Security, JWT (jjwt 0.11.5) |
| Validation | Spring Boot Starter Validation |
| Spring Boot Starter Mail (๊ณ์ ๋ณต๊ตฌยท์์ ๋น๋ฐ๋ฒํธ ๋ฐ์ก) | |
| Database | MySQL |
| Test | JUnit 5, Spring Security Test |
| ๊ตฌ๋ถ | ๊ธฐ์ |
|---|---|
| Library | React |
| ์์ฑ ์ ๋ ฅ | Web Speech API |
| ํธ์ | Web Push API |
| API | ์ฉ๋ |
|---|---|
| Gemini API | AI ๋ ์ํผ ์ถ์ฒ / ํ๋กฌํํ |
| Google Cloud API | OCR(์์์ฆ ์ธ์) ๋ฑ |
| FCM | ํธ์ ์๋ฆผ |
- Docker
- GitHub Actions (CI/CD)
- Git / GitHub (ํ์ )
- Notion (API ๋ช ์ธยท๋ฌธ์ํ)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Client โ โ Backend Server โ
โ React โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Web Speech API (์์ฑ ์
๋ ฅ) โ HTTP โ โ Controller Layer @RestController โ โ
โ Web Push API (ํธ์ ์๋ฆผ) โ โโโโโโโบ โ โ HTTP ์์ฒญ ์ฒ๋ฆฌ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ REST โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ โ Service Layer @Service โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง, ์ธ๋ถ API ํต์ โ โ
โ External APIs โ API โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ Gemini API โ โโโโโโโบ โ โ Data Access Layer @Repository โ โ
โ FCM โ CALL โ โ DB ์ฐ๊ฒฐ, JPA ๋ฐ SQL ๋ฒ์ญ โ โ
โ Google Cloud API โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ Persistence Framework โ โ
โ โ JPA(Hibernate) + JDBC SQL ์คํ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโผโโโโโโโ
โ MySQL โ
โโโโโโโโโโโโโโโ
๊ณ์ธตํ ์ํคํ
์ฒ(Layered Architecture)๋ฅผ ๋ฐ๋ฆ
๋๋ค. Controller โ Service โ Repository โ Persistence ์์ผ๋ก ์ฑ
์์ ๋ถ๋ฆฌํด, ๊ฐ ๊ณ์ธต์ด ์์ ์ ์ญํ ์๋ง ์ง์คํ๋๋ก ์ค๊ณํ์ต๋๋ค.
AlgorithmChef_Backend
โโโ gradle/wrapper
โโโ src
โ โโโ main
โ โ โโโ java/com/webservice/algorithmchef
โ โ โ โโโ (๋๋ฉ์ธ๋ณ ๊ณ์ธต ๊ตฌ์ฑ: controller / service / repository / domain)
โ โ โโโ resources
โ โ โโโ application.yml # DB, JWT, Mail, ์ธ๋ถ API Key ๋ฑ ํ๊ฒฝ ์ค์
โ โโโ test
โโโ build.gradle
โโโ settings.gradle
โโโ gradlew
โโโ gradlew.bat
Spring Boot(Gradle) ๊ธฐ๋ฐ ํ๋ก์ ํธ์ด๋ฉฐ, group์
com.webservice.algorithmchef์ ๋๋ค. ์ธ๋ถ ํจํค์ง ๊ตฌ์ฑ์ ์์ค ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
| ๊ธฐ๋ฅ | Method | Endpoint |
|---|---|---|
| OCR ์์์ฆ ์ ๋ก๋ | POST |
/api/ocr/upload |
| ์์ฑ ์ธ์(STT) | POST |
/api/stt |
| ๋ ์ํผ ์ฌ์ถ์ฒ | POST |
/recipe/recommendation/retry |
| ๋ ์ํผ ์์ | POST |
/recipe/revise |
์ ์ฒด API ๋ช ์ธ๋ Notion ๋ฌธ์๋ก ๊ด๋ฆฌ๋ฉ๋๋ค.
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/AlgorithmChef/AlgorithmChef_Backend.git
cd AlgorithmChef_Backend
# 2. ํ๊ฒฝ ์ค์
# src/main/resources/application.yml ์ ์๋ ๊ฐ์ ์ค์ ํ์ธ์.
# - MySQL ์ ์ ์ ๋ณด (url, username, password)
# - JWT secret key
# - Mail(SMTP) ๊ณ์ ์ ๋ณด
# - ์ธ๋ถ API Key (Gemini, Google Cloud ๋ฑ)
# 3. ๋น๋
./gradlew build
# 4. ์คํ
./gradlew bootRun์๊ตฌ ์ฌํญ: Java 21, MySQL
- API ํธ์ถ ๋ก์ง ์ต์ ํ โ ๋ค์ํ ์ธ๋ถ API ๊ฐ ํธ์ถ ๋ก์ง์ ๋ ์์ ์ ์ผ๋ก ์ ๋ฆฌ
- ๋ฏธ๊ตฌํ ๊ธฐ๋ฅ ๊ตฌํ โ ์ผ์ ์ ๋ฏธ์ฒ ๊ตฌํํ์ง ๋ชปํ ๊ธฐ๋ฅ ๋ณด์
- ํ๋ก ํธ์๋ UI ๊ฐ์ โ ๋ ์ํผ ์ถ์ฒ ์์ญ ๋ฑ UX ๊ณ ๋ํ
ํ์ฅ ๋ก๋๋งต
- Phase 1. ๊ฐ์ธํ ์๊ณ ๋ฆฌ์ฆ โ ์ถ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ธ ๋ง์ถค ์ถ์ฒ ๊ณ ๋ํ
- Phase 2. ์์น๊ธฐ๋ฐ ์ฑํ ์๋น์ค โ ๊ทผ์ฒ ์ด์๊ณผ ์์ฌ๋ฃ ๋๋์ ์ํ ์ฑํ ๊ธฐ๋ฅ
- Phase 3. ํฌ์ค์ผ์ด ์ฐ๋ โ ์์ต๊ด ํต๊ณ ๊ธฐ๋ฐ ๊ฑด๊ฐ ๊ด๋ฆฌ ์ฐ๋
| ์ญํ | ์ด๋ฆ |
|---|---|
| ํ์ฅ | ๊น๋ถ์ฐ (์ปดํจํฐ๊ณตํ๋ถ) |
| ํ์ | ์ค๊ฑด์ฐ, ์ด์คํ, ๊นํจ์ฐฌ |