Skip to content

[release] v1.0.0: eightyage#48

Merged
3uomlkh merged 211 commits intomainfrom
dev
Mar 31, 2025
Merged

[release] v1.0.0: eightyage#48
3uomlkh merged 211 commits intomainfrom
dev

Conversation

@3uomlkh
Copy link
Copy Markdown
Contributor

@3uomlkh 3uomlkh commented Mar 31, 2025

๐Ÿ“ ์ฃผ์š”๊ธฐ๋Šฅ

  • ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ
  • ์ œํ’ˆ, ๋ฆฌ๋ทฐ CRUD ๋ฐ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ
  • ์ „์ฒด ์ œํ’ˆ ๊ฒ€์ƒ‰, ์ธ๊ธฐ ์ œํ’ˆ ๋ฐ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด ์กฐํšŒ ๊ธฐ๋Šฅ
  • ์ฟ ํฐ ์ƒ์„ฑ ๋ฐ ์ˆ˜์ •, ์กฐํšŒ ๋ฐ ๋™์‹œ์„ฑ ์ œ์–ด ๊ธฐ๋Šฅ
  • CI/CD

๐Ÿ”— ๋ธŒ๋žœ์น˜

  • dev โ†’ main

queenriwon and others added 30 commits March 24, 2025 22:48
### ์ˆ˜์ •ํ•œ ๋‚ด์šฉ
- ErrorResponse: HttpStatus๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ status, code ๋ถ€๋ถ„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •
- GlobalExceptionHandler: ์—ฌ๋Ÿฌ๊ฐœ ์ปค์Šคํ…€์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ถ€๋ชจ ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฃธ

### ์ถ”๊ฐ€ํ•œ ๋‚ด์šฉ
- CustomException๊ณผ ๊ฐ ์—๋Ÿฌ ์ฝ”๋“œ์— ๊ด€ํ•œ ์˜ˆ์™ธํด๋ž˜์Šค(CustomException์„ ์ƒ์†)
- CustomException์—๋Š” HttpStatus์™€ ๋ฉ”์„ธ์ง€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
- ErrorCode Enum ์ž๋ฃŒํ˜•์„ ์ด์šฉํ•˜์—ฌ ์—๋Ÿฌ ์ฝ”๋“œ์™€ ๋ฉ”์„ธ์ง€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- User ์—”ํ‹ฐํ‹ฐ์— email, nickname, password, userRole ์ •๋ณด๋ฅผ ์ €์žฅ
- UserRole์—์„œ ์œ ์ €์˜ ๊ถŒํ•œ์€ ์œ ์ €(USER_ROLE), ๊ด€๋ฆฌ์ž(ADMIN_ROLE)๋กœ ์ •์˜

### ์ˆ˜์ •ํ•œ ๋‚ด์šฉ
- build.gradle
  - aws S3 ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์•„๋ฌด ์„ค์ •์„ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๋ฐœ์ƒ -> ์ฃผ์„์ฒ˜๋ฆฌ
  - ์ถ”ํ›„ S3๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์„ํ•ด์ œํ•˜์—ฌ ์‚ฌ์šฉํ•  ๊ฒƒ
  - spring security์— ๊ด€ํ•œ ์˜์กด์„ฑ์€ ๋ฐ”๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- filter์™€ arguement resolver๋ฅผ spring security๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„
- ํ† ํฐ์—๋Š” userId, email, nickname, userRole์„ ๋‹ด์Œ
- Access Token ์œ ํšจ๊ธฐ๊ฐ„์€ 10๋ถ„, ๋น„๊ต์  ์งง๊ฒŒํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์ƒ ์ข‹์Œ
- Refresh Token ์œ ํšจ๊ธฐ๊ฐ„์€ 1~2์ฃผ๋กœ ํ•  ์˜ˆ์ • ๋žœ๋ค๊ฐ’
- JwtAuthenticationToken์—์„œ getPrincipal ์‚ฌ์šฉ
  - @AuthenticationPrincipal AuthUser authUser ์‚ฌ์šฉ ๊ฐ€๋Šฅ

### ์ˆ˜์ •ํ•œ ๋‚ด์šฉ
- build.gradle: jwt๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์˜์กด์„ฑ ์ถ”๊ฐ€
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- refreshToken์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด RefreshToken์—”ํ‹ฐํ‹ฐ ๊ตฌํ˜„
- HTTP Only ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ refreshToken์„ ์บ์‹œ์— ์ €์žฅ(UUID๋ฅผ ์ด์šฉํ•œ ๋žœ๋ค๊ฐ’)
- Refresh Token ์œ ํšจ๊ธฐ๊ฐ„์€ 2์ฃผ

### ์˜๋…ผํ•  ๊ฒƒ
- ์œ ์ €๊ฐ€ ADMIN์œผ๋กœ ๊ฐ€์ž…ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด request์— ์œ ์ € ROLE๊ธฐ์ž…์„ ํ•˜์ง€ ์•Š์Œ
- ๊ฐ€์ž…ํ•  ๋•Œ ์ž๋™์œผ๋กœ USER ๊ถŒํ•œ์œผ๋กœ ๊ฐ€์ž…
- ADMIM ๊ถŒํ•œ์œผ๋กœ ๊ฐ€์ž…ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ๋”ฐ๋กœ INSERT ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์–ด๋“œ๋ฏผ ๊ฐ€์ž… api๋ฅผ ๋”ฐ๋กœ ํŒ” ๊ฒƒ
- user Repository๋Š” UserService๋งŒ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ๋„๋ฉ”์ธ์„ user์™€ auth๋กœ ๋‚˜๋ˆ”
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- ๋กœ๊ทธ์ธ์„œ๋น„์Šค๋ฅผ authService์— ๊ตฌํ˜„ํ•˜๊ณ , User์— ์ ‘๊ทผํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์˜์กดํ•จ
- ๋กœ๊ทธ์ธ์„ ํ•œ ํ›„ ์‘๋‹ต์œผ๋กœ๋Š” AccessToken์„, ์ฟ ํ‚ค์—๋Š” RefreshToken์„ ์ „๋‹ฌ
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- argument resolver๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ RefreshToken์„ header์˜ ์ฟ ํ‚ค์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„
- token rotation๋ฐฉ๋ฒ•์œผ๋กœ ํ† ํฐ ์žฌ๋ฐœ๊ธ‰
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- RefreshToken์ด๋ผ๋Š” ์—”ํ‹ฐํ‹ฐ์— RefreshToken์ด๋ผ๋Š” ํ•„๋“œ๊ฐ€ ์žˆ์–ด ํ˜ผ๋™ํ•˜์ง€ ์•Š๊ฒŒ ์ˆ˜์ •
- ์—๋Ÿฌ๋ฉ”์„ธ์ง€๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ถœ๋ ฅ๋˜๋„๋ก ์ œ๋„ค๋ฆญ ์‚ฌ์šฉ
[feat] ๊ณตํ†ต์—๋Ÿฌ์ฒ˜๋ฆฌ ๋ฐ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ํ† ํฐ์žฌ๋ฐœ๊ธ‰ ๊ตฌํ˜„
### ci.yml ํŒŒ์ผ ์ƒ์„ฑ
- PR ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๊ตฌํ˜„
- gradle/gradle-build-action์„ ์ ์šฉํ•ด Gradle ์บ์‹œ ํ™œ์šฉ
- JDK 17๋กœ ๋นŒ๋“œ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
- ๋Œ€์ƒ ๋ธŒ๋žœ์น˜๋Š” dev, main์œผ๋กœ ์„ค์ •
### ์ˆ˜์ •์‚ฌํ•ญ
- JWT_SECRET_KEY ์„ค์ •
- gradle/gradle-build-action์ด deprecated ๋˜์–ด gradle/actions/setup-gradle๋กœ ์ˆ˜์ •
### ์ˆ˜์ •์‚ฌํ•ญ
- application-ci.yml ์ถ”๊ฐ€
- Docker MySQL ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ •
### ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ
- soft delete๋ฅผ ์‚ฌ์šฉํ•ด deleteAt์— ํ˜„์žฌ์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ
- ๋งŒ์•ฝ deletedAt์— ํ˜„์žฌ์‹œ๊ฐ„์ด ์žˆ์œผ๋ฉด ์‚ญ์ œ๋œ ์ •๋ณด์ž„
- ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด ํšŒ์›ํƒˆํ‡ด ๊ฐ€๋Šฅ
- ํƒˆํ‡ดํ•œ ์ด๋ฉ”์ผ๋กœ ๋กœ๊ทธ์ธ ๋ถˆ๊ฐ€๋Šฅ
### ํ…Œ์ŠคํŠธ ๋‚ด์šฉ
- ํšŒ์›๊ฐ€์ž…_๋น„๋ฐ€๋ฒˆํ˜ธ_ํ™•์ธ_๋ถˆ์ผ์น˜_์‹คํŒจ
- ํšŒ์›๊ฐ€์ž…_์„ฑ๊ณต
- ๋กœ๊ทธ์ธ_์‚ญ์ œ๋œ_์œ ์ €์˜_์ด๋ฉ”์ผ์ผ_๊ฒฝ์šฐ_์‹คํŒจ
- ๋กœ๊ทธ์ธ_๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€_์ผ์น˜ํ•˜์ง€_์•Š์„_๊ฒฝ์šฐ_์‹คํŒจ
- ๋กœ๊ทธ์ธ_์„ฑ๊ณต
- ํ† ํฐ_์žฌ๋ฐœ๊ธ‰_์„ฑ๊ณต
### ํ…Œ์ŠคํŠธ ๋‚ด์šฉ
- ํ† ํฐ๋ฐœ๊ธ‰_AccessToken_๋ฐœ๊ธ‰_์„ฑ๊ณต
- ํ† ํฐ๋ฐœ๊ธ‰_RefreshToken_๋ฐœ๊ธ‰_์„ฑ๊ณต
- ํ† ํฐ์œ ํšจ์„ฑ๊ฒ€์‚ฌ_์„ฑ๊ณต
- ํ† ํฐ์œ ํšจ์„ฑ๊ฒ€์‚ฌ_๋น„ํ™œ์„ฑ_์ƒํƒœ์ผ๋•Œ_์‹คํŒจ
- ํ† ํฐ๊ฒ€์ƒ‰_ํ† ํฐ์ด_์—†์„_์‹œ_์‹คํŒจ

### Test Coverage (line: 26%)
### ํ…Œ์ŠคํŠธ ๋‚ด์šฉ
- findById์กฐํšŒ_userId๊ฐ€_์—†์„_๊ฒฝ์šฐ_์‹คํŒจ
- findById์กฐํšŒ_์„ฑ๊ณต
- findByEmail์กฐํšŒ_email์ด_์—†์„_๊ฒฝ์šฐ_์‹คํŒจ
- findByEmail์กฐํšŒ_์„ฑ๊ณต
- ํšŒ์›์ €์žฅ_์ค‘๋ณต๋œ_์ด๋ฉ”์ผ์ด_์žˆ์„_๊ฒฝ์šฐ_์‹คํŒจ
- ํšŒ์›์ €์žฅ_์„ฑ๊ณต
- ํšŒ์›ํƒˆํ‡ด_ํšŒ์›์ด_์กด์žฌํ•˜์ง€_์•Š์œผ๋ฉด_์‹คํŒจ
- ํšŒ์›ํƒˆํ‡ด_๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€_์ผ์น˜ํ•˜์ง€_์•Š์œผ๋ฉด_์‹คํŒจ
- ํšŒ์›ํƒˆํ‡ด_์„ฑ๊ณต

### Test Coverage (line: 38%)
### ์ˆ˜์ •ํ•œ ์ 
- ์—๋Ÿฌ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก     @ResponseStatus ๋ฐ ResponseEntity ์‚ฌ์šฉ
### ์ˆ˜์ •ํ•œ ์ 
- ๊ด€๋ฆฌ์ž ํ…Œ์ŠคํŠธ๋„ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ADMIN์„ ์ž‘์„ฑํ•˜์—ฌ ํšŒ์›๊ฐ€์ž…์„ ํ• ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •
### ์ˆ˜์ •์‚ฌํ•ญ
- application-ci.yml ์ถ”๊ฐ€
- Docker MySQL ์‚ฌ์šฉํ•˜๋„๋ก ์ˆ˜์ •
### ์ˆ˜์ •์‚ฌํ•ญ
- application-ci.yml ์ˆ˜์ •
[chore] Gradle ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๊ตฌ์ถ•
queenriwon and others added 29 commits March 28, 2025 22:40
### ์ˆ˜์ •ํ•œ ๊ฒƒ
- ๋”๋ฏธ๋ฐ์ดํ„ฐ ๋žœ๋ค์ˆ˜ ์ƒ์„ฑ์„ ๋ฆฌํŒฉํ† ๋ง
### ์ˆ˜์ •ํ•œ ๊ฒƒ
- ๋”๋ฏธ๋ฐ์ดํ„ฐ ๋žœ๋ค์ˆ˜ ์ƒ์„ฑ์„ ๋ฆฌํŒฉํ† ๋ง
### ๋ณ€๊ฒฝ์‚ฌํ•ญ
- application.yml, application-local.yml, application-ci.yml ์„ค์ • ์ •๋ฆฌ
- S3 bucket ์ด๋ฆ„๊ณผ region์€ ์„œ๋น„์Šค๋‹จ์—์„œ ์ƒ์ˆ˜ ์ฒ˜๋ฆฌ
- ์ค‘๋ณต spring ๋ธ”๋ก ์ œ๊ฑฐ ๋ฐ YAML ๊ตฌ์กฐ ๊ฐœ์„ 
- ci.yml ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ํ•ด์ œ
### ์ˆ˜์ •ํ•œ ๊ฒƒ
- ๋”๋ฏธ๋ฐ์ดํ„ฐ ๋žœ๋ค์ˆ˜ ์ƒ์„ฑ์„ ๋ฆฌํŒฉํ† ๋ง
[test] ์ œํ’ˆ ๋ฐ ๋ฆฌ๋ทฐ ๋ฐ ์ด๋ฏธ์ง€ ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
[refactor] S3 ์„ค์ • ์ •๋ฆฌ ๋ฐ application.yml ๊ตฌ์กฐ ๊ฐœ์„ 
[refactor] ๋”๋ฏธ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋นŒ๋“œ ํ…Œ์ŠคํŠธ
[refactor] coupon ๊ด€๋ จ ๋„๋ฉ”์ธ ๋ฆฌํŒฉํ† ๋ง
- GitHub Actions์šฉ cd.yml ์ž‘์„ฑ
- Dockerfile ์ƒ์„ฑ
- actuator ์˜์กด์„ฑ ์ถ”๊ฐ€
- SecurityConfig์— actuator ์ ‘๊ทผ ํ—ˆ์šฉ ์„ค์ •
- S3Config accessKey, secretKey ์„ค์ •๊ฐ’ ์ˆ˜์ •
- RedissonConfig์— ํ•˜๋“œ์ฝ”๋”ฉ๋œ host ๊ฐ’ ์ œ๊ฑฐ
- @value๋ฅผ ํ™œ์šฉํ•ด application ์„ค์ •๊ฐ’์œผ๋กœ ์ฃผ์ž…๋˜๋„๋ก ๋ณ€๊ฒฝ
### ๋ณ€๊ฒฝ ๋‚ด์šฉ
- application.yml ๊ตฌ์กฐ ์ •๋ฆฌ
- application-local.yml์— AWS ์„ค์ • ๋ณด์™„
- UserRole import ์‹œ ๊ฒฝ๋กœ ์˜ค๋ฅ˜ ์ˆ˜์ •
- S3Config AWS ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ‚ค ์ด๋ฆ„ ์ผ์น˜ํ™”
### ๋ณ€๊ฒฝ์‚ฌํ•ญ
- cd.yml์— ๋ฐฐํฌ ์„ฑ๊ณต ๋ฐ ์‹คํŒจ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ์Šฌ๋ž™ ์•Œ๋ฆผ ์ถ”๊ฐ€
### ๋ณ€๊ฒฝ์‚ฌํ•ญ
- ์šด์˜ ํ™˜๊ฒฝ์— ํ•„์š”ํ•œ application-prod.yml ํŒŒ์ผ ์ถ”๊ฐ€
- cd ๋Œ€์ƒ ๋ธŒ๋žœ์น˜ main์œผ๋กœ ํ•œ์ •
[feat] EC2 ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
[Refactor] ๋ถˆํ•„์š”ํ•œ ์บ์‹œ ๊ด€๋ จ DB ์ œ๊ฑฐ
@3uomlkh 3uomlkh merged commit bb057fa into main Mar 31, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants