Skip to content

2hwayoung/coing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

178 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์ฝ”์ž‰(Coing): ์‹ค์‹œ๊ฐ„ ์ฝ”์ธ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ๋ถ๋งˆํฌ ๋Œ€์‹œ๋ณด๋“œ ์„œ๋น„์Šค

2025 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 4๊ธฐ 5ํšŒ์ฐจ 9ํŒ€ ์‹œ๊ณ ๋ฅด๋ฐฑ๊ตฌ์˜ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ‘ฅ Team Introduction

Name GitHub Role
์ดํ™”์˜ 2hwayoung ํŒ€ ๋ฆฌ๋”ฉ, ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ, Upbit WebSocket ์—ฐ๋™, ํ˜ธ๊ฐ€ ์ •๋ณด ์กฐํšŒ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ด€๋ฆฌ, GitHub Action CI
๊น€ํ•˜์—ฐ xaxeon ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋งˆ์ผ“ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ์ฝ”์ธ ๋Œ€์‹œ๋ณด๋“œ, ๋ถ๋งˆํฌ ์ถ”๊ฐ€/์‚ญ์ œ, ์†Œ์…œ ๋กœ๊ทธ์ธ
์ด์Šน๋ฏผ min429 ์›น์†Œ์ผ“ ํด๋ผ์ด์–ธํŠธ(ํ”„๋ก ํŠธ), ํ˜„์žฌ๊ฐ€ ์กฐํšŒ, ํ‘ธ์‹œ ์•Œ๋ฆผ, Swagger ์ปค์Šคํ…€, GitHub Action CD
์žฅ๋ฌด์˜ wkdan ์‚ฌ์šฉ์ž ์ธ์ฆ, ์บ”๋“ค ์ฐจํŠธ ์กฐํšŒ, ์ฑ„ํŒ… ๊ธฐ๋Šฅ, ๊ด€๋ จ ๋‰ด์Šค ๊ธฐ๋Šฅ, ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๋ฐ Security ์„ค์ •

๐Ÿ“Š Project Overview

ํ”„๋กœ์ ํŠธ ์ด๋ฆ„: ์ฝ”์ž‰(Coing)

๐Ÿ’ก ์‹ค์‹œ๊ฐ„ ์ฝ”์ธ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ๋ถ๋งˆํฌ ๋Œ€์‹œ๋ณด๋“œ ์„œ๋น„์Šค

์šด์˜ ์‚ฌ์ดํŠธ: https://coing-ashen.vercel.app

์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” ์‹ค์‹œ๊ฐ„ ์ฝ”์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ๊ฐœ์ธํ™”๋œ ํˆฌ์ž ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค ์ฝ”์ž‰(Coing)์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—…๋น„ํŠธ OpenAPI ๋ฐ WebSocket์„ ํ™œ์šฉํ•ด ๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™”ํ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€์‹ฌ ์žˆ๋Š” ์ฝ”์ธ์„ ๋ถ๋งˆํฌํ•˜์—ฌ ๊ฐœ์ธํ™”๋œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ํˆฌ์ž์ž๋“ค์˜ ํŽธ์˜์„ฑ๊ณผ ํšจ์œจ์ ์ธ ์˜์‚ฌ๊ฒฐ์ •์„ ๋•๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ์‹œ์„ธ ์ œ๊ณต์ด ์•„๋‹Œ, ํ˜ธ๊ฐ€, ์ฒด๊ฒฐ, ์บ”๋“ค, ๊ธฐ์ˆ ์  ์ง€ํ‘œ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ํˆฌ์ž ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ CryptoQuant, CoinMarketCap, Coin360 ๋“ฑ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ๋ฒค์น˜๋งˆํ‚นํ–ˆ์œผ๋ฉฐ, ์‹œ๊ฐํ™” + ๊ฐœ์ธํ™” + ์‹ค์‹œ๊ฐ„์„ฑ์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

image

