ITstudy

λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜ vs λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜

martinooo 2023. 1. 2. 11:22
728x170

🀷‍♂️ λͺ¨λ†€λ¦¬μ‹μ™€ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜λž€?


λͺ¨λ†€λ¦¬μ‹ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν•˜λ‚˜μ˜ ν†΅ν•©λœ μœ λ‹›μœΌλ‘œ λ§Œλ“€μ–΄μ§€λŠ” 반면, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜λŠ” λ…λ¦½μ μœΌλ‘œ 배포할 수 μžˆλŠ” μ„œλΉ„μŠ€λ‹€. μ–΄λ–€ 것이 μ ν•©ν•œμ§€λŠ” μ—¬λŸ¬ μš”μΈμ— 따라 λ‹€λ₯΄λ‹€.

Monlithic Architecture

πŸ‘€ λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜ (Monolithic Architecture)?


μ „ν†΅μ˜ μ•„ν‚€ν…μ²˜λ₯Ό μ§€μΉ­ν•œλ‹€. μ†Œν”„νŠΈμ›¨μ–΄μ˜ λͺ¨λ“  κ΅¬μ„±μš”μ†Œκ°€ ν•œ ν”„λ‘œμ νŠΈμ— ν†΅ν•©λ˜μ–΄ μžˆλŠ” ν˜•νƒœ. 
λͺ¨λ†€λ¦¬μ‹ μ•„μΌ€ν…μ²˜μ˜ 경우 λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€κ°€ κΈ΄λ°€ν•˜κ²Œ κ²°ν•©λ˜κ³  단일 μ„œλΉ„μŠ€λ‘œ μ‹€ν–‰λœλ‹€. 
λ”°λΌμ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν•œ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μˆ˜μš”κ°€ κΈ‰μ¦ν•˜λ©΄ ν•΄λ‹Ή μ•„ν‚€ν…μ²˜ 전체λ₯Ό ν™•μž₯ν•΄μ•Ό ν•œλ‹€. 
μ½”λ“œ λ² μ΄μŠ€κ°€ μ¦κ°€ν•˜κ²Œ 되면 λͺ¨λ†€λ¦¬μ‹ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ κ°œμ„ ν•˜κΈ°κ°€ 더 λ³΅μž‘ν•΄μ§„λ‹€.

 

λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜ μž₯점

λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ°œλ°œν•˜λŠ” κ°€μž₯ 큰 μž₯점은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν•˜λ‚˜μ˜ μ½”λ“œ λ² μ΄μŠ€μ— κΈ°λ°˜μ„ λ‘μ–΄μ„œ λ‹¨μˆœν•˜κΈ° λ•Œλ¬Έμ— 개발 속도가 λΉ λ₯΄λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 
  • μ†μ‰¬μš΄ 배포 - μ‹€ν–‰ 파일 λ˜λŠ” 디렉토리가 ν•˜λ‚˜μ—¬μ„œ 배포가 νŽΈλ¦¬ν•¨
  • 개발 - ν•˜λ‚˜μ˜ μœ λ‹›μ•ˆμ— μ½”λ“œ 베이슀둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μΆ•ν•˜μ—¬ 개발이 더 쉽닀. 
  • λΉ„μ¦ˆλ‹ˆμŠ€ - μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλŠ” 합리적이닀.
  • κ°„νŽΈν•œ 디버깅 - λͺ¨λ“  μ½”λ“œκ°€ ν•œ μœ λ‹›μ— μžˆμ–΄ μš”μ²­μ„ λ”°λΌκ°€μ„œ 디버깅 문제λ₯Ό ν•΄κ²°ν•˜κΈ° 쉽닀. 

 

λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜ 단점 

λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜ 방식은 μ„œλΉ„μŠ€ 규λͺ¨κ°€ 컀지고 ν™•μž₯이 μ–΄λ €μ›Œμ§€λ©΄ 더 이상 νš¨κ³Όμ μ΄μ§€ μ•Šλ‹€. 
ν•˜λ‚˜μ˜ κΈ°λŠ₯을 μΆ”κ°€ ν˜Ήμ€ μˆ˜μ •ν•΄λ„ 전체 μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜κ³  ν…ŒμŠ€νŠΈν•΄μ•Ό λœλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ΅¬λ™μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜κ³  λΉŒλ“œ, 배포 μ‹œκ°„μ΄ 길어진닀. 
  • μ‘°κ·Έλ§Œν•œ μˆ˜μ •μ‚¬ν•­μ΄ μžˆμ–΄λ„ 전체λ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜κ³  배포λ₯Ό ν•΄μ•Όν•œλ‹€. 
  • λ§Žμ€ μ–‘μ˜ μ½”λ“œκ°€ λͺ°λ €μžˆμ–΄ μœ μ§€λ³΄μˆ˜κ°€ νž˜λ“€λ‹€. 
  • κΈ°λŠ₯λ³„λ‘œ μ•Œλ§žλŠ” 기술, μ–Έμ–΄, ν”„λ ˆμž„μ›Œν¬λ₯Ό μ„ νƒν•˜κΈ°κ°€ κΉŒλ‹€λ‘­λ‹€. 
  • μ„œλΉ„μŠ€κ°€ λŒ€κ·œλͺ¨λ‘œ 컀지면 λͺ¨λ†€λ¦¬μ‹ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” 개발이 λ”μš± λ³΅μž‘ν•΄μ§€κ³  속도가 λŠλ €μ§„λ‹€.

MicroService Architecture

πŸ‘€ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ (MicroService Architecture)?


λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜λŠ” ν•˜λ‚˜μ˜ 큰 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬ 개의 μž‘μ€ μ„œλΉ„μŠ€ μœ λ‹›μœΌλ‘œ λ‚˜λˆ μ„œ λ³€κ²½ν•˜κ³  쑰합이 κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“  μ•„ν‚€ν…μ²˜λ‹€. 각 μœ λ‹›μ€ μ„œλ‘œ μƒν˜Έ 톡신이 κ°€λŠ₯ν•˜λ©° 이λ₯Ό 톡해 전체 μ„œλΉ„μŠ€λ₯Ό κ΅¬μ„±ν•œλ‹€.
μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 독립적인 ꡬ성 μš”μ†Œλ‘œ κ΅¬μΆ•λ˜μ–΄ 각 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ„œλΉ„μŠ€λ‘œ μ‹€ν–‰λœλ‹€. 
μ΄λŸ¬ν•œ μ„œλΉ„μŠ€λŠ” κ²½λŸ‰ APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 잘 μ •μ˜λœ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 ν†΅μ‹ ν•œλ‹€. μ„œλΉ„μŠ€λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ κΈ°λŠ₯을 μœ„ν•΄ κ΅¬μΆ•λ˜λ©° μ„œλΉ„μŠ€λ§ˆλ‹€ ν•œ 가지 κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€. μ„œλΉ„μŠ€κ°€ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ νŠΉμ • κΈ°λŠ₯에 λŒ€ν•œ μˆ˜μš”λ₯Ό μΆ©μ‘±ν•˜λ„λ‘ 각각의 μ„œλΉ„μŠ€λ₯Ό μ—…λ°μ΄νŠΈ, 배포 및 ν™•μž₯ν•  수 μžˆλ‹€.  

 

λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ μž₯점

λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜λ₯Ό λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν•˜λŠ” μœ λ‹›μœΌλ‘œ κ΅¬μ„±λ˜λ―€λ‘œ, λ‹€λ₯Έ μ„œλΉ„μŠ€μ— 영ν–₯을 μ£ΌλŠ” 일 없이 각 μ„œλΉ„μŠ€λ₯Ό 개발, μ—…λ°μ΄νŠΈ, 배포 및 ν™•μž₯ν•  수 μžˆλ‹€. ν–₯μƒλœ μ•ˆμ •μ„±, 가동 μ‹œκ°„ 및 μ„±λŠ₯으둜 μ†Œν”„νŠΈμ›¨μ–΄ μ—…λ°μ΄νŠΈλ₯Ό 더 자주 μˆ˜ν–‰ν•  수 μžˆλ‹€. 
  • μœ μ—°ν•œ ν™•μž₯ - λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€κ°€ λΆ€ν•˜ μš©λŸ‰μ— λ„λ‹¬ν•˜λ©΄ ν•΄λ‹Ή μ„œλΉ„μŠ€μ˜ μƒˆ μΈμŠ€ν„΄μŠ€λ₯Ό ν¬ν•¨ν•˜λŠ” ν΄λŸ¬μŠ€ν„°μ— μ‹ μ†ν•˜κ²Œ λ°°ν¬ν•˜μ—¬ 뢀담을 μ™„ν™”ν•  수 μžˆλ‹€.
  • 지속적 배포 - 더 자주 배포할 수 μžˆλ‹€. 
  • 독립적인 μ„œλΉ„μŠ€λ‘œ 배포가 λΉ λ₯΄κ³  λͺ¨λ†€λ¦¬μ‹λ³΄λ‹€ 가볍닀. 
  • 높은 μœ μ§€ 관리성 및 ν…ŒμŠ€νŠΈ νŽΈμ˜μ„± - λ…λ¦½μ μœΌλ‘œ μ„œλΉ„μŠ€λ₯Ό κ΄€λ¦¬ν•΄μ„œ μ½”λ“œκ΄€λ¦¬μ— μš©μ΄ν•˜λ‹€. 
  • 높은 μ•ˆμ •μ„± - μ„œλΉ„μŠ€λ³„ κ°œλ³„ 배포가 κ°€λŠ₯ν•˜μ—¬ 배포 μ‹œ 전체 μ„œλΉ„μŠ€μ˜ 쀑단이 μ—†λ‹€. 

 

λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ 단점

λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λŠ” μ„œλΉ„μŠ€μ— λ³΅μž‘μ„±μ„ μ¦κ°€μ‹œμΌœ λ¬΄λΆ„λ³„ν•œ 개발 ν™•μž₯ λ˜λŠ” κ΄€λ¦¬λ˜μ§€ μ•ŠλŠ” κΈ‰μ†ν•œ μ„±μž₯으둜 μ„œλΉ„μŠ€μ— λ³΅μž‘μ„±μ„ 증가 μ‹œν‚¬μˆ˜ μžˆλ‹€.
  • 전체 μ„œλΉ„μŠ€κ°€ 컀짐에 따라 λ³΅μž‘λ„κ°€ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ λŠ˜μ–΄λ‚  수 μžˆλ‹€. 
  • μ„œλΉ„μŠ€λ§ˆλ‹€ DBκ°€ λΆ„λ¦¬λ˜μ–΄ λ°μ΄ν„°μ˜ μ‘°νšŒκ°€ μ–΄λ ΅κ³  λ°μ΄ν„°μ˜ 쀑볡이 λ°œμƒν•œλ‹€. 
  • 각자 λ°°ν¬ν•œ μ„œλΉ„μŠ€μ— λŒ€ν•΄ λ‹€λ₯Έ μ„œλΉ„μŠ€μ™€ 싱크가 잘 λ˜λŠ”μ§€ 확인해야 ν•œλ‹€. 
  • λ…λ¦½μ μœΌλ‘œ μ„œλ²„λ₯Ό μš΄μ˜ν•΄μ„œ λΉ„μš©λ¬Έμ œλ₯Ό μ•ΌκΈ°μ‹œν‚¬ 수 μžˆλ‹€. 
  • μ„œλΉ„μŠ€κ°€ λΆ„μ‚°λ˜μ–΄ μžˆμ–΄ νŠΈλžœμž­μ…˜ 관리, μž₯μ•  좔적 및 ν…ŒμŠ€νŠΈ 등이 쉽지 μ•Šλ‹€. 
κ·Έλ¦¬λ“œν˜•