CloudFormation Powered Deployment

The Challenge

A US national cable service provider had a large number of microservices that need to be deployed to AWS. These microservices have frequent code changes, large number of configuration parameters and rely on AWS resources.

The team needs solution that will reduce the deployment time and lower the complexity and manual work.

  • Based on a cloud team experience we defined logical groups of cloud resources. Only experience can provide optimal solutions for CloudFormation approach;
  • Define I/O parameters that will provide user friendly and native communication to CloudFormation scripts;
  • Integrate CloudFormation with Jenkins pipeline;
  • Define specific roles with at least privileges to run the scripts from Jenkins pipeline;
  • Define CI/CD process that will include several teams: technical committee, developers, QA and DevOps;
  • Establish and transfer the knowledge for using CloudFormation specific deployment.

Solution

InterWorks’ analysis and development team proposed and built deployment solution, providing:

  • CloudFormation script that defines all infrastructure resources that are needed for running the microservices: VPC, Subnets, Security groups, DynamoDB, RDS instances, IAM Roles etc.
  • CloudFormation script that defines all resources that are needed for microservices: SQS, SNS, Lambda functions, parameters etc.
  • Jenkins deployment file that contains all command needed for building the code and running the scripts.

Our solution is based on Amazon Web Services CloudFormation script that defines all resources needed for smooth running of the microservices. The microservices are grouped in several logic groups and for each group is created a CloudFormation script. Each cloud formation script has template that is built to a final CloudFormation script at the end of the deployment process. With this approach, we handle parent-child dependences. The configuration files are resided in several S3 buckets, based on different logic groups. During the deployment, the configuration file is loaded and all environment variables are getting final values.

Using this approach, the microservices can be quickly deployable to different AWS accounts or as different environments in the same AWS account.

Benefits and Results

  • The client gets a low-cost reliable solution running entirely on AWS infrastructure making it fully scalable and upgradable at any moment.
  • We provide brand new isolated environment for different purposes only in several minutes. Each environment is completely controlled by stack that physically isolates resource one from another.

See the complete case study here >>