[레포트] ECS Serveice Connect 에서 ECS 상의 마이크로서비스의 내장애성과 가관측성를 높이자

2023.04.30

안녕하세요, 임채정입니다.
이번 2023년도 4월 20일과 21일에 일본 도쿄에서는 AWS Summit Tokyo를 개최했습니다.
다음 블로그는 금요일에 있던 [ECS Serveice Connect 에서 ECS 상의 마이크로서비스의 내장애성과 가관측성를 높이자]세션을 레포트로 정리한 내용입니다.

아젠다

  1. 세션 개요
  2. AWS 서비스를 포함한 컨테이너 서비스의 좋은 점
  3. 마이크로 서비스 간의 통신에 대해서
  4. Amazon ECS Serveice Connect
  5. 마무리

1. 세션 개요

개요

Amazon ECS 및 AWS Fargate에서는 새로운 서비스 간 통신의 방식으로서 ECS Service Connect를 AWS re: Invent 2022 에서 릴리스했습니다. ECS Service Connect를 이용함으로써 지금까지 보다 용이하게 서비스 간의 내장애성이나 가관측성을 높일 수 있게 됩니다. 본 세션에서는 지금까지의 서비스간 통신의 방식과 과제, ECS Service Connect를 실현할 수 있는 것에 대해 해설합니다.

발표자

堀内 保大

발표 난이도

Level 300 : 中級者向け

2. AWS 서비스를 포함한 컨테이너 서비스의 좋은 점

기업에서 컨테이너 서비스를 채용하는 배경

  • 스피드와 기술
    • 시장 도입까지의 시간을 단축
    • 새로운 어플리케이션의 개발의 시간을 단축
  • 운용 우수성과 세큐리티
    • 내장애성, 가용성
    • 세큐리티 강화
  • 가격
    • 인프라 가격
    • 운용 시간의 절약

컨테이너의 장점

컨테이너의 특성을 활용하는 것으로 다음과 같은 효과가 기대된다.

  • 어플리케이션의 가반성
  • 복수 환경에서 일관된 실행 가능성
  • 고속의 개발과 배포 주기(사이클)의 실현

3. 마이크로서비스와 서비스 간의 통신의 과제와 실행 방법

마이크로 서비스에 의한 개발 기술의 향상

독립한 복수의 서비스로 소프트웨어를 구성한다.
비지니스 도매인마다 서비스를 분활해 소결합한다
각 서비스마다 독립한 배포가 가능하게 되어 개발 기술이 향상된다
-> 서비스 간의 통신이 필요

서비스 간 통신의 신뢰성을 높이기 위한 노력

마이크로 서비스는 일종의 분산 서비스이다.

1. 내장애성

Network 에러나 지연, 호출처의 오류 정지에 대한 내장애성 구조

  • 호출처 서비스의 위치가 일치하지 않는다. -> 서비스 디스커버리
  • 일시적인 호출 실패 -> 자동 리트라이, 빗나간 값 감지
  • 계속된 호출 실패 -> 서킷 브레이커
  • 호출처 서비스의 퍼포먼스 강화 -> 타임아웃

2. 가관측성

어디서, 왜 발생하는 가를 검사하기 위해 가관측성을 높이는 구조 각 서비스의

  • 메트릭스
  • 로그
  • 트레이스

서비스 간의 통신을 위한 AWS서비스에서의 선택지

1. Elastic Load Balancing (ELB)

외부에서 접속하고 싶을 때, B/G 배포를 이용하고 싶은 경우

  • 장점
    • ELB의 다양한 기능을 사용한 수 있다. 헬스체크
    • 트래픽의 메트릭스
  • 단점
    • 추가로 서비스를 작성하고 관리해야 한다(ELB)
    • 네트워크 대기 시간의 증가
    • ELB의 기능인 헬스체크에 의존해버릴 수 있다.

2. Amazon ECS service discovery

프록시를 이용하지 않고 개별 실행으로 신뢰성을 도입하고 싶은 경우

  • 장점 클라이언트가 대상 서비스와 직접 통신한다. 소수의 시스템 컴포넌트
  • 단점
    • 다음을 포함되지 않는다.
      • 신뢰성을 지키는 통신 제약 ex. 재실행, 빗나간 값 감지
      • 트래픽의 메트릭스 취득

3. AWS App Mesh

자세한 통신 제약의 요건(각종설정의 역치변경)이 있을 경우

  • 장점
    • 자세한 트레픽의 제약
      • ex. 재실행, 빗나간 값 감지, 서킷 브레이커, 타임아웃
    • 트래픽의 풍부한 가관측성
      • ex. 메트릭스, 로그, 트레이스
  • 단점
    • 추가의 컴퍼넌스의 관리가 필요
    • 유연성과 상반되는 복잡성

4. Amazon ECS Serveice Connect

작년 리인밴트에서 새롭게 등장한 서비스다.
1 ~ 3의 선택지에서 해결되지 못한 내장애성과 가관측성이 간단하게 넣을 수 있는 선택지가 될 수 있다.
서비스 간의 통신으로 신뢰성을 중시하는 경우에 다른 선택지보다 가장 먼저 선택해야 하는 서비스다.
Amazon ECS Serveice Connect 에 대해서는 더 자세하게 다뤄보겠다.

4. Amazon ECS Serveice Connect

Amazon ECS Serveice Connect는 마치 위에서 설명한 [2.] 와 [3.]을 합쳐서 제안하는 것과 같음

1. 내장애성

설정 없이 서비스 간 통신에 대해 내장애성 구조가 들어간다.

  • 자동 재실행
    • Network 나 503 에러 시에 프록시 레이어 별 태스크를 자동 재실행
  • 벗어난 값 감지
    • 리퀘스트 에러가 계속해서 발생하는 경우 루팅에서 일정기간 열외
  • 접속 타임아웃

2. 가관측성

Amazon ECS Serveice Connect 의 프록시가 리퀘스트에 관해 Amazon CloudWatch의 메트릭스를 이용가능

  • 자기 서비스에 대한 리퀘스트 관련
    • 새로운 혹은 액티브 커넥션 수
    • 리퀘스트 수
    • 등등
  • 호출처 서비스에 대한 리퀘스트 관련
    • 호출처 서비스마다 리퀘스트를 카운트
    • 리스폰스마다 리스폰스 개수 카운트
    • 호출처 서비스마다 리스폰스 시간
    • 등등

3. 견고한 배포

  • Amazon ECS 롤링 업데이트를 서포트
  • 연결 드레이닝에 의한 타운타임이 없는 배포
  • Cloud Map 을 사용하는 것으로 DNS TTL의 영향을 받지 않는 빠른 배포

5. 마무리

  • 서비스간의 통신에는 내장애성과 가관측성이 중요하다.
  • Amazon ECS 에 의한 서비스 간의 통신을 하기 위한 방법은 다음 4개가 있다.
    • 1) Elastic Load Balancing (ELB)
    • 2) Amazon ECS service discovery
    • 3) AWS App Mesh
    • 4) Amazon ECS Serveice Connect
  • Serveice Connect 를 통해 간단한 설정으로 높은 신뢰성을 가진 서비스 간의 통신을 할 수 있다.
    • 1) 내장애성
    • 2) 가관측성
    • 3) 견고한 배포