πŸ“– [Theory] πŸ’» MSA (Micro Service Architecture)λž€?

πŸ’» MSA (Micro Service Architecture)λž€?

λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ꡬ좕을 μœ„ν•œ μ•„ν‚€ν…μ²˜ 기반의 μ ‘κ·Ό λ°©μ‹μž…λ‹ˆλ‹€. λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ₯Ό 전톡적인 λͺ¨λ†€λ¦¬μ‹(monolithic)
μ ‘κ·Ό 방식과 ꡬ별 μ§“λŠ” 기쀀은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 핡심 κΈ°λŠ₯으둜 μ„ΈλΆ„ν™”ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
각 κΈ°λŠ₯을 μ„œλΉ„μŠ€λΌκ³  λΆ€λ₯΄λ©°, λ…λ¦½μ μœΌλ‘œ κ΅¬μΆ•ν•˜κ³  배포할 수 μžˆμŠ΅λ‹ˆλ‹€.
μ΄λŠ” κ°œλ³„ μ„œλΉ„μŠ€κ°€ λ‹€λ₯Έ μ„œλΉ„μŠ€μ— 뢀정적 영ν–₯을 주지 μ•ŠμœΌλ©΄μ„œ μž‘λ™(λ˜λŠ” μž₯μ• κ°€ λ°œμƒ)ν•  수 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
(https://www.redhat.com/ko/topics/microservices/what-are-microservices)

즉, β€œν•˜λ‚˜μ˜ 큰 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬κ°œμ˜ μž‘μ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ μͺΌκ°œμ–΄ λ³€κ²½κ³Ό 쑰합이 κ°€λŠ₯ν•˜λ„λ‘ λ§Œλ“  아킀텍쳐” μž…λ‹ˆλ‹€.

ν•˜λ‚˜μ˜ 큰 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 각각 λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰λ˜λŠ” μ—¬λŸ¬κ°œμ˜ μž‘μ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ κ΅¬μ„±ν•˜λ©΄

μž‘μ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ λ‹¨μœ„μ˜ μ„œλΉ„μŠ€λ₯Ό μž¬μ‚¬μš©ν•˜κΈ° 쉽고 λ¬Έμ œκ°€ λ°œμƒν•˜λ”λΌλ„ μ»€λ‹€λž€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ „λΆ€λ₯Ό μˆ˜μ •ν•  ν•„μš” 없이

λ¬Έμ œκ°€ 생긴 μž‘μ€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜λ§Œ μˆ˜μ •μ„ ν•˜λ©΄ λ©λ‹ˆλ‹€. λ˜ν•œ λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰λ˜λ―€λ‘œ 각 μ„œλΉ„μŠ€μ— κ°€μž₯ μœ λ¦¬ν•œ λ°©μ‹μœΌλ‘œ

λ…λ¦½μ μœΌλ‘œ 개발이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

점차 μš”κ΅¬λ˜λŠ” μ„œλΉ„μŠ€κ°€ μ»€μ§€κ²Œ λ˜λ©΄μ„œ λ“±μž₯ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μ„œλΉ„μŠ€λ“€μ΄ 각각 λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰λ˜λ―€λ‘œ μ„œλΉ„μŠ€λ“€κ°„ 잘 섀계 된 API 톡신을 톡해 μ„œλΉ„μŠ€ 제곡이 μ΄λ€„μ§‘λ‹ˆλ‹€.

MSA (Micro Service Architecture)의 λ“±μž₯ λ°°κ²½

msa

MSA (Micro Service Architecture)κ°€ λ“±μž₯ν•˜κΈ° μ „

μ˜ˆμ „λΆ€ν„° 많이 μ‚¬μš©λ˜μ–΄μ™”κ³  ν˜„μž¬μ—λ„ 많이 λ‚¨μ•„μžˆλŠ” 전톡적인 Monolithic Architecture ν˜•νƒœκ°€ μžˆμŠ΅λ‹ˆλ‹€.

Monolithic Architectureλž€, μ†Œν”„νŠΈμ›¨μ–΄μ˜ λͺ¨λ“  κ΅¬μ„±μš”μ†Œκ°€ ν•˜λ‚˜μ˜ ν”„λ‘œμ νŠΈμ— ν†΅ν•©λ˜μ–΄μžˆλŠ” ν˜•νƒœμž…λ‹ˆλ‹€.

μ•„μ§κΉŒμ§€λŠ” λ§Žμ€ μ†Œν”„νŠΈμ›¨μ–΄κ°€ Monolithic ν˜•νƒœλ‘œ κ΅¬ν˜„λ˜μ–΄ 있고, μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ—λŠ” Monolithic Architectureκ°€ 훨씬 ν•©λ¦¬μ μž…λ‹ˆλ‹€.

ν•˜λ‚˜λ‘œ ν†΅ν•©λ˜μ–΄ κ°œλ°œλ˜κΈ°μ— κ°„λ‹¨ν•œ Architecture이고, μœ μ§€λ³΄μˆ˜κ°€ μš©μ΄ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 점차 μš”κ΅¬λ˜λŠ” κΈ°λŠ₯이 컀지며 그에 따라

일정 규λͺ¨ μ΄μƒμ˜ μ„œλΉ„μŠ€, ν˜Ήμ€ μ—¬λŸ¬ κ°œλ°œμžκ°€ ν˜‘μ—…ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œ Monolithic Architecture은 λšœλ ·ν•œ ν•œκ³„λ₯Ό λ³΄μž…λ‹ˆλ‹€.

πŸ‘‰ λΆ€λΆ„μž₯μ• κ°€ 전체 μ„œλΉ„μŠ€μ˜ μž₯μ• λ‘œ μ΄μ–΄μ§€λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.
    - 뢀뢄적인 μž₯μ• λ‘œ 인해 전체 μ„œλΉ„μŠ€κ°€ λ‹€μš΄μ΄ λ˜λŠ” 치λͺ…적인 κ²½μš°λ„ 생길 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘‰ ν•˜λ‚˜λ‘œ ν†΅ν•©λ˜μ–΄ 있기 λ•Œλ¬Έμ— ν…ŒμŠ€νŠΈ/λΉŒλ“œμ‹œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 전체λ₯Ό ν…ŒμŠ€νŠΈ/λΉŒλ“œ ν•΄μ•Όν•©λ‹ˆλ‹€.
    - κΈ°λŠ₯ μˆ˜μ •/μΆ”κ°€ μ—λŸ¬ μˆ˜μ • λ“±μœΌλ‘œ ν…ŒμŠ€νŠΈ/λΉŒλ“œλ₯Ό ν•΄μ•Όν•  λ•Œ 전체λ₯Ό ν…ŒμŠ€νŠΈ / λΉŒλ“œ ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— μƒλ‹Ήν•œ μ‹œκ°„μ΄ μ†Œμš”λ©λ‹ˆλ‹€.

πŸ‘‰ μ„œλΉ„μŠ€ / ν”„λ‘œμ νŠΈκ°€ 컀지면 컀질수둝 전체 μ‹œμŠ€ν…œ ꡬ쑰 영ν–₯도 νŒŒμ•…μ΄ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
    - μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈκ°€ ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€λ‘œ κ°•ν•˜κ²Œ κ²°ν•©λ˜μ–΄ μžˆμ–΄ νŒŒμ•…μ΄ 규λͺ¨κ°€ 컀질수둝 νŒŒμ•…μ΄ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
    
πŸ‘‰ ν•˜λ‚˜μ˜ 언어와 ν”„λ ˆμž„μ›Œν¬μ— μ’…μ†μ μ΄κ²Œ λ©λ‹ˆλ‹€.
    - 인곡지λŠ₯ / 블둝체인 λ“± νŠΉμ •λΆ„μ•Όλ§ˆλ‹€ μœ λ¦¬ν•œ 언어와 ν”„λ ˆμž„μ›Œν¬κ°€ μžˆμ§€λ§Œ ν•˜λ‚˜μ˜ 전체 μ„œλΉ„μŠ€ 개발 μ–Έμ–΄/ν”„λ ˆμž„μ›Œν¬μ— μ’…μ†λ˜κ²Œ λ©λ‹ˆλ‹€.

πŸ‘‰ 뢀뢄적인 Scale-out이 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
    - 뢀뢄적인 μ„œλΉ„μŠ€μ— λŒ€ν•΄ κ°‘μž‘μŠ€λŸ° λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ΄ λͺ°λ¦¬λŠ”λ“± Scale-out이 ν•„μš”ν•  λ•Œ νŠΈλž˜ν”½μ΄ λͺ°λ¦¬λŠ” μ„œλΉ„μŠ€μ— λŒ€ν•΄μ„œλ§Œ Scale-out을 
      ν•˜λŠ” 것이 μ•„λ‹Œ 전체 μ„œλΉ„μŠ€μ— λŒ€ν•΄ Scale-out을 ν•΄μ£Όμ–΄μ•Όν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ Monolithic Architecture의 ν•œκ³„ λ•Œλ¬Έμ— MSA (Micro Service Architecture)κ°€ λ“±μž₯ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

MSA의 μž₯점

MSA (Micro Service Architecture)λŠ” Monolithic Architectureμ—μ„œ μ„œλΉ„μŠ€κ°€ 컀짐에 따라 μƒκ²Όλ˜ λ¬Έμ œμ λ“€λ‘œ 인해 λ“±μž₯ν•œλ§ŒνΌ ν•΄λ‹Ή λ¬Έμ œμ λ“€μ— λŒ€ν•΄ 보완이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

배포(deployment) 관점
πŸ‘‰ 각 μ„œλΉ„μŠ€ 별 κ°œλ³„ 배포 κ°€λŠ₯ ( 배포 μ‹œ 전체 μ„œλΉ„μŠ€μ˜ 쀑단이 μ—†μŒ )
    - ν•΄λ‹Ή λ˜λŠ” μ„œλΉ„μŠ€λ§Œ 재배포 ν•˜λ©΄ λ©λ‹ˆλ‹€.
    - μš”κ΅¬μ‚¬ν•­μ„ μ‹ μ†ν•˜κ²Œ λ°˜μ˜ν•˜μ—¬ λΉ λ₯΄κ²Œ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.
    
ν™•μž₯(scaling) 관점
πŸ‘‰ νŠΉμ • μ„œλΉ„μŠ€μ— λŒ€ν•œ ν™•μž₯성이 μš©μ΄ν•¨.
    - 전체 μ„œλΉ„μŠ€λ₯Ό ν™•μž₯ν•  ν•„μš”μ—†μ΄ ν™•μž₯이 ν•„μš”ν•œ μ„œλΉ„μŠ€λ§Œ ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 
    - ν΄λΌμš°λ“œ μ‚¬μš©μ— μ ν•©ν•œ μ•„ν‚€ν…μ³μž…λ‹ˆλ‹€.
    - μ»¨ν…Œμ΄λ„ˆ 기술 μ‚¬μš©μ— μ ν•©ν•œ μ•„ν‚€ν…μ³μž…λ‹ˆλ‹€.

μž₯μ• (failure) 관점
πŸ‘‰ μž₯μ• κ°€ 전체 μ„œλΉ„μŠ€λ‘œ ν™•μž₯될 κ°€λŠ₯성이 적음
    - μ„œλΉ„μŠ€κ°€ λͺ¨λ‘ λΆ„λ¦¬λ˜μ–΄ 있기 λ•Œλ¬Έμ— μž₯μ• κ°€ λ‚œ μ„œλΉ„μŠ€μ—λ§Œ λ¬Έμ œκ°€ μƒκΉλ‹ˆλ‹€.
    - μž₯μ• κ°€ λ°œμƒν•œ μ„œλΉ„μŠ€λ₯Ό μ œμ™Έ ν•œ λ‚˜λ¨Έμ§€ μ„œλΉ„μŠ€λ“€μ€ μ •μƒμ μœΌλ‘œ 제곡이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

MSA의 단점

MSA (Micro Service Architecture)λŠ” μž₯점이 λ§Žμ§€λ§Œ 그만큼 Monolithic Architecture에 λΉ„ν•΄

λ³΅μž‘ν•˜κ³  κ³ λ €ν•΄μ•Όν•  것이 λ§ŽμŠ΅λ‹ˆλ‹€. 그에 λ”°λ₯Έ λ‹¨μ λ“€μž…λ‹ˆλ‹€.

μ„±λŠ₯ 
    πŸ‘‰ μ„œλΉ„μŠ€ κ°„ 호좜 μ‹œ API 톡신을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, 톡신 λΉ„μš©μ΄λ‚˜, Latencyκ°€ 그만큼 λŠ˜μ–΄λ‚˜κ²Œ λ©λ‹ˆλ‹€.
ν…ŒμŠ€νŠΈ / νŠΈλžœμž­μ…˜
    πŸ‘‰ μ„œλΉ„μŠ€κ°€ λΆ„λ¦¬λ˜μ–΄ 있기 λ•Œλ¬Έμ— ν…ŒμŠ€νŠΈμ™€ νŠΈλžœμž­μ…˜μ˜ λ³΅μž‘λ„κ°€ μ¦κ°€ν•˜κ³ , λ§Žμ€ μžμ›μ„ ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.
데이터 관리 
    πŸ‘‰ 데이터가 μ—¬λŸ¬ μ„œλΉ„μŠ€μ— 걸쳐 λΆ„μ‚°λ˜κΈ° λ•Œλ¬Έμ— ν•œλ²ˆμ— μ‘°νšŒν•˜κΈ° μ–΄λ ΅κ³ , λ°μ΄ν„°μ˜ μ •ν•©μ„± λ˜ν•œ κ΄€λ¦¬ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€

정리

MSA (Micro Service Architecture)에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

MSA (Micro Service Architecture)

μ°Έκ³ 

https://www.redhat.com/ko/topics/microservices/what-are-microservices

https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e

https://wooaoe.tistory.com/57

Written on March 24, 2021