๐จ๐ปโ๐ป ๊ตญํ ๊ตํต๋ถ ๊ณต๊ณต๋ฐ์ดํฐ ํ์ฉ ๊ฒฝ์ง๋ํ ์ถ์ ์
์ง์ญ๋ณ ์ ์ธ์ฌ๊ธฐ ํผํด์ ์์ ๋ฏผ์ ๋ฐ์ดํฐ๋ฅผ ์ง๋์ ์๊ฐํํ์ฌ, ์์ ํ ์ฃผ๊ฑฐ์ง ์ ํ์ ๋๋ ์น ์๋น์ค
2025 ๊ตญํ ๊ตํต๋ถ ๊ณต๊ณต๋ฐ์ดํฐ ํ์ฉ ๊ณต๋ชจ์ ์ ์ถ์ ํ ๋ณธ ํ๋ก์ ํธ๋, ์ ์ธ์ฌ๊ธฐ ํผํด ์ ๋ณด์ ์ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ๊ธฐ๋ฐ์ผ๋ก ์๊ฐํํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด๋ค ์์ ํ๊ณ ์พ์ ํ ์ฃผ๊ฑฐ ํ๊ฒฝ์ ์ ํํ ์ ์๋๋ก ๋๋ ์๋น์ค์ ๋๋ค.
- Backend: Spring Boot
- Frontend: Vite + React
- Database: PostgreSQL
- DevOps: Docker, Docker Compose ์ ํ์ฉํด ๊ฐ๋ฐ / ๊ตฌ๋ / ์คํ ๊ฐ๋ฅ
์ ์ธ์ฌ๊ธฐ์ ์์ ๋ฏผ์์ ์ฃผ๊ฑฐ์ง ์ ํ ์ ์ค์ํ ์์์ง๋ง, ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ์ง๊ด์ ์ผ๋ก ์ ๊ณต๋๋ ์ ๋ณด๋ ๋ถ์กฑํฉ๋๋ค. ์ด์ ๋ฐ๋ผ ์์ธ ์์น๊ตฌ๋ณ ์ ์ธ์ฌ๊ธฐ ํผํด ์ฃผํ ์์ ์์ ๋ฏผ์ ํต๊ณ๋ฅผ ํตํฉ ์๊ฐํํ์ฌ, ์ง๋ ๊ธฐ๋ฐ์ผ๋ก ๋๊ตฌ๋ ์ฝ๊ฒ ์์ ์ฑ์ ํ๋จํ ์ ์๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ฒ ๋์์ต๋๋ค.
[์์ ๋ฏผ์ ํต๊ณ] https://www.noiseinfo.or.kr/noise/statistics.do
[์ ์ธ์ฌ๊ธฐ ํผํด ์ฃผํ ์] https://www.data.go.kr/data/15139145/fileData.do
"์์ธ/์๋๊ถ์์ ์ฒซ ๋ ๋ฆฝ์ ์ค๋น ์ค์ธ 20~30๋ ์ฌํ์ด๋ ์ ๋ฐ ๋ํ์"
- ์๋ฃธ, ํฌ๋ฃธ, ์ ์ธ/๋ฐ์ ์ธ ๋งค๋ฌผ์ ํ์ ์ค
- ๋ถ๋์ฐ ๊ฒฝํ ๋ถ์กฑ์ผ๋ก ์ฌ๊ธฐ ์ํ์ ๋ ธ์ถ
- ์ง๋ฆฌ์ ์ ๋ณด + ์์ + ์ํํ๊ฒฝ ๋ฑ ์ข ํฉ์ ํ๋จ ํ์
- ๊ธฐ์กด ํ๋ซํผ(์ง๋ฐฉ/๋ค์ด๋ฒ ๋ถ๋์ฐ)์์๋ ์ฌ๊ธฐ/์์ ์ ๋ณด๊ฐ ๋ถ์กฑํจ
โ ์ฐ๋ฆฌ์ ํด๊ฒฐ์ฑ
- ์ ์ธ์ฌ๊ธฐ ํผํด ๋ฐ์ดํฐ + ์์ ๋ฏผ์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ
- ํ ํ๋ฉด์์ ๋น๊ต ๊ฐ๋ฅํ ์ง๋ ๊ธฐ๋ฐ ๋น๊ต UI ์ ๊ณต
| ํญ๋ชฉ | ์ฌ์ฉ ์ด์ | ์ฌ์ฉ ์ดํ |
|---|---|---|
| ์ ๋ณด ์ ๊ทผ์ฑ | ๊ณต๊ณต๋ฐ์ดํฐ ์ง์ ํ์ ํ์ | ํ ํ๋ฉด์์ ๋ฐ์ดํฐ ํตํฉ ํ์ธ |
| ์์ ์ฑ ํ๋จ ๊ธฐ์ค | ๊ฒฝํ/์ถ์ธก์ ์์กด | ๋ฐ์ดํฐ ๊ธฐ๋ฐ ํ๋จ ๊ฐ๋ฅ |
| ์์ฌ๊ฒฐ์ ์ํต์๊ฐ | ์ ๋ณด ํํธํ๋ก ์๊ฐ ์์ | ์๊ฐํ๋ก ๋น ๋ฅด๊ณ ์ง๊ด์ ํ๋จ |
| ์ฌ๊ธฐยท์์ ํผํด | ์ฌ๊ธฐ/์์ ํผํด ์ํ ๋ฏธ์ธ์ง | ๊ณ ์ํ ์ง์ญ ์ฌ์ ํํผ ๊ฐ๋ฅ |
- ์ง๋ ๊ธฐ๋ฐ ์๊ฐํ: ์์น๊ตฌ๋ณ ์ ์ธ์ฌ๊ธฐ ํผํด ์ + ์์ ๋ฏผ์ ํต๊ณ๋ฅผ ์์/ํดํ ๊ธฐ๋ฐ์ผ๋ก ํ์
- ์ง์ญ ํํฐ๋ง ๊ธฐ๋ฅ: ์ํ๋ ์์น๊ตฌ ์ ํ, ๋จ์ผ ๋ฐ์ดํฐ(์ ์ธ์ฌ๊ธฐ/์์) ํํฐ๋ง
- ์ํ๋ ๋ ๋ฒจ๋ง: ์์ ๋จ๊ณ๋ก ์ํ๋ ํํ
- ์ ๋ณด ๊ฒฉ์ฐจ ํด์: ์ฌํ์ด๋ ์์ด ๊ฐ๊ด์ ๋ฐ์ดํฐ๋ฅผ ํตํด ์์ ํ๊ฒ ์ง ์ ํ ๊ฐ๋ฅ
- ํผํด ์๋ฐฉ: ์ฌ๊ธฐ/์์ ๊ณ ์ํ ์ง์ญ ์ ๋ณ โ ์ํ ํํผ ๊ฐ๋ฅ
- ์์ฌ๊ฒฐ์ ํจ์จํ: ์๊ฐ์ ์ ๋ณด ์ ๊ณต โ ํ์ ์๊ฐ ์ ๊ฐ
- ๊ณต๊ณต๋ฐ์ดํฐ ํ์ฉ ์ฌ๋ก ํ์ฅ: ์ค์ํ์ ์ ์ฉ ๊ฐ๋ฅํ ์ฑ๊ณต์ ์ธ ๋ฐ์ดํฐ ํ์ฉ ๋ชจ๋ธ
|
๐จ๐ปโ๐ป๊น๊ท์ผ PM ์์ ๋ฐ์ดํฐ ๋ด๋น |
๐จ๐ปโ๐ป๋ฐ์ค์ Backend Developer ํ์ ๊ธฐ๋ฅ ๋ด๋น |
๐จ๐ปโ๐ป์ด์์ง Backend Developer ์ ์ธ ์ฌ๊ธฐ ๋ฐ์ดํฐ ๋ด๋น |
| ๊ตฌ๋ถ | ๊ธฐ์ ์คํ |
|---|---|
| Frontend | React (Vite) + TypeScript, Axios, Recharts |
| Backend | Spring Boot, Spring Security, OAuth2, JWT |
| Database | PostgreSQL |
| Cache / Token ์ ์ฅ์ | Redis |
| ์ธ์ฆ ๋ฐ ์ธ๊ฐ | JWT Access & Refresh Token, OAuth2 (์นด์นด์ค ๋ก๊ทธ์ธ) |
| Infra / DevOps | Docker, Docker Compose, EC2 (Ubuntu), GitHub Actions |
| ๋ฐฐํฌ | Nginx, GitHub Actions + Docker Hub + EC2 |
| ๋ฒ์ ๊ด๋ฆฌ | Git + GitHub |
| ๊ธฐํ | REST API, .env ํ๊ฒฝ๋ณ์ ์ค์ , Git ์ปค๋ฐ ์ปจ๋ฒค์ ์ ์ฉ |
- ํด๋ผ์ด์ธํธ โ API ์๋ฒ(Spring Boot) โ JWT ๋ฐ๊ธ / Redis ์ ์ฅ
- ๋ฉ์ธํ์ด์ง ๋ฐ ๋ง์ดํ์ด์ง API ์์ฒญ์ Access Token์ ํค๋์ ํฌํจ
- ์ง๋ API๋ ๋ก๊ทธ์ธ ํ ์ด๋ํ ํ๋ฉด์์ ์ ๊ทผ
- Refresh Token์ Redis์์ ์ ํจ์ฑ ๊ฒ์ฌ ํ Access Token ์ฌ๋ฐ๊ธ
- ์์์ง๋
| Entity | ํ๋๋ช | ํ์ | ์ ์ฝ ์กฐ๊ฑด / ๊ด๊ณ |
|---|---|---|---|
| NoiseStation(1) | id | Long | PK, Auto Increment |
| location | String | ์ธก์ ์ ์ด๋ฆ/์์น | |
| latitude | Double | ์๋ | |
| longitude | Double | ๊ฒฝ๋ | |
| NoiseReading(N) | id | Long | PK, Auto Increment |
| decibel | Double | ๋ฐ์๋ฒจ ์ธก์ ๊ฐ | |
| timestamp | LocalDateTime | ์ธก์ ์๊ฐ | |
| station | NoiseStation | FK, ManyToOne |
- ์ ์ธ์ฌ๊ธฐ ์ง๋
| Entity | ํ๋๋ช | ํ์ | ์ ์ฝ ์กฐ๊ฑด / ๊ด๊ณ |
|---|---|---|---|
| FraudReading | id | Long | PK, Auto Increment |
| district | String | ์์น๊ตฌ ์ด๋ฆ (์: ๊ฐ๋จ๊ตฌ) | |
| fraudCount | Integer | ์ ์ธ์ฌ๊ธฐ ๋ฐ์ ๊ฑด์ | |
| timestamp | LocalDateTime | ์์ง ์๊ฐ ๋๋ ๊ธฐ์ค ์ผ์ |
| ์ปค๋ฐ ์ ํ | ์๋ฏธ |
|---|---|
Feat |
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
Fix |
๋ฒ๊ทธ ์์ |
Docs |
๋ฌธ์ ์์ |
Style |
์ฝ๋ formatting, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ์์ฒด์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ |
Refactor |
์ฝ๋ ๋ฆฌํฉํ ๋ง |
Test |
ํ ์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ ์คํธ ์ฝ๋ ์ถ๊ฐ |
Chore |
ํจํค์ง ๋งค๋์ ์์ , ๊ทธ ์ธ ๊ธฐํ ์์ ex) .gitignore |
Design |
CSS ๋ฑ ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ |
Comment |
ํ์ํ ์ฃผ์ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ |
Rename |
ํ์ผ ๋๋ ํด๋ ๋ช ์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์ ๋ง์ธ ๊ฒฝ์ฐ |
Remove |
ํ์ผ์ ์ญ์ ํ๋ ์์ ๋ง ์ํํ ๊ฒฝ์ฐ |
!BREAKING CHANGE |
์ปค๋ค๋ API ๋ณ๊ฒฝ์ ๊ฒฝ์ฐ |
!HOTFIX |
๊ธํ๊ฒ ์น๋ช ์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐ |
- [Jeonse-ive FE] https://github.com/Jeonse-ive/Jeonse-ive-FE
- [Jeonse-ive BE] https://github.com/Jeonse-ive/Jeonse-ive-BE
- [Jeonse-ive Script] https://github.com/Jeonse-ive/Jeonse-ive-Script
- Docker, Docker Compose ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
.envํ์ผ์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
DB_USERNAME=your_username
DB_PASSWORD=your_password
REDIS_PASSWORD=your_redis_password
JWT_SECRET_KEY=your_jwt_secret
JWT_ACCESS_EXPIRATION=3600000 # 1์๊ฐ (๋จ์: ๋ฐ๋ฆฌ์ด)
JWT_REFRESH_EXPIRATION=604800000 # 7์ผ (๋จ์: ๋ฐ๋ฆฌ์ด)- BE ๋๋ ํฐ๋ฆฌ ์์น์์ ๋น๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋๋ค.
./gradlew clean build -x test- Dockerfile
- docker-compose.yml
- start script (๊ฐ๋ฐ ๋ชจ๋์ฉ)
$ ./restart.sh- Spring Boot ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
- ์ ์ ๊ฒฝ๋ก: http://localhost:8080
- ์คํ ์ PostgreSQL(DB)๋ ํจ๊ป ์์๋ฉ๋๋ค.
| ํ์ผ | ์ค๋ช |
|---|---|
Dockerfile |
Vite Dev Server๋ฅผ ์ปจํ ์ด๋๋ก ์คํํ๋ ํ๋ก ํธ ๊ฐ๋ฐ์ฉ ์ค์ |
docker-compose.yml |
db, server port ์ฐ๊ฒฐ |
restart.sh |
์คํ ๋ช ๋ น์ด ์คํฌ๋ฆฝํธ |
- Vite ๊ธฐ๋ณธ ํฌํธ๋ 5173์ ๋๋ค.
- Spring Boot ๊ธฐ๋ณธ ํฌํธ๋ 8080์ ๋๋ค.
- PostgreSQL ๊ธฐ๋ณธ ํฌํธ๋ 5432์ ๋๋ค.
- ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ API ์์ฒญ ์ฃผ์๋ฅผ http://localhost:8080์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
โจ Tip: Ctrl+C๋ก ์๋ฒ๋ฅผ ์ค๋จํ ์ ์์ผ๋ฉฐ, ์ปจํ ์ด๋๊ฐ ๋จ์์์ผ๋ฉด docker ps / docker rm ๋ช ๋ น์ด๋ก ์ ๋ฆฌํด์ค ์ ์์ต๋๋ค.
