MSA (Micro Service Architecture) λ?
μΌλ§ μ λΆν° Node.jsκ° λ§μ κ°λ°μλ€μ΄ 곡λΆνκ³ νμ μμλ λ§μ΄ μ¬μ© μ€μ μλ€. Node.jsλ₯Ό μκΈ° μ΄μ μ MSAλ₯Ό λ¨Όμ μμμΌ νλ€κ³ μκ°νκΈ°μ κ²μνκ³ κ³΅λΆν΄μ λλ¦λλ‘ κ°λ΅ν μ λ¦¬ν΄ λ³΄λ € νλ€.
Micro Service Architectureλ?
λ§μ΄ν¬λ‘μλΉμ€λ₯Ό μ μΌ μ²μ μΈκΈν μ¬λμ Martin FowlerλΌλ μ¬λμ΄λ€. μ΄λΆμ κ°μ²΄μ§ν₯ μΈμ΄λ₯Ό 곡λΆν΄λ³Έ μ¬λμ΄λΌλ©΄ νλ²μ―€μ λ€μ΄λ΄€μλ¦¬λΌ μκ°νλ€. μ΄λΆμ΄ μ²μ μμ μ Blogμμ Microserviceλ₯Ό μ΄λ κ² μκ°νκ³ μλ€.
λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ² μ€νμΌμ λ¨μΌ μμ© νλ‘κ·Έλ¨μ λλμ΄ μμ μλΉμ€μ μ‘°ν©μΌλ‘ ꡬμΆνλ λ°©λ²μ΄λ©°, κ° κ°λ³ μλΉμ€λ >μμ μ νλ‘μΈμ€μμ μ€ννλ HTTP κΈ°λ° API λ±μΌλ‘ κ°λ²Όμ΄ μ°κ²° λ°©μμ μ¬μ©ν©λλ€. κ° μλΉμ€λ λΉμ§λμ€ λ‘μ§μ μν >κΈ°λ₯μ λ§κ² κ΅¬μΆ λ μμ ν μλν λ λ¨Έμ μ μν λ°°ν¬λ₯Ό ν΅ν΄ μ΄λ£¨μ΄ μ§λλ€. κ° μλΉμ€μ μ΅μνμ μ€μ κ΄λ¦¬ κΈ°λ₯μ μμ§λ§,>μλ‘ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄μ μν΄ κ°λ°λκ³ , λ€λ₯Έ λ°μ΄ν° μ μ₯ κΈ°μ μ΄ μ΄μ©ν μ μμ΅λλ€..
@Martin Fowlerβs Blog http://martinfowler.com/articles/microservices.html
μΌλ°μ μΌλ‘ κ°λ°μ μ¬μ©λλ μν€ν μ³μΈ λͺ¨λ리μ μ€νμΌμ μΌλ°μ μΈ κ³λ° λ°©λ²κ³Ό κ°μ΄ νλ‘κ·Έλ¨μ νλμ ν° λ©μ΄λ¦¬λ‘ ꡬμΆνλ κ²μ λ§νλ€. λͺ¨λ리μ μμ© νλ‘κ·Έλ¨μ μΌλ°μ μΌλ‘ μ μλνμ§λ§ κ°λ°ν λ λ¬Έμ μ μ΄ μ‘°κΈμ© λ°μνκ² λλ€. μμ£Ό μμ λΆλΆμ λ³κ²½νλλΌλ λͺ¨λ λΉλν΄μ λ€μ λ°°ν¬ν΄μΌ νλ©° μ΄κ²μ μ΅κ·Όμ²λΌ λ°°ν¬μ£ΌκΈ°κ° μ§§λ€λ©΄ λ§€μ° λΉν¨μ¨μ μ΄κ² λλ€. λν νλ‘κ·Έλ¨μ΄ μ μ 컀μ§κ² λλ€λ©΄ κ° λͺ¨λμ ꡬ쑰λ₯Ό λ³κ²½μμ΄ μ μ§νλ κ²μ λ§€μ° μ΄λ ΅λ€.
κ·Έλ¬λ Microserviceλ μμ μλΉμ€μ κ²°ν©μ ν΅ν΄ νλμ νλ‘κ·Έλ¨μ κ°λ°νλ λ°©λ²μΌλ‘, κ°κ°μ μλΉμ€λ λ 립μ μΈ λΉμ¦λμ€ λ‘μ§μΌλ‘ ꡬμ±λλ©°, μμ μλνλ κ°λ°/λ°°ν¬νκ²½μ μν΄ κ°κ° λ 립μ μΌλ‘ λ°°ν¬κ° κ°λ₯νλ€. λν μ΅μνμ μ€μ¬μ μΈ κ΄λ¦¬ 체κ³κ° μμΌλ©° μ΄ μμ€ν μ κ°κ° λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄, λ€λ₯Έ λ°μ΄ν°μ€ν λ¦¬μ§ κΈ°μ λ‘ μμ±νλ κ²μ΄ κ°λ₯νλ€.
λ§μ΄ν¬λ‘μλΉμ€ νΉμ§
- κ°λ°μκ° κ΄λ¦¬νλ μ€μ½νκ° λͺ νν΄μ§κ² λλ©°, μ΄λ₯Ό ν λλ‘ μννΈμ¨μ΄μ 볡μ‘μ±μ μ μ΄νλ κ²μ΄ κ°λ₯ μ΅κ·Ό UIμ 컨νΈλ‘€, λλ©μΈ λ‘μ§μ΄ λ³λμ λ§μ΄ν¬λ‘ μλΉμ€λ‘ ꡬμ±λμ΄ μμ ν λ 립μ μΌλ‘ κ°λ°μ΄ κ°λ₯ν λ°©ν₯μΌλ‘ λμκ°κ³ μλ€
- κ°κ°μ νμμ λ 립μ μΌλ‘ κ°λ°/λ°°ν¬κ° κ°λ₯νμ¬ κ°λ°νμ μ΄μκ³Ό μ€μΌμ€λ§μ μμ΄ λμ μμ λλ₯Ό κ°μ Έλ€ μ€λ€.
- κ°κ°μ λ§μ΄ν¬λ‘μλΉμ€λ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄, λ€λ₯Έ λꡬλ₯Ό μ¬μ©νμ¬ κ°λ° κ°λ₯νκΈ° λλ¬Έμ μꡬμ¬νμ ꡬννκΈ° μν΄ μ΅μ νλ μΈμ΄μ μν€ν μ³λ₯Ό μ νν μ μλ€.
- κ°κ°μ λ§μ΄ν¬λ‘μλΉμ€λ λ€λ₯Έ λ°μ΄ν°μ μ₯μλ₯Ό μ¬μ©ν μ μμΌλ©° μλ‘ λμ¨νκ² μ°κ²°λλ€.
- DevOpsμ κ²°ν©λ κ°κ°μ λ§μ΄ν¬λ‘μλΉμ€λ μ¬νν ꡬ쑰λ₯Ό μ§λλ λ§νΌ κ°λ°μλμ κ°μ μ μμ΄ λμ ν¨μ©μ±μ μ§λλ€. λν μλνλ μ λ ν μ€νΈμ μλλ¦¬μ€ ν μ€νΈλ λΉ λ₯Έ λ°°ν¬μ£ΌκΈ°μλ λΆκ΅¬νκ³ λ°μ΄λ νμ§μ μ μ§ν μ μκ²λ λμμ€λ€.
λ§μ΄ν¬λ‘μλΉμ€μ λ¬Έμ μ
- κ°κ°μ μλΉμ€μ μ΅μ νλ DBλ₯Ό μ¬μ©νκ² λλ€λ©΄ λ°μ΄ν° μ€λ³΅μ λ¬Έμ μ μ΄ λ°μν μ μλ€.
- μλΉμ€λ§λ€ κ°μ μΈμ΄λ νλ μμμ μ¬μ©νκ² λλ€λ©΄ 곡μ λ₯Ό ν΅ν΄ ν΄κ²°ν μ μμ§λ§ μλ‘ λ€λ₯Έ μΈμ΄λ₯Ό κ°μ§κ³ κ°λ°νκ² λλ€λ©΄ μ½λκ° μ€λ³΅λλ νμμ΄ λ°μν μ μλ€.
- λΉλκΈ°λ‘ λμνλ νΉμ±μ κ°κ°μ μλΉμ€μ λν ν μ€νΈλ μ¬μ°λ μ 체μ μΈ ν μ€νΈλ μ΄λ €μμ΄ λ°λ₯Έλ€.
- μλ§μ λ°°ν¬μμ μ΄ μλ°λλ€. 릴리μ¦κ° κ°λ³μ μΌλ‘ μ΄λ£¨μ΄μ§λ νΉμ±μ μ΄λ₯Ό λ³λμ μ΄μνμμ μΌκ΄μ μΌλ‘ κ΄λ¦¬νλκ²μ λΆκ°λ₯μ κ°κΉμ°λ©° μΌλ ¨μ μμ λ€μ μλν μν€μ§ μμΌλ©΄ κ³Όλ€ν μ 무λμ΄ λ°μνκ² λλ©°, μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ§μ΄ν¬λ‘μλΉμ€ κ°λ°μ μμ΄μ DevOpsμ λμ μ νμμμμ΄λ€.
- νΈλμ μ μλ§ μ΄ λΆλΆμ΄ μ μΌ μ²λ¦¬νκΈ° λκ°ν λΆλΆμΌ κ²μ΄λ€. μΌλ°μ μΈ λͺ¨λ리μ μν€ν μ³λ₯Ό μ¬μ©ν νλ‘μ νΈλΌλ©΄ RDBMSμ νΈλμ μ μ μ¬μ©ν΄ μλ¬κ° λ°μμ rollbackνλ©΄ κ·Έλ§μ΄λ€. νμ§λ§ λ§μ΄ν¬λ‘μλΉμ€μ κ²½μ°λ μ΄ λΆλΆμ λν΄μ λ§μ κ³ λ―Όμ΄ νμνλ€.
λ§λ¬΄λ¦¬
μ λ§ μ λ§μ νλ‘κ·Έλλ° μν€ν μ³κ° μ‘΄μ¬νλ€. κ·Έ μ€μμ μ΄λ€ κ²μ΄ κ°μ₯ μ’μ κ²μ΄λ 묻λλ€λ©΄ νμ€νκ² λ΅νκΈ° λ§€μ° μ΄λ €μΈ κ²μ΄λ€. κ·Έ μλ§μ μμΌν±μ³λ€ μ€μ μμ μ νλ‘κ·Έλ¨μ κ°μ₯ μ ν©ν μν€ν μ³λ₯Ό μ νν΄μ κ°λ°νλ©΄ κ·Έκ² κ°μ₯ μ’μ μν€ν μ³λΌκ³ μκ°νλ€.
λ¬Έμ μ μ΄ μλ€λ©΄ κ°κ°μμ΄ μ§μ ν΄μ£ΌμκΈ° λ°λλλ€. νμ κ°μ¬ν λ§μμΌλ‘ μμ©νλ©° 곡λΆνκ² μ΅λλ€. κ°μ¬ν©λλ€.