Skip to content

๐ŸŒ ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝํ—˜ ๊ณต์œ ๋กœ ์™„์„ฑ๋˜๋Š” API ์„ ํƒ ๊ฐ€์ด๋“œ [API Wiki] ๋ฐฑ์—”๋“œ ์„œ๋ฒ„

Notifications You must be signed in to change notification settings

umc-apiwiki/APIWIKI_BE_v1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

144 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“š API Wiki - Backend Server

์ตœ๊ณ ์˜ API๋ฅผ ์ฐพ๊ณ  ๊ณต์œ ํ•˜์„ธ์š”!
๊ฐœ๋ฐœ์ž๋“ค์ด ์‹ค์ œ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๋ฉฐ ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” API ์„ ํƒ ๊ฐ€์ด๋“œ
API Wiki์˜ ๋ฐฑ์—”๋“œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.

Java Spring Boot MySQL AWS EC2 GitHub Actions

๐Ÿ”ฅ ์„œ๋น„์Šค ๋ชฉํ‘œ

API ์œ„ํ‚ค๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ API๋ฅผ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜ ์ •๋ณด ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.
์œ„ํ‚คํ”ผ๋””์•„์˜ ํ˜‘์—… ๋ฐฉ์‹๊ณผ Hugging Face์˜ ์‹ค์‚ฌ์šฉ์ž ๊ฒ€์ฆ ๋ชจ๋ธ์„ ๊ฒฐํ•ฉํ•˜์—ฌ,
๋ถ„์‚ฐ๋œ API ์ •๋ณด๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์œผ๊ณ  ์‹ค์ œ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๋Š” ์ƒํƒœ๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ต์‹ฌ ๋ชฉํ‘œ: API ์กฐ์‚ฌ ์‹œ๊ฐ„์„ 8์‹œ๊ฐ„์—์„œ 2์‹œ๊ฐ„์œผ๋กœ 70% ๋‹จ์ถ•
  • ํ’ˆ์งˆ ๋ชฉํ‘œ: API ์„ ํƒ ํ›„ ๊ต์ฒด์œจ์„ 35%์—์„œ 10%๋กœ ๊ฐ์†Œ
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ชฉํ‘œ: ์›”๊ฐ„ ํ™œ์„ฑ ๊ธฐ์—ฌ์ž 100๋ช… ์ด์ƒ ํ™•๋ณด

๐Ÿ“š Documentation & Rules

ํ”„๋กœ์ ํŠธ์˜ ์„ค๊ณ„ ๋ฌธ์„œ์™€ ํ˜‘์—… ๊ทœ์น™์€ docs/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ƒ์„ธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ ์ข…๋ฅ˜ ๋‚ด์šฉ ๋ฐ ๋งํฌ
Ground Rules ๐Ÿ“œ ํŒ€ ํ˜‘์—… ๊ทœ์น™ ๋ฐ ๊ธฐ์ˆ  ์Šคํƒ ์ƒ์„ธ
DB Design ๐Ÿ’พ ERD
Infrastructure โ˜๏ธ ์ธํ”„๋ผ ๊ตฌ์„ฑ ๋‹ค์ด์–ด๊ทธ๋žจ
API Spec Swagger UI ๏ผˆ๋ฐฐํฌ ํ™˜๊ฒฝ๏ผ‰

๐Ÿ—๏ธ Architecture (Infra & Deployment)

ํ˜„์žฌ AWS EC2 ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜์–ด ์žˆ์œผ๋ฉฐ, Nginx๋ฅผ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ HTTPS(SSL) ๋ณด์•ˆ์ด ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
GitHub Actions๋ฅผ ํ†ตํ•ด CI/CD ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์ด ๊ตฌ์ถ•๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Server URL: https://apiwiki-api.my-project.cloud
  • Docs (Swagger): https://apiwiki-api.my-project.cloud/swagger-ui/index.html

๐Ÿ”„ CI/CD Process

  1. GitHub main ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ Push
  2. GitHub Actions ํŠธ๋ฆฌ๊ฑฐ (Build & Test)
  3. .jar ํŒŒ์ผ ๋นŒ๋“œ ํ›„ AWS EC2๋กœ ์ „์†ก (SCP)
  4. EC2 ๋‚ด๋ถ€ deploy.sh ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
  5. ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ๋ฐ ์ž๋™ ์žฌ๋ฐฐํฌ

