[AWS] Lambda와 EventBridge를 이용한 ECS Service 업데이트 예약

연수·2022년 3월 6일
0

AWS

목록 보기
5/5

⏰ 작업 예약

  • 충분히 예상 가능한 부하를 사전에 예약하기 위해 작업 예약 기능을 추가하였다.
  • 대학교 포털 사이트의 경우 6개월에 한 번씩 수강신청이 진행되기 때문에 해당 시기에 부하가 예상된다.
  • 따라서 일정한 시점에 ECS를 업데이트하여 부하에 대비할 수 있도록 구성하였다.
  • 기존 아키텍처에서는 WEB과 WAS의 ECS 클러스터 내에 각각 2개의 컨테이너가 존재한다. 수강신청 기간에는 각각의 클러스터 내 컨테이너 개수를 5개로 변경하여 높은 접속률이 발생하여도 수강신청에 무리가 가지 않도록 구성하였다.

 


🐑 AWS Lambda

  • AWS 람다는 서버리스 컴퓨팅 서비스로, 애플리케이션을 실행하기 위한 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스이다.
  • AWS 람다에서 ECS 서비스 업데이트를 통해 클러스터 내 작업 개수를 증가시킬 수 있도록 코드를 작성하였다.
import boto3
import json

def lambda_handler(event, context):
    
    springClusterName = event['springCluster']
    springServiceName = event['springService']
    nginxClusterName = event['nginxCluster']
    nginxServiceName = event['nginxService']
    
    client = boto3.client('ecs')
    
    response1 = client.update_service(
													cluster=springClusterName, 
													service=springServiceName, 
													desiredCount = 5)
    response2 = client.update_service(
													cluster=nginxClusterName, 
													service=nginxServiceName, 
													desiredCount = 5)
    
		response = response1 + response2
    print(response)

 


🌉 EventBridge

  • EventBridge는 EDA(Event Driven Architecture)를 구성하는 데 도움을 주는 AWS의 서버리스 서비스이다. AWS 서비스 뿐만 아니라 SaaS 서비스, 개인 애플리케이션에서 보내는 이벤트/데이터를 받아 원하는 SNS나 Lambda와 같은 타겟으로 보내주는 역할을 한다.
  • 해당 프로젝트에서는 EventBridge를 사용해 Lambda에 트리거를 걸어 설정한 시간에 Lambda 코드가 실행되어 ECS가 업데이트 되도록 구성하였다.
  • 6개월에 한 번씩 UTC 00:00 (한국 시간 09:00)에 트리거 발생
    cron(0 0 20 2/6 ? *)

 

profile
DCDI

0개의 댓글