street drop server

StreetDrop 🎢 Location based music sharing social service

90
0
Java

Street Drop - 슀트릿 λ“œλž

Hits
codecov
Github Action

πŸ“š Quick Link

πŸ’β€β™‚οΈ Introduction

intro-main

intro-description
home
let's-go

πŸ’β€β™€οΈ Documents

🚎 Architecture

server-architecture

  • λΉ„μš© μ ˆκ°μ„ μœ„ν•΄μ„œ Test(Dev), Admin μ„œλ²„λŠ” ν™ˆμ„œλ²„λ₯Ό ν†΅ν•΄μ„œ μš΄μ˜ν•˜κ³  있으며, Prod μ„œλ²„λŠ” μ„œλΉ„μŠ€μ˜ μ•ˆμ •μ„±μ„ μœ„ν•΄μ„œ AWS EC2λ₯Ό μ‚¬μš©ν•˜μ—¬ μš΄μ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • λ„€νŠΈμ›Œν¬ IOκ°€ 주된 μž‘μ—…μ΄κ³ , μ™ΈλΆ€ API만 μ—°λ™λ˜κ³  데이터 λ² μ΄μŠ€μ— μ˜μ‘΄μ„±μ΄ μ—†λŠ” 검색 μ„œλ²„λŠ” λ³„λ„λ‘œ λΆ„λ¦¬ν•˜μ—¬ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • μœ μ € 레벨 μ—…λ°μ΄νŠΈ, μ˜ˆμ•½ ν‘Έμ‹œ λ°œμ†‘λ“±μ„ μœ„ν•˜μ—¬, λ°°μΉ˜μ„œλ²„, μ•Œλ¦Ό μ„œλ²„λ₯Ό λΆ„λ¦¬ν•˜μ—¬ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ—„οΈ Directory Structure and Multi Module

πŸ“‚ Directory Structure

β”œβ”€β”€ .github
β”œβ”€β”€ backend
β”‚   β”œβ”€β”€ streetdrop-admin  # κ΄€λ¦¬μž μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜
β”‚   β”‚   β”œβ”€β”€ streetdrop-admin-server  # κ΄€λ¦¬μž μ›Ή API μ„œλ²„
β”‚   β”‚   β”œβ”€β”€ streetdrop-admin-web # κ΄€λ¦¬μž μ›Ή ν”„λ‘ νŠΈμ—”λ“œ
β”‚   β”‚   └── streetdrop-admin-web-server # κ΄€λ¦¬μž μ›Ή ν”„λ‘ νŠΈμ—”λ“œ 정적 배포용 μ„œλ²„
β”‚   β”œβ”€β”€ streetdrop-api  # API μ„œλ²„
β”‚   β”œβ”€β”€ streetdrop-batch  # 배치 μ„œλ²„
β”‚   β”œβ”€β”€ streetdrop-common  # 곡톡 λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ streetdrop-domain  # 도메인 λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ streetdrop-notification  # μ•Œλ¦Ό μ„œλ²„
β”‚   └── streetdrop-search  # 검색 μ„œλ²„
β”œβ”€β”€ docs # λ¬Έμ„œκ΄€λ¦¬μš© 폴더
└── infra # 인프라 κ΄€λ¦¬μš© 폴더 - Grafana, Prometheus, Jenkins
  • μ–΄λ“œλ―Όμ˜ 경우 ν”„λ‘ νŠΈ μ—”λ“œλ₯Ό Spring Boot둜 정적 배포할 경우, λΉŒλ“œ μ‹œκ°„μ΄ 였래걸렀 Node.js둜 μ •μ νŒŒμΌμ„ λ°°ν¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

🧩 Multi Module

multi-module

  • λ©€ν‹° λͺ¨λ“ˆμ„ μ μš©ν•˜μ—¬ 역할에 따라 λͺ¨λ“ˆμ„ λΆ„λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • Common λͺ¨λ“ˆμ€ Validationλ“±μ˜ 순수 μžλ°” μ½”λ“œ, Domain λͺ¨λ“ˆμ€ μ—”ν‹°ν‹° 정보λ₯Ό λ‹΄κ³  μžˆλŠ” λͺ¨λ“ˆλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • 각 API, 배치, μ•Œλ¦Ό, 검색 μ„œλ²„λŠ” Domain λͺ¨λ“ˆμ„ μ˜μ‘΄μ„±μœΌλ‘œ 가지고 있으며, λͺ¨λ“ˆκ°„μ˜ μ˜μ‘΄μ„±μ€ μƒμœ„ λͺ¨λ“ˆμ΄ ν•˜μœ„ λͺ¨λ“ˆλ§Œμ„ μ˜μ‘΄ν•˜λ„λ‘ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ“ˆ Dependency and Quick Start

πŸ“¦ Dependency

  • 기본적인 μ˜μ‘΄μ„±μž…λ‹ˆλ‹€. μžμ„Έν•œ μ˜μ‘΄μ„±μ€ 각 λͺ¨λ“ˆλ³„ build.gradle 파일과 λ¬Έμ„œλ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.
    • Java 19
    • Gradle 7.6.1
    • MySQL 8.0.33
    • Spring Boot 3.0.6

πŸš€ Quick Start

  • λͺ¨λ“ˆ λ³„λ‘œ λΉŒλ“œν•˜κΈ° μœ„ν•΄μ„œλŠ” backend λ””λ ‰ν† λ¦¬μ—μ„œ ./gradlew :{λͺ¨λ“ˆλͺ…}:build λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, streetdrop-api λͺ¨λ“ˆμ„ λΉŒλ“œν•˜κΈ° μœ„ν•΄μ„œλŠ” backend λ””λ ‰ν† λ¦¬μ—μ„œ ./gradlew streetdrop-api:build λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν”„λ‘œνŒŒμΌμ€ dev, prod, local둜 κ΅¬μ„±λ˜μ–΄ 있으며, 각 ν™˜κ²½λ³„λ‘œ Swagger 지원, API ν…ŒμŠ€νŠΈμš© 헀더등이 λ‹€λ₯΄κ²Œ κ΅¬μ„±λ˜μ–΄ μžˆμœΌλ―€λ‘œ μ μ ˆν•œ ν”„λ‘œνŒŒμΌμ„ μ„ νƒν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ–₯️ Tech Stack

Framework -

ORM -

Authorization -

Test -

Database -

AWS -

Monitoring -

Admin Web Page -

Other -

πŸ“ˆ DataBase Schema

MySQL Schema

ERD

πŸ‘₯ Contributors

πŸ‘œ Repository

πŸ§‘β€πŸ’» Server Engineers

YunYoung Seonghun Siyeon