반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

DevOps Tasks

AWS ECS Service Connect 적용기 본문

AWS

AWS ECS Service Connect 적용기

데밥스 2023. 12. 23. 22:25
728x90
반응형

 

AWS ECS Service Connect


AWS ECS 에 Service Connect 라는 새로운 기능을 출시하여 적용해보자.


 

 

Service Connect 란?

 

  • Service Connect는 Amazon ECS 서비스의 프록시 컨테이너를 정의한다.
  • 이러한 방식으로 동일한 taskdef.json 을 사용하여 Service Connect 구성이 서로 다른 여러 NameSpace 에서 동일한 애플리케이션을 실행
  • Amazon ECS 서비스가 수행하는 각 작업은 해당 작업에서 프록시 컨테이너를 실행
  • Service Connect는 동일한 네임스페이스 내의 Amazon ECS 서비스 간 연결에 적합
  • Service Discovery 보다 빠른 배포 시간

 

AWS ECS 를 사용해서 서비스를 구축하는 경우 3가지 솔루션으로 구축할 수 있다.

 

1. ELB 는 고가용성을 위한 인프라 구성을 신중하게 계획해야 하며 추가 인프라 비용이 발생한다.

2. ECS Service Discovery 를 사용하려면 개발자가 트래픽 지표를 수집하고 네트워크 호출을 복원하기 위한 사용자 지정 애플리케이션 코드를 작성해야 하는 경우가 많다.

3.  AWS App Mesh 와 같은 서비스 메시 솔루션은 고급 트래픽 모니터링 및 서비스 간 라우팅 기능을 갖추고 있음에도 불구하고 ECS 외부에서 실행된다.

 


 

AS-IS

  • 기존 ECS 아키텍처라면 컨테이너 별로 ELB가 생성됨.
  • 새로운 리소스 비용 및 복잡도가 증가함
  • ECS Service 에 다수의 컨테이너가 있다면 하나의 컨테이너를 조작하기 위해 task 단위로 모든 컨테이너가 움직임
  • 개별 컨테이너 단위로 오토 스케일링 할 수 없음 (멀티 컨테이너)

 

TO-BE

  • Envoy 프록시를 사이드카 형태로 생성해 하나의 네트워크 층을 이루면서 작업 간 트래픽을 연결
  • 외부 노출이 필요한 컨테이너에만 ALB 생성
  • 개별 컨테이너 단위로 스케일링 가능

 

ECS Service Connect 기능을 키면 ECS Agent가 생성되어 사이드카 형태로 컨테이너가 하나 더 뜨게 된다.

해당 컨테이너는 envoy 기반 컨테이너로 프록시 역할을 담당한다.

728x90

고려사항

  • Windows 지원 X
  • Fargate Linux 플랫폼 Version 1.4.0 이상
  • ECS 에이전트 Version 1.67.2 이상
  • 롤링 배포만 지원 / Blue/Green 지원 X
  • 동일한 계정의 CloudMap NameSpace 사용 가능 
    • 하나의 NameSpace
반응형

 

Architecture

Service Connect
AWS ECS Service Architecture

 

 

 

  • Service Connect 활성화 시 Service Connect Agent 가 사이드카 형태로 Active
  • Application 끼리는 설정한 Service Connect DNS 주소로 통신

 


Deploy Step

 

  1. Client-Server Mode (BE)
  2. Client Mode (FE)
  • Client-Server Mode 서비스의 Application 을 반드시 먼저 배포
  • Service Connect 가 활성화된 상태에서 실행된 작업은 이미 NameSpace에 존재하는 엔드포인트를 확인할 수 있지만 작업 시작 후 NameSpace에 추가된 새 엔드포인트는 작업 구성에 추가되지 않음
  • Client Mode 서비스의 작업이 먼저 배포된 경우 백엔드 서비스의 작업 엔드포인트는 탐색되지 않음
  • 해당 순서에 맞춰 한 번의 배포가 끝난 후에 원하는 주기로 각 서비스 배포 가능

 

Deploy

 

"portMappings": [
        {
          "containerPort": ${SERVER_PORT},
          "hostPort": ${SERVER_PORT},
          "protocol": "tcp",
          "name": "${SERVCE_NAME}",
          "appProtocol": "http"
        }
      ]

 

  • 배포 전 taskdef.json에 port name 만 생성해주면 AWS 콘솔 상에서 Service Connect 기능을 키고 Client-Servcer Mode를 사용할 수 있다.
  • 22년 12월 기술 발표 후에도 지속적으로 Docs도 업데이트되고 있다.

 

https://aws.amazon.com/ko/blogs/korea/new-amazon-ecs-service-connect-enabling-easy-communication-between-microservices/

 

Amazon ECS Service Connect – 컨테이너 기반 마이크로서비스내 간편한 통신 기능 출시 | Amazon Web Services

마이크로서비스 아키텍처는 잘 정의된 API(애플리케이션 프로그래밍 인터페이스)를 통해 통신하는 소규모 독립 서비스로 구성된 애플리케이션을 만드는 소프트웨어 개발 접근 방식입니다. 이

aws.amazon.com


 

초기 사용을 할 때 Application Port 도 custom을 할 수 없었던 것으로 기억하지만 지속적으로 업데이트가 되고 있다.

동기 처리가 필요한 로직이 있지만 envoy 컨테이너의 Timeout 에 대한 부분이 아직 해결 중인 상태로 보여지며 아직 안정적인 상태는 아닌 것으로 보인다.

 

https://github.com/aws/containers-roadmap/issues/1958

728x90
반응형