Microservice

logY·2022년 8월 21일
0

What is microservice

마이크로서비스는 다음과 같은 서비스 모음으로 구성하는 아키텍처 스타일이다.

  • 높은 유지보수 및 테스트 가능
  • 느슨한 결합
  • 독립적으로 배포 가능
  • 비즈니스 역량을 중심으로 구성
  • 소규모 팀 소유

마이크로서비스 아키텍처를 사용하면 크고 복잡한 어플리케이션을 빠르고 자주 안정적으로 전달할 수 있다.

장점

  • 크고 복잡한 어플리케이션을 지속적으로 제공하고 배포할 수 있다.
    • 유지 보수 개선 - 각 서비스가 상대적으로 작기 때문에 유지보수가 쉽다.
    • 더 나은 테스트 가능성 - 서비스가 상대적으로 작기 때문에 더 빠르게 테스트할 수 있다.
    • 더 나은 배포 가능성 - 서비스를 독립적으로 배포할 수 있다.
    • 이를 통해 여러 자율적인 팀을 중심으로 개발을 구성할 수 있다. 각 팀은 다른 모든 팀과 독립적으로 서비스를 개발, 테스트, 배포 및 확장이 가능하다.
  • 각 마이크로 서비스는 상대적으로 작다.
    • 개발자가 이해하기 쉽다.
    • IDE는 개발자의 생산성을 더 빠르게 만든다.
    • 어플리케이션이 더 빨리 시작되어 개발자의 생산성이 향상되고 배포 속도가 빨라진다.
  • 결함을 격리시킬 수 있다.
    • 한 서비스에 메모리 누수가 있는 경우 해당 서비스만 영향을 받는다. 다른 서비스는 계속해서 요청을 처리할수있다.
  • 새로운 서비스를 개발할 때 새로운 기술 스택을 선택하여 사용할 수 있다.

단점

  • 개발자는 분산 시스템 생성의 추가적인 복잡성을 처리해야 한다.
    • 개발자는 서비스 간 통신 메커니즘을 구현하고 부분적 오류를 처리해야한다.
    • 여러 서비스에 걸친 요청을 구현하는 것이 어렵다.
    • 서비스 간의 상호 작용을 테스트하는 것이 어렵다.
    • 여러 서비스에 걸친 요청을 구현하려면 팀 간의 세심한 조정이 필요하다.
    • 개발자 도구/IDE는 모놀리식 어플리케이션 구축을 지향하며 분산 어플리케이션 개발에 대한 명시적인 지원을 제공하지 않는다.
  • 배포 복잡성 - 프로덕션 환경에서는 다양한 서비스로 구성된 시스템을 배포하고 관리하는 운영상의 복잡성도 있다.
  • 메모리 소비 증가 - 마이크로서비스 아키텍처는 N개의 모놀리식 어플리케이션 인스턴스를 NxM 서비스 인스턴스로 대체한다. 각 서비스가 일반적으로 인스턴스를 격리하는 데 필요한 자체 JVM에서 실행되는 경우 JVM 런타임의 M배에 달하는 오버헤드가 발생하게 된다. 또한 Netflix의 경우와 같이 각 서비스가 자체 VM에서 실행되는 경우 오버헤드는 훨씬 높게 발생한다.

사용하는 기업

Netfilx, Amazon 및 eBay를 포함한 대부분의 대규모 웹 사이트는 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 변화하였다.

인터넷 트래픽의 최대 30%를 차지하는 매우 인기 있는 비디오 스트리밍 서비스인 Netflix는 대규모 서비스 지향 아키텍처를 가지고 있다. 그들은 800가지가 넘는 다양한 종류의 장치에서 비디오 스트리밍 API에 대한 하루 10억 건 이상의 호출을 처리한다. 각 API 호출은 백엔드 서비스에 대한 평균 6회의 호출로 확장된다.

Amazon.com은 원래 2계층 아키텍처를 가지고 있었다. 확장을 위해 수백 개의 백엔드 서비스로 구성된 서비스 지향 아키텍처로 마이그레이션했다. Amazon.com 웹 사이트 및 웹 서비스 API를 구현하는 어플리케이션을 포함하여 여러 애플리케이션이 이러한 서비스를 호출한다. Amazon.com 웹 사이트 어플리케이션은 100~150개의 서비스를 호출하여 웹 페이지를 구축하는 데 사용된 데이터를 가지고 온다.

경매 사이트 ebay.com도 모놀리식 아키텍처에서 서비스 지향 아키텍처로 진화했다. 어플리케이션 계층은 여러 독립 어플리케이션으로 구성된다. 각 어플리케이션은 구매 또는 판매와 같은 특정 기능 영역에 대한 비즈니스 로직을 구현한다. 각 응용 프로그램은 X축 분할을 사용하고 검색과 같은 일부 으용프로그램은 Z축 분할을 사용한다. Ebay.com 은 또한 데이터베시읏 계층에 X, Y 및 Z 스타일 확장의 조합을 적용한다.

profile
백엔드 개발자

0개의 댓글