์ตœ์†Œ ์š”๊ตฌ์‚ฌํ•ญ (1์ฐจ MVP)

ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ์‚ฌ์šฉ์ž ์ธ์ฆ
    • ์ด๋ฉ”์ผ ์ธ์ฆ ๊ธฐ๋ฐ˜ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ
  2. ์ฝ”์ธ ๋Œ€์‹œ๋ณด๋“œ
    • ์ „์ฒด ์ฝ”์ธ ๋ชฉ๋ก ์กฐํšŒ
    • ์ข…๋ชฉ/๋งˆ์ผ“ ๋‹จ์œ„ ์‹œ์„ธ, ์ฒด๊ฒฐ, ํ˜ธ๊ฐ€, ๋‹ค์–‘ํ•œ ์บ”๋“ค ์ฐจํŠธ(์ดˆ/๋ถ„/์ผ/์ฃผ/์›”/๋…„ ๋‹จ์œ„)
    • ๊ธฐ์ˆ ์  ์ง€ํ‘œ ์ถ”๊ฐ€(Spread, Imbalance, Liquidity Depth ๋“ฑ)
  3. ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ
    • ๊ด€์‹ฌ ์žˆ๋Š” ์ฝ”์ธ ๋ถ๋งˆํฌ ๋“ฑ๋ก/์‚ญ์ œ
    • ๋ถ๋งˆํฌํ•œ ์ข…๋ชฉ/๋งˆ์ผ“ ๋‹จ์œ„ ํ˜„์žฌ๊ฐ€, ์ฒด๊ฒฐ๊ฐ€ ๋ฐ ํ˜ธ๊ฐ€ ์ •๋ณด ์กฐํšŒ
  4. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    • WebSocket ๊ธฐ๋ฐ˜ ์‹œ์„ธ/์ฒด๊ฒฐ/ํ˜ธ๊ฐ€ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ
    • REST API ๊ธฐ๋ฐ˜ ์บ”๋“ค ๋ฐ์ดํ„ฐ ์ œ๊ณต(์ตœ์†Œ 1์ดˆ ๊ฐ„๊ฒฉ Polling)

์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๋ฐ Java -> Kotlin ์ „ํ™˜ (2์ฐจ MVP)

2์ฐจ MVP์—์„œ๋Š” ๊ธฐ์กด Java ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์ „๋ฉด์ ์œผ๋กœ Kotlin์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

  • Kotlin DSL ๊ธฐ๋ฐ˜ Gradle ๋นŒ๋“œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • data class, sealed class, extension, coroutines ๋“ฑ Kotlin ํŠนํ™” ๋ฌธ๋ฒ• ๋„์ž…
  • Mockito ๋Œ€์‹  mockito-kotlin์„ ํ™œ์šฉํ•œ Kotlin ์นœํ™” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • WebSocket/REST API ํ๋ฆ„, ์„œ๋น„์Šค/๋„๋ฉ”์ธ ๊ณ„์ธต์„ Kotlin์Šค๋Ÿฝ๊ฒŒ ๋ฆฌํŒฉํ† ๋ง

์ถ”๊ฐ€์ ์œผ๋กœ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ธ์ฆ/๊ด€๋ฆฌ ๊ธฐ๋Šฅ
    • ์†Œ์…œ ๋กœ๊ทธ์ธ (์นด์นด์˜ค ์—ฐ๋™)
    • ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ: ์ฑ„ํŒ… ์‹ ๊ณ  ๊ด€๋ฆฌ
  • ํˆฌ์ž ์ธ์‚ฌ์ดํŠธ ๊ธฐ๋Šฅ
    • ํŠน์ • ์กฐ๊ฑด(์˜ˆ: ๊ฐ€๊ฒฉ ๊ธ‰๋“ฑ๋ฝ, ๊ฑฐ๋ž˜๋Ÿ‰ ๊ธ‰์ฆ ๋“ฑ) ์„ค์ • ์‹œ ํ‘ธ์‹œ ์•Œ๋ฆผ ์ „์†ก
    • Naver ๊ฒ€์ƒ‰ API ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋‰ด์Šค ์—ฐ๋™ (์ฝ”์ธ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜)
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋Šฅ
    • WebSocket ๊ธฐ๋ฐ˜ ์ข…๋ชฉ ๋‹จ์œ„ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ธฐ๋Šฅ

