본문 바로가기

좋아하는 것_매직IT/10.microservice

14.마이크로서비스, 넷플릭스 스택에 대해서 알아보자.

반응형

넷플릭스 스택의 기원

  • 넷플릭스는 온라인 비디오 스트리밍 분야의 고성능과 확장성을 충족하기 위해 신규 플랫폼 개발
  • 넷플릭스 홈페이지 : https://www.netflix.com
  • 최초의 마이크로서비스 아키텍처 중 하나가 됨.
  • 오픈소스 프로젝트
    • 넷플릭스 스택을 발표.
    • 자바를 기반으로 함. 
    • 스프링 클라우드에 통합되며, 스프링 부트와 함께 사용하기에 훨씬 쉬워짐.
    • 예시
    • 참고 페이지 : https://github.com/ewolff/microservice 
      • 아키텍처
        • 3개의 마이크로 서비스로 구성
          • 카탈로그 마이크로서비스
            • 상품에 대한 정보를 관리
          • 고객 마이크로서비스          
            • 고객의 데이터를 저장
          • 주문 마이크로서비스
            • 새로운 주문을 수신 받음
            • 카탈로그 / 고객 마이크로 서비스를 사용함.
        • 마이크로서비스는 사용자와 상호작용할 수 있는 자체 웹 인터페이스 존재함
        • 마이크로서비스 끼리는 REST를 통해서 통신함.

     

라이선스

  • 아파치 라이선스, 넷플릭스 스택의 컴포넌트는 모두 오픈소스

   

넷플릭스 스택의 구성

  • 유레카(Eureka)
    • 서비스 탐색
    • 자바 클라이언트를 제공하고, 자바에 중점을 두고 있지만, 다른 언어에서 사용할 수 있는 REST API와 라이브러리도 제공함.     
    • 클라이언트 캐싱과 함께 사용할 수 있어서 매우 빠르고 탄력적임.
    • 참고페이지 : https://github.com/Netflix/eureka/wiki
  • 주울(Zuul)   
    • 라우팅 솔루션
    • 주울의 동적 필터는 매우 유연함.
    • 주울은 마이크로서비스를 찾기 위해 유레카가 필요함.    
    • 참고페이지 : https://github.com/Netflix/zuul/wiki
  • 립본(Ribbon)
    • 로드 밸런싱 
    • 클라이언트 부분의 로드 밸런싱 구현.
    • 자바라이브러리이기에 다른 언어에서는 립본과 함께 사용하기 어려움. 립본 외에 로드 밸런싱 영역의 대안으로 기존의 수많은 로드 밸러서가 존재함.
    • 서비스 탐색을 위해 유레카를 의존하고 있으나, 컨설을 사용할 수 도 있음.
    • 참고페이지 : https://github.com/Netflix/ribbon/wiki
  • 히스트릭스(hystrix)
    • 복원력
    • 마이크로서비스 간 동기 통신을 사용할 때 하나의 마이크로서비스에서 장애가 발생한다 하더라도 다른 마이크로서비스에도 장애가 발생하지 않도록 하는 것은 중요함.
    • 히스트릭스의 구현 
      • 타임아웃(timeout)
        • 마이크로서비스가 다른 마이크로 서비스를 위해 너무 오래 기다리는 것을 방지함.
      • 빠른 실패(fail fast)
        • 자원이 블로킹되는 시간을 줄이기위해서, 가능한 한 빨리 에러를 생성하는 것.
      • 서킷브레이커(circuit breaker)
        • 쉽게 설명하자면, 주택의 전기 시스템에서 사용되는 퓨즈와 유사함.
      • 모니터링
        • 히스트릭스 대시보드를 통해서 데이터를 웹페이지에 표시 가능함으로써 현재 시스템에서 발생한 상황을 보여줌.
    • 참고페이지 :  https://github.com/Netflix/hystrix/wiki   

결론

  • 넷플릭스 스택에서 마이크로서비스 아키텍처를 구축할 수 있는 다양한 프로젝트를 제공함.
  • 넷플릭스 스택의 서버 구현은 자바로 작성됐기 때문에 넷플릭스 스택의 서버와 마이크로서비스는 JAR 파일로 압축할 수 있음.
  • 스프링 클라우드 때문에 넷플릭스 스택의 서버를 일관성 있게 설정 가능 함.
728x90
300x250