[IT] MSA(MicroService Architecture)란?

Jaehyeong Kwon·2022년 4월 14일
0

💻 Intro

요새 구인 글을 보다보면 우대사항에 MSA 에 대한 경험 유무를 많이 물어보는 것 같다. 그래서 MSA가 무엇인지 알아보고 왜 중요한지에 알아보는 시간을 가지고자 합니다.


💻 MSA란?

Microservice Architecture의 줄임말로써 소프트웨어 개발 기법입니다.

Monolithic 개발 기법과는 다르게 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크가 MSA 입니다.

여러 개의 서비스를 조합하여 애플리케이션을 구현함으로 서비스마다 데이터베이스를 가지고 동작하기 때문에 개발부터 빌드, 배포까지 효율적으로 수행할 수 있습니다.


💻 MSA 등장 배경

MSA가 유행하기 이전 애플리케이션은 Monolithic 방식으로 배포가 되었습니다. 하지만 이 방식은 일부 서비스의 오류가 발생될 때 전체 시스템을 중단하고 해결해야하는 일이 빈번하였습니다. 위의 문제를 해결하기 위해서 MSA 라는 방식이 도입되기 시작하였으며, 개별적인 서비스의 오류가 생기더라도 전체 시스템을 중단하지 않아도 됩니다.


💻 Monolithic 이란?

앞 서 Monolithic 기법에 대해 언급하였는데, 좀 더 자세히 알아보고 넘어가도록 하겠습니다.

Monolithic은 소프트웨어의 모든 구성 요소가 한 프로제그에 동합되어 있는 형태이며, 모듈 별로 개발을 하고 이를 하나의 결과물로 패키징하여 배포하는 형태를 뜻합니다.

장점

  • 단순한 아키텍처 구조를 가지기 때문에 개발에 용이

단점

  • (Critical) 부분 장애가 전체 서비스의 장애로 확대 가능
  • 전체 시스템 구조 파악 및 유지 보수 힘듬
  • 특정 프레임워크나 언어에 종속적

그렇다면 MSA에는 장점만 있는 것일까요? 이번에는 MSA의 장단점을 보도록 하겠습니다.


💻 MSA의 장점 및 단점

장점

  • 각각의 독립된 서비스가 서로에게 영향을 주지 않음 (복구 능력)
  • 하나의 애플리케이션을 여러 부분으로 분할했기 때문에 서비스 업데이트 및 개선 용이 (편리한 액세스)
  • 서비스별 기술 도입 및 확장 용이
  • 분산형 개발을 통해 개발 주기가 단축되기 때문에 빠르고 유연한 배포 가능

단점

  • Monolithic에 비해 많이 복잡
  • 중앙 로그 모니터링 존재 x
  • 서비스별 API 통신 증가에 의한 오버헤드 발생
  • 서비스 별 체인이 존재하기 때문에 장애 경로 파악 및 추적이 힘듬

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

profile
나무와 같이 성장하는 사람

0개의 댓글