λͺ¨λ리μ(Monolithic) μν€ν μ³
λ§μ΄ν¬λ‘μλΉμ€(Microservice) μν€ν μ³
λͺ¨λ리μ vs λ§μ΄ν¬λ‘μλΉμ€
λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ₯Ό μ΄ν΄νκΈ° μν΄μ λͺ¨λ리μ μν€ν μ³κ° 무μμ΄κ³ , λͺ¨λ리μμμ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ‘ μ νλμ΄ κ°λ μ΄μ κ° λ¬΄μμΈμ§ μμμΌ νλ€.
Monolithic : λ¨λ¨ν μ§μ¬ νλλ‘ λμ΄ μλ
λͺ¨λ리μ μν€ν μ³λ?
νλ‘μ νΈμ λͺ¨λ κΈ°λ₯μ΄ λ¨μΌ codebaseμ μ‘΄μ¬νλ μν€ν
μ³λ₯Ό λͺ¨λ
Έλ¦¬μ μν€ν
μ³
λΌκ³ νλ€.
- UI/λΉμ§λμ€ λ‘μ§/λ°μ΄ν°λ² μ΄μ€ μμΈμ€ λ‘μ§μ΄ λͺ¨λ νλμ μ ν리μΌμ΄μ μ°μΆλ¬Όλ‘ ν¨ν€μ§λκ³ μ ν리μΌμ΄μ μλ²μ λ°°ν¬λλ κ²μ λ§νλ€.
λͺ¨λ리μ μν€ν μ³μ λ¨μ : λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ‘ μ ννλ μ΄μ
μ ν리μΌμ΄μ
μ μ μ κ΄λ¦¬
, μν κ²°μ
, νμ΄μ§ UI
κΈ°λ₯μ΄ μλ€κ³ κ°μ ν΄λ³΄μ.
-
μκ°μ΄ μ§λ μλ‘ μ ν리μΌμ΄μ μ ν¬κΈ°κ° λ무 μ»€μ Έ κ΄λ¦¬νκΈ° μ΄λ €μμ§λ€.
-
μ κ· κ°λ°μκ° νλ‘μ νΈμ μ°Έμ¬ν κ²½μ°, λͺ¨λ리μ μ΄ν리μΌμ΄μ μ ꡬ쑰λ₯Ό μ΄ν΄νκΈ° λ§€μ° νλ€λ€
-
μ ν리μΌμ΄μ μ νΉμ κ³μΈ΅(
μ μ κ΄λ¦¬
)λ§ μ λ°μ΄νΈνμ¬λ μ 체λ₯Ό μ¬λ°°ν¬ν΄μΌ νλ€. -
μ ν리μΌμ΄μ μ ν λΆλΆ(
μν κ²°μ
)μμ μλ² λΆνκ° λ°μνμ¬ Scaling outμ΄ νμν κ²½μ°, μ 체 μ ν리μΌμ΄μ (μ μ κ΄λ¦¬, μν κ²°μ , νμ΄μ§ UI
) μΈμ€ν΄μ€λ₯Ό μ¬λ¬ μλ²μ λ°°ν¬ν΄μΌνλ€.β μμλλΉκ° λ§€μ° μ¬νκΈ° λλ¬Έμ λͺ¨λ리μ μ ν리μΌμ΄μ μμ Scaling outμ΄ λΆκ°λ₯νλ€
-
νΉμ λͺ¨λ(
μ μ κ΄λ¦¬
)μμ λ²κ·Έκ° λ°μνλλΌλ μ 체 μ ν리μΌμ΄μ μ μν₯μ΄ λ―ΈμΉλ€.
λͺ¨λ리μ μν€ν μ³μ μ₯μ
- λ¨μΌ JAR/WAR νμΌλ§ λ°°ν¬νκΈ° λλ¬Έμ λ°°ν¬ κ³Όμ μ΄ κ°λ¨νλ€
- λ€νΈμν¬ μ§μ°/보μ λ¬Έμ κ° λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ³΄λ€ μλμ μΌλ‘ μ λ€
- End-to-End ν μ€νΈκ° μ©μ΄νλ€
λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ?
λ§μ΄ν¬λ‘μλΉμ€ μν€ν
μ³(MSA)
λ μ ν리μΌμ΄μ
μ΄ μμ μλΉμ€λ€λ‘ ꡬμ±λλ μν€ν
μ³μ΄λ€. κ°κ°μ μλΉμ€λ€μ HTTPμ κ°μ κ²½λ νλ‘ν μ½μ μ΄μ©νμ¬ μ§μ μλ‘ ν΅μ νλ€.
λ§μ΄ν¬λ‘μλΉμ€ : DB = 1 : 1
λμ¨ν κ²°ν©
λ§μ΄ν¬λ‘ μλΉμ€λ€μ κ°μ μμ λ€λ§μ λ°μ΄ν°λ² μ΄μ€λ₯Ό κ°μ§κ³ μλ€. κ·Έλ κΈ° λλ¬Έμ μΌλΆ λ°μ΄ν°κ° μ€λ³΅λμ§λ§ λμ¨ν κ²°ν©(Coupling)μ 보μ₯νλ€λ μ₯μ μ΄ μλ€. λ°λΌμ MSAμ μ΄μ μ μ»κΈ° μν΄ λ§μ΄ν¬λ‘μλΉμ€ λΉ νλμ λ°μ΄ν°λ² μ΄μ€λ₯Ό 보μ νλ κ²μ΄ νμμ μ΄λ€.
μλΉμ€μ μ ν©ν λ°μ΄ν°λ² μ΄μ€ μ ν
λ§μ΄ν¬λ‘ μλΉμ€λΉ λ³λμ λ°μ΄ν°λ² μ΄μ€λ₯Ό 보μ νκΈ° λλ¬Έμ μλΉμ€μ νΉμ§μ λ°λΌ μ ν©ν μ νμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν μ μλ€.
- κ²μμ© μλΉμ€μ Elasticsearchλ₯Ό μ¬μ©νμ¬ κ²μ μλλ₯Ό λνκ³ , κ°μ²΄κ°μ κ΄κ³κ° μ€μν μλΉμ€μμλ RDBλ₯Ό μ¬μ©ν μ μλ€.
λ§μ΄ν¬λ‘μλΉμ€ μ리
-
λ¨μΌ μ± μ μμΉ (SRP)
SOILD μμΉμ€ νλλ‘ ν΄λμ€, λ©μλ, λ§μ΄ν¬λ‘μλΉμ€ λ±κ³Ό κ°μ νλμ λ¨μκ° νλμ μ± μλ§ μ§λ€λ μμΉμ΄λ€. λ€λ₯΄κ² λ§νλ©΄, κ°λ°ν΄μΌ ν λ§μ΄ν¬λ‘μλΉμ€μ κ°μλ νμν κΈ°λ₯μ μμ λμΌνλ€κ³ λ³Ό μ μλ€.
- κ° λ§μ΄ν¬λ‘μλΉμ€λ§λ€ λ 립λ λ°μ΄ν°λ² μ΄μ€λ₯Ό 보μ νλ κ²μ΄ λ¨μΌ μ± μ μμΉμ λ°λ₯Έ κ²μΌλ‘ λ³Ό μ μλ€.
-
λΉμ§λμ€ κΈ°λ₯μ κΈ°λ°μΌλ‘ μλΉμ€ ꡬμΆ
κ° λ§μ΄ν¬λ‘μλΉμ€λ λΉμ§λμ€ μꡬμ¬νμ λ°λΌ μλ‘ λ€λ₯Έ κΈ°μ μ μ¬μ©ν μ μλ€.
- μλΉμ€μ νΉμ§μ λ°λΌ κ°λ° μΈμ΄, λ°μ΄ν°λ² μ΄μ€ μ ν λ±μ λ¬λ¦¬ν μ μλ€λ μλ―Έμ΄λ€.
-
μ€ν¨μ λν μ€κ³
νλμ λ§μ΄ν¬λ‘ μλΉμ€κ° λ€μ΄λμ΄λ μ 체 μμ€ν μ μν₯μ λ―ΈμΉμ§ μμμΌ νκ³ , λ€λ₯Έ μλΉμ€λ€μ μ μμ μΌλ‘ μ΄μλ μ μλ€.
SOA(Service Oriented Architecture) vs λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³
SOA
λ¨μΌ μν€ν μ³μ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ±μ₯ν μν€ν μ³μ΄λ€. νλμ ν° μ ν리μΌμ΄μ μ λ 립μ μΈ μκ·λͺ¨ μλΉμ€λ€λ‘ λΆν νλ€. νμ§λ§ κ°κ°μ μκ·λͺ¨ μλΉμ€λ€μ μλ‘ μ§μ μ μΌλ‘ μν΅νμ§ μκ³ , ESB(Enterprise Service Bus)λ₯ΌλΌλ λ―Έλ€μ¨μ΄λ₯Ό ν΅ν΄ μν΅νλ€.
- ESB : μλ‘ λ€λ₯Έ νλ‘ν μ½μ΄λ λ©μμ§ νμ€μ μ¬μ©νλ μλΉμ€λ€κ°μ μν΅μ λμμ£Όλ λ―Έλ€μ¨μ΄ λλ μλ²
MSA
λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ SOAμ μ§νμ΄λ€. μ¦ MSAλ SOAμ νμ κ°λ μ΄λ©° κ° λ§μ΄ν¬λ‘ μλΉμ€λ€μ ESBμ κ°μ λ―Έλ€μ¨μ΄ μμ΄ μλ‘ μ§μ ν΅μ ν μ μλ€.
λ§μ΄ν¬λ‘μλΉμ€μ μ₯μ
- κ°κ°μ μλΉμ€λ€μ λΆν νκΈ° λλ¬Έμ κ·λͺ¨κ° μμ κ΄λ¦¬κ° μ©μ΄νλ€.
- μλ‘μ΄ κ°λ°μλ μμ μ΄ μμ ν κΈ°λ₯μ μ 곡νλ νΉμ λ§μ΄ν¬λ‘ μλΉμ€λ§ μ΄ν΄νλ©΄ λκΈ° λλ¬Έμ νλ‘μ νΈ μ°Έμ¬κ° μμνλ€
- λ§μ΄ν¬λ‘ μλΉμ€ μ€ μ λ°μ΄νΈκ° μλ€λ©΄, ν΄λΉ λ§μ΄ν¬λ‘ μλΉμ€λ§ μ¬λ°°ν¬νλ©΄ λλ€.
- νΉμ λ§μ΄ν¬λ‘ μλΉμ€μ λΆνκ° λ°μνλ©΄, ν΄λΉ λ§μ΄ν¬λ‘ μλΉμ€λ§ Scaling outν μ μλ€.
- λ§μ΄ν¬λ‘ μλΉμ€λ€μ λΉμ§λμ€ μꡬμ¬νμ λ°λΌ μλ‘ λ€λ₯Έ κΈ°μ μ μμ©ν μ μλ€.
- νΉμ λ§μ΄ν¬λ‘ μλΉμ€κ° λ€μ΄λμ΄λ, λ€λ₯Έ λ§μ΄ν¬λ‘ μλΉμ€μ μν₯μ λ―ΈμΉμ§ μλλ€.
λ§μ΄ν¬λ‘μλΉμ€μ λ¨μ
- λΆμ°ν μμ€ν μ΄κΈ° λλ¬Έμ λͺ¨λ리μ μν€ν μ³λ³΄λ€ κ΄λ¦¬κ° νλ€κ³ 볡μ‘νλ€
- λ§μ΄ν¬λ‘ μλΉμ€λ€ λΌλ¦¬ μνΈ μμ©ν΄μΌνκΈ° λλ¬Έμ ν΅μ μ΄ λ§μμ§λ€. ν΅μ μ΄ λ§μμ§λ©΄ λ€νΈμν¬κ° μ§μ°λκ³ λΉμ©μ΄ λ§μ΄λ€κ³ ν΅μ μ€λ₯κ° μ¦μμ Έ μμ μ±μ΄ λ¨μ΄μ§λ€.
- End-to-End ν μ€νΈλ₯Ό μν΄ μ¬λ¬κ°μ λ§μ΄ν¬λ‘ μλΉμ€λ₯Ό ꡬλμμΌμΌ νλ―λ‘ ν μ€νΈ κ³Όμ μ΄ λΆνΈνλ€.
μ΄μ νμ¬μμ λ§μ΄ν¬λ‘μλΉμ€ νκ²½μΌλ‘ κ°λ°μ νμκ³ ,
νμ¬ νμ¬μμλ λͺ¨λ리μ μν€ν
μ³λ‘ κ°λ°λμ΄μλ νλ‘μ νΈμ ν¬μ
λμ΄μλλ°
κ°μΈμ μΌλ‘λ λ§μ΄ν¬λ‘μλΉμ€κ° κ°λ°μ μ‘°κΈλ μ©μ΄ν κ² κ°λ€.
κ°μ₯ ν° μ΄μ λ
λ§€ μ£Όλ§λ€ μλ‘μ΄ κΈ°νμκ³Ό μμ μμ²μ΄ μκΈ°λλ° μ‘°κ·Έλ§ν λ³κ²½μ¬νμλ μ 체λ₯Ό λ€μ λΉλνκ³ λ°°ν¬λ₯Ό ν΄μΌνλ
λΆλ΄μ΄λκ³ ν κΈ°λ₯μ μμ νμλλ° μλͺ»λ λΆλΆμ΄ μμ΄ μ μ²΄κ° μ€λ₯κ° μκΈ°λ κ²½μ°λ μμλ€.
λ°λΌμ λͺ¨λ κΈ°λ₯μ λ€μ ν
μ€νΈλ₯Ό νκ³ λ°°ν¬κ° λλλ° μ΄κ² λν λΆλ΄μ΄μλ€.
μ²μλΆν° λ§μ΄ν¬λ‘ μλΉμ€λ‘ κ°λ°νλ κ²μ λͺ¨λ리μ μν€ν
μ³μ κ°λ°λ°©μλ³΄λ€ λΆνΈν κ²μ νμ€νλ€.
νμ§λ§ λΉ λ₯΄κ² λ³νν΄μΌνλ IT μλΉμ€ μμ₯μμ λ° λ§μΆ° κ°λ°νλ €λ©΄ λ§μ΄ν¬λ‘ μλΉμ€λ₯Ό μ ννλκ²μ΄ μ’μκ²μ΄λ€.
MSAλ₯Ό λμ νλλ° μμ΄μ λΆλͺ ν ROI(Return Of Investment, ν¬μ λλΉ ν¨κ³Ό)κ° μμ΄μΌ νλ€.
λͺ¨λ리μμμ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ³λ‘ μ ννκΈ° μν΄μ Application λ¨μμλΆν° Infra κΉμ§ μμ ν΄μΌνλ€. μμ μμ λ§μΌλ‘λ λ§€μ° λΆλ΄μ€λ½κ³ μ΄ν λ§μ΄ν¬λ‘ μλΉμ€λ€μ κ΄λ¦¬νλ κ²λ κΉλ€λ‘λ€.
νμ§λ§ λ°°ν¬κ° λΉλ²ν κΈ°λ₯μ΄ νμ λμ΄ μκ³ , νΉμ μλΉμ€μ scaling outμ΄ νμν κ²½μ° MSAλ₯Ό λμ νλ―λ‘μ¨ κ³ μ§μ μΈ λ¬Έμ κ° ν΄κ²°λ μ μλ€.
(νμ¬ Netflix
μ λ°°λ¬μ λ―Όμ‘±
μμ MSAλ‘ μλΉμ€λ₯Ό μ 곡νκ³ μλ€.)
https://www.youtube.com/watch?v=dSGnJWHuxtQ
[μ°μμ½2020] λ°°λ¬μλ―Όμ‘± λ§μ΄ν¬λ‘μλΉμ€ μ¬νκΈ°
devops microservices docker κ°λ
MSAκ° λ¬΄μμΈκ°μ?
μ MSAλ₯Ό μ¬μ©νλμ?
λ³ΈμΈμ μ΄λ€ μν€ν μ³λ‘ νλ‘μ νΈλ₯Ό κ°λ°νμλμ? κ·Έ μ΄μ λ?