MSA(MicroService Architecture)란???
MicroService Architecture를 알기전에 MSA가 도입되기 전에 사용되었던 Monolithic방식을 알아보자
Monolithic Architecture
Monolithic은 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태이다. 즉, 모든 모듈은 하나의 서비스 내부에 종속되어있어 서비스 자체에 집중할 수 있는 구조로 되어있다.
Monolithic Architecture의 장점
- 단순한 구조이다.
- 개발환경과 방법의 통일성이 있다.
- 배포가 간편하다.
- End to End 테스트가 쉽다.
Monolithic Architecture의 단점
- 프로젝트 규모가 커질수록 복잡도가 심각하게 증가한다.
- 코드 전체를 이해하기 힘들다.
- 빌드시간이 증가한다.(CI/CD 불가능)
- 새로운 기술을 적용하려면 프로젝트를 전부 뜯어고쳐야한다.
Monolithic Architecture의 단점을 극복하기 위해 MicroService Architecture가 나왔다.
MicroService Architecture
MicroService Architecture는 소프트웨어 개발 기법 중 하나이며 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크이다.
경량화되고 독립적인 여러개의 서비스를 조합해서 애플리케이션을 구현하는 방식으로 서비스마다 자체 데이터베이스를 가지고 동작하기 때문에 개발,빌드,배포가 용이하지만 프로젝트 규모가 커지면 수정, 새로운 기능의 추가가 어려워 진다.
MicroService Architecture의 장점
- 서비스가 독릭접이기 때문에 다른 서비스에게 영향을 주지 않는다.
- 서비스별 기술 도입 및 확장이 자유롭다.
- 하나의 애플리케이션을 여러 부분으로 분할했기 때문에 각 서비스 업데이트 및 개선이 용이하다.
- 서비스 하나가 다운되어도 전체 서비스에 영향을 끼치지 않는다.
- 전체 프로그램을 다시 배포하지 않고도 업데이트가 가능하다.
MicroService Architecture의 단점
- 각 서비스들은 API를 통해 통신하므로 네트워크 통신에 의한 오버헤드가 발생한다.
- 하나의 서비스에서 다른 서비스를 호출하므로 장애 발생 시 경로 및 장애 추척이 힘들다.
- 서비스끼리의 테스트가 어렵다.
- 복잡하고 독립된 구조이기 때문에 통합적인 유지관리가 어려워질 수 있다.
이미지 출처 : https://cocoon1787.tistory.com/746
참고한 사이트 :
https://cocoon1787.tistory.com/746
https://gruuuuu.github.io/cloud/architecture-microservice/