25-02-20
π Daily Reportβ
π νλ‘μ νΈ μν©β
μ΄μ λ¨μ κΈ°κ°μ΄ μΌλ§ μλ€. νλ μ ν μ΄μ λ μ΅λμ κ²°κ³Όλ₯Ό 보μ¬λλ €μΌ νλλ° κΈ°νμ CRUDκ° λ€ μμ΄μ(νΉν DELETE) μ΄κ² μ¬μ¬ νλͺ© μ λ¬Έμ κ° λμ§ μμμ§ κ±±μ μ΄λ€.
λͺ¨λν°λ§μ΄λ νΌν¬λ¨Όμ€ λΆλΆλ€μ λ΄κ° νκ³ μΆμ λΆλΆμΈλ° λλκΉ, 'νκ³ μΆλ€' λ 벨μ λμ΄μ°λ€.
'νλ€', 'μνλ λ―Έλλ μλ€'λΌλ μκ°μ΄ λ μ§λ°°μ μ΄λ€.
μμ§ν μ§μ€μ μν΄ μ§μμ μ무μλ μνΈμμ© μμ΄ μμ νκ³ μΆλ€. (μνΈμμ©μ΄ μμΌλ©΄ νμ¬ μμ€μ λͺ°μ μ΄ μ’ ννΈλ¬μ§λ€.)
κ·Όλ° λ°μμ μ΄λ¬ν λͺ°μ μ μ μ§νλλ‘ μ°μ΅νλ λΉμ₯μ νκ²½μ΄ μ’μ κ²½νμ΄λΌκ³ μκ°μ νλ€.
π ER Diagramβ
λ€μμ λλ©μΈμ 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λ₯Ό μ 리νμλ©΄,
- G/Wλ filterλ₯Ό ꡬνν΄μ λΌμλ£μΌλ©΄ μ΄κ±Έλ‘ JWT validationμ μν.
- sign up, sign in, sign out κ΄λ ¨ λΉμ¦λμ€ λ‘μ§μ controller, service ꡬνν΄μ common serviceλ‘ γ±γ±
- κ·Έλ¦¬κ³ κ²Έμ¬κ²Έμ¬ G/Wμ routing λ£μ΄μΌ νλλ° μ΄μ λΆλ¦¬νκ³ μΆμ§λ§ λ°μλ ννν¨. (λ°λΉ μ νλ ννμ λ κΈ°λΆμ΄ λ³λ‘λ€.)
π JwtUtil, μ΄λλ‘ κ°μΌνλβ
validation λΆλΆμμ DBλ₯Ό ν λ² κ°λ€μμΌ νλλ°, G/Wμμ κ·Έλ΄ μ μκ³
common service μͺ½μ μ¬μ©μ μ‘°ν apiλ₯Ό ꡬννκ³ OpenFeign μ¨μΌ ν λ―! ... μ΄λΌκ³ μκ°νμΌλ?
κ·ΈλΌ JwtUtil
μ΄μ©κ±°μ. G/Wλ common serviceμ μμλλ κ°μ μ¬μ©μ μ 보 νΌμ€λ λ°©μμ΄ λ€λ₯΄μλ ? (λ΄λΆ API νΈμΆ vs. JPA μ§λΉ΅ μ‘°ν)
ν΄κ²°λ°©μ ν보β
- κ°κ°μ λ§λλ‘
JwtUtil
μ 볡λΆν΄μ μμ±νκΈ° -> μ μ΄κ±΄ μ’; - common serviceμ
JwtUtil
λκ³ G/Wμλ μ νΈλ°μ μμ γ γ κ·Έλ₯ λͺ¨λ JWT κ΄λ ¨μ common serviceμ 맑기기
...λΉμ°ν 2μμ μ ννλ€.
π AT μ¬λ°κΈμ μ΅μ μ± μ?β
νμ¬μ κΈ°νμΌλ‘λ, ATμ RTλ λͺ¨λ μΏ ν€μ λ€μ΄κ°λ€.
κ·ΈλΌ μ§μ ν pathμ λν΄μ λ λ€ μλμΌλ‘ μμμ§κ³ , μλ²λ ν΄λΉ μ 보λ₯Ό μλ€λ κ²μ΄λ€.
μ¬κΈ°μ, μ΄μ©μκ° νλ«νΌμ μΌλκ³ μ κΉ μ μ¬ λ¨Ήκ³ μλ€κ³ κ°μ νμ.
λ€μ λμμμ λ ATλ λ§λ£λμμ κ²μ΄λ€. μ΄ μνλ‘ μλ²μ requestλ₯Ό 보λ΄λ©΄, μλ²κ° κ²μ¦λ¨μμ λ§λ£λ ν ν°μμ μΈμ§νλ€.
κ·Έλ. κ·Όλ° κ·Έ λ€μμ? μΆκ°λ‘ μκ°μ λ λμ΄ν΄λ³΄μ.
- μλ²: 401 λμ§ -> ν΄λΌ: μ¬λ°κΈ api νΈμΆ -> μλ²: AT μ¬λ°κΈνκ³ μΏ ν€ μΈν -> ν΄λΌ: AT μΏ ν€ κ°±μ λ¨ -> ν΄λΌ: λΉμ¦λμ€ api μ¬νΈμΆ
- μλ²: Redisμμ RT μ‘°ν -> μλ²: RT μ ν¨νλ©΄ AT μ¬λ°κΈνκ³ μΏ ν€ μΈν + λΉμ¦λμ€ λ‘μ§μ λν κ²°κ³Ό λ°ν -> ν΄λΌ: AT μΏ ν€ κ°±μ λ¨
1κ³Ό 2μ€μμ μ΄λ λ°©μμΌλ‘ ν μ§ λ΄μ¬ κ³ λ―Όμ΄ μμλ€. κ·Όλ° λ©ν λΆκ»μ 보ν΅μ μλ²κ° λ μ²λ¦¬νλ λ°©μμΌλ‘ κ°λ€κ³ νμ μ 1μμ μ ννλ€.
λ°λΌμ JWT flowλ νλ¨κ³Ό λΉμ·νκ² λ κ² κ°λ€.