๐Ÿ“Ž ๊ด€๋ จ ๋ฌธ์„œ

๐Ÿ› ๏ธ Technology Stack

๐ŸŽจ Frontend

๐Ÿ›  Backend

๐Ÿ—„ Database

๐Ÿš€ Deployment & Infra

๐Ÿš€ System Architecture & Deployment

Overview

image

์ „์ฒด ์š”์ฒญ ํ๋ฆ„ ๋ฐ ๋ฐฐํฌ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ์„ ๋„์‹ํ™”ํ•œ ๊ตฌ์„ฑ๋„์ž…๋‹ˆ๋‹ค.

Deployment Structure

์„œ๋น„์Šค๋Š” ํ”„๋ก ํŠธ์—”๋“œ(Next.js)์™€ ๋ฐฑ์—”๋“œ(Spring Boot with Kotlin)๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ๊ฐ Vercel๊ณผ AWS EC2 + Docker ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

  • Frontend: Vercel์„ ํ†ตํ•ด ์ž๋™ ๋ฐฐํฌ

  • Backend: GitHub Actions โ†’ Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ โ†’ ECR ์—…๋กœ๋“œ โ†’ EC2์—์„œ Pull ๋ฐ ์‹คํ–‰

  • Database: Amazon RDS (MySQL)

  • Infra Tooling: Doppler(ํ™˜๊ฒฝ ๋ณ€์ˆ˜), Nginx(Proxy), Docker Compose, GitHub Actions

CI/CD Process (GitHub Actions ๊ธฐ๋ฐ˜ ์ž๋™ํ™”)

  1. GitHub Push
  • main ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ ์‹œ ์ž๋™์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰
  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ
  • Doppler CLI๋กœ .env ํŒŒ์ผ ์ž๋™ ๋‹ค์šด๋กœ๋“œ
  1. ํ”„๋ก ํŠธ์—”๋“œ
  • schema ๋ณ€ํ™˜, ํƒ€์ž… ์ƒ์„ฑ โ†’ Vercel์— ์ž๋™ ๋ฐฐํฌ
  1. ๋ฐฑ์—”๋“œ
  • ํ…Œ์ŠคํŠธ โ†’ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ โ†’ ECR์— Push โ†’ EC2์—์„œ Pull ํ›„ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

๐Ÿ”— ์ž์„ธํ•œ ์ž๋™ํ™” ๋ฐ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋Š” ์•„๋ž˜ GitHub Wiki์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ‘‰ ๋ฐฐํฌ ๋ฐ ์ž๋™ํ™” ๋ฌธ์„œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ› ๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • (Development Setup)

1๏ธโƒฃ Clone the Repository

git clone https://github.com/2hwayoung/coing.git

2๏ธโƒฃ Environment Variables (.env) Setup โœ… Using Doppler (Recommended)

Doppler๋Š” .env ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

# Install Doppler CLI
brew install dopplerhq/cli/doppler

# Login & Setup
doppler login
doppler setup

# Run with environment loaded
npm run doppler

3๏ธโƒฃ Run Database (MySQL via Docker Compose)

# Start MySQL container with Docker Compose
docker-compose up -d

# Monitor logs (logs are mapped locally)
tail -f ./mysql_logs/general.log

# Stop Containers
docker-compose down

4๏ธโƒฃ Run Backend (Spring Boot + Kotlin)

cd backend

./gradlew bootRun

5๏ธโƒฃ Run Frontend (Next.js)

cd frontend

npm install  # Install dependencies (only needed once)
npm run dev  # Start development server

# Use OpenAPI to generate TypeScript types for the backend API
npm run codegen # Generate openapi typeScript definitions
npm run codegen:watch # Watch for API changes and regenerate types automatically

๐Ÿ“„ Related Docs

์ž์„ธํ•œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜, API ๋ช…์„ธ์„œ, ERD ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋“ฑ์€ ์œ„ํ‚ค๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


About

Real-time crypto data analysis & bookmarking dashboard service

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors