[MSA] MSA 개요

beok91·2022년 6월 12일
0

지금 MSA프로젝트를 진행하고 있으면서 MSA에 대한 정리도 제대로 하지 않았던것 같아서 이번에 제대로 정리해보려고 한다.

1. MSA 정의

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

MSA(Microservice Architecture)는 각 자신의 프로세스에서 동작하며 가벼운 매커니즘(종종 HTTP 리소스 API)으로 통신하는 하나의 서비스를 작은 서비스의 세트로 구성하여 접근해 개발하는 스타일이다. 이 서비스들은 비즈니스 수용능력과 완벽히 자동화된 배포 기계로 빌드될 수 있다. 이것은 다른 프로그래밍 언어로 쓰이고 다양한 데이터 저장 기술을 사용하는 서비스의 최소한의 중앙 관리가 있다
-- James Lewis and Martin Fowler (2014) / https://martinfowler.com/microservices/

마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다. 마이크로서비스 아키텍처에서 서비스들은 섬세(fine-grained)하고 프로토콜은 가벼운 편이다. 애플리케이션을 더 조그마한 여러 서비스로 분해할 때의 장점은 모듈성을 개선하고 애플리케이션의 이해, 개발, 테스트를 더 쉽게 해주고 애플리케이션 침식에 더 탄력적으로 만들어 준다. 규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다. 또, 지속적인 리팩터링을 통해 개개의 서비스 아키텍처가 하나로 병합될 수 있게 허용한다. 마이크로서비스 기반 아키텍처는 지속적 배포와 전개(디플로이)를 가능케 한다.
-- 위키백과

찾아본 내용들을 종합해서 보면 즉 MSA는 큰 시스템을 작은 크기의 비즈니스 서비스로 구성해 환경을 구축하여 서비스별 개발, 빌드, 테스트 등 확장이 가능한 아키텍쳐라는것으로 정리할 수 있을것 같다.

2. MSA 등장배경

1] Monolith Application의 문제점

  • 구축이 잘 된 시스템이었어도 수 년 이상 운영되면서 점차 Spaghetti화 및 영향도 구조 파악 어려움
  • 통합 빌드/배포로 일부 개발자의 실수로 수백명의 개발자에게 영향을 받음
  • 배포 후 서버 재기동 시간에 오랜 시간 소요
  • 통합 환경으로 인해 특정 업무에 특정 기술 적용 어려움

3. MSA 장점

4. MSA 단점

0개의 댓글