2019λ λΆν° λ°κΈ°λ§λ€ νκ³ λ₯Ό λΈλ‘κ·Έμ μ¨λ³΄κ³ μλλ° κ·Έλλ μμ΄λκΉ κ½€ μ¬λ―Έκ° μλ€.
μ¬ν΄ 3Q κΉμ§λ JSP νμ΄μ§λ₯Ό κ±·μ΄λ΄λ μΌμ μ£Όλ‘ νμλλ° λλ¨Έμ§ κΈ°κ°μλ κ·Έκ±° μ€ννκ³ μ±λ₯ κ°μ νλ€κ³ μκ°μ μ’ μΌμλ€.
μ€ννκΈ° μ μλ IE 10+ μ§μνλλΌκ³ μ’ μκ°μ λ§μ΄ μΌλ€. μ¬μ€ μ΄λ° λ₯μ μμ μ μ€ννλ νμ΄λ°μ λκ΅°κ° νλλͺ μ΄ κ³ μν΄μ νΈνμ±μ λ§μΆ°λμΌλ©΄ μ κ· νΌμ² λ£μ λλ κ·Έκ² κΉ¨μ§ μΌμ΄ μ μμ΄μ κ·Έλ₯ μ νΈνμ±μ΄ μ μ§λλ κ²½μ°κ° λλΆλΆμ΄λ€. λ΄κ° κ·Έ ν λλͺ μ΄ λ κ²μ΄λ λ§ κ²μ΄λκ° λ¬Έμ μΈλ° μ΄κ² μ΄λλ―Ό ν΄ κ°λ°μμλ λλ μ μλ, μ¬μ©μ λμ νλ‘μ νΈμμλ§ λλ μ μλ μΌμ΄λΌκ³ μκ°ν΄μ μ΄λ²μλ κ·Έ νλλͺ μ΄ λ보μκ³ , λ€νν polyfill μ λ£κ³ λ©μλλ₯Ό μ£Όμν΄μ μ°λ©΄ λλ μΌμ΄ λλΆλΆμ΄λΌμ μμ² κ³ μμ€λ½μ§λ μμλ€ (λ¬Όλ‘ μ΄κ±΄ λ΄κ° μ¬μ©νλ νλ μμν¬μ μ§μ λ²μ μ΄λ΄μμ νΈνμ±μ λ§μΆ λμ μ΄μΌκΈ°κ³ κ·Έκ±Έ λμ΄μλ €λ©΄ μμ μκΈ°κ° λ¬λΌμ§λ€).
μ±λ₯ κ΄ν΄μλ μ²μμλ JSP λ‘ κ·Έλ¦° νμ΄μ§λ³΄λ€ Reactλ‘ SSR ν νμ΄μ§μμ μ±λ₯ μ§νκ° λ μ μ’μμ μ½κ° λ©λΆμ νμλλ° μ§κΈμμ μκ°ν΄λ³΄λ©΄ μ μ΄μ λΈλΌμ°μ μμ ν μΌμ΄ λ§μμ§λκΉ λΉμ°ν κ² κ°κΈ°λ νλ€ (html νμ±ν΄μ λ λνλ©΄ λλλκ±°λ, props κ°μ§κ³ λ€μ λ λν΄λ³΄κ³ hydration νλκ±°λ λΉκ΅νλκ±°λκΉ). λ§μ°¬κ°μ§λ‘, JSPλ‘ λ λν νμ΄μ§μ λΉν΄μ Redux + Reactλ‘ SSR νμ΄μ§μλ initialStateκ° serializeλμ html μ΄λκ°μ λ°νμμΌλ λΉμ°ν μ©λμ΄ λ ν΄ μ λ°μ μλ€. λ¬Όλ‘ κ·Έ μ΄νμ μν μ‘°μν λλ λΉκ΅ν μ μλ νΈμμ±μ μ°¨μ΄κ° μμ§λ§β¦λ¨μ μ±λ₯κ΄μ μμλ plain html λ³΄λ€ λΉ λ₯Ό μκ° μλ€λ μ¬μ€μ μ΅κ·Ό λ€μ΄μμΌ κΉ¨λ¬μλ€. Reactλ₯Ό κ³μ μΈκ±°λ©΄ κ²°κ΅ λΆνμν λ λμ λ€μ΄λ‘λλ₯Ό μ€μ΄λ μ λ°μ μκ³ (ssrμ κΌ νμν λΆλΆμλ§ νλ€λκ° - μλλ©΄ μ΄ ν¬μ€ν
μ μ°λ©΄μ κΉ¨λ¬μλλ° hydrationλ§ λ―Έλ€λ λλ€), Reactλ₯Ό κ³μ μμ°λ©΄ μ’ λ htmlμ κ°κΉμ΄ μ κ·Όλ€ (μλ₯Ό λ€λ©΄ hotwire - κ°μΈμ μΌλ‘λ μ΄κ² $.html()
μ΄λ λκ° λ€λ₯Έμ§ μ λͺ¨λ₯΄κ² λ€)λ₯Ό ν보λ κ²λ μ’μ κ² κ°λ€.
νμ΄μ§ κ°λ°κ³Ό λ³κ°λ‘ μ΅κ·Όμλ μλΉμ€μ νμν λ°μ΄ν°λ₯Ό λΉμ κ·νλ ννλ‘ λ§λ€μ΄μ μ°λ μμ λ μμ λ§μ΄ κ³ λ―Όμ€μ΄λ€ (BFF μ²λΌ Database For Frontend λΌκ³ μκ°νλ©΄ κ°λ μ΄ λ± λ§λ€). μλ μ°λ¦¬ μ‘°μ§μ μμ² λΉ΅λΉ΅ν μ€λΌν΄ λλΉλ₯Ό λ°±μλλ νλ‘ νΈμλ μλΉμ€κ° κ°μ΄ λ°λΌλ³΄λ ννμλλ° μ¬ν΄λ μ΄κ±Έ κ±·μ΄λ΄λ ννλ‘ λ°±μλ λΆλ€μ΄ κ³ μμ λ§μ΄ ν΄μ£Όμ ¨λ€ (μ°Έμ‘°: DEVIEW 2020 :: Bye Oracle, Hello PG: μΌνκ²μνλ«νΌ, MSAλ‘ μμ·μ κ°μμ λ€.). μ¬μ€ κ·Έλμ μ νλ«νΌμμ λμ€λ μ€λ μ·κ³Ό CDC μ€νΈλ¦Όμ κ°μ§κ³ μ μ ν ννλ‘ λ°μ΄ν°λ₯Ό λ§λ€μ΄μ μλΉμ€μμ μ°κΈ°λ§ νλ©΄ λλ€. μλλ μΌμ΄λΌκΈ°λ³΄λ€λ νλ©΄ λλ μΌμΈλ° μ΅λν κ°λ°μκ° κ°μ ν μΌμ΄ μ κ³ μꡬμ¬νμ΄ λ°λμ΄λ λ§μΆκΈ° λμμ΄ νΈν 무μμΌκΉκ° κ³ λ―Όμ΄ λ§λ€κ°β¦ κ²°κ΅ μ΅μ λ€μ λμ΄λκ³ νλμ© ν΄λ³΄λ μλ°μ μλ€λ κ²°λ‘ μ μ΄λ₯΄λ¬μ μμ μ΄κ²μ κ² ν΄λ³΄λ μ€μ΄λ€.
μ΄λ° λ₯μ μμ μμλ μ 체μ μΈ κ·Έλ¦Όμ 그리λ μμ λ μ€μνκ³ , κ·Έ κ·Έλ¦Όλλ‘ κ΅¬νμ ν΄λ³΄λ©΄μ κΈ°μ‘΄ μ»΄ν¬λνΈλ₯Ό λ체ν΄μ μ‘°μ¬μ€λ½κ² μ‘°κΈμ© μ μ»΄ν¬λνΈλ₯Ό λΌμλ£λ κ²λ μ€μνλ€κ³ μκ°νλ€. κ²°κ΅ νμλ₯Ό λ§μ΄ ν΄λ³Έ μ¬λλ§μ΄ μ μλ₯Ό μ ν μ λ°μ μκ³ , λλ μ μ/νμ λ€ κ²½νμ΄ μ κΈ° λλ¬Έμ μΌλ¨ λλΌλ ν΄λ³΄λ©΄μ κ΅νμ μ»λ μ λ°μ μλ€.
2020λ 2/3 νκ³ μμ 리νΈμ½λλ₯Ό λ§μ΄ λͺ»νμ΄μ μμ½λ€κ³ μΌμλλ° κ·Έ λλΆν°λ 리νΈμ½λλ₯Ό μ’ μ κ²½μ¨μ νμ΄μ μ΄μ λ μ΄μ¨λ λ―ΈλμκΉμ§λ κ½€ μμνκ² νΈλ κ² κ°λ€. νμ€ν λꡬ/νλ μμν¬ κ³΅λΆλ₯Ό νλ κ² λ³΄λ€λ μ§μ²λκ° λμ λ± λ³΄μ¬μ μ€μ€λ‘ μμ°μ μ΄λΌκ³ λλΌκΈ° μ¬μ΄ κ²μ μ’μλλ° μ¬μ ν νλλ§ λ³΄λ©΄ μ μ μ λͺ»μ°¨λ €μ (γ γ ) μ΄λ€ λ°©μμΌλ‘ μλ ¨μ ν΄μΌ νλλ μ νμ§λ μμ§λ μ λͺ¨λ₯΄κ² λ€.
λ―ΈλμκΉμ§ λ΄κ° ν¨νμ λ³Έ λ°©λ²μ 곡μ ν΄λ³΄λ©΄
hash
)ν΄μ ν 200κ° νλ©΄ μ’ μ μμ΄ λμλλ° νλλΆν°λ 30~40λΆ λ΄λ λͺ¨λ₯΄κ² μΌλ©΄ λ΅μ λ³Έλ€
μμ λ΅μ 보λ λΉμ€μ΄ λ무 λμμ Έμ μ½κ² λ©νμ΄ λΆμμ§λκ² λ¬Έμ λ€. 100κ° μ λ λ΅μ 보면 μ’ λμμ§κΉ μΆλ€.
λ¬Έμ νμ΄λ₯Ό νλ€λ³΄λ©΄ λ€λ₯Έ 곡λΆκ° κ°μ±λΉκ° λ¨μ΄μ§λ κ²μ²λΌ λκ»΄μ§κ³ , μ± μ λλμ± μ μ½κ² λμ μ¬ν΄λ μ± μ λ§μ΄ μ½μ§λ λͺ»νλ€ (λΈλ‘κ·Έμ κ°λ³΄λ λ€ν΄μΌ 17κΆ μ½μλ€ γ γ (μμ¬ μ°Έκ³ ) μ μ€μμ ν 3κ°λ§ κΌ½μΌλΌλ©΄
κ° κΈ°μ΅μ λ§μ΄ λ¨λλ€.
μλλ 건κ°μ λν΄μ μ²΄μ€ / 체λ ₯ λΉΌκ³ λ³λ‘ μ κ²½μ μ μΌλλ° κ±΄κ°κ²μ§μμ μ΄μκ° λ°κ²¬λμ μμ μ ν΄μΌλλ μν©μ΄ μκΈ°λκΉβ¦μκ°λ³΄λ€ 건κ°μ΄ μ€μνꡬλνκ³ λ§μ΄ λκΌλ€. μ¬ν근무λ₯Ό νλ©΄ μ΄μ°¨νΌ μ μ¬μκ°μ΄ λ¨μΌλκΉ μ μ¬μκ°λ§λ€ 30λΆ μ λ κ±·κ³ μλλ° μ΄κ² μ λ§ ν° μ°¨μ΄λ₯Ό λ§λλ κ²μ λκ»΄μ κ±°μ μ΅κ΄μ μΌλΆκ° λ κ² κ°λ€.
μμ¦μ 8μκ° κ·Όλ¬΄ κΈ°μ€μΌλ‘ ν루μ 2μκ° μ λλ μ€μ€λ‘λ₯Ό μν΄ μ°λ μ΅κ΄μ΄ μκ²Όλλ°β¦ μ΄κ²κΉμ§ λ§μ½ μΌνλ μκ°μΌλ‘ μκ°νλ©΄ κ°λ°μλΌλ μ§μ μ΄ κ·Έλ κ² μ«μλ‘λ§ λ°μ§λ©΄ κ·Έλ κ² μλΌλ°Έμ΄ μ’μ μ§μ μ μλꡬλ μΆλ€ (μ’ μν΄μ Έμ μμ°μ±μ΄ μ¬λΌκ°λ©΄ λ μ μ μκ°μ μ°κ³ κ°μ μΌμ ν μ μμ§ μμκΉ κΏλ§ κΎΈλ μ€)