โš ๏ธ ๋ฐฐํฌ ์‹œ ์œ ์˜์‚ฌํ•ญ (Known Limitations)
ํ˜„์žฌ ์ธํ”„๋ผ ๋น„์šฉ ์ ˆ๊ฐ ๋ฐ ๊ตฌ์กฐ ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋ฐฐํฌ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด์— ๋”ฐ๋ผ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์‹œ ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  ์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์•ฝ 15~30์ดˆ ๊ฐ„์˜ ๋‹ค์šดํƒ€์ž„(์„œ๋น„์Šค ์ผ์‹œ ์ค‘๋‹จ)์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ถ”ํ›„ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ์‹œ Nginx๋ฅผ ํ™œ์šฉํ•œ Blue/Green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๋„์ž…์„ ํ†ตํ•ด ๊ฐœ์„ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ Getting Started (Local Development)

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

1. Prerequisites

  • JDK 21 ์ด์ƒ
  • MySQL 8.0 ์ด์ƒ

2. Installation

git clone https://github.com/umc-apiwiki/APIWIKI_BE_v1.git
cd apiwiki-backend

3. Environment Variables

๋ณด์•ˆ์„ ์œ„ํ•ด application.yml์— DB ์ ‘์† ์ •๋ณด ๋“ฑ์ด ๋น„์›Œ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹คํ–‰ ์‹œ ์•„๋ž˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ฃผ์ž…ํ•ด์•ผ ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

[IntelliJ ์„ค์ • ๋ฐฉ๋ฒ•]

  1. ์ƒ๋‹จ ์‹คํ–‰ ์„ค์ •(Run/Debug Configurations) ํด๋ฆญ
  2. Modify options โ†’ Environment variables ์„ ํƒ
  3. ์•„๋ž˜ ๋‚ด์šฉ์„ ์ž…๋ ฅ
Key Description Example (Dummy)
DB_HOST RDS ์—”๋“œํฌ์ธํŠธ ๋˜๋Š” ๋กœ์ปฌ ์ฃผ์†Œ localhost
DB_PORT ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌํŠธ 3306
DB_NAME ์Šคํ‚ค๋งˆ ์ด๋ฆ„ apiwiki
DB_USERNAME ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ •๋ช… root
DB_PASSWORD ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ 1234
JWT_SECRET JWT ์„œ๋ช…ํ‚ค (32์ž ์ด์ƒ ํ•„์ˆ˜) R0EIc9AX4k...

4. Build & Run

# Mac / Linux
./gradlew clean build
java -jar build/libs/apiwiki-backend-0.0.1-SNAPSHOT.jar

# Windows
./gradlew.bat clean build
java -jar build/libs/apiwiki-backend-0.0.1-SNAPSHOT.jar

๐Ÿ“‚ Tech Stack

์ž์„ธํ•œ ๊ธฐ์ˆ  ์„ ์ • ์ด์œ ์™€ ๋ฒ„์ „ ์ „๋žต์€ Docs > Project Rules ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

Category Stack
Language Java 21
Framework Spring Boot 3.4.2, Spring Security, Spring Data JPA
Database MySQL 8.0 (Prod), H2 (Test)
Infra AWS EC2, RDS
Web Server Nginx (Reverse Proxy, SSL/TLS)
CI/CD GitHub Actions

๐Ÿค Contribution

๊ธฐ์—ฌํ•˜์‹œ๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

  1. Ground Rules(ํ˜‘์—… ๊ทœ์น™)์„ ๋จผ์ € ์ฝ์–ด์ฃผ์„ธ์š”.
  2. Contributing Guide์— ๋”ฐ๋ผ ์ด์Šˆ์™€ PR์„ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

About

๐ŸŒ ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝํ—˜ ๊ณต์œ ๋กœ ์™„์„ฑ๋˜๋Š” API ์„ ํƒ ๊ฐ€์ด๋“œ [API Wiki] ๋ฐฑ์—”๋“œ ์„œ๋ฒ„

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages