42

AWS EC2 Schedulers – not good-enough tool to reduce AWS bill

 5 years ago
source link: https://www.tuicool.com/articles/hit/JVRvUvi
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

AWS EC2 Schedulers - not good enough tool to reduce AWS bill

Posted on Jun 21, 2018 at 12:00 AM

MJb6B3q.png!web

Cloud runs on per second billing. When companies rent servers from AWS, they will get billed for every second (except for windows OS servers) they keep their EC2 instances up and running irrespective whether anyone access the applications hosted on them or not. AWS billing engine doesn’t care whether EC2 instance is being utilized 100% or idle. If it is in “running” state, it will be charged for compute hours.

Companies who know about cloud economics, use better tools to reduce their hosting costs and enjoy true benefit of cloud hosting. If you haven’t already started practicing cloud cost optimization, you should do it now. Looking for help? Talk to us, we are happy to help.

Recent studies suggest that EC2 instances are the top used resources in AWS hosting. If you are using EC2 instances for hosting applications, optimizing EC2 instances usage could tremendously help in reducing your AWS bill. Some of the optimizations used by teams are “right sizing”, “EC2 schedulers” to turn off the servers during nights and weekends.

Right Capacity Sizing:

Right sizing means rent server with “actual required capacity” with some buffer instead of “assumed required capacity”. What this means is, if application hosted on a server can run on t2.small, launch t2.small instead of t2.large.

Right sizing is most overlooked and underestimated cost optimization technique. Teams can get benefit by using tools like AWS Trusted Advisor to understand the resource usage and appropriately provision the EC2 instances.

EC2 Schedulers (or) AWS Instance Scheduler:

Based on AWS Instance Scheduler documentation ,The AWS Instance Scheduler is a simple AWS-provided solution that enables customers to easily configure custom start and stop schedules for their Amazon Elastic Compute Cloud (Amazon EC2) and Amazon Relational Database Service (Amazon RDS) instances.

Not only AWS instance scheduler, lately you might have observed that lot of companies introducing different flavours of schedulers like AI based schedules, smart schedules etc.,

What is wrong with EC2 Schedulers?

EC2 Schedulers come with multiple challenges. Some are on technical implementation details like you need to learn how to use cloud watch alarms, properly tagging resources and writing/maintaining lambda functions and so on. We will cover these hurdles in separate a blog post. In this blog, I would like to concentrate on non technical hurdles.

Dictionary definition of a “schedule” is: Arrange or plan (an event) to take place at a particular time . Last two words in the definition are very crucial. Top most issue with schedulers is, identifying “particular time”, in other words “schedule”.

Why identifying a schedule for a resource is tough task? You might be thinking it is very easy and can come up with schedule saying X AM to Y PM. Well, in cloud deployments, defining a broad schedule like that will not help with cost optimizations. Following are few scenarios why it might not help:

1) One team handling multiple applications

In a typical software development company, it is very common that one team handles more than one application. Assume one application owner validating two applications, 4 hours one & 4 hours other. In this case, we need instance UP only for 4 hours in a given day.

If this business using EC2 scheduler and scheduled to bring these 2 instances every day at 7 AM and bring them down at 6 PM, which means EC2 instances are up for 11 hours.

With schedulers, the cost company pay per year would be:11 hrs * 5days * 4 weeks*12 month * $0.0928 (t2.large) * 2 (EC2 instances) = $490/YearAround $490 is what you will be paying for AWS.

There are multiple problems with this solution:

  1. A) how about if product owner want to check something after 6 PM? Can he/she access the application? NO, because servers are brought down by schedulers. Someone need to bring them up and remember to shutdown when done. PAIN.
  2. B) Each of the EC2 instances are used ONLY 4 hours in a day, but they are up for 11 hours. Which means around 7 hours of spend on EC2 instances was wasted.

2) Users could be AWAY for the day, still schedule brings up servers (resource waste). It is estimated that on an average employees take 2 day offs per month.

3) Every day 1 hour lunch breaks We need carbs to pull long hours, isn’t it?

4) Jungling between meetings & application access

Depends on case, but users will be pulled into meetings frequently & during those hours we are unnecessarily paying for compute resource.

5) Teams could be spread across different time zones

6) More than one server is needed to run applications This very common use case in application development. Database could be hosted on different host while web server is hosted on another instance. Identifying these instances together and applying same schedule is tedious task.

These are some of the very common use cases occur in workplace and each of these use cases will leave EC2 instances in idle state though we are using EC2 scheduler.

Right Scale study identified that in year 2017 alone $10B of cloud spend was wasted and top reason was, leaving EC2 instances idle. EC2 Schedulers, be it AI based or smart scheduled based, clearly can’t avoid idle instances and reduce your AWS bill.

In dynamic and agile world, users do multitasking and access servers or applications on-demand need basis. Associating a schedule to anything which is need basis would severely limit the capabilities and effect outcomes.

What is the solution?

The solution is use tools likeINVOKE Cloud , which brings up the servers on-demand, ONLY when users accessing applications hosted on those servers.

If we take above example and calculate cost after using INVOKE Cloud:

Application owner logged in at 8 AM and started using application1. INVOKE Cloud will bring up the server at that moment (instead of 7 AM like EC2 schedulers). He/She used application till 12 PM and went for lunch.

Application1 Cost:

4 hrs * 5 days * 4 weeks * 12 month * $0.0928 (t2.large) * 1 (EC2 instances) = $89/Year

Came back from lunch around 1 PM and started using application2. INVOKE Cloud will bring up the server at that moment (instead of 7 AM like EC2 schedulers). He/She used application till 5 PM and logged off for the day.

Application2 Cost:

4 hrs * 5 days * 4 weeks * 12 month * $0.0928 (t2.large) * 1 (EC2 instances) = $89/Year

Total cost for 2 boxes per year would be around $180. There is a clear cost savings of $310 by using on-demand solutions like INVOKE Cloud.

In a nutshell, companies who are conscious about cloud economics, but using EC2 scheduler are not really enjoying the cost benefits. You should start using on-demand tools like INVOKE Cloud to reduce your AWS bill and save more money. Have more questions?Talk to us, we could help you.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK