Hi, everybody. At 1st article we discussed how AWS Fargate costs can be optimized by using ARM CPU architecture. Let’s continue our cost optimization AWS Fargate journey 🙂
Current part would be devoted mostly to AWS Fargate Spot, so it would be good to define what is it at the beginning. There are 2 capacity providers that can be used for running docker containers at AWS Fargate services:
- Fargate
- Fargate Spot
Fargate Spot allows to run interruption tolerant Amazon ECS tasks at a discounted rate compared to the AWS Fargate price. Fargate Spot runs tasks on spare compute capacity. When AWS needs the capacity back, your tasks will be interrupted with a two-minute warning.
In most cases you will find information that Spot option is better to use for test/dev environment, but I want to make a rather contrversional statement – we can use the Fargate spot in production also.
We can create hybride system and mix 2 provisers at once. It is not possible to use current trick always – but from my practice appears that works rather well in most of cases. If you are interested how to do it at terraform in details – please, join my udemy course “AWS Fargate DevOps: Autoscaling with Terraform at practice“. Here I will put only some part of code for understanding general idea:
resource "aws_ecs_service" "ecs-app-service" {
.... most of code is omitted for readability
capacity_provider_strategy {
capacity_provider = "FARGATE_SPOT"
weight = 2
}
capacity_provider_strategy {
capacity_provider = "FARGATE"
weight = 1
base = 1
}
.....
}
Let’s assume that to process loading we need 3 containers, so we set max ECS capacity to be equal 3 accordingly. The code above means, that:
- for 1 Fargate container we want to have 2 spot containers;
- base option guarantees that “Fargate” provider would be chosen in case we have only one container to be running;
- spot provider would be used in case we need 2 or 3 containers;
- in case 1 spot container would be killed by AWS – some time 3-5 min will be required for AWS to deploy a new container at spot resources.
As we always have some reserve, it is quite possible that 2 containers will be able to deal with short overloading. For sure all depends on your exact case and requirements – but it appears to be acceptable at practice rather often. And if it is your case – then you are a lucky guy.
You may ask: “And if 2 containers would be killed at once?” The probability of it is indeed rather low, though a lot depends on AWS region which you operate on.
Let’s calculate such a scenario: 3 fargate containers with next configuration 1 fargate + 2 spot versus 3 EC2 instances, taking into consideration savings plans. There is one pitfall here – remember, we cant use fargate spot for arm architecture – ehh, unfortunately:
Let’s return to aws compute pricing page:
Using data from screen above, we can calculate final price for AWS Fargate 1CPU, 2GB RAM, with 1 year saving plan using ARM x86 architecture:
0.0363168 per vCPU per hour × 24 hours × 30 days = 26,1481 USD
0.0039858 per GB per hour × 24 hours × 30 days × 2 GB = 5,7396 USD
Which give us almost 32 USD per month
In case fargate spot we are getting next calculations (prices are taken from “AWS Fargate pricing page” at September 2024):
0.01426032 per vCPU per hour × 24 hours × 30 days = 10,2674 USD
0.00156508 per GB per hour × 24 hours × 30 days × 2 GB = 2,2537 USD
Which give us 12,52 x 2 = 25$ for 2 spot instances per month
So, in summary for 1 fargate + 2 spot configuration we are getting 57$ per month.
In case EC2 all is simple. As you remember for previous article we already know price for the one 3a.small EC2 instance with 1 year upfront payment using EC2 saving plan. It is 11.97$ per month. So, in case 3 instances we are getting:
11.17 USD x 3 EC2 = 33 USD
So, final ration at Fargate/EC2 cost would be:
57/33 -> 1,7272 ratio versus initial 2.3
Looks not so bad 🙂
Let’s try to accumulate all we have discussed within the last 2 articles + add some pepper in the format of additional tricks to make a final understanding when it is worth using AWS Fargate and when it is a bad choice. But let’s do it at next article.
If you are not ready to wait, or prefer to pass all material in a fast and more convenient way – then welcome to my course, were you can pass all material in a fast and convenient way. Here you can find coupon with discount, which I am updating regularly in the middle of every month.