Our friends at Netflix have embraced AWS whole-heartedly. They have shared much of what they have learned about how they use AWS to build, deploy, and host their applications. You can read the Netflix Tech Blog benefit from what they have learned.
Earlier this week they released Asgard, a web-based cloud management and deployment tool, in open source form on GitHub. According to Norse mythology, Asgard is the home of the god of thunder and lightning, and therefore controls the clouds! This is the same tool that the engineers at Netflix use to control their applications and their deployments.
Asgard layers two additional abstractions on top of AWS -- Applications and Clusters.
An Application contains one or more Clusters, some Auto Scaling Groups, an Elastic Load Balancer, a Launch Configuration, possibly some Security Groups, an AMI, and some EC2 Instances. Each application also has an owner and an email address to connect the objects and the person responsible for creating and managing them.
Each Cluster of an Application contains one or more Auto Scaling Groups. Asgard assigns incrementing version numbers to newly created Auto Scaling Groups.
Asgard tracks the components of each application by using object naming conventions (including some limits on the characters allowed in names to allow for simple parsing), tracking the comings and goings in a SimpleDB domain.
There are two distinct ways to deploy new code through Asgard:
- The cluster-based deployment model creates a new cluster and starts to route traffic to it via an Elastic Load Balancer. The old cluster is disabled but remains available in case a quick rollback becomes necessary.
- The rolling push deployment model launches instances with new code, gracefully deleting and replacing old instances one or two at a time.
Both of these models count on the fact that the AWS components that they use are dynamic and can be created programatically. This, to me, is one of the fundamental aspects of the cloud. If you can't call APIs to create and manipulate infrastructure components such as servers, networks, and load balancers, then you don't have a cloud!
Asgard also provides a simplified graphical user interface for setting up and managing Auto Scaling Groups.
I would like to thank Netflix for opening up this important part of their technology stack to the rest of the world. Nicely done!
Read more (and see some screen shots) in the Netflix blog post, Asgard Web-Based Cloud Management and Deployment.