๋ฐ๋ ค๋๋ฌผ ๋ณดํธ์๋ฅผ ์ํ ๋๋ฌผ๋ณ์ ํ์, ์์์ฆ ๊ธฐ๋ฐ ๋ฆฌ๋ทฐ, ์ปค๋ฎค๋ํฐ, ์๋ฆผ, ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Petbulance ๋ฐฑ์๋ ์๋ฒ์
๋๋ค.
ํ ํ๋ก์ ํธ์์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฐธ์ฌํ์ผ๋ฉฐ, ๋ณ์ ๊ฒ์/๋งค์นญ, ๋ฆฌ๋ทฐ ๋๋ฉ์ธ, ์ธ์ฆ/๊ถํ, ๊ด๋ฆฌ์ ๊ธฐ๋ฅ, ์ด์ ๋ชจ๋ํฐ๋ง ์์ญ์ ์ค์ฌ์ผ๋ก ๊ตฌํ๊ณผ ๋ฆฌํฉํฐ๋ง์ ์งํํ์ต๋๋ค.
Petbulance๋ ๋ณดํธ์๊ฐ ๋ฐ๋ ค๋๋ฌผ์๊ฒ ๋ง๋ ๋ณ์์ ์ฐพ๊ณ , ์ค์ ์ง๋ฃ ๊ฒฝํ์ ๋ฆฌ๋ทฐ๋ก ๋จ๊ธธ ์ ์๋๋ก ๋๋ ์๋น์ค์ ๋๋ค.
- ์์น ๊ธฐ๋ฐ ๋๋ฌผ๋ณ์ ๊ฒ์ ๋ฐ ๋งค์นญ
- ์์์ฆ ์ด๋ฏธ์ง ๊ธฐ๋ฐ ๋ฆฌ๋ทฐ ์์ฑ ํ๋ฆ
- ๋ณ์ ์์ธ, ๋ณ์ ์นด๋, ๋ฆฌ๋ทฐ ํํฐ๋ง
- ์ปค๋ฎค๋ํฐ ๊ฒ์๊ธ, ๋๊ธ, ์ข์์
- ์์ ๋ก๊ทธ์ธ๊ณผ JWT ์ธ์ฆ
- ๊ด๋ฆฌ์์ฉ ํ์/๋ณ์/๋ฆฌ๋ทฐ/๊ณต์ง/๋ฌธ์ ๊ด๋ฆฌ
- FCM ์๋ฆผ, S3 ์ด๋ฏธ์ง ์ ๋ก๋, AI ์ง๋จ API ์ฐ๋
ํ ํ๋ก์ ํธ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ค ํ ๋ช ์ผ๋ก ์ฐธ์ฌํ์ต๋๋ค.
| ์์ญ | ์์ ๋ด์ฉ |
|---|---|
| ๋ณ์ ๋๋ฉ์ธ | ๋ณ์ ๊ฒ์, ์์ธ ์กฐํ, ์นด๋ ์กฐํ, ์์น ๊ธฐ๋ฐ ๋งค์นญ API ๊ฐ์ |
| ๋ฆฌ๋ทฐ ๋๋ฉ์ธ | ์์์ฆ ๋ฆฌ๋ทฐ, ๋ฆฌ๋ทฐ ๊ฒ์/ํํฐ, ๋ณ์๋ณ ๋ฆฌ๋ทฐ ์ปค์ ํ์ด์ง๋ค์ด์ , ๋ฆฌ๋ทฐ ์ข์์ ๊ธฐ๋ฅ |
| ์ธ์ฆ/๊ถํ | JWT ๋ง๋ฃ ์ฒ๋ฆฌ, ํ ํฐ ์์ธ ์ฒ๋ฆฌ, ์์ ๋ก๊ทธ์ธ ์ฐ๋ ํ๋ฆ ๊ฐ์ |
| ๊ด๋ฆฌ์ ๊ธฐ๋ฅ | ํ์ ์ ์ฌ, ๋ณ์ ๊ด๋ฆฌ, ๋ฆฌ๋ทฐ ํ์ฑ/๋นํ์ฑ, ์ฝ๊ด ์ ์ฉ ๊ธฐ๋ฅ ๊ฐ์ |
| ์ด์ ํ์ง | Actuator, Prometheus, Sentry ๊ธฐ๋ฐ ๊ด์ธก ํฌ์ธํธ ์ถ๊ฐ |
| ํ ์คํธ | ๋ฆฌ๋ทฐ ์๋น์ค ๋จ์ ํ ์คํธ ๋ฐ ์ขํ ์ฒ๋ฆฌ ๋ก์ง ๊ฒ์ฆ |
| ์์ญ | ๊ธฐ์ |
|---|---|
| Backend | Java 17, Spring Boot 3.5, Spring Web, Spring Security |
| Persistence | Spring Data JPA, QueryDSL, MySQL, H2 Test DB |
| Cache | Redis |
| Auth | JWT, OAuth2 Client, Kakao/Naver/Google Login |
| File / Cloud | AWS S3, AWS Lambda SDK |
| Geo | Hibernate Spatial, JTS, Lucene Spatial Extras |
| AI / External | Gemini API, WebClient |
| Notification | Firebase Admin SDK, FCM |
| Docs / Ops | Springdoc OpenAPI, Actuator, Prometheus, Sentry |
| Deployment | Docker Compose, Blue/Green compose files |
์ฌ์ฉ์์ ํ์ฌ ์์น, ๋๋ฌผ ์ข ๋ฅ, ํํฐ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ๋ณ์ ๋ชฉ๋ก์ ์กฐํํฉ๋๋ค.
- ๋ณ์ ๋ชฉ๋ก ๊ฒ์:
GET /hospitals - ๋ณ์ ์์ธ ์กฐํ:
GET /hospitals/{hospitalId} - ๋ณ์ ์นด๋ ์กฐํ:
GET /hospitals/card/{hospitalId} - ์์น ๊ธฐ๋ฐ ๋ณ์ ๋งค์นญ:
GET /hospitals/matching - ๋ณ์ ์์ธ ๋งค์นญ ์ ๋ณด:
GET /hospitals/{hospitalId}/matching
QueryDSL ๊ธฐ๋ฐ ๋์ ์กฐ๊ฑด๊ณผ ์ขํ ์ ๋ณด๋ฅผ ํ์ฉํด ํํฐ๋ง, ๊ฑฐ๋ฆฌ ๊ณ์ฐ, ์์ธ ์ ๋ณด๋ฅผ ์กฐํฉํฉ๋๋ค.
์ง๋ฃ ์์์ฆ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ , ๋ณ์ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๋ ํ๋ฆ์ ์ ๊ณตํฉ๋๋ค.
- ์์์ฆ ์ด๋ฏธ์ง ์ธ์:
POST /receipts - ๋ณ์๋ช
๊ฒ์:
GET /receipts/{hospitalName} - ๋ฆฌ๋ทฐ ๊ฒ์:
GET /receipts/search/{value} - ๋ฆฌ๋ทฐ ํํฐ๋ง:
GET /receipts/filter - ๋ณ์๋ณ ๋ฆฌ๋ทฐ ์ปค์ ํ์ด์ง๋ค์ด์
:
GET /receipts/reviews/{hospitalId} - ๋ฆฌ๋ทฐ ์์ฑ/์์ /์ญ์
- ๋ฆฌ๋ทฐ ์ข์์/์ข์์ ์ทจ์
- ๋ด ๋ฆฌ๋ทฐ ์กฐํ
๋ฆฌ๋ทฐ ๋ชฉ๋ก์ cursor ๊ธฐ๋ฐ์ผ๋ก ์กฐํํ๋ฉฐ, ์ ๋ ฌ ๊ธฐ์ค๊ณผ ์ด๋ฏธ์ง ๋ฆฌ๋ทฐ ์ฌ๋ถ๋ฅผ ๋ถ๋ฆฌํด ์์ฒญํ ์ ์์ต๋๋ค.
- JWT ๊ธฐ๋ฐ access token ๋ฐ๊ธ/๊ฒ์ฆ
- refresh token Redis ์ ์ฅ
- Kakao, Naver, Google OAuth2 ๋ก๊ทธ์ธ
- ๋๋ค์ ์ค์ ๊ณผ ํ๋กํ ์์
- ์์ ๊ณ์ ์ฐ๊ฒฐ/ํด์
- ์๋ฆผ ์ค์ ๊ด๋ฆฌ
- ํ์ ํํด์ ๊ถํ ์กฐํ
- ๊ฒ์๊ธ ์์ฑ, ์กฐํ, ์์ , ์ญ์
- ๊ฒ์๊ธ ๊ฒ์
- ๋๊ธ ์์ฑ/์กฐํ/์์ /์ญ์
- ๊ฒ์๊ธ ์ข์์
- ์ต๊ทผ ๊ฒ์์ด์ ์ต๊ทผ ์กฐํ ๋ณ์ ๊ด๋ฆฌ
- ์ ๊ณ ๊ธฐ๋ฅ
๊ด๋ฆฌ์๋ ๋ณ๋ API๋ฅผ ํตํด ์๋น์ค ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ํ์ ๊ฒ์, ์์ธ ์กฐํ, ์ญ์
- ๋ฆฌ๋ทฐ/์ปค๋ฎค๋ํฐ ์ ์ฌ ๋ฐ ๋ณต๊ตฌ
- ๋ณ์ ๋ฑ๋ก, ์กฐํ, ์ญ์
- ๋ฆฌ๋ทฐ ํ์ฑ/๋นํ์ฑ ๊ด๋ฆฌ
- ๊ณต์ง, ๋ฌธ์, ์ ๊ณ ๊ด๋ฆฌ
- ์ฑ ๋ฒ์ , ์ง์ญ, ํ์ข , ์ฝ๊ด ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ๋์๋ณด๋ ์งํ ์กฐํ
| Domain | Base Path |
|---|---|
| Auth | /auth |
| Users | /users |
| Hospitals | /hospitals |
| Reviews / Receipts | /receipts |
| Posts | /posts |
| Comments | /comments |
| Notices | /notices |
| QnA | /qna |
| Reports | /reports |
| Notifications | /notifications |
| Admin | /admin/** |
| AI | /ai |
src/main/java/com/example/Petbulance_BE
โโโ global
โ โโโ common # ๊ณตํต ์๋ต, ์์ธ, S3, ์ธ์ฆ ๊ณตํต ๋ก์ง
โ โโโ config # Redis, QueryDSL, WebClient ์ค์
โ โโโ filter # JWT / Logout filter
โ โโโ firebase # FCM ์ค์ ๋ฐ ๋ฐ์ก
โ โโโ oauth2 # OAuth2 provider response ์ฒ๋ฆฌ
โ โโโ security # Spring Security ์ค์
โ โโโ util
โโโ domain
โโโ admin # ๊ด๋ฆฌ์ ๊ธฐ๋ฅ
โโโ ai # AI ์ง๋จ API
โโโ hospital # ๋ณ์ ๊ฒ์/์์ธ/๋งค์นญ
โโโ review # ์์์ฆ ๋ฆฌ๋ทฐ
โโโ post/comment # ์ปค๋ฎค๋ํฐ
โโโ user/terms # ์ฌ์ฉ์์ ์ฝ๊ด
โโโ notification # ์๋ฆผ
โโโ dashboard # ๊ด๋ฆฌ์ ๋์๋ณด๋
- Java 17
- MySQL
- Redis
./gradlew bootRun./gradlew testdocker compose -f docker-compose-blue.yml up -d
docker compose -f docker-compose-green.yml up -d- Actuator endpoint์ Prometheus registry๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ์์งํฉ๋๋ค.
- Sentry๋ฅผ ํตํด ๋ฐํ์ ์์ธ๋ฅผ ์ถ์ ํฉ๋๋ค.
- Blue/Green compose ํ์ผ์ ๋ถ๋ฆฌํด ๋ฐฐํฌ ์ ํ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
Petbulance-BE๋ ์์น ๊ธฐ๋ฐ ๊ฒ์, ๋ฆฌ๋ทฐ, ์ธ์ฆ, ๊ด๋ฆฌ์ ๊ธฐ๋ฅ์ด ํ ์๋น์ค ์์์ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ ๋ฐฑ์๋ ํ๋ก์ ํธ์
๋๋ค.
ํนํ ๋ณ์ ๊ฒ์๊ณผ ๋ฆฌ๋ทฐ ๋๋ฉ์ธ์ QueryDSL, ์ขํ ์ฒ๋ฆฌ, cursor paging, ์ด๋ฏธ์ง ์
๋ก๋, ์ธ๋ถ API ์ฐ๋์ด ํจ๊ป ๋ค์ด๊ฐ ์์ด ๋จ์ CRUD๋ณด๋ค ๋ณตํฉ์ ์ธ ๋ฐฑ์๋ ์ค๊ณ๋ฅผ ๊ฒฝํํ ์ ์์์ต๋๋ค.