Accelerate Time to Market with AWS Cloudformation and Devops

blog-feature-devops

Leverage Devops to Accelerate Time to Market on AWS

Time to market – or executing a well-timed, efficient product launch – can be extremely challenging.  For many startups, the key to success and survival is the capability to quickly get to market and to then have the ability to rapidly adjust the product or service when necessary.

Providing the right processes and effective operational tools to keep costs down, reduce time to return on investment and show competitive adaptability to market shifts is essential for success. The most effective tools are technical rather than organizational.  Accelerating software delivery by shortening the cycle time to deployment requires automated solutions and is the optimal way to deploy core cloud components – to not only save valuable time but also save significant amounts of money.  Increased developer productivity and continuous delivery is the ability to drive innovation and grow customer satisfaction – all of which deliver a competitive business advantage.

DevOps is a combination of two practices – development and operations – which work together to optimize both the productivity of developers and the reliability of operations; it is the practice of building automations and infrastructure using a set of tools so that software can be delivered faster.

Amazon Web Services (AWS) CloudFormation is a DevOps tool that helps reduce the time companies require to get to market by delivering software faster. Triumph Technology Solutions is an AWS consulting partner and dedicated provider of AWS-centered cloud services. We have used the CloudFormation tool for several clients to help model and set up the resources that run in their environments, saving both time and money:

  • Triumph used AWS CloudFormation to reduce the repeatable deployment time of a client’s environments by 75% and cut costs by 250%.
  • For an Enterprise IT startup, we used CloudFormation and containers to reduce the repeatable deployment time of their client environments by over 2000% and cut deployment costs by over 2100%.

It was important for each of these clients to reduce their TCOs since their software and operations environments must be set up for each one of their new net clients.

The three main concepts of working with CloudFormation include:

Template

Using individual AWS services to provision resources requires configuring them to work together, which can add complexity and time before getting the application up and running.  CloudFormation provides an easy way of provisioning AWS resources by describing them in a template that can be deployed as a “stack” on AWS.  A stack is a collection of AWS resources that you can manage as a single unit. In other words, you can create, update, or delete a collection of resources by creating, updating, or deleting stacks.

A template is a declarative way of defining your resources using infrastructure as code (IaC) in either a yaml or json formatted text file. The template describes all of your resources and their properties and takes care of provisioning and configuring those resources so you don’t need to individually create and configure them. This template can then be used to deploy the resources by using either the console or a command line interface.

Stack

Once the DevOps team uploads a template, CloudFormation automatically launches the required resources and builds the running instance (stack) declared in the template.  When the template is deployed, it creates both EIP and EC2 resources as a stack. These resources are created as a unit so any update or deletion of resources will be applied to the stack.  You can use a single template to create multiple stacks as long as there are no naming conflicts.

And you can quickly replicate infrastructure without affecting other resources that your template previously created. The template can be used to create as many stacks as needed.  You can also delete the stack just as easily, which deletes all the resources in the stack.

Change Set

Having the ability to make changes and updates to your stacks quickly is part of a good DevOps practice. When a stack needs to be updated, you can simply run an update on the stack and let AWS take care of replacing the necessary resources. Change Set takes that further and gives you the ability to see the impact of the changes you are applying before they are actually applied,

When you need to update your stack’s resources, you can modify the stack’s template. You don’t need to create a new stack and delete the old one. To update a stack, create a change set by submitting a modified version of the original stack template, different input parameter values, or both. CloudFormation compares the modified template with the original template and generates a change set. The change set lists the proposed changes. After reviewing the changes, you can execute the change set to update your stack or you can create a new Change Set. CloudFormation Change Sets allow you to preview how proposed changes to a stack might impact your running resources; for example, whether your changes will delete or replace any critical resources. CloudFormation makes the changes to your stack only after you decide to execute the Change Set.

Conclusion

To summarize, CloudFormation is a DevOps tool that simplifies provisioning and managing resources.  The benefits of using CloudFormation include:

  • Easy-to-read template. yamlor json are both widely used, making it easy to understand or find resources.
  • Improved automation. The simplicity of the template allows you to declare what you want your resources to look like. This eliminates the need to rely on other scripting tools to create the resources. CloudFormation automates the provisioning and updating of your infrastructure in a safe and controlled manner. There are no manual steps or controls that can lead to errors.

CloudFormation automatically manages dependencies between your resources during stack management actions. You do not need to worry about specifying the order in which resource are created, updated, or deleted. CloudFormation determines the correct sequence of actions to use for each resource when performing stack operations.

  • Quick infrastructure replication. You can quickly replicate your infrastructure without affecting other resources that your template previously created. The template can be used to create as many stacks as needed.
  • Infrastructure consistency. The declarative way of defining templates allows for consistency – you can be assured that stacks created with the template will be identical.
  • Version control of infrastructure architecture. Maintaing a history in DevOps is a necessity beause as you make changes, unexpected results may occur to cause issue.  Being able to trace back the history can help  identify what’s causing the issue. Tracking the development process is also required for security purposes to make sure your applications and infrastructure don’t have any holes that can get exploited. Version Control in CloudFormation keeps track of all changes and allows customers to version control IT infrastructure in the same way they would with software coding.