Skip to content

DaeunSon/SmartAir-BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

987 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ  SmartAir - Smart Air ๊ณต๊ธฐ์งˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

๐Ÿ’ป Backend



โ˜๏ธ Infra / DevOps



๐Ÿ›  Tools

๐Ÿ“ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

SmartAir๋Š” ์‹ค์‹œ๊ฐ„ ๊ณต๊ธฐ์งˆ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์ž๋™ ์ œ์–ด๋ฅผ ํ†ตํ•ด ๊ฑด๊ฐ•ํ•œ ์‹ค๋‚ด ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์Šค๋งˆํŠธ ํ™ˆ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. IoT ์„ผ์„œ์™€ MQTT ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต๊ธฐ์งˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง๊ด€์ ์ธ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โ€œ๊ฑด๊ฐ•ํ•œ ์‹ค๋‚ด ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์Šค๋งˆํŠธํ•œ ์„ ํƒโ€

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐ŸŒก๏ธ ์‹ค์‹œ๊ฐ„ ๊ณต๊ธฐ์งˆ ๋ชจ๋‹ˆํ„ฐ๋ง

  • IoT ์„ผ์„œ๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
  • MQTT ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์˜ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ํ†ต์‹ 
  • ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ํ†ตํ•œ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

๐Ÿ“Š ์Šค๋งˆํŠธ ๋Œ€์‹œ๋ณด๋“œ

  • ์‹ค์‹œ๊ฐ„ ๊ณต๊ธฐ์งˆ ์ง€์ˆ˜ ์‹œ๊ฐํ™”
  • ์‹œ๊ฐ„๋Œ€๋ณ„ ๊ณต๊ธฐ์งˆ ์ถ”์ด ๋ถ„์„
  • ์˜ˆ์ธก ๊ณต๊ธฐ์งˆ ์‹œ๊ฐํ™”

๐Ÿ“ฌ ์ด์ƒ์น˜ ํƒ์ง€ ๋ฐ ์•Œ๋ฆผ

  • ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ธก๊ฐ’ ๋น„๊ต์™€ ์‹œ๊ฐ„๋Œ€๋ณ„ ๊ฐ€์ค‘์น˜๋ฅผ ํ†ตํ•œ ์˜ค์ฐจ ๊ฐ์ง€
  • Firebase Cloud Messaging ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ํ‘ธ์‹œ ์•Œ๋ฆผ

โš™๏ธ ์ž๋™ ์ œ์–ด ๋ฐ ์Šค๋งˆํŠธํ™ˆ ์—ฐ๋™

  • LG ThinQ API ์—ฐ๋™ (OAuth2 + PAT ๊ธฐ๋ฐ˜ ๋””๋ฐ”์ด์Šค ์ œ์–ด)
  • ์‹ค๋‚ด ๊ณต๊ธฐ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ, ์—์–ด์ปจ ์ œ์–ด

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

Backend

  • Framework: Spring Boot 3.4.3
  • Language: Java 17
  • Database: MySQL (Amazon RDS)
  • Message Broker: MQTT (Mosquitto)
  • Infra: AWS EC2, S3, Route53, ALB, CodeDeploy
  • Build Tool: Gradle

์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • Spring Data JPA, Security + JWT + OAuth2
  • Firebase Cloud Messaging (FCM)
  • LG ThinQ API (AES ์•”ํ˜ธํ™” ๊ธฐ๋ฐ˜ ํ†ต์‹ )
  • Lombok
  • Swagger, Gradle, JUnit5

๐Ÿ”„ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

image

์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ ์š”์†Œ

  • Developer & GitHub Actions
    ๊ฐœ๋ฐœ์ž๋Š” GitHub์— ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๊ณ , GitHub Actions๋ฅผ ํ†ตํ•ด CI/CD๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • AWS CodeDeploy & EC2
    ๋นŒ๋“œ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ AWS CodeDeploy๋ฅผ ํ†ตํ•ด EC2 ์ธ์Šคํ„ด์Šค์— ์ž๋™ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

  • ALB & Route53
    ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์€ Route53(๋„๋ฉ”์ธ)๊ณผ ALB(Application Load Balancer)๋ฅผ ๊ฑฐ์ณ EC2๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

  • Spring Boot & MQTT
    EC2 ๋‚ด๋ถ€์—์„œ Spring Boot ๋ฐฑ์—”๋“œ์™€ MQTT ๋ธŒ๋กœ์ปค๊ฐ€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋ฉฐ, IoT ์„ผ์„œ ๋ฐ์ดํ„ฐ์™€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • Amazon RDS
    ๋ชจ๋“  ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ๋Š” Amazon RDS(MySQL)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ์™ธ๋ถ€ API ์—ฐ๋™
    Firebase, LG ThinQ ๋“ฑ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์Šค๋งˆํŠธํ™ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • S3 & Endpoint Gateway
    ํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ ๋“ฑ์€ Endpoint Gateway๋ฅผ ํ†ตํ•ด S3์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ๋ฆ„

  1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

    • IoT ์„ผ์„œ์—์„œ MQTT๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก
    • ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ํ†ตํ•œ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
  2. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

    • ์‹ค์‹œ๊ฐ„ ๊ณต๊ธฐ์งˆ ์ง€์ˆ˜ ๊ณ„์‚ฐ
    • ์‚ฌ์šฉ์ž ์„ค์ •์— ๋”ฐ๋ฅธ ์•Œ๋ฆผ ์ฒ˜๋ฆฌ
    • ์ž๋™ ์ œ์–ด ๋กœ์ง ์‹คํ–‰
  3. ๋ฐ์ดํ„ฐ ์ €์žฅ

    • MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํšจ์œจ์ ์œผ๋กœ ์ €์žฅ
    • ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•œ ๋น ๋ฅธ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ
    • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋ถ„์„

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • Java 17 ์ด์ƒ
  • MySQL 8.0 ์ด์ƒ
  • MQTT Broker (Mosquitto)

์„ค์น˜ ๋ฐ ์‹คํ–‰

# ํ”„๋กœ์ ํŠธ ํด๋ก 
git clone https://github.com/your-username/SmartAir.git

# ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd SmartAir

# ์˜์กด์„ฑ ์„ค์น˜ ๋ฐ ๋นŒ๋“œ
./gradlew build

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
./gradlew bootRun

๐Ÿ“š API ๋ฌธ์„œ

  • Swagger UI: http://localhost:8080/swagger-ui.html

๐ŸŒŸ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ฑด๊ฐ•ํ•œ ์‹ค๋‚ด ํ™˜๊ฒฝ ๐ŸŒŸ


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages