Skip to main content

25-02-20

πŸ“Œ Daily Report​

https://github.com/ssginc-be/DOKI/issues/4


πŸ“Œ ν”„λ‘œμ νŠΈ 상황​

이제 남은 기간이 μ–Όλ§ˆ μ—†λ‹€. ν”„λ ˆμ  ν…Œμ΄μ…˜ λ•Œ μ΅œλŒ€μ˜ κ²°κ³Όλ₯Ό λ³΄μ—¬λ“œλ €μ•Ό ν•˜λŠ”λ° κΈ°νšμ— CRUDκ°€ λ‹€ μ—†μ–΄μ„œ(특히 DELETE) 이게 심사 ν•­λͺ© 상 λ¬Έμ œκ°€ λ˜μ§€ μ•Šμ„μ§€ 걱정이닀.

λͺ¨λ‹ˆν„°λ§μ΄λ‚˜ 퍼포먼슀 뢀뢄듀은 λ‚΄κ°€ ν•˜κ³  싢은 뢀뢄인데 λ­λž„κΉŒ, 'ν•˜κ³ μ‹Άλ‹€' λ ˆλ²¨μ„ λ„˜μ–΄μ„°λ‹€.

'ν•œλ‹€', 'μ•ˆν•˜λŠ” λ―Έλž˜λŠ” μ—†λ‹€'λΌλŠ” 생각이 더 지배적이닀.

μ†”μ§νžˆ 집쀑을 μœ„ν•΄ μ§‘μ—μ„œ 아무와도 μƒν˜Έμž‘μš© 없이 μž‘μ—…ν•˜κ³  μ‹Άλ‹€. (μƒν˜Έμž‘μš©μ΄ 있으면 ν˜„μž¬ μˆ˜μ€€μ˜ λͺ°μž…이 μ’€ ννŠΈλŸ¬μ§„λ‹€.)

근데 λ°–μ—μ„œ μ΄λŸ¬ν•œ λͺ°μž…을 μœ μ§€ν•˜λ„λ‘ μ—°μŠ΅ν•˜λŠ” λ‹Ήμž₯의 ν™˜κ²½μ΄ 쒋은 κ²½ν—˜μ΄λΌκ³  생각은 ν•œλ‹€.


πŸ“Œ ER Diagram​

https://www.erdcloud.com/d/iALeanZK8tosAe79p

λ‹€μŒμ˜ 도메인을 drop ν–ˆλ‹€.

  • 결제: μƒν’ˆ, μž₯λ°”κ΅¬λ‹ˆ, μ£Όλ¬Έ, 결제
  • μ±„νŒ…: 챗봇, μ‹ κ³ 
  • κΆŒν•œ: νŒμ—…μŠ€ν† μ–΄ 운영자(MANAGER)

μ™œλƒν•˜λ©΄ 이전 ν¬νŠΈν΄λ¦¬μ˜€λ“€μ˜ PR을 톡해 ν•΄λ‹Ή 도메인은 이미 ν•  수 μžˆλ‹€λŠ” 것을 보여쀄 수 μžˆμ„ 것 κ°™μ•˜λ‹€.

κΆŒν•œ 뢀뢄에 μžˆμ–΄μ„  μš΄μ˜μžκ°€ λ‚ λΌκ°€λ―€λ‘œ ν”Œλž«νΌ κ΄€λ¦¬μžκ°€ λ¬Έμ„œ μƒμ˜ νŒμ—…μŠ€ν† μ–΄ 정보λ₯Ό 직접 λ“±λ‘ν•΄μ£ΌλŠ” κ²ƒμœΌλ‘œ 기획 λ³€κ²½.

μš΄μ˜μžκ°€ λ‚ λΌκ°€λ©΄μ„œ νšŒμ›κ³„μ • <-> νŒμ—…μŠ€ν† μ–΄ μ‚¬μ΄μ˜ M:N 관계 μ€‘κ³„ν•˜λŠ” ν…Œμ΄λΈ”λ„ γ…‚γ…‚ ν–ˆλŠ”λ°, 쀑계 자체λ₯Ό 버리긴 μ‹«μ–΄μ„œ 이λ₯Ό νŒμ—…μŠ€ν† μ–΄ <-> μΉ΄ν…Œκ³ λ¦¬ 관계에 μ μš©ν–ˆλ‹€.

λΆˆλŸ‰μ΄μš©μž μ œμž¬λŠ” μ›λž˜ μ±„νŒ…μ—μ„œμ˜ λΆˆλŸ‰μ΄μš©μžλ₯Ό μ˜λ―Έν–ˆλŠ”λ°, ν˜Ήμ‹œ μ—¬μœ  μ‹œκ°„ 생기면 μ˜ˆμ•½μ—μ„œμ˜ 비정상 νŠΈλž˜ν”½ 탐지 및 제재둜 μ˜†κ·Έλ ˆμ΄λ“œ ν•  수 μžˆμ„ 것 κ°™μ•„μ„œ ν…Œμ΄λΈ”μ€ 남겨뒀닀.

