[MSA]란 무엇일까?

Jun_Gyu·2023년 3월 7일
0
post-thumbnail

이번 포스팅에서는 MSA가 무엇인지 한번 자세히 알아보도록 하자.

MSA란?

Micro Service Archirecture의 줄임말로써
작고, 독립적으로 배포가 용이한
여러가지의 기능수행 서비스로 구성된 프레임워크라고 할 수 있겠다. MSA(마이크로서비스)는 앞서 언급한것처럼 온전하게 독립적인 배포가 가능하며, 경량화되고 독립적인 여러개의 서비스를 조합하여 애플리케이션을 구현하는 방식으로 서비스마다 자체 데이터베이스를 가지고 동작하기때문에 개발, 빌드, 배포에 이르기까지 효율적인 수행이 가능하다는 특징이 있다.



MSA의 등장하게 된 배경

MSA가 등장하게 된 배경을 알기 위해서는 MSA이전에 사용했던 Monolithic Archirecture에 대해서 알아둘 필요가 있다.


Monolithic Archirecture란?

Monolithic Archirecture(모놀리식)은 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이며, 모듈별로 개발을 하고 개발 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태를 이야기한다. 주로 소규모의 프로젝트에 주로 사용된다.


애플리케이션 개발 초기에는 Monolithic 방식을 사용하여

전체 소스코드를 하나의 배포 유닛(war 또는 ear)으로 내장

시켰다. 하지만, 기존의 애플리케이션에 사소한 변경사항이 발생하게 되면 *QA(Quality Assurance)주기에 따라 업데이트를 해야 하거나, 일부 서비스 업데이트로 오류가 발생했을때도 전체 시스템을 중단하고 오류를 해결해야 했기에 다운타임이 발생하는 일이 빈번하게 일어났다.

이러한 문제를 해결하고자 애플리케이션의 핵심 서비스 기능을 각각 분할한 프레임워크, MSA라는 방식이 생겼으며, 각 서비스들을 독립적으로 구축, 배포할 수 있게 되었다.

QA(Quality Assurance) : 품질보증


MSA, Monolithic 장단점

✨ MSA 장점

  • 분산형 개발을 통해서 빠른 출시기간과 더불어 유연한 배포가 가능하다. (빠른 개발)
  • 서비스별로 독립적이기 때문에 다른 서비스들에게 영향을 주지 않는다. (뛰어난 복구능력)
  • 서비스별로 기술의 도입과 확장이 자유롭다. (높은 확장성)
  • 애플리케이션이 모놀리식 방식에 비해서 모듈화되고 규모가 작기때문에 배포에 용이하다. (뛰어난 배포)
  • 다중언어 지원API를 사용하여 여러가지의 언어를 사용할 수 있다. (향상된 개방성)
  • 하나의 애플리케이션을 여러 부분으로 분할했기 때문에 각 서비스 업데이트 및 개선이 용이하다.(편리한 액세스 및 업데이트)

🧨 MSA 단점

  • 각 서비스들은 API를 통해 통신을 하므로, 네트워크 통신에 의한 오버헤드 발생할 수 있다.
  • 서비스별로 로그가 생성되므로 중앙 로그 모니터링이 존재하지 않는다.
  • 하나의 프로젝트에 수많은 서비스들이 존재하므로, 모든 서비스 모니터링 오버헤드가 증가한다.
  • 하나의 서비스에서 다른 서비스를 호출하므로, 서비스 장애 발생 시 경로 및 장애 추적이 어렵다.
  • 서비스의 분산으로 인해 모놀리식보다 상대적으로 복잡하다.



✨ Monolithic 장점

  • 개발 초기에는 단순한 아키텍처 구조와 개발에 용이하다.
  • MSA방식에 비해 단순한 구조를 가지고 있다.
  • 서비스의 장애 발생 시 경로 추적이 용이하다.

🧨 Monolithic 단점

  • 서비스 규모가 커지게 되면 유지보수와 시스템 구조를 파악하는데 어려움이 있다.
  • 부분적인 오류가 전체 서비스의 문제로 확대될 위험이 존재함.
  • 배포가 오래걸린다.
  • 하나의 Framework와 언어에 종속적이다.
  • 분산형 개발이 어렵다.



[참고글 출처]
https://wooaoe.tistory.com/57
https://cocoon1787.tistory.com/746

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글