[CS] MSA(마이크둜 μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜)

πŸ› οΈ λͺ¨λ†€λ¦¬ν‹±(Monolithic)

μ†Œν”„νŠΈμ›¨μ–΄μ˜ λͺ¨λ“  κ΅¬μ„±μš”μ†Œκ°€ ν•œ ν”„λ‘œμ νŠΈμ— ν†΅ν•©λ˜μ–΄ μžˆλŠ” ν˜•νƒœμ΄λ©°, λͺ¨λ“ˆλ³„λ‘œ κ°œλ°œμ„ ν•˜κ³  개발이 μ™„λ£Œλœ ν•˜λ‚˜μ˜ 결과물둜 νŒ¨ν‚€μ§•ν•˜μ—¬ λ°°ν¬λ˜λŠ” ν˜•νƒœ

  • μž₯점
    • 개발 μ΄ˆκΈ°μ—λŠ” λ‹¨μˆœν•œ μ•„ν‚€ν…μ²˜ ꡬ쑰와 개발이 μš©μ΄ν•¨
  • 단점
    • μ„œλΉ„μŠ€ 규λͺ¨κ°€ 컀짐에 따라 전체 μ‹œμŠ€ν…œ ꡬ쑰 νŒŒμ•… 및 μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ €μ›Œμ§
    • λΆ€λΆ„ μž₯μ• κ°€ 전체 μ„œλΉ„μŠ€μ˜ μž₯μ• λ‘œ ν™•λŒ€λ  수 있음
    • 배포 μ‹œκ°„μ΄ 였래 κ±Έλ¦Ό
    • ν•œ Framework와 언어에 쒅속적
    • 뢀뢄적인 Scale-out(μ—¬λŸ¬ μ„œλ²„λ‘œ λ‚˜λˆ„μ–΄μ„œ 일을 처리 방식)이 어렀움

 

πŸ› οΈ MSA(Micro Service Architecture)

  • μž‘κ³ , λ…λ¦½μ μœΌλ‘œ 배포 κ°€λŠ₯ν•œ 각각의 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” μ„œλΉ„μŠ€λ“€λ‘œ κ΅¬μ„±λœ ν”„λ ˆμž„μ›Œν¬
  • μ—¬λŸ¬ 개의 μ„œλΉ„μŠ€λ₯Ό μ‘°ν•©ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬ν˜„ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ„œλΉ„μŠ€λ§ˆλ‹€ 자체 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 가지고 λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— κ°œλ°œλΆ€ν„° λΉŒλ“œ, λ°°ν¬κΉŒμ§€ 효율적으둜 μˆ˜ν–‰ν•  수 있음

πŸ› οΈ μž₯점

  • λΆ„μ‚°ν˜• κ°œλ°œμ„ 톡해 개발 μ£ΌκΈ°κ°€ λ‹¨μΆ•λ˜κΈ° λ•Œλ¬Έμ— λΉ λ₯΄κ³  μœ μ—°ν•œ 배포가 κ°€λŠ₯(μΆœμ‹œ κΈ°κ°„ 단좕)
  • μ„œλΉ„μŠ€κ°€ 독립적이기 λ•Œλ¬Έμ— λ‹€λ₯Έ μ„œλΉ„μŠ€μ—κ²Œ 영ν–₯을 주지 μ•ŠμŒ (λ›°μ–΄λ‚œ 볡ꡬ λŠ₯λ ₯)
  • μ„œλΉ„μŠ€λ³„ 기술 λ„μž… 및 ν™•μž₯이 μžμœ λ‘œμ›€ (높은 ν™•μž₯μ„±)
  • λͺ¨λ†€λ¦¬λ”• 방식에 λΉ„ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λͺ¨λ“ˆν™”λ˜κ³  규λͺ¨κ°€ μž‘κΈ° λ•Œλ¬Έμ— μš°λ €μ‚¬ν•­μ΄μ€„μ–΄λ“¦ (μ†μ‰¬μš΄ 배포)
  • 닀쀑 μ–Έμ–΄ 지원(Polyglot) APIλ₯Ό μ‚¬μš© (ν–₯μƒλœ κ°œλ°©μ„±)
  • ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬ 뢀뢄을 λΆ„ν• ν–ˆκΈ° λ•Œλ¬Έμ— 각 μ„œλΉ„μŠ€ μ—…λ°μ΄νŠΈ 및 κ°œμ„  용이 (νŽΈλ¦¬ν•œ μ•‘μ„ΈμŠ€)

πŸ› οΈ λ‹¨μ 

  • 각 μ„œλΉ„μŠ€λ“€μ€ APIλ₯Ό 톡해 ν†΅μ‹ ν•˜λ―€λ‘œ λ„€νŠΈμ›Œν¬ 톡신에 μ˜ν•œ μ˜€λ²„ν—€λ“œ λ°œμƒ
  • ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈμ— μˆ˜λ§Žμ€ μ„œλΉ„μŠ€λ“€μ΄ μ‘΄μž¬ν•˜λ―€λ‘œ λͺ¨λ“  μ„œλΉ„μŠ€ λͺ¨λ‹ˆν„°λ§ μ˜€λ²„ν—€λ“œ 증가
  • ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€μ—μ„œ λ‹€λ₯Έ μ„œλΉ„μŠ€λ₯Ό ν˜ΈμΆœν•˜λ―€λ‘œ μž₯μ•  λ°œμƒ μ‹œ 경둜 및 μž₯μ•  좔적이 νž˜λ“¦
  • μ„œλΉ„μŠ€κ°€ λΆ„μ‚°λ˜μ–΄ 있기 λ•Œλ¬Έμ— λͺ¨λ†€λ¦¬λ”•μ— λΉ„ν•΄ μƒλŒ€μ μœΌλ‘œ 많이 볡작