π° CAKEY - μΌμ΄ν¬ κ°κ² νμ μλ²
CAKEY λ μμΈ μ§νμ² μ κΈ°λ°μΌλ‘ μΌμ΄ν¬ κ°κ²λ₯Ό νμνκ³ λμμΈμ μ°ν μ μλ μλΉμ€μ λ°±μλ μλ²μ
λλ€.
ꡬλΆ
κΈ°μ
Language
Java 17
Framework
Spring Boot 3.2.7
ORM
Spring Data JPA, QueryDSL 5.0.0
Security
Spring Security, JWT (JJWT 0.11.5)
OAuth
Spring OAuth2 Client (Kakao)
Database
MySQL 8.x, PostgreSQL
Cache
Caffeine Cache
API Client
Spring Cloud OpenFeign 4.1.0
ꡬλΆ
κΈ°μ
Cloud
AWS EC2
Container
Docker, Amazon Corretto 17
CI/CD
GitHub Actions
Notification
Discord Webhook
cakey-server
βββ cakey-api # API μλν¬μΈνΈ, 컨νΈλ‘€λ¬, μλΉμ€ κ³μΈ΅ (μ€ν κ°λ₯ JAR)
βββ cakey-domain # λλ©μΈ μν°ν°, λ ν¬μ§ν 리, QueryDSL
βββ cakey-auth # JWT μΈμ¦, μΉ΄μΉ΄μ€ OAuth2 μ°λ
βββ cakey-common # κ³΅ν΅ μμ, μ νΈλ¦¬ν°, μμΈ μ²λ¦¬
βββ cakey-external # μΈλΆ API μ°λ (Discord μλ¦Ό)
οΏ½ μ§νμ² μ κΈ°λ° κ²μ
μ§μλ³ κ°κ² νμ : μμΈ μ£Όμ 20+ μ§νμ² μ μ£Όλ³ μΌμ΄ν¬ κ°κ² κ²μ
μ’ν κΈ°λ° μ§λ μ‘°ν : κ°κ² μμΉ μ’ν μ 곡
νν°λ§ : μλ³ κ°κ²/λμμΈ νν°λ§
π μΌμ΄ν¬ λμμΈ νμ
μΉ΄ν
κ³ λ¦¬ νν°λ§ : μμΌ(BIRTH), μμ(CHEER), κΈ°λ
μΌ(ANNIV), μμ¦(SEASON)
ν
λ§ νν°λ§ : κ·μ¬μ, λ―Έλλ©, μΊλ¦ν°, λμ
리, μ λ¨Έ, ννμ§ λ±
μ λ ¬ μ΅μ
: μΈκΈ°μ/μ΅μ μ μ‘°ν
β€οΈ μ°νκΈ° μμ€ν
μΌμ΄ν¬ μ°νκΈ° : λ§μμ λλ λμμΈ μ μ₯
κ°κ² μ°νκΈ° : μ’μνλ κ°κ² μ μ₯
μ° λͺ©λ‘ μ‘°ν : μΈκΈ°μ/μ΅μ μ μ λ ¬
μΉ΄μΉ΄μ€ μμ
λ‘κ·ΈμΈ : OAuth2 κΈ°λ° κ°νΈ λ‘κ·ΈμΈ
JWT μΈμ¦ : Access Token + Refresh Token μΊμ±
μμΈ μ 보 μ‘°ν : μ£Όμ, μ νλ²νΈ, μμ
μκ°
μ¬μ΄μ¦/λ§ μ 보 : κ°κ²λ³ μΌμ΄ν¬ μ¬μ΄μ¦ λ° λ§ μ 보
μΉ΄μΉ΄μ€ μ€νμ±ν
: κ°κ² λ¬Έμ λ§ν¬ μ 곡
cakey-api/src/main/java/com/cakey/
βββ CakeyServerApplication.java # λ©μΈ μ ν리μΌμ΄μ
βββ cake/ # μΌμ΄ν¬ λλ©μΈ
β βββ controller/ # API 컨νΈλ‘€λ¬
β βββ dto/ # μμ²/μλ΅ DTO
β βββ exception/ # λλ©μΈ μμΈ
β βββ service/ # λΉμ¦λμ€ λ‘μ§
βββ cakelikes/ # μΌμ΄ν¬ μ°νκΈ°
βββ store/ # κ°κ² λλ©μΈ
βββ storelikes/ # κ°κ² μ°νκΈ°
βββ user/ # μ¬μ©μ λλ©μΈ
βββ common/
β βββ exception/handler/ # μ μ μμΈ μ²λ¦¬
β βββ filter/ # μΈμ¦ νν°
β βββ resolver/ # Argument Resolver
β βββ response/ # ν΅ν© μλ΅ νμ
βββ config/ # μ€μ ν΄λμ€
cakey-domain/src/main/java/com/cakey/
βββ cake/
β βββ domain/ # μν°ν° (Cake, DayCategory)
β βββ dto/ # 쿼리 DTO
β βββ facade/ # λλ©μΈ λ‘μ§ μ‘°ν©
β βββ repository/ # JPA + QueryDSL λ ν¬μ§ν 리
βββ cakelike/ # μΌμ΄ν¬ μ°νκΈ° λλ©μΈ
βββ store/ # κ°κ² λλ©μΈ (Store, Station)
βββ storelike/ # κ°κ² μ°νκΈ° λλ©μΈ
βββ user/ # μ¬μ©μ λλ©μΈ
βββ caketheme/ # μΌμ΄ν¬ ν
λ§ (ThemeName)
βββ size/ # μΌμ΄ν¬ μ¬μ΄μ¦
βββ operationtime/ # μμ
μκ°
βββ common/ # BaseTimeEntity λ±
cakey-auth/src/main/java/com/cakey/
βββ client/kakao/api/ # μΉ΄μΉ΄μ€ API ν΄λΌμ΄μΈνΈ
βββ jwt/auth/ # JWT μμ±/κ²μ¦
βββ exception/ # μΈμ¦ μμΈ
cakey-external/src/main/java/com/cakey/
βββ feign/discord/ # Discord μλ¦Ό μ°λ
GitHub Actionsλ₯Ό ν΅ν μλ λ°°ν¬ νμ΄νλΌμΈ:
dev λΈλμΉ Push
β
GitHub Actions
β
ββββββββββββββββββββββββββ
β 1. Checkout β
β 2. Set up JDK 17 β
β 3. application.yml μμ± β
β 4. Build (Gradle) β
β 5. Docker Build & Push β
ββββββββββββββββββββββββββ
β
Docker Hub
β
EC2 SSH Deploy
CI.yml: PR β dev λΈλμΉ λΉλ κ²μ¦
DOCKER-CD.yml: dev λΈλμΉ Push μ Docker λΉλ λ° EC2 λ°°ν¬