[마이크로서비스] 마이크로서비스의 개념

IMKUNYOUNG·2022년 9월 13일
0

마이크로서비스란?

대부분의 웹 기반 애플리케이션은 모놀리식 아키텍쳐 형태로 개발되었다.

  • ✔️ 모놀리식 아키텍쳐
    모놀리식 아키텍처에서 애플리케이션은 배포 가능한 단일 소프트웨어 산출물로 전달된다.
    UI, 비즈니스 로직, 데이터베이스 액세스 로직 모두가 하나의 애플리케이션 산출물로 패키징되고 애플리케이션 서버에 배포되는 것이다.

애플리케이션은 단일 작업 단위로도 배포할 수 있지만, 실제로는 여러 개발 팀이 한 애플리케이션에서 작업할 때가 더 많다. 일반적으로 각 개발 팀은 특정 고객에게 제공하는 애플리케이션의 개별 기능을 담당한다. 그리고 이러한 애플리케이션이 모놀리식 아키텍처로 개발된다면 모놀리식 애플리케이션이 크고 복잡해짐에 따라 각 팀의 의사소통과 조정 비용이 증가하는데 이를 관리하기 어려워진다. 또한 각 팀에서 변경이 있을 때마다 애플리케이션 전체를 다시 빌드하고 테스트해서 배포해야 한다.

  • ✔️ 마이크로서비스
    마이크로서비스 개념은 2014년경 소프트웨어 개발 커뮤니티를 중심으로 인식되기 시작했고 대형 모놀리식 애플리케이션을 기술 및 조직적으로 확장하려고 할 때 생기는 많은 난제에 대한 직접적인 대안이 되었다. 마이크로서비스의 핵심은 '느슨히 결합된 작은 분산 서비스'이다. 즉, 애플리케이션 기능을 분해하고 분리해서 완전히 상호 독립적인 서비스를 만드는 것이다. 이를 통해 대형 애플리케이션은 관리하기 쉬워지고, 책임에 따라 컴포넌트로 분해하여 보안을 강화할 수 있다. 앞의 그림을 마크로서비스로 분해한다면 다음과 같을 것이다.

그림을 보면 각 팀이 서비스 코드와 서비스 인프라스트럭처를 완전히 소유하고 있음을 알 수 있다. 코드와 형상관리 레포지터리, 인프라스트럭처 (앱 서버 및 데이터베이스)가 애플리케이션의 다른 부분과 완전히 독립적이기 때문에 각 팀은 독립적으로 빌드와 테스트, 배포를 할 수 있다.

마이크로서비스 아키텍처의 특징

  • 애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합해서 솔루션을 제공한다
  • 각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포된다. 마이크로서비스는 비즈니스 영역의 한 부분에서만 책임을 담당한다. 그리고 여러 애플리케이션에서 재사용 가능하여야 한다.
  • 마이크로서비스는 몇 가지 기본 원칙에 기반을 두며, 서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON (JavaScript Object Notation) 같은 경량 통신 프로토콜을 사용한다.
  • 애플리케이션은 항상 기술 중립적 프로토콜 (JSON 이 가장 보편적)을 사용해 통신하므로 서비스 구현 기술과는 무관한다. 따라서 마이크로서비스 기반의 애플리케이션을 다양한 언어와 기술로 구축할 수 있다.
  • 작고 독립적이며 분산된 마이크로서비스를 사용해 조직은 명확히 정의된 책임 영역을 담당하는 소규모 팀을 보유할 수 있다. 이 팀들은 애플리케이션 출시처럼 하나의 목표를 향해 일하지만, 자기가 개발하는 서비스만 책임진다.
  • 결과적으로 마이크로서비스는 개발 팀에 높은 유연성과 자율성을 제공한다. 또한 애플리케이션 확장성을 높일 수 있고 회복성도 향상시킬 수 있다.
📑 책 '스프링 마이크로서비스 코딩 공작소, 존 카넬'을 공부한 내용입니다 📑

0개의 댓글