CS/Software Engineering

[Software Engineering] MSA

빈둥벤둥 2021. 8. 8. 18:02

📝 MSA


💻 Monolithic

✔ MSA가 도입되기 전, 모든 기능을 하나의 어플리케이션에서 비즈니스 로직을 구성해 운영하는 Monolithic 방식으로 개발이 이루어 졌다.

 

🔧 Monolithic 장점

  • 개발시 환경 설정에 있어 간단하다.
  • 작은 사이즈의 프로젝트에서 유리하다

 

 

🔧 Monolithic 단점

  • 빌드/테스트 시간이 증가한다 - 하나를 수정해도 시스템 전체를 빌드해야 하며 유지보수가 힘들다.
  • 작은 문제가 시스템 전체에 영향을 미친다.
  • 확장성에 불리하다 - 하나의 서비스 확장을 위해 전체 프로젝트를 확장해야 한다.

 

 

 

💻 MicroService Architecture

기능 별로 컴포넌트를 나누고 조합할 수 있도록 구축한다.

 

🔧 컴포넌트란?

  • 재사용이 가능한 독립적인 단위모듈이다.
  • 구현, 명세화, 패키지화 그리고 배포 될 수 있어야 한다.

 

 

🔧 MSA 특징

  • 각 컴포넌트는 API를 통해 다른 서비스와 통신을 한다.
  • 모든 서비스는 각각 독립된 서버로 운영하고 배포하기 때문에 서로 의존성이 없다.

 

 

🔧 MSA 장점

  • 하나의 서비스에 문제가 생겨도 다른 서비스에는 영향을 끼치지 않는다.
  • 서비스 별로 부분적인 확장이 가능하다.

 

 

🔧 MSA 단점

  • API로 통신하므로 속도가 느리다.
  • 서비스 별로 통신에 맞는 데이터로 맞추는 과정이 필요하다.

 

 

REFERENCE

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Software%20Engineering/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98(MSA).md