BLOG

AWS Elastic Beanstalk, 워크로드 실행 비용 최적화를 위한 TIP
작성일: 2020-08-24

AWS Elastic Beanstalk 는 리소스 프로비저닝, 유지 관리, 상태 확인, 자동 조정 및 애플리케이션을 계속 실행하는 데 필요한 작업을 처리하므로 고객이 애플리케이션 코드에 집중할 수 있게 도와줍니다.

 

이제 Amazon Elastic Compute Cloud (Amazon EC2)를 사용하여 Elastic Beanstalk에서 애플리케이션 실행이 가능해졌습니다. 단일 인스턴스 및로드 밸런싱 된 환경에서 모두 가능한 스팟 인스턴스에 대한 자세한 내용은 스팟 인스턴스 지원을 참고하세요. 스팟 인스턴스를 통해 AWS 클라우드에서 사용되지 않는 Amazon EC2 용량을 활용할 수 있습니다. 스팟 인스턴스는 온 디맨드 가격에 비해 최대 90 % 할인된 가격으로 제공되며 Amazon Elastic Container Service (Amazon ECS) 및 Amazon Elastic Kubernetes Service (Amazon EKS) 와 같은 다른 배포 서비스에도 사용할 수 있습니다. 다양한 상태 비 저장, 내결함성 또는 유연한 애플리케이션과 기타 테스트 및 개발 워크로드에 스팟 인스턴스를 사용할 수 있습니다.

 

고객은 Elastic Beanstalk 애플리케이션을 실행할 때, 특히 항상 실행될 필요가 없는 워크로드를 테스트하거나 준비할 때의 비용을 절감하는 방법을 궁금해합니다. 이 게시물은 AWS 월별 청구서를 크게 줄일 수 있는 다양한 자동화 기술을 안내합니다.

 

 

환경 유형 변환

로드 밸런싱된 테스트 환경이 여러 개 있고 근무 시간 이후에도 가능한 한 가장 낮은 비용으로 계속 실행되게 하려면 근무 시간 후에 환경 유형을 로드 밸런싱에서 단일 인스턴스로 변환하고 인터페이스 (AWS CLI) 명령인 Amazon Command Line을 사용하여 아침에 로드 밸런싱으로 다시 전환할 수 있습니다. 자세한 내용은 Elastic Beanstalk 구성 옵션을 참고하세요.

 

로드 밸런스에서 단일 인스턴스로 변환하려면 다음 코드를 입력합니다.

$ aws elasticbeanstalk update-environment –application-name YOUR-APP_NAME –environment-name ENV_NAME –option-settings Namespace=aws:elasticbeanstalk:environment,OptionName=EnvironmentType,Value=SingleInstance

 

단일 인스턴스에서 로드 밸런스로 변환하려면 다음 코드를 입력하세요.

$ aws elasticbeanstalk update-environment –application-name YOUR-APP_NAME –environment-name ENV_NAME –option-settings Namespace=aws:elasticbeanstalk:environment,OptionName=EnvironmentType,Value=LoadBalanced

 

그런 다음 필요한 시간에 이러한 명령에 대한 크론 작업을 구성할 수 있습니다.

# ┌───────────── minute (0 – 59)

# │ ┌───────────── hour (0 – 23)

# │ │ ┌───────────── day of the month (1 – 31)

# │ │ │ ┌───────────── month (1 – 12)

# │ │ │ │ ┌───────────── day of the week (0 – 6) (Sunday to Saturday; 7 is also Sunday on some systems)

# │ │ │ │ │                                 

# * * * * * command to execute

 

 

인스턴스 수 설정

Elastic Beanstalk 환경에 많은 리소스가 있고 트래픽이 적은 시간 동안 또는 작업 시간 후에 비용을 최적화하면서 환경을 계속 실행하려는 경우 인스턴스 수를 (0 또는 1) 또는 모든 테스트 환경에 대한 인스턴스 수를 최소로 설정하는 것이 좋습니다. 다음 코드를 참고하세요.

$ aws elasticbeanstalk update-environment –environment-name ENV-NAME –option-settings Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=0

 

위의 코드는 환경이 계속 실행되는 동안 인스턴스 수를 0으로 설정합니다. 다음 샘플 bash 스크립트를 사용하여 여러 Elastic Beanstalk 환경에서 이 접근 방식을 자동화할 수 있습니다.

#!/bin/bash

if [ -z “$1” ] ; then

     echo “$0: <instances to set>”

     exit 1

else

    INSTANCES=$1

fi

 

for environment in environment-1  environment-2 ; do            //please provide here environment names

    aws elasticbeanstalk update-environment –environment-name $environment –option-settings Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=$INSTANCES

done

 

다음 예제 코드에 따라 매일이 스크립트를 실행하도록 크론 작업을 구성할 수 있습니다.

# To set number of instances to 0 (for example at 5:00 PM every day)$ 0 17 * * * sh test.sh 0   

 

# To set number of instances to 1 (for example at 8 am)$ 0 8 * * *  sh test.sh 1

 

 

테스트 환경 중지

밤새 모든 테스트 환경을 중지하려면 근무 시간 후에 Elastic Beanstalk 환경을 종료하고 아침에 다시 복원할 수 있습니다. 다음 코드를 참고하세요.

# To terminate environment using AWS CLI (for example at 5:00 PM every day)

$ 0 17 * * * aws elasticbeanstalk terminateenvironment environmentname mystageenv

 

# To restore environment (for example at 8 am)

$ 0 8 * * * eb restore environmentid

 

자세한 정보는 Elastic Beanstalk 환경 종료 및 종료된 환경 재 구축 단원을 참고하세요.

Elastic Beanstalk 환경을 종료하면 이전에 환경 일부로 생성된 Amazon Relational Database Service (Amazon RDS) 인스턴스가 손실됩니다. 이를 방지하려면 Amazon RDS를 환경에서 분리하세요.  Elastic Beanstalk 환경에서 Amazon RDS 인스턴스를 분리하려면 어떻게해야합니까?를 참고하세요.

 

 

결론

이 게시물에서는 다양한 자동화 기술이 Elastic Beanstalk 애플리케이션 실행 비용을 최적화하여 상당한 비용을 절감하는 방법에 대해 논의했습니다. 사용 사례에 따라 자신에게 적합한 접근 방식을 사용하거나 여러 방법을 조합해서 사용해보세요.

 

원문URL:  https://aws.amazon.com/ko/blogs/gametech/reach-more-players-using-aws-global-accelerator/

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.