늘 κ·Έλž˜μ™”λŠ”λ°, μœ λ‚œνžˆ automation + toleranceν•œ μ‹œμŠ€ν…œμ— μž¬λ―Έκ°€ λŠκ»΄μ§„λ‹€.

그만큼 μ •κ΅ν•˜κ²Œ λ§Œλ“€κ³  싢은데 μ΄κ²ƒκΉŒμ§€λŠ” μš•μ‹¬ κ°™μŒ... 기간이 λ„ˆλ¬΄............ 없어도 λ„ˆλ¬΄ μ—†μŒ........

κ²°μ œλŠ” PG μ’€ 뢙여보고 μ‹Άμ—ˆλŠ”λ° μ•„μˆ©μ§€λ§Œ λ‹€μŒμ— ν•˜λ©΄ λ˜μ§€. μž μ‹œ μ•ˆλ…•~


πŸ“Œ νšŒμ›κ°€μž…/λ‘œκ·ΈμΈβ€‹

κΈ°μ‘΄ μ•„ν‚€ν…μ³μ—μ„œ 큰 변동사항은 없을 것 κ°™λ‹€. authλŠ” λ³„λ„μ˜ micro service둜 λ‘λŠ” κ²½μš°κ°€ 많긴 ν•œλ°, κΈ°κ°„ κ³ λ €ν•˜λ©΄ μ§€κΈˆ κ·Έκ±° 뢄리할 λ•Œκ°€ μ•„λ‹ˆλ‹€.

λΆ„λ¦¬ν•˜λ©΄ ν• μˆ˜λ‘ service κ°„μ˜ ν†΅μ‹ μ—μ„œ μ˜€λŠ” μ˜€λ²„ν—€λ“œλ‚˜, cross-cutting concerns 뢀뢄을 κ³ λ €ν•˜κ²Œ λΌμ„œ, 걍 이 κΈ°κ°„μ—” μ•ˆ κ·ΈλŸ¬λŠ” 것이 λ§žλ‹€κ³  μƒκ°ν–ˆλ‹€.

MSA μ•„ν‚€ν…μ³μ˜ λ‹Ήμœ„μ„±μ„ λ‚©λ“μ‹œν‚€λ €λ©΄ ν•΄λ‹Ή 뢀뢄에 λŒ€ν•œ 고민이 λ§Žμ•„μ•Ό ν•˜λŠ”λ°, μ§€κΈˆ κ΅¬ν˜„μ΄ 0μˆœμœ„λΌ μ–΄μ©” μˆ˜κ°€ μ—†μŒ.

κ·Έλž˜μ„œ 기쑴의 κ³„νšμ€, PTλ•Œ κΈ°κ°„ μƒμ˜ ν•œκ³„λ₯Ό λ“€λ©° 이 뢀뢄을 μ œμ–Έν•˜λ €κ³  ν–ˆλ‹€. λˆ„κ°€ 봐도 MSAλΌλŠ”λ° μ„œλΉ„μŠ€ 뢄리 λ”± 2개 ν•΄λ†“μœΌλ©΄ '???' μ‹ΆκΈ° λ•Œλ¬Έμ— γ…‹γ…‹


μ°Έκ³  λ ˆνΌλŸ°μŠ€β€‹

https://pixx.tistory.com/287 https://pixx.tistory.com/275 -> μš”κ±° λ‚΄μš© μ’‹μŒ. λ°₯λ¨ΉμœΌλ©΄μ„œ μ—¬λŸ¬λ²ˆ λ³΄μ…ˆ

이λ₯Ό 톡해 flowλ₯Ό μ •λ¦¬ν•˜μžλ©΄,

  1. G/WλŠ” filterλ₯Ό κ΅¬ν˜„ν•΄μ„œ λΌμ›Œλ„£μœΌλ©΄ 이걸둜 JWT validation을 μˆ˜ν–‰.
  2. sign up, sign in, sign out κ΄€λ ¨ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ controller, service κ΅¬ν˜„ν•΄μ„œ common service둜 γ„±γ„±
  3. 그리고 겸사겸사 G/W에 routing λ„£μ–΄μ•Ό ν•˜λŠ”λ° 이슈 λΆ„λ¦¬ν•˜κ³  μ‹Άμ§€λ§Œ λ°”μ˜λ‹ˆ νƒ€ν˜‘ν•¨. (λ°”λΉ μ„œ ν•˜λŠ” νƒ€ν˜‘μ€ 늘 기뢄이 λ³„λ‘œλ‹€.)


πŸ“Œ JwtUtil, μ–΄λ””λ‘œ κ°€μ•Όν•˜λ‚˜β€‹

validation λΆ€λΆ„μ—μ„œ DBλ₯Ό ν•œ 번 갔닀와야 ν•˜λŠ”λ°, G/Wμ—μ„œ 그럴 순 μ—†κ³ 

common service μͺ½μ— μ‚¬μš©μž 쑰회 apiλ₯Ό κ΅¬ν˜„ν•˜κ³  OpenFeign 써야 ν•  λ“―! ... 이라고 μƒκ°ν–ˆμœΌλ‚˜?

그럼 JwtUtil μ–΄μ©”κ±°μž„. G/Wλž‘ common service에 μžˆμ„λ•Œλž‘ 각자 μ‚¬μš©μž 정보 νΌμ˜€λŠ” 방식이 λ‹€λ₯΄μžλŠ ? (λ‚΄λΆ€ API 호좜 vs. JPA 직빡 쑰회)

ν•΄κ²°λ°©μ•ˆ 후보​

  1. 각각에 λ§žλ„λ‘ JwtUtil을 λ³΅λΆ™ν•΄μ„œ μž‘μ„±ν•˜κΈ° -> μ•„ 이건 μ’€;
  2. common service에 JwtUtil 두고 G/Wμ—λŠ” μœ ν‹Έλ”°μœ„ μ—†μŒ γ…‡γ…‡ κ·Έλƒ₯ λͺ¨λ“  JWT 관련을 common service에 맑기기
μ•ˆμ‹

...λ‹Ήμ—°νžˆ 2μ•ˆμ„ μ„ νƒν–ˆλ‹€.


πŸ“Œ AT μž¬λ°œκΈ‰μ˜ μ΅œμ„ μ±…μ€?​

ν˜„μž¬μ˜ κΈ°νšμœΌλ‘œλŠ”, AT와 RTλŠ” λͺ¨λ‘ 쿠킀에 λ“€μ–΄κ°„λ‹€.

그럼 μ§€μ •ν•œ path에 λŒ€ν•΄μ„  λ‘˜ λ‹€ μžλ™μœΌλ‘œ μ˜μ•„μ§€κ³ , μ„œλ²„λŠ” ν•΄λ‹Ή 정보λ₯Ό μ•ˆλ‹€λŠ” 것이닀.

μ—¬κΈ°μ„œ, μ΄μš©μžκ°€ ν”Œλž«νΌμ„ μΌœλ‘κ³  잠깐 점심 λ¨Ήκ³  μ™”λ‹€κ³  κ°€μ •ν•˜μž.

λ‹€μ‹œ λŒμ•„μ™”μ„ λ•Œ ATλŠ” λ§Œλ£Œλ˜μ—ˆμ„ 것이닀. 이 μƒνƒœλ‘œ μ„œλ²„μ— requestλ₯Ό 보내면, μ„œλ²„κ°€ κ²€μ¦λ‹¨μ—μ„œ 만료된 ν† ν°μž„μ„ μΈμ§€ν•œλ‹€.

그래. 근데 κ·Έ λ‹€μŒμ€? μΆ”κ°€λ‘œ 생각을 또 λ‚˜μ—΄ν•΄λ³΄μž.

  1. μ„œλ²„: 401 던짐 -> 클라: μž¬λ°œκΈ‰ api 호좜 -> μ„œλ²„: AT μž¬λ°œκΈ‰ν•˜κ³  μΏ ν‚€ μ„ΈνŒ… -> 클라: AT μΏ ν‚€ 갱신됨 -> 클라: λΉ„μ¦ˆλ‹ˆμŠ€ api 재호좜
  2. μ„œλ²„: Redisμ—μ„œ RT 쑰회 -> μ„œλ²„: RT μœ νš¨ν•˜λ©΄ AT μž¬λ°œκΈ‰ν•˜κ³  μΏ ν‚€ μ„ΈνŒ… + λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ— λŒ€ν•œ κ²°κ³Ό λ°˜ν™˜ -> 클라: AT μΏ ν‚€ 갱신됨

1κ³Ό 2μ€‘μ—μ„œ μ–΄λŠ λ°©μ‹μœΌλ‘œ ν•  지 내심 고민이 μžˆμ—ˆλ‹€. 근데 λ©˜ν† λΆ„κ»˜μ„œ 보톡은 μ„œλ²„κ°€ 덜 μ²˜λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ°„λ‹€κ³  ν•˜μ…”μ„œ 1μ•ˆμ„ μ„ νƒν–ˆλ‹€.

λ”°λΌμ„œ JWT flowλŠ” ν•˜λ‹¨κ³Ό λΉ„μŠ·ν•˜κ²Œ 될 것 κ°™λ‹€.

토큰_티킀타카