Skip to content

Conversation

@junggyo1020
Copy link
Contributor

@junggyo1020 junggyo1020 commented Mar 25, 2025

βš™οΈ ISSUE

  • closed #

πŸ“„ Work Description

  • CI/CD 배포 μžλ™ν™” ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.

진행상황

CI & CD 둜직 μ •μƒμ μœΌλ‘œ μ‹€ν–‰ 확인

image

μ»¨ν…Œμ΄λ„ˆ μ •μƒμ μœΌλ‘œ μ‹€ν–‰ 확인

image

βœ… PR check list

  • Reviewers
  • Assignees
  • Labels

@junggyo1020 junggyo1020 added πŸŽ‰deploy CI/CD κ΄€λ ¨ μ½”λ“œ μˆ˜μ • 및 μΆ”κ°€ πŸΆμ •κ΅πŸΆ labels Mar 25, 2025
@junggyo1020 junggyo1020 self-assigned this Mar 25, 2025
μ„œλ²„ λ‚΄λΆ€ 였λ₯˜ 및 κ²Œμ΄νŠΈμ›¨μ΄ κ΄€λ ¨ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ μ „μ—­ μ—λŸ¬ μ½”λ“œ μ—΄κ±°ν˜• κ΅¬ν˜„.
곡톡 접두사λ₯Ό ν¬ν•¨ν•œ μ—λŸ¬ λ©”μ‹œμ§€ ν˜•μ‹μ„ μ œκ³΅ν•¨.
BaseException 및 μ£Όμš” μ‹œμŠ€ν…œ μ˜ˆμ™Έ(501, 502, 503, 504 λ“±)λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ „μ—­ μ˜ˆμ™Έ ν•Έλ“€λŸ¬ μ •μ˜.
각 μ˜ˆμ™Έμ— λŒ€ν•΄ GlobalErrorCodeλ₯Ό λ§€ν•‘ν•˜μ—¬ μΌκ΄€λœ μ—λŸ¬ 응닡을 λ°˜ν™˜ν•˜λ„λ‘ ꡬ성함.
성곡 응닡에 μ‚¬μš©λ  HTTP μƒνƒœ μ½”λ“œμ™€ λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•˜λŠ” 곡톡 μΈν„°νŽ˜μ΄μŠ€ 생성.
성곡 κ²°κ³Όλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ „λ‹¬ν•˜κΈ° μœ„ν•œ 곡톡 응닡 객체 μ •μ˜.
HttpStatusλ₯Ό int둜 λ³€ν™˜ν•˜μ—¬ 응닡 ν˜•μ‹μ„ ν‘œμ€€ν™”ν•˜κ³ , κ²°κ³Ό λ°μ΄ν„°λŠ” null일 경우 μ œμ™Έλ˜λ„λ‘ 섀정함.
- 이름 null ν—ˆμš© λΆˆκ°€, μ΅œλŒ€ 길이 초과, ν˜•μ‹ 였λ₯˜μ— λŒ€ν•œ μ—λŸ¬ μ½”λ“œ μΆ”κ°€
- 곡톡 λ©”μ‹œμ§€ 접두사 PREFIX 적용
- 이름 μ΅œλŒ€ 길이 μƒμˆ˜ NAME_MAX_LENGTH μ •μ˜
- UserErrorCodeλ₯Ό 인자둜 λ°›μ•„ BaseException을 μƒμ†ν•˜λŠ” μ˜ˆμ™Έ μ •μ˜
- μ‚¬μš©μž κ΄€λ ¨ μ˜ˆμ™Έ 처리λ₯Ό 도메인 λ‹¨μœ„λ‘œ ꡬ뢄 κ°€λŠ₯ν•˜λ„λ‘ ꡬ성
- κΈ°μ‘΄ IllegalArgumentException을 UserException으둜 λŒ€μ²΄ν•˜μ—¬ 도메인 μ˜ˆμ™Έ 톡일
- UserErrorCodeλ₯Ό ν™œμš©ν•΄ μ—λŸ¬ λ©”μ‹œμ§€ 관리 일원화
- 이름 검증 λ‘œμ§μ—μ„œ null, 길이, ν˜•μ‹ μ˜ˆμ™Έλ₯Ό 도메인 기반으둜 처리
- κΈ°μ‘΄ IllegalArgumentException 검증을 UserException으둜 λ³€κ²½
- UserErrorCode의 λ©”μ‹œμ§€λ₯Ό 기반으둜 μ˜ˆμ™Έ λ©”μ‹œμ§€ 검증 μˆ˜ν–‰
- μ‚¬μš©μž 이름 검증 κ΄€λ ¨ ν…ŒμŠ€νŠΈ 일관성 μœ μ§€
ν‘Έμ‹œ 토큰이 null일 수 μ—†λ‹€λŠ” 검증을 μœ„ν•œ μ—λŸ¬ μ½”λ“œλ₯Ό UserErrorCode에 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
κΈ°μ‘΄ String νƒ€μž…μ˜ token ν•„λ“œλ₯Ό PushToken VO둜 λ³€κ²½ν•˜κ³ , @Embedded 및 @AttributeOverrideλ₯Ό μ μš©ν•˜μ—¬ 도메인 주도 섀계 기반의 κ°’ 객체 ꡬ쑰λ₯Ό λ°˜μ˜ν–ˆμŠ΅λ‹ˆλ‹€.
ν‘Έμ‹œ 토큰 값을 ν‘œν˜„ν•˜λŠ” PushToken VOλ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
null κ°’ 검증 λ‘œμ§μ„ ν¬ν•¨ν•˜κ³  있으며, μΆ”ν›„ 토큰 μœ νš¨μ„±μ— λŒ€ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.
PushToken κ°’ 객체에 λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
- μœ νš¨ν•œ ν† ν°μœΌλ‘œ 객체 생성 성곡
- null 토큰에 λŒ€ν•œ μ˜ˆμ™Έ 처리 검증
- ν‘Έμ‹œ 토큰 null ν—ˆμš© λΆˆκ°€ μ—λŸ¬ μ½”λ“œ μΆ”κ°€
- ν‘Έμ‹œ μƒνƒœκ°€ ON, OFF μ™Έμ˜ 값일 경우의 μ—λŸ¬ μ½”λ“œ μΆ”κ°€
- ν‘Έμ‹œ μ•Œλ¦Όμ΄ 이미 ν™œμ„±ν™”/λΉ„ν™œμ„±ν™”λœ μƒνƒœμ— λŒ€ν•œ μ˜ˆμ™Έ μ½”λ“œ μΆ”κ°€
- PushNotificationStatus VO ν•„λ“œ μΆ”κ°€ 및 ENUM λ§€ν•‘ 적용
- ν‘Έμ‹œ μ•Œλ¦Ό μˆ˜μ‹  μ—¬λΆ€ 확인 λ©”μ„œλ“œ canReceivePushNotification() κ΅¬ν˜„
- ν‘Έμ‹œ μ•Œλ¦Ό ν™œμ„±ν™” 및 λΉ„ν™œμ„±ν™” λ©”μ„œλ“œ μΆ”κ°€
- ENABLED, DISABLED μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” Enum μ •μ˜
- λ¬Έμžμ—΄ 기반 μƒνƒœ νŒŒμ‹±μ„ μœ„ν•œ of(), isValid() λ©”μ„œλ“œ κ΅¬ν˜„
- μƒνƒœ μ „ν™˜ μ‹œ 쀑볡 μ „ν™˜ λ°©μ§€λ₯Ό μœ„ν•œ μ˜ˆμ™Έ 처리 둜직 μΆ”κ°€
- μ•Œλ¦Ό μˆ˜μ‹  κ°€λŠ₯ μ—¬λΆ€ 확인 λ©”μ„œλ“œ canReceiveNotification() κ΅¬ν˜„
- of(), isValid() λ©”μ„œλ“œμ˜ 유효/무효 μž…λ ₯에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μΆ”κ°€
- μƒνƒœ μ „ν™˜ μ‹œ 쀑볡 ν˜ΈμΆœμ— λŒ€ν•œ μ˜ˆμ™Έ 처리 ν…ŒμŠ€νŠΈ μΆ”κ°€
- μƒνƒœλ³„ μ•Œλ¦Ό μˆ˜μ‹  κ°€λŠ₯ μ—¬λΆ€ ν…ŒμŠ€νŠΈ 및 μƒνƒœ μ „ν™˜ ν…ŒμŠ€νŠΈ 포함
- 성곡/μ‹€νŒ¨ μΌ€μ΄μŠ€λ₯Ό λͺ…ν™•νžˆ λ‚˜λˆ„μ–΄ 가독성 ν–₯상
Copy link
Member

@JungYoonShin JungYoonShin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

μˆ˜κ³ ν•˜μ…¨μŠ΄λ™!

Comment on lines +25 to +36
# # Gradle caching - λΉŒλ“œ μ‹œκ°„ ν–₯상
# - name: Gradle Caching
# uses: actions/cache@v3
# with:
# path: |
# ~/.gradle/caches
# ~/.gradle/wrapper
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
# restore-keys: |
# ${{ runner.os }}-gradle-

# Gradle build - ν…ŒμŠ€νŠΈ 없이 gradle λΉŒλ“œ
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 μ£Όμ„μ²˜λ¦¬ν•œ μ΄μœ κ°€ λ¨Όκ°€μš©?? (λ‹¨μˆœ κΆκΈˆγ…Žγ…Ž)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ν•΄λ‹Ή λΉŒλ“œ 캐싱이 자주 λΉŒλ“œν•΄μ•Όν•˜λŠ” μƒν™©μ—μ„œ 였히렀 μ‹œκ°„μ΄ κ±Έλ¦¬λ”λΌκ΅¬μš”! 이유λ₯Ό νŒŒμ•…ν•˜κ³  이후 λ°˜μ˜μ„ κ³ λ €ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€:)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 νŒŒμΌμ€ λͺ¨μ Έ?!?! 잘λͺ» μ˜¬λΌμ™“λ‚˜

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

start.spring.ioμ—μ„œ μ΅œκ·Όμ— gradleνŒŒμΌμ„ μΆ”κ°€ν•˜λŠ” 경우 μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” 것 κ°™μ•„μš”! 이뢀뢄은 λ°˜μ˜λ˜μ§€ μ•Šλ„λ‘ gitignore에 μΆ”κ°€ν•΄μ•Όκ² λ„€μš”!! 의견 κ°μ‚¬ν•©λ‹ˆλ‹€ γ…Žγ…Ž

@jsoonworld
Copy link
Member

고생 λ§ŽμœΌμ…¨μŠ΅λ‹ˆλ‹€~! 😊

μΆ”κ°€λ‘œ deploy νŒŒμΌμ— 도컀 이미지 μ‚­μ œ λ‘œμ§λ„ ν¬ν•¨λ˜μ—ˆλŠ”μ§€ ν•œ 번 확인 λΆ€νƒλ“œλ¦΄κ²Œμš”.
μ˜ˆμ „μ— κΈ°μ‘΄ μ„œλ²„μ—μ„œλŠ” 이 뢀뢄이 λΉ μ Έ μžˆμ–΄μ„œ κ°„ν—μ μœΌλ‘œ λ¬Έμ œκ°€ μƒκ²Όλ˜ 적이 μžˆμ—ˆκ±°λ“ μš”.

그리고 μ„œλ²„κ°€ 쀑간에 μ£½κ³  λ‹€μ‹œ 올라올 λ•Œμ²˜λŸΌ,
μ˜ˆμ™Έ 상황이 생길 수 μžˆλŠ” 흐름도 ν•œ 번 더 μ κ²€ν•΄λ³΄μ‹œλ©΄ 더 μ•ˆμ •μ μœΌλ‘œ λ™μž‘ν•  것 κ°™μ•„μš” πŸ™

- LOGGED_IN, LOGGED_OUT, WITHDRAWN μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” enum μ •μ˜
- λ¬Έμžμ—΄ νŒŒμ‹± λ©”μ„œλ“œ of(), isValid() κ΅¬ν˜„
- 둜그인, λ‘œκ·Έμ•„μ›ƒ, νƒˆν‡΄ μƒνƒœ 확인을 μœ„ν•œ λ©”μ„œλ“œ μΆ”κ°€
- μœ νš¨ν•˜μ§€ μ•Šμ€ μƒνƒœμ— λŒ€ν•΄ UserException λ°œμƒ 처리
- μœ νš¨ν•˜μ§€ μ•Šμ€ 계정 μƒνƒœ μž…λ ₯ μ‹œ λ°œμƒν•˜λŠ” INVALID_ACCOUNT_STATUS μ˜ˆμ™Έ μ½”λ“œ μ •μ˜
- ν—ˆμš©λœ μƒνƒœ κ°’: active, inactive, withdrawn
- κΈ°μ‘΄ State ν•„λ“œ 제거 및 AccountStatus enum 기반으둜 λ³€κ²½
- 계정 ν™œμ„± μƒνƒœ νŒλ‹¨ λ©”μ„œλ“œ isActiveUser() κ΅¬ν˜„
- νƒˆν‡΄ μ—¬λΆ€λ₯Ό AccountStatusκ°€ 직접 νŒλ‹¨ν•˜λ„λ‘ μ—­ν•  μœ„μž„
- 각 μƒνƒœμ— μ™ΈλΆ€ λ…ΈμΆœμš© λ¬Έμžμ—΄ κ°’(value) ν•„λ“œ μΆ”κ°€ (active, inactive, withdrawn)
- Jackson 직렬화/역직렬화λ₯Ό μœ„ν•œ @JsonCreator 및 @jsonvalue μ–΄λ…Έν…Œμ΄μ…˜ 적용
- λ¬Έμžμ—΄ μž…λ ₯ νŒŒμ‹±μ„ value κΈ°μ€€μœΌλ‘œ μ²˜λ¦¬ν•˜λ„λ‘ from(), isValid() λ©”μ„œλ“œ κ°œμ„ 
- 의미 기반 λ©”μ„œλ“œ isActive(), isInactive(), isWithdrawn() λ“±μœΌλ‘œ λͺ…ν™•μ„± ν–₯상
- from() λ©”μ„œλ“œμ˜ 유효/무효 μž…λ ₯에 λŒ€ν•œ μ˜ˆμ™Έ 처리 ν…ŒμŠ€νŠΈ κ΅¬ν˜„
- isValid() λ©”μ„œλ“œμ˜ 검증 ν…ŒμŠ€νŠΈ μΆ”κ°€
- isActive(), isInactive(), isWithdrawn() λ©”μ„œλ“œ ν…ŒμŠ€νŠΈλ‘œ μƒνƒœ νŒλ³„ κΈ°λŠ₯ 확인
- value() λ©”μ„œλ“œλ₯Ό ν†΅ν•œ 직렬화 κ°’ λ°˜ν™˜ 검증
- `ScrapUserIdsRequest` λ ˆμ½”λ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ 슀크랩 μœ μ € ID λͺ©λ‘μ„ λ‹΄λŠ” μš”μ²­ DTO κ΅¬ν˜„
- `of` λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 리슀트λ₯Ό λ°›μ•„ DTO μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλ„λ‘ μΆ”κ°€
- ν΄λΌμ΄μ–ΈνŠΈμ™€ API ν†΅μ‹ μ—μ„œ μœ μ € ID λͺ©λ‘μ„ μ „μ†‘ν•˜λŠ” 데 μ‚¬μš©
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

πŸŽ‰deploy CI/CD κ΄€λ ¨ μ½”λ“œ μˆ˜μ • 및 μΆ”κ°€ size/XXL πŸΆμ •κ΅πŸΆ

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants