AutoSpotting

AutoSpotting

Saves up to 90% of AWS EC2 costs by automating the use of spot instances on existing AutoScaling groups. Installs in minutes using CloudFormation or Terraform. Convenient to deploy at scale using StackSets. Uses tagging to avoid launch configuration changes. Automated spot termination handling. Reliable fallback to on-demand instances.
Under Other
By AutoSpotting

aws ec2 aws-lambda automation go infrastructure cloudformation golang-application amazon-web-services ec2-instance ec2-spot aws-autoscaling cost autoscaling autoscaling-groups spot-instances terraform-module cheaper-spot-instances

AutoSpotting



AutoSpotting is the leading open source spot market automation tool, optimized
towards quick/easy/frictionless adoption of the EC2 spot market at any scale.


It's being used by thousands of users around the world, from companies of all
shapes and sizes, in aggregate probably saving them in the tens of millions of
dollars monthly as per our current estimations.


It is usually set up to monitor existing long-running AutoScaling groups,
replacing their instances with Spot instances with minimal configuration
changes.


Often all it needs is just tagging them with spot-enabled=true, but
even that can be avoided in some cases, yielding the usual 70%-90% Spot cost
savings but in a better integrated and easier to adopt way
than other alternative tools and solutions, especially if you run infrastructure
that for whatever reasons you can't afford to update to Spot by other means.


How does it work?

Once installed and enabled to run against existing on-demand
AutoScaling groups, AutoSpotting gradually replaces their on-demand instances
with cheaper spot instances that are at least as large and identically
configured to the group's members, without changing the group launch
configuration in any way. You can also keep running a configurable number of
on-demand instances given as percentage or absolute number and it automatically
fails over to on-demand in case of spot instance terminations.


Going forward, as well as on any new ASGs that match the expected tags, any new
on-demand instances above the amount configured to be kept running will be immediately
replaced with spot clones within seconds of being launched.


If this fails temporarily due to insufficient spot capacity, AutoSpotting will
continuously attempt to replace them every few minutes until successful after
spot capacity becomes available again. When launching Spot instances, the
compatible instance types are attempted in increasing order of their price,
until one is successfully launched, lazily achieving diversification in case of
temporary unavailability of certain instance types.


This process can partly be seen in action below, you can click to expand the animation:



Additionally, it implements some advanced logic that is aware of spot and on
demand prices, including for different spot products and configurable discounts
for reserved instances or large volume customers. It also considers the specs of
all instance types and automatically launches the cheapest available instance
types based on flexible configuration set globally or overridden at the group
level using additional tags, but these overrides are often not needed.


A single installation can handle all enabled groups from an entire AWS account in
parallel across all available AWS regions, but it can be restricted to fewer
regions if desired in certain situations.


Your groups will then monitor and use these Spot instances just like they would
do with your on-demand instances. They will automatically join their respective
load balancer and start receiving traffic once passing the health checks, and
the traffic would automatically be drained on termination.


What savings can I expect?

The savings it generates are in the 60-90% range usually seen when using spot
instances, but they may vary depending on region and instance type.



What's under the hood?

The entire logic described above is implemented in a set of Lambda functions
deployed using CloudFormation or Terraform stacks that can be installed and
configured in just a few minutes.


The stack uses the minimal set of IAM permissions required for them to
work and requires no admin-like cross-account permissions. The entire code base
can be audited to see how these permissions are being used and even locked down
further if your audit discovers any issues. This is not a SaaS, there's no
component that calls home or reveals any details about your infrastructure.


The main Lambda function is written in the Go programming language and the code
is compiled as a static binary. As of August 2021 this has been included in a
Docker image used by the Lambda function.


The stack also consists of a few CloudWatch event triggers, that run the Lambda
function periodically and whenever it needs to take action against the enabled
groups. Between runs your group is entirely managed by AutoScaling (including
any scaling policies you may have) and load balancer health checks, that can
trigger instance launches or replacements using the original on-demand launch
configuration.


Read here for more information and implementation
details.


FAQs

Frequently asked questions about the project are answered in the
FAQ, please read this first before
asking for support
.


If you have additional questions not covered there, they can be easily added to
the
source
of the FAQ by editing in the browser and creating a pull request, and we'll
answer them while reviewing the pull request.


Getting Started

Just like in the above animation, it's as easy as launching a CloudFormation (or
Terraform) stack
and setting the (configurable) spot-enabled tag on the AutoScaling groups
where you want it enabled to true.


When installed from the AWS
marketplace, all
the required infrastructure and configuration will be created automatically, so
you can get started as fast as possible. Otherwise you'll need to build it
yourself as per the instructions available here.


For more detailed information on how to get started you can also read this
document


Support

Marketplace subscribers can get support from here
and any feature requests or issues raised via this communication channel
will be prioritized.


Community support is available to OSS users on the
gitter chat room, where the main
authors and other users are likely to help you solve issues. This is offered on
a best effort basis and under certain conditions, such as using the latest
version of the software available on the main Github branch, without any code
customizations and using the default configuration options.


If you need help for a large scale rollout or migrating from alternative
tools/solutions get in touch on gitter.


Contributing

AutoSpotting is fully open source and developed in the open by a vibrant
community of dozens of contributors.


If it helps you save any significant amount of money, it would be
greatly appreciated if you could support further development on Github
Sponsors or would purchase it from the AWS
Marketplace.


Note: Non-trivial code should be submitted according to the contribution
guidelines. Individuals and companies supporting the
development of the open source code get free of charge support in getting their
code merged upstream.


Official binaries

The source code is and will always be open source, so you can build and run
it yourself, see how it works and even enhance it if you want.


As of August 2021, fully functional, stable official binaries are only offered
through Docker images available on the AWS
Marketplace.


Evaluation binaries built from trunk after each commit and meant to help the
development process are also available from the Docker Hub but they expire after
a month since compilation.


Proven referrals towards a subscription to the Marketplace will be compensated
over Paypal with 50% of the first charge of the new subscriber. You can request
them on gitter.


Subscriptions

A free low traffic mailing list is available on https://autospotting.io, where
you can sign up for occasional emails related to the project, mainly related to
major changes in the open source code, savings tips or announcements about other
tools I've been working on.


Announcements on new Marketplace releases, including comprehensive release
notes, upgrade instructions and tips to get the most out of AutoSpotting will be
communicated in private to Patreon
subscribers.


A Github sponsors subscription is also
available for people interested in the ongoing development of AutoSpotting, with
tiers covering anything from a non-strings attached donation, prioritization of
feature requests, all the way to custom features development and maintenance of
private customized forks.


Please get in touch on gitter if you have any
questions about these offerings or if you have any other ideas on how I could
provide additional value to my community.


Compiling and Installing

It is recommended to use the evaluation or stable Docker images available on the
AWS marketplace, which are easy to install, support further development of the
software and allow you to get some support.


But if you have some special needs that require some customizations or you don't
want to rely on the author's infrastructure or contribute anything for longer
term use of the software, you can always build and run your customized binaries
that you maintain on your own, just keep in mind that those won't be supported
in any way.


More details are available here


License

This software is distributed under the terms of the OSL-3.0 license.


The evaluation images available on Docker Hub are licensed under this proprietary
license.


The AWS Marketplace offering is made available under the standard AWS
Marketplace EULA.