본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

AWS Ambassador

EC2 라이프사이클 스케쥴링

2023.02.01

1. 개요

AWS와 같은 클라우드 환경을 사용하는 프로젝트를 진행하다 보면 클라우드 리소스 비용 문제에 당면하게되곤 합니다. 이때 가장 쉽게 접근할 수 있는 비용 절감 해결책으론 사용 중인 클라우드 리소스의 사양을 줄이는 Down Scaling입니다. 하지만 클라우드 리소스의 사양이 낮아짐으로 인해 개발 환경이 느려져 개발 퍼포먼스가 떨어져 프로젝트에 악영향을 끼칠 수 있습니다.

클라우드 리소스의 사양은 유지하되 비용을 크게 절감할 수 있는 방법은 개발 혹은 운영을 하지 않는 시간에 클라우드 리소스를 중지하는 것입니다.

AWS를 사용하는 프로젝트라면 EC2, RDS와 같은 컴퓨팅 자원을 사용하는 클라우드 리소스들을 개발을 하지 않는 시간, 운영이 되지 않는 시간에 중지하여 비용을 크게 절감할 수 있습니다.위와 같은 컴퓨팅 리소스가 한두 개라면 사람이 손으로 중지/기동할 수 있겠지만 다양한 계정, 리전, 많은 자원을 제어하기 위해선 생각보다 많은 에포트가 소모됩니다.

이번 포스팅을 통해선 AWS EventBridge와 Lambda Funciton을 사용하여 EC2 Lifecycle을 Scheduling을 자동화하여 비용을 절감하는 방안에 대해 알아보도록 하겠습니다.

2. 방안

2.1 아키텍처

2.1.1 주요 사용 서비스

  1. EventBridge
    : Amazon EventBridge는 AWS 서비스, 외부 시스템, SaaS 앱 등과의 연결을 통해 이벤트 기반의 애플리케이션 구축을 할 수 있는 AWS Managed Service입니다.
    (AWS Site link : https://aws.amazon.com/ko/eventbridge/)
  2. Lambda Functions
    : AWS Lambda는 서버를 배포하거나 관리하지 않고도 코드를 실행할 수 있는 환경을 제공해 주는 서버리스향 AWS Managed Service입니다.
    (AWS Site link : https://aws.amazon.com/ko/lambda/)

2.2 구현

2.2.1 Lambda 함수 생성
AWS Severless Computing 서비스인 Lambda를 사용하여 저비용으로 EC2를 Stop, Start 하는 Function을 작성합니다.
이번 예제에서는 Python 코드를 작성하여 진행하였습니다.

2.2.1.1 EC2 Instances Stop Fuction Example code

Code Block 1 python3.9

2.2.1.2 EC2 Instances Start Fuction Example code

Code Block 2 python3.9

2.2.1.3 Lambda Function이 사용하는 IAM Policy
상기 예제 코드로 동작하는 Lambda Functions은 EC2 Instances를 Stop, Start 할 수 있는 권한을 가져야 합니다.
아래는 Lambda Function이 갖게 되는 최소한의 IAM Policy 예시 Json 문입니다.

Code Block 3 policy-lambda-dominic-ec2onandoff.json

2.2.2 Amazon EventBridge 설정
EventBridge를 사용하여 매일 아침 8시에 기동, 매일 오후 19시에 중지되도록 스케쥴링 룰을 작성합니다.

2.2.2.1 EC2 Instances Stop Rule 예시

  • Amazon EvnetBridgesms Cron expression을 지원합니다.
    매일 오후 19시에 ‘EC2 Instances stop functions’를 호출하는 EventBride Rule을 작성합니다.

• Event Schedule

• Target

2.2.2.2 EC2 Instances Start Rule 예시

앞서 작성한 바와 같이 Cron expression으로 매일 오전 08시에 ‘EC2 Instances Start Function’을 호출하는 EventBridge Rule을 작성합니다.

• Event Schedule

• Target

3. 마무리

이번 포스팅을 통해 EC2 라이프사이클 스케쥴링을 자동화하여 효과적으로 클라우드 컴퓨팅 비용을 절감할 수 있는 방법을 알아보았습니다.
위와 같이 Amazon EventBridge와 Lambda를 사용하면 단순히 반복되는 작업을 저비용으로 자동화할 수 있습니다.

EC2뿐만이 아니라 AutoScailngGroup 혹은 RDS와 같은 컴퓨팅 리소스에 동일하게 적용한다면 획기적으로 비용을 절감할 수 있을 것입니다.

추가로 AWS System Manager를 활용하여 EC2가 기동 된 후 Scripts를 통해 어플리케이션을 기동하거나 서비스 중지/기동에 있어 EC2, RDS, Application들의 선후관계 정의를 위해 AWS Step Function을 사용하여 순차적으로 서비스를 중지/기동할 수도 있을 것입니다.

이와 같이 다양한 AWS 서비스를 활용하여 저비용 고효율의 클라우드 아키텍처를 설계할 수 있습니다.

챗봇과 대화를 할 수 있어요