본문 바로가기

AWS Design Pattern/일괄 처리 패턴

Scheduled Autoscaling 패턴 - 배치 처리 서버의 자동 가동/정지

ㅁ  풀어야 할 문제

정해진 시간에 실행되는 배치 처리는 많은 시스템에서 이루어지고 있고, 그 방법으로는 항상 가동 중인 서버 위에 스케줄러(예를 들어 UNIX cron)를 사용하는 경우가 많다.

그러나 실제 배치 처리를 하는 시간은 짧고, 그 시간 이외의 서버 자원은 낭비가 되며 비용 효율이 낮아진다. 이런 용도의 일괄 처리 서버 자원을 얼마나 효율적으로 사용하는지가 항상 문제였다.

 

  해결/패턴

기존에는 정해진 시간에 실행되는 배치 처리 서버에도 당연히 항상 가동 중인 서버를 할당해야 했다. 그리고 다른 기능(처리)도 부여하여 서버 자원의 이용 효율을 높이려고 노력했다.

클라우드에는 필요할 때만 가상 서버를 이용할 수 있어 일괄 처리를 하는 경우에만 가상 서버를 가동할 수 있게 되었다.

정해진 시간에 실행되는 일괄 처리는 가상 서버를 정해진 시간에 가동되는 구조가 필요하다. 이것은 클라우드의 스케줄링 기능을 이용하면 구현할 수 있다.

 

  

AWS에서는 [Auto Scaling]이라는 EC2 인스턴스를 자동으로 추가하고 삭제하는 기능을 가지고 있어서 정해진 시간에 실행되는 일괄 처리에 이용할 수 있다.

-       가동할 때 해당 처리를 수행하는 AMI(서버 이미지)를 준비한다.

-       Auto Scaling으로 지정한 시각에 AMI에서 EC2가 가동되도록 설정한다.

-       처리 완료 후에는 EC2가 종료되도록 EC2 자체에 Auto Scaling을 설정한다.

 

ㅁ  

-       정해진 시간에 일괄 처리하는 EC2 인스턴스는 항상 가동되지 않는다. 처리를 하는 시간에만 EC2 인스턴스가 가동하기 때문에 많은 비용 절감을 기대할 수 있다.

 

ㅁ  주의점

-       배치 처리 종료 시간을 정하기 어려운 경우, EC2 인스턴스의 배치 처리가 끝나고 나서 Ec2 인스턴스가 자신을 종료시키는 방법도 자주 사용된다.

-       EC2 인스턴스는 시간 단위로 요금이 부과되고, 한 시간이 안되게 사용했더라도 한 번 가동하고 종료하면 한 시간 분량의 요금이 부과된다. 가동, 종료 타이밍에 주의가 필요하다.