κ°μ
2022λ μ΄ λμ΄ λ°±μλ μ§λ¬΄ 곡λΆλ₯Ό μμνλλ°, λ΄κ° λͺ¨λ₯΄λ λΆλΆμ΄ λ무λλ λ§κ³ νκ³ μΆμ 곡λΆλ λ무λλ λ§μ κ²μ κΉ¨λ¬μλ€. μ΄λλ‘λ©΄ νμ§λΆμ§ μ΄μλΆμ μ무κ²λ μ±κΈ°μ§ λͺ»ν κ°λ₯μ±μ΄ μλ λ― ν΄μ 미리 μ 리λ₯Ό ν΄ λλ €κ³ νλ€.
μ 리λ₯Ό νλ μλ―Έλ μμ§λ§, 곡μνλ₯Ό λμ§λ©΄ μ‘°κΈ λ μ κ²½μ¨μ μμ£Ό νμΈνκ³ λ μ΄κ²μ λ§μΌμ€ν€ μΌμ μ¬ν΄ νκ³ λ₯Ό μ°λ λ°μ λμμ΄ λμ§ μμκΉ μΆκΈ°λ νλ€.
λ ν κ±°?
μΌλ¨ 곡λΆν΄μΌκ² λ€κ³ (νΉμ μ½μ΄μΌ κ² λ€κ³ ) μκ°νλ κ²λ€μ λ€μκ³Ό κ°λ€.
- Java Spring
- SQL, DB μ€κ³
- Effective Java
- κ°μ²΄μ§ν₯μ λν μ¬μ€κ³Ό μ€ν΄
- μλ°μ€ν¬λ¦½νΈ λμμΈ ν¨ν΄ λ°μ΄λΈ
- Effective Typescript
- Golang
- ν΄λ¦° μ½λ
- Docker, docker-compose, Kubernetes
- MSA
- Apache Kafka
- Istio
μ λ°μ μΌλ‘ λ°±μλμ MSA κ΄λ ¨ν λΆλΆλ€μ μ κ²½μ¨μ 곡λΆν΄λ³΄λ €κ³ νλ€. Java Springμ μ€μ¬μΌλ‘ νμ΅μ νλ, λ΄κ° μ’μνλ node.jsμ Golangμ λν 곡λΆλ λμ§ μμΌλ €κ³ νλ€.
μ?
μΉμ λν΄μλ μ무κ²λ λͺ¨λ₯΄λ 2019λ κΉμ§λ₯Ό λ€λ‘ νκ³ , 2020λ λΆν° 2021λ κΉμ§ νλ‘ νΈμλ κ°λ°κ³Ό λ°±μλ κ°λ° μ€ νκ³ μΆμ κ²μ μ°ΎκΈ° μν΄ λ°©ν©μ μ‘°κΈ κΈΈκ² νλλ μ΄κ²μ κ² μλλ° μ λλ‘ ν μ€ μλ κ²μ νλλ μλ λμ΄ λμ΄λ²λ Έλ€. μΌλ¨ μ΄ μν©μ μ’ νκ°ν λ°©λ²μ μ°ΎμμΌ νλ€κ³ μκ°νλ€.
λλ 곡λΆλ₯Ό ν λ μ€λ κ³ μ¬λ°λ κ²μ μ΄μ¬ν νλλ°, μ§λ£¨ν κ²μ μ΄μ¬ν νμ§ μλ νΈμμμ΄λ€. κ·Έλμ κ³ λ±νκ΅κΉμ§ μ μ 곡λΆμ ν¬κ² ν₯λ―Έλ₯Ό λΆμ΄κ³ μ΄μ¬ν 곡λΆνμ§ λͺ»νλ€. κ·Έλ¦¬κ³ μ²μ°Έν μλ₯ μ±μ μΌλ‘ κ³ λ°°λ₯Ό λ§μ ¨κ³ , λνλ―Όκ΅μ μμ μ μ± μ νΈμΉν΄ μ΄ μ’μ μ μλ₯Ό μΉλ€λ€. κ·Έλ¦¬κ³ μνλ κ³Όμ μμ κ±°μ μ²μμΌλ‘ (κ·Έ μ κΉμ§λ ν΄λ΄μΌ μ€νμ λ μλλ‘μ΄λ ν°μ 컀μ€ν 둬μ μΏ νΉν΄μ λΉλνλ, μ€μ κ° λͺκ°λ₯Ό κΉμ§μ¬λ΄€μ λΏμ΄μλ€.) λ΄κ° νκ³ μΆμ 곡λΆλ₯Ό νλ€. κ·Έλ¦¬κ³ , κ³ λ±νκ΅ μ μ 곡λΆμμλ λλΌμ§ λͺ»νλ μ€λ μ λλ μ μμλ€. κ·Έλ¦¬κ³ κ·Έ μ€λ μ μλλ ₯μΌμ μ§μ€μ κΈΈκ² νμ§ λͺ»νκ³ λ§€μ¬ λΉ¨λ¦¬ μ§λ¦¬λ μΉλͺ μ λ¨μ μ λκ³ κ·Έλλ§ κΎΈμ€ν μ§κΈκΉμ§ 곡λΆλ₯Ό μ§μν΄μλ€.
2019λ , μΉ κ°λ°μ μνμ½λ© μμμ 보며 μ λ¬Ένμ λ, μ λ§ λͺ μ€ μλλ CSSμ JSλ‘ λΈλΌμ°μ μμμ λνλλ ννλ€μ΄ νλ¦νλ¦ λ³νλ κ²μ λ΄€μ λ μ§κΈκ» ν΄μ€λ μ½λ©κ³Όλ λ€λ₯Έ μ€λ μ λκΌλ€. μ΄κ±°λ‘ λλΌλ λ§λ€ μ μκ² λ€λ, λ΄κ° μκ°λ§ νλ κ²λ€μ λ리μ§λ§ κ·Έλ¦¬κ³ μν΄μ§λ§ νλ©΄ μμΌλ‘ ννν΄λΌ μ μλ€λ κΈ°λκ°μ΄ κ·Έ μ€λ μ΄μλ κ² κ°λ€. κ·Έλ¦¬κ³ μ΄κ²μ΄ λμκ² μμ΄, κ·Έλ¦¬κ³ λ΄κ° μκ°νλ νλ‘ νΈμλ κ°λ°μ μ€λ μ΄λ€.
2020λ , κ΅°λμμ κΉλ―Όμ€(velopert)λμ React μ± μ 보며 μ¬μ§λ°©μμ μ½λ©μ νλ€κ° μ²μμΌλ‘ λ©μ©‘ν κΈ°λ₯μ΄ μλ node.js μλ²λ₯Ό μμ±νλ κ²½νμ νκ² λμλ€. μ΄λ€ μμ²μ λ°μμ μ¬λ°λ₯Έ ννλ‘ λλ €μ£Όλ μλ²λ μ¬μ€ κ·Έ μ체λ‘λ ν¬κ² μ€λ μ§ μμλ€. κ·Έ ν μ‘°κΈμ΄ μ§λ, μ§κΈμ Archive μνμ΄μ§λ§, κ΅°λμμ νμ€νμΌλ‘ μ€ν°λ κΈ°λ‘μ μν λ¨μ²΄ Markdown λ ΈνΈ μ΄ν리μΌμ΄μ μ κ°λ°ν λ, μλ²λ₯Ό κ°λ°νλ©΄μ mongoDBμ μ°λνκ³ κ·Έκ²μ AWSμ λ°°ν¬ν΄μ μμ μ μΌλ‘ λμκ°κ³ μλ λͺ¨μ΅μ 보λ λ κ°μκΈ° λ§μμ΄ μ€λ μλ€. κ·Έ λΉμμ λ°±μλ κ°λ°μ΄ μ¬λ―Έμκ³ μ§λ£¨νλ€κ³ μκ°νλμ°¨μκΈ°μ μ‘°κΈ λλΌκΈ°λ νμ§λ§ μ΄λ΄ λκΌλ€. μμ²μ 보λμ λ κ·Έκ²μ λ°μνκ³ , λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ·Έ μμμ μ¬κΈ°μ κΈ° μν΅ν΄κ°λ©° μ λμνκ³ μμμ νμΈν λμ κ·Έ μ¦κ±°μ, κ·Έκ²μ΄ λμκ² μμ΄ λ°±μλ κ°λ°μ μ€λ μ΄λΌλ κ²μ λ§μ΄λ€.
2021λ , 볡νμ νκ³ μ μ μμ΄ νκΈ°μ κ³Όμ λκ³Ό νλ‘μ νΈ, κ·Έλ¦¬κ³ μ κΉμ΄λλ§ κΎΈμλ λ₯λ¬λ(μ, μ°Έκ³ λ‘ λ₯λ¬λμλ κ·Έλ₯ μ€λ μ§ μλλΌ. νμ°λ€λ³΄λ€ λμ μ νλλ₯Ό λ¬μ±ν λ λΉΌκ³ λ) νμ΅λμ μ³λ΄λ μ°¨μ LINEμμ Kafkaλ₯Ό μ¬μ©νλ λ°©λ² - 1νΈμ΄λΌλ κΈμ λ³΄κ² λμλ€. κΈμ λ΄μ©μ μμ ν μ΄ν΄ν λ§νΌ λ΄ λ ₯(?)μ΄ μμ΄μ§ μμμ§λ§ Producer - Comsumerλ₯Ό μ²λ¦¬νλ Kafkaμ λͺ¨λΈ, κ·Έλ¦¬κ³ μ΄λ₯Ό μ¬λ΄ λͺ¨λ μλΉμ€μ μμ€ν μμ μ¬μ©ν μ μλ λ²μ©μ μΈ νλ«νΌμΌλ‘ ꡬμΆν΄μ μ¬μ©νλ€λ LINEμ κΈμ λ΄ νΈκΈ°μ¬μ μλ© μκ·Ήνκ³ , μ΄λ΄ MSAλΌλ μλ‘μ΄ λ¬΄μΈκ°μ κ΄μ¬μ κ°μ§κ² νλ€. νμ§λ§ MSAλΌλ κ²μ λν μμ μ§μλ§ μ»μ μ μμκ³ , κ·Έλ κ² μ΄μλΆμ 2021λ μ κΈ°λ€λ €μ£Όμ§ μκ³ λ©λ¦¬ λ λκ°λ²λ Έλ€.
κ·Έλ¦¬κ³ 2022λ μ΄ λμλ€. νλ‘ νΈμλμλ μ€λ μ λλΌκ³ λ°±μλμλ μ€λ μ λλΌλ λλ μ΄μ λ κ²°μ μ ν λκ° λμλ€. μ‘°κΈ λ λμ κ²°μ μ λ΄λ¦¬κ³ μΆμ΄μ 1μμλ React μ½λλ€μ μ§μ μμ±ν΄μ μ΄ λΈλ‘κ·Έλ₯Ό λ§λ€μκ³ , 2μμλ μ¬μ΄λ νλ‘μ νΈμ μ°Έμ¬ν κΈ°νλ₯Ό μ»κ² λμ΄ λ°±μλ μ½λ μΌλΆμ λ°°ν¬λ₯Ό λ§‘μμ μλ²λ₯Ό ꡬμΆνκ³ λ°°ν¬νλ€. μ΄ λ κ°μ§ κ²½νμ ν΅ν΄ κ²°κ΅ μ§κΈμ λλ μ½λλ₯Ό ν΅ν΄ νλ©΄ μμ λ΄κ° μνλ λͺ¨μ΅μ 무μΈκ°κ° λνλλ μ€λ 보λ€λ λ΄κ° λ°°ν¬ν μλΉμ€κ° μμ μ μΌλ‘ λμνκ³ , μ¬μ©μμ λ°μ΄ν°λ₯Ό λ°κ³ λ€μ νμν λ°μ΄ν°λ₯Ό λλ €μ€ μ μλ κ²μ νμΈνλ μ€λ μ λ ν¬κ² λ°μνλ κ² κ°λ€κ³ μκ°νλ€.
κ·Έλ¦¬κ³ λβ¦ μμ κ²λ€μ 곡λΆν΄μΌκ² λ€λ λ§μμ λ¨Ήμκ³ , νλ² μ¦κ²κ² 곡λΆλ₯Ό ν΄λ³΄κ³ μ νλ€. κ³Όμ° μ΄ ν° κ³νμ΄ μ΄λ€ μ€μ²κ³Ό κ²°κ³Όλ‘ λμμ¬μ§, κΈ°λ λ° κ±±μ λ°μ΄ λλ€. κ·Έλλ λλ μμ§ μ΄ κ³΅λΆμ μ€λ λκΉ, ν° κ±±μ μ νμ§ μκ³ λ΄ νμ΅μ λͺ¨λ©ν μ λ―Ώλ κ²μ΄ μ’μ κ² κ°λ€. μ΄μ¬ν ν΄λ΄μΌμ§.
λ.