TL;DR: The AWS Developer Tools collection enables DevOps practitioners to swiftly and safely deliver software via AWS or on-premises environments. The unique and powerful solutions leverage industry best practices to automate code deployments, ensure continuous delivery, streamline source control, and improve software build processes. Today, as part of its mission to support modern application development, AWS is creating a native dev experience through its Cloud Development Kit, currently in public beta.
On September 13, 2018, during a speech at the Economic Club of Washington, Amazon Chief Executive Jeff Bezos said the company’s “secret sauce” is an obsessive focus on its customers, rather than its competitors.
The statement echoed his sentiments two years prior in a 2016 letter to shareholders detailing Amazon Web Service’s success: “Most big technology companies are competitor focused,” he said. “They see what others are doing, and then work to fast follow. In contrast, 90 to 95% of what we build in AWS is driven by what customers tell us they want.”
Today, Amazon is leveraging the same customer-first approach to guide the future of its AWS Developer Tools collection, a set of solutions designed to make the lives of DevOps practitioners significantly less stressful.
Aaron Kao, Senior Manager Product Marketing at AWS, told us the mission behind AWS Developer Tools is to make it easy for users to deliver software on AWS with an emphasis on supporting modern application development.
“We offer a comprehensive portfolio of services and have a rich partner network, so customers should always feel confident they’ll be able to find a tool for the job,” he said. “Our services are built to support enterprise-grade workloads, such as running a globally distributed application at high scale and fault-tolerance.”
The robust tools empower DevOps professionals to host code as well as automatically build, test, and deploy applications to AWS or an on-premises environment. The solutions set helps streamline deployment, software delivery, source control, and software building. Now, through the AWS Cloud Development Kit, currently in public beta, the company is aiming to create a native experience for developers building apps in the cloud.
Automate Code Deployments and Ensure Continuous Delivery
The story behind the AWS Developer Tools collection began more than 15 years ago when Amazon was transitioning to a service-oriented architecture.
“Amazon refactored its software into small independent services and restructured its organization into small autonomous teams,” Aaron said. “Each team took on full ownership of the development and operation of a single service, and they worked directly with their customers to improve it.”
Through better focus and control, the teams could rapidly produce new features, but their manual deployment process began to cause bottlenecks that slowed releases. In response, Amazon created Apollo, a shared internal deployment service, to automate deployments. Ultimately, Apollo resolved the deployment issue, but it still took a significant amount of time for code changes to move from the developer check-in process to production.
“In order to minimize the time taken for a code change to go through the deployment life cycle, we created pipelines,” Aaron said. “Many of our customers had similar issues with deployment and software delivery, which led to Amazon introducing AWS CodeDeploy and AWS CodePipeline based on internal tools.”
AWS CodeDeploy automates application deployments and updates across a fleet of instances of any size, including Amazon Elastic Compute Cloud (Amazon EC2) instances and servers running on-premises. The scalable solution makes it easier to quickly release new features, avoid downtime during deployment, and handle complex updates.
AWS CodePipeline, on the other hand, is a continuous integration and delivery service that automates the software release process. Based on models defined by the developer, the tool builds, tests, and deploys code whenever there is a change. Aaron said everyone, from enterprise developers to those building with Lambda and containers, now uses these tools, which support all the components that make up modern applications.
Streamline Source Control and Software Build Processes
In addition to easing deployment and software delivery, AWS also built tools to help streamline the source control and software build processes.
“Amazon released AWS CodeCommit and AWS CodeBuild based on internal tools in order to help our customers find and address bugs more quickly, improve software quality, and reduce the time it takes to validate and release new software updates,” Aaron said.
AWS CodeCommit, a cloud-based source control service, makes it easy for businesses to host secure and scalable Git repositories. The solution, which works seamlessly with a developer’s existing Git tools, eliminates the need to manage and scale a version control system.
Edmunds.com, a website that allows 20 million monthly shoppers to browse in-depth information about a variety of vehicles, uses AWS CodeCommit to reduce administration and maintenance burdens. According to a case study on the AWS site, AWS CodeCommit has helped the company cut the time spent on these tasks by a whopping 95%.
AWS CodeBuild provides a quick and easy way to build and test code while avoiding the bottlenecks that frequently slow teams down. The continuous integration service, which works seamlessly with AWS CodePipeline, compiles source code, runs tests, and produces software packages that are ready to deploy.
Because the service is fully managed, there’s no need to set up, patch, update, or manage build servers or software. And, to ensure they’re not paying for idle time, AWS CodeBuild bills developers only for the minutes they use the tool.
Unique and Robust Feature Sets
Aaron said AWS offers a wide range of features for developing and managing AWS applications, and out of those, he has a few favorites. The company’s Integrated Development Environment (IDE) Toolkits, for example, increase development speed through cloud tools that are integrated into the dev environment. “Customers can develop, debug, and deploy serverless applications directly from their IDE,” he said.
He also highlighted a Quick Start feature, Blue-Green Deployment on AWS, which was developed by AWS solutions architects to create a continuous integration/continuous deployment (CI/CD) pipeline in just 15 minutes. The feature works with AWS Elastic Beanstalk, a tool that developers use to deploy and manage apps in the AWS cloud without concern about the infrastructure supporting them.
Developing and deploying applications to an AWS Elastic Beanstalk increases availability and reduces risk through the use of identical blue and green environments. The Blue-Green Deployment on AWS Quick Start automatically implements a blue-green architecture for every compute type — including Amazon EC2, containers, and Lambda — on AWS using AWS CodePipeline.
“Blue-Green Deployment on AWS provides support for well-established best practices as customers roll out new software,” Aaron said.
Aaron also recommends that developers use AWS Config to continuously track AWS resource configuration changes and evaluate each change against defined rules representing an ideal configuration. The feature continuously monitors configuration changes to verify whether a change violates the rules, and if it does, AWS Config marks the resource and rule as noncompliant.
Finally, Aaron noted that the AWS Amplify mobile development framework includes a set of libraries, UI components, and a command line interface for customers to easily build mobile backends that can be integrated with iOS, Android, Web, and React Native apps.
AWS CDK: A Native Experience for Building Apps in the Cloud
As for what the future holds, Aaron said his team is quite enthusiastic about the AWS Cloud Development Kit (CDK), currently in developer preview. The open-source software development framework is intended to define cloud infrastructure in code and provision it through AWS CloudFormation.
“With CDK, developers, DevOps, and IT teams can use a higher level, object-oriented framework to define AWS resources in whatever programming language they are currently using,” Aaron said.
Teams can define and provision their AWS infrastructure predictably and efficiently using the AWS Construct Library of infrastructure constructs — a set of modules that have AWS best practices pre-built into them. Ultimately, the company hopes to foster a native experience for developers building modern apps in the cloud.
“This means removing the boundaries between application logic and infrastructure and being able to seamlessly ‘write’ both from one programming language,” Aaron said.
Delivered with a side of Amazon’s “secret sauce,” these solutions are sure to be crowd-pleasers.