2022λ 11μ, KOSA(νκ΅μννΈμ¨μ΄μ°μ νν)μ λ§μ΄λ€μ€μμ΄ν°μμ μ£Όμ΅νλ ν΄μ»€ν€ "KOSA-Midas YOUNG TALENT CHALLENGE 2022"μ μ°Έμ¬ν μ μ΄ μμλ€.
λΉμ νμ ν λΆμ΄ μ½λ‘λ μμ¬ μ¦μΈκ° μμ΄ κ²©λ¦¬λμκ³ , μ°λ¦¬ νμ μ΄λ»κ² ν΄μλ κ°λ°μ κ³μ μ§ννκΈ° μν΄ κ·ΈλΆκ³Ό κ°μ΄ μλ°μ μΈ κ²©λ¦¬λ₯Ό νκΈ°λ‘ κ²°μ νλ€. κ·Έλ κ² κ²©λ¦¬λμ΄ λνμ μνλ, νμλ μ₯μμ λ΅λ΅ν¨κ³Ό λλΉ μ§ μ»¨λμ μΌλ‘ μΈν΄ μ€λ ₯μ μ λλ‘ λ°ννμ§ λͺ»νκ² λμμλ€.
κ·Έλ κ² λ§μ΄λ€μ€μμ΄ν° ν΄μ»€ν€μ λ΄ κΈ°μ΅ μμμ μ΅μ μ ν΄μ»€ν€μΌλ‘ λ¨μ μμλ€. 12μμ΄ λκΈ° μ κΉμ§λ..
κΈ°λ§κ³ μ¬κ° λλμ§ μΌλ§ μλ 12μ, μ¨μ’
μΌ μΈμ€νκ·Έλ¨μ νλ©° 무λ£ν¨μ λλΌλ λμκ² νλμ λ©μμ§κ° λμ°©νλ€. λ°λ‘ λ§μ΄λ€μ€μμ΄ν°μμ μ¨ λ¬Έμμλ€.
λ¬Έμμ λ΄μ©μ ν΄μ»€ν€μμ λΉκ΅μ μ°μν μ°Έκ°μλ‘ λ½ν λ§μ΄λ€μ€μμ΄ν° μ±μ©μ νν μΈν΄μμ ν©κ²©νλ€λ κ²μ΄μλ€.
ν΄μ»€ν€μ λ§μ³μ μΈν΄μμ νμ§ λͺ»ν κ±°λΌ μκ°νκ³ μμλλ°, μ΄λ° μμμΉ λͺ»ν λ¬Έμλ₯Ό λ°κ² λμ λ무 기뻀λ€.
μμ λ§ν μ΄μ λ€ λλ¬Έμ "μ€νΈ λ¬Έμκ° μλκΉ?" νλ μμ¬λ λ€μμ§λ§, λμ ν¨κ» μ°Έμ¬νλ λ€λ₯Έ μΉκ΅¬λ€λ λ¬Έμλ₯Ό λ°μλ€λ μμμ λ£κ³ μ λ¬Έμμ λ΄μ©μ΄ μ§μ§μμ κΉ¨λ¬μλ€.
κ·Έλ κ², λλ 2μ 6μΌ~2μ 24μΌμ μ§νλλ λ§μ΄λ€μ€μμ΄ν° 겨μΈλ°©ν μΈν΄μ
μ μ°Έμ¬νκ² λμλ€.
μΈν΄μμ΄ μμλλ λ κΉμ§, λμκ²λ μ½ 1λ¬μ μκ°μ΄ λ¨μμμλ€.
κ·Έ κΈ°κ°λμ μ무κ²λ μ€λΉνμ§ μλλ€λ©΄, κ°λ° μ€λ ₯μ΄ λ Ήμ¬ κ²μλ λΆλͺ νκ±°λμ λ€λ₯Έ μ°Έκ°μλ€κ³Ό λΉκ΅ν΄μλ λ€λ¨μ΄μ§ μ μλ€λ νλ¨μ΄ λ€μλ€.
κ·Έλμ λ§μ΄λ€μ€μμ΄ν°μ μ±μ©κ³΅κ³ μ¬μ΄νΈλ₯Ό ν΅ν΄ λ°±μλ κ°λ°μμκ² μꡬνλ 곡ν΅μ μΈ μλλ€μ νμΈν΄ 보μλ€.
μμν κ²κ³Όλ λ¬λ¦¬, νμ¬μμλ νΉλ³ν μλμ μꡬνμ§λ μμλ€.
κ·Έλμ κΈ°λ³ΈκΈ°λ₯Ό λ μμ μΈν΄μμ μνκΈ°λ‘ κ²°μ νκ³ , λ°©νλμ λ§€μΌ μ립λμκ΄μ λ€λ¬ μλ μ± λ€μ μ½μλ€.
μ΄μΈμλ λ΄κ° λ€λλ νκ΅μ μ νμ νμμ€ν κ°λ°μ μ§ννλ λ±, κΎΈμ€ν μ½λ©μ ν΅ν΄ κ°μ μμ§ μμΌλ € λ Έλ ₯νλ€.
κ·ΈλΌμλ λΆκ΅¬νκ³ , λ΄κ° μ²μμ κ³ννλ κ² λ³΄λ€λ μ€λΉλ₯Ό μνν ν κ±° κ°μ κ±±μ μ΄ λμλ€. νΉν <μ΄νν°λΈ μλ°>
λ <μλ° μ±λ₯ νλ μ΄μΌκΈ°>
μ κ²½μ°μλ λ΄μ©μ μ λλ‘ μ΅νμ§ λͺ»νμκ³ λ§μ΄λ€.
μΈν΄μμ μμνλ 2μ 6μΌμ λ§μΉ¨ μ°λ¦¬ νκ΅μ 겨μΈλ°©ν κ°νμ λ μ§μλ κ°μλ€. κ·Έλμ λμ μΉκ΅¬λ 보νΈμ λν νμ₯체ννμ΅ μ μ²μ
λ₯Ό μμ±ν΄ νκ΅μ μ μΆνκ³ μ μΈν΄μμ μ°Έκ°νκ² λμλ€.
λμ λͺλͺ μ°Έκ°μλ€μ μ§μ΄ νκ΅μ κ±°λ¦¬κ° λ©μ΄(λΆμ°, κ΄μ£Ό, λꡬ λ±..), νκ΅ κ·Όμ²μ μλ μμλ₯Ό μ 곡λ°κ² λμλ€. κ·Έλμ ν루 μ μΈ μΌμμΌμ νκ΅λ‘ μ¬λΌκ°κ² λμλ€.
μ΄λ₯Έ μμΉ¨, μ§μ μ±κ²¨ μ§μ λμ¨ λ€ μΈμ°μμΌλ‘ ν₯νλ€.
μΈν΄ μ°Έκ°μλ€ μ€μμλ λ΄ μΉκ΅¬λ μμλλ°, κ·Έ μΉκ΅¬μ κ°μ μ΄μ°¨λ₯Ό νκ³ μ μμΈλ‘ ν₯νκ² λμλ€.
κ·Έλ κ² μμΈμ λμ°©ν λ€, μ§νμ² μ νκ³ μμμ λμ°©νλ€. μμμμ λ§λ λ€λ₯Έ μ°Έκ°μλ€μ λλμννΈμ¨μ΄λ§μ΄μ€ν°κ³ , κ΄μ£ΌμννΈμ¨μ΄λ§μ΄μ€ν°κ³ μ λ€λλ μΉκ΅¬λ€μ΄μλ€. 보μνλ λλ, λꡬ, κ΄μ£Ό λͺ¨λ 2λͺ μ© μ λ°ν λ― λ³΄μλ€.
μΈμ¬ λ΄λΉμλκ»μ μ°λ¦¬λ€μ΄ μλ‘ μΉν΄μ§ μ μλλ‘ μ λ μμ¬ μ리λ₯Ό λ§λ ¨ν΄ μ£Όμ ¨λλ°, λλΆμ λ€λ₯Έ μΉκ΅¬λ€κ³Όλ μ΄λ μ λ μΉν΄μ§ μ μμλ€.
κ±°κΈ°μλ€ μκ³ λ³΄λ, λλSWκ³ μ λ€λλ μΉκ΅¬ μ€ ν λͺ μ λμ κ°μ΄ νλ‘μ νΈλ₯Ό μ§νν μ μ΄ μλ μΉκ΅¬μλ€λ κ±Έ μκ³ λλ λ무 λ°κ°μ λ€.
μμΉ¨ 6μ, μΉκ΅¬λ€κ³Ό ν¨κ» μΌμ΄λ λ§μ΄λ€μ€μμ΄ν°λ‘ μΆκ·Όνλ€. μλλ μ§νμ² μ ν λ€ λ²μ€λ₯Ό νλ κ² μ μμ΄μμ§λ§, ν μΉκ΅¬μ μ μμΌλ‘ μ§νμ² μ ν λ€ νμ¬κΉμ§λ κ±Έμ΄κ°κΈ°λ‘ κ²°μ νλ€.
κ·Έλ κ² νμ¬μ λμ°©ν΄, μΈμ¬λ΄λΉμλκ»μ μλ΄ν΄ μ£Όμ μΈλ―Έλμ€λ‘ μ΄λνλ€.
첫λ²μ§Έ λ μ΄μκΈ°μ, λ³λ€λ₯Έ μ 무λ₯Ό μ£Όμμ§λ μμκ³ κ°λ¨ν μ€λ¦¬μν μ΄μ μ΄ μ§νλμλ€.
νμ¬μ λν μκ°μ μλ‘μ λν μκ°λ₯Ό λλ§μΉ λ€, κ³§λ°λ‘ κ³μ½μλ₯Ό μμ±νκ³ νμ λ°°μ ν΄ μ£Όμ€ κ±°λΌ μκ°νμ§λ§... μ΄μΈμλ μ¬λ¬κ°μ§ ν΄μΌ νλ μΌμ΄ λ§μ΄ μμλ€.
κ·Έλ κ² μ§λ£¨ν 2~3μκ°μ΄ μ§λκ³ λμμΌ, λΉλ‘μ κ³μ½μλ₯Ό μμ±ν μ μμλ€. μ΄ν μΈμ¬λ΄λΉμλμ 본격μ μΌλ‘ λ°°μ λ νμ λ°νν΄μ£Όμ ¨λ€.
λλ inHR
μ΄λΌλ HR(μΈμ μμκ΄λ¦¬) μ루μ
μ κ°λ°νλ λΆμμ μΈν΄μΌλ‘ λ°°μΉλμκ³ (λ§μ΄λ€μ€μμ΄ν°
μ κ³μ΄μ¬μΈ λ§μ΄λ€μ€μΈ
μμμ΄λ€), μμ μΆμ
μ¦μ λ°μ λ€ κ°μ νμλΆλ€κ³Ό ν¨κ» λΆμλ‘ μ΄λνκ² λμλ€.
μ¬μ€ λλ μΌλ° μ§μλΆλ€κ³Ό κ°μ μ리μμ μ 무λ₯Ό μ§νν κ±°λΌ κΈ°λνμλλ°, λΆμλ‘ μ΄λν΄λ³΄λ νμ¬ μΈ‘μμ λ¨λ νμμ€μ μΈν΄ μ μ© κ³΅κ°μ λ§λ ¨ν΄ λμμλ€.
λ¬Όλ‘ μ§μ§ μ€λ¬΄λ₯Ό μν€λ λ€λ₯Έ νμ¬λ€κ³Ό λ¬λ¦¬, μ¬κΈ°λ κ³Όμ λ₯Ό λ³λλ‘ μ£Όλ νμμΌλ‘ μ§νλλ μ λλ¬Έμ μ΄λ κ² ν λ― νμ§λ§...
κ·Έλλ μ΄ μ μ κ°μΈμ μΌλ‘ λ무 μμ¬μ λ€.
μ리μ μμ μ‘°κΈ κΈ°λ€λ¦¬λ, μ°λ¦¬ νμ λ΄λΉνμλ λ©ν λΆκ»μ λ€μ΄μ€μ ¨λ€. νλ‘ νΈμλ μ§λ¬΄λ‘ 3λ μ°¨μ΄μ κ°λ°μ λΆμ΄μ ¨λ€.
μ²μμλ λ§μ΄ μ΄μν λΆμκΈ°μλλ°, λ©ν λκ³Ό ν¨κ» λνλ₯Ό λλλ€ λ³΄λ μ΄λμ νλͺ©ν λΆμκΈ°κ° λμ΄ μμλ€. μ°λ¦¬κ° μΈν΄μμλ λΆκ΅¬νκ³ , μ λ§ μ°λ¦¬λ₯Ό μΉμ νκ² λν΄ μ£Όμ ¨λ€.
κ³Όμ λ λ€μ λ 곡κ°λλμ§λΌ, μ€λμ PCμ κ°λ° λꡬλ€μ μ€μΉνλ μ 무λ€λ§ μ§νν λ€ ν΄κ·Όνκ² λμλ€.
μ΄νΏλ μμΉ¨, λ©ν λΆλ€κ»μ Notionμ ν΅ν΄ κ³Όμ λ₯Ό 곡κ°ν΄ μ£Όμ ¨λ€.
λΆμλ€μ νΈλ¦¬ ννλ‘ νμνμ¬ μ‘°μ§λλ₯Ό κ΄λ¦¬ν μ μλ κΈ°λ₯, κ·Έλ¦¬κ³ λΆμμ μμλ μ μλ ꡬμ±μλ€μ κ΄λ¦¬νλ κΈ°λ₯μ ν¬ν¨νλ μΈμ¬κ΄λ¦¬ SW
λ₯Ό λ§λλ κ²μ΄μλ€. (보μ μ μ§μμ½ λλ¬Έμ κ³Όμ λ΄μ©μ 곡κ°ν μ μλμ§ λ©ν λκ» λ¬Έμν κ²°κ³Ό, 곡κ°ν΄λ λ¬Έμ κ° μλ€κ³ νμ
μ λΈλ‘κ·Έμ 곡κ°νλ€)
κ·Έλ κ² κ³Όμ λ₯Ό λ°κ³ λμ, νμλ€κ³Ό κ°μ΄ νλ‘μ νΈ κΈ°νμ μμνλ€.
νλ‘μ νΈμ κΈ°λ₯λͺ μΈμλ₯Ό μμ±ν λ€, ERDλ₯Ό μμ±νκ³ κΈ°μ μ€ν μ μ μ λ€μ΄κ°λ€. μλλ Spring MVCλ₯Ό μ¬μ©νλ € νμ§λ§...
μ°λ¦¬μκ² μ£Όμ΄μ§ κ³Όμ λ ꡬνν΄μΌ ν κΈ°λ₯μ΄ μ μ λμ μ μΈμ μ‘°κ±΄μ΄ μ½κ° κΉλ€λ‘μ΄ μνμλ€.
μ¬μ©μ
ν
μ΄λΈκ³Ό One-To-Manyμ κ΄κ³λ₯Ό κ°μ§λ€.1λ² μ‘°κ±΄μ μ ν λ¬Έμ κ° μμμ§λ§, λ¬Έμ λ 2λ² μ‘°κ±΄μ΄μλ€. κΈ°μ‘΄ Spring MVCμ JpaRepository
μμ μ 곡νλ νμ΄μ§ κΈ°λ₯μ μ°λ©΄ λ°μ΄ν° κ°μλ₯Ό μ‘°μ ν΄μ μ‘°νμ 걸리λ μκ°μ λ§μΆ μ μμ§ μμκΉλΌκ³ λ μκ°ν΄ 보μμ§λ§, λΆμ ν
μ΄λΈμ μ¬κ· ννμ μ°κ΄κ΄κ³κ° ν¬ν¨λμ΄ μμ΄μ νμ΄μ§μ μ°λλΌλ νκΈ°μ μΈ μκ° λ¨μΆμ λΆκ°λ₯ν΄ λ³΄μλ€.
μμΈν λ§νμλ©΄, νλμ μ μ row λΉ DB 쿼리λ₯Ό μ΅λ 4λ²κΉμ§ μ μ‘ν΄μΌ νλ μν©μ΄μλ€. Joinμ μ°λ©΄ λμ§ μλλ λ°λ¬Έν μλ μμ§λ§ ν μ΄λΈμ΄ μ¬κ·μ μΌλ‘ ꡬνλμ΄ μμ΄ μ¬μ΄ λ¬Έμ κ° μλμλ€.
κ²°κ΅ μ΄ λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°ν μ§μ λν΄ λ§μ κ³ λ―Όμ νλ€κ° ν΄κ·Ό μκ°μ΄ λκ³ μΌ λ§μλ€.
κ·Έλ κ² λ€λ₯Έ μΉκ΅¬λ€κ³Ό ν¨κ» ν΄κ·Όνλ λμ€, λ€λ₯Έ νμμλ μ±λ₯ λλ¬Έμ Spring MVC
λμ Spring Webflux
λ₯Ό μ¬μ©νλ€λ μ΄μΌκΈ°λ₯Ό λ£κ² λμλ€.
μ¬νκΉμ§ λλ μΉνλμ€κ° λ
ΌλΈλ‘νΉ μΉ νλ μμν¬
λΌλ κ² μ λλ§ μκ³ λ³ κ΄μ¬μ κ°μ§κ³ μμ§ μμλλ°, "μ΄μ©λ©΄ μΉνλμ€μ λ
ΌλΈλ‘νΉμ΄ μ°λ¦¬κ° κ°μ§ DB 쿼리 λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ§ μμκΉ?"νλ μκ°μ μμμμ Webfluxμ λν μ 보 κ²μμ μμν΄ λ³΄μλ€.
κ·Έλ¬λ€ Webfluxμμ R2DBC
λΌλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ νκΈ°μ μΈ μ±λ₯ κ°μ μ νλ€λ λ΄μ©λ€μ λ§μ΄ μ°Ύκ² λμκ³ , μ°λ¦¬κ° μ§λ©΄ν λ¬Έμ λ Webfluxλ₯Ό ν΅ν΄ μ΄λ μ λ κ°μ ν μ μκ² λ€λ μκ°μ Webflux κΈ°μ μ λμ νκΈ°λ‘ ν΄ λ³΄μλ€.
μμμΌλΆν°μ λ΄μ©μ κΈ°μ μ μΈ λ΄μ©λ€λ°μ μμ΄μ λ³λμ κ²μκΈλ‘ μ λ‘λνλ € νλ€. (
Dynamic Proxy
,CodeDeploy
λ±μ λν λ΄μ©μ λ€λ£° μμ )
λ§μ΄λ€μ€μμ΄ν° μΈν΄μμ μμν μ§ 1μ£ΌμΌμ΄ μ§λ λμ μκ°μ μ΄λ λ€.
μΌλ¨ νμ¬ λΆμκΈ°κ° μ λ§ μ’μλ€. λͺ¨λ μ§μ λΆλ€μ΄ μ λ§λ‘ μΉμ νμ ¨κ³ , μ λ§ μ΄ νμ¬μμλ μ¬λ λ¬Έμ λ‘ μ€νΈλ μ€ λ°μ μΌμ μκ² λ€λ μκ°μ΄ λ€μλ€.
κ·Έλ¦¬κ³ λ§€μΌ ν΄κ·Όνκ³ λμλ, μΉκ΅¬λ€κ³Ό ν¨κ» μ λ μ λ¨Ήκ±°λ λꡬλ₯Ό νλ λ± μ¦κ±°μ΄ μκ°μ λ³΄λΌ μ μμλ κ² λ무 μ’μλ€.
1μ£ΌμΌ λμ κΈ°μ μ λ°°μ°λ κ² λΏλ§ μλλΌ λ€λ₯Έ μΉκ΅¬λ€κ³Ό ν¨κ» μ’μ μΆμ΅κΉμ§ λ¨κΈΈ μ μμκ³ , λ¨μ 2μ£Ό λμλ κ·Έλ΄ μ μμ κ±°λΌ μκ°λλ€.
μ€ λλ μλ§κ³ μ΄μ κ°λ³΄λ€μ! λ§μ΄λ€μ€ μΈν΄μ νμ΄ν νμΈμ!