AWS CodeDeploy is a service that automates application deployments to a variety of compute services including Amazon EC2, AWS Lambda, and on-premises instances. CodeDeploy fully automates your application deployments eliminating the need for manual operations. CodeDeploy protects your application from downtime during deployments through rolling updates and deployment health tracking. CodeDeploy gives you centralized control of your deployments through the AWS Management Console, CLI, SDKs, or APIs allowing you to launch, control, and monitor your deployments. You can view the deployment progress down to individual setup events. CodeDeploy tracks and stores the recent history of your deployments, so you can investigate the timeline and change history of past deployments.
AWS CodeDeploy is platform and language agnostic and works with any application, so you can reuse your existing setup code. You can also easily integrate your application deployments with your existing software delivery process or into a continuous delivery toolchain by using the CodeDeploy APIs.
You can easily repeat an application deployment across different groups of instances or an AWS Lambda function with AWS CodeDeploy. CodeDeploy uses a file and command-based install model, which enables it to deploy any application and reuse existing setup code. The same setup code can be used to consistently deploy and test updates across your deployment, test, and production release stages for Amazon EC2 instances or Lambda functions. Eliminating manual steps from deployments increases both the speed and reliability of your software delivery process.
AWS CodeDeploy allows you to integrate software deployment and scaling activities in order to keep your application up-to-date in a dynamic production environment. For Amazon EC2 instances, CodeDeploy integrates with Auto Scaling. Auto Scaling allows you to scale EC2 capacity according to conditions you define such as spikes in traffic. CodeDeploy is notified whenever a new instance launches into an Auto Scaling group and will automatically perform an application deployment on the new instance before it is added to an Elastic Load Balancing load balancer. For AWS Lambda, your functions automatically scale in response to increases or decreases in traffic and integrate with CodeDeploy to ensure the most recent code is deployed.
You can use AWS CodeDeploy to automate software deployments across your development, test, and production environments running on any instance including instances in your own data centers (your instances will need to be able to connect to AWS public endpoints). This enables you to use a single service to consistently deploy applications across hybrid architectures.
Rolling and Blue/Green updates
Applications do not require downtime when they’re being upgraded to a new revision with AWS CodeDeploy. CodeDeploy can perform a rolling update across a group of Amazon EC2 instances where only a fraction of the instances are taken offline at any one time. CodeDeploy progressively works its way across the instances allowing applications to remain available and continue serving traffic. For AWS Lambda functions, incoming traffic is gradually routed from the old version to the new one.
AWS CodeDeploy can also perform blue/green deployments, where a new set of Amazon EC2 instances is provisioned and installed with the newest revision. Once the new revision is installed on the new instances, CodeDeploy reroutes traffic from your production instances to the new instances. All AWS Lambda updates are inherently blue/green as there are no new instances to be provisioned.
Deployment health tracking
Deployment Health Tracking works in conjunction with rolling updates to keep applications highly available during deployments. Unexpected downtime can occur if bad updates are deployed. AWS CodeDeploy monitors your deployment and will stop a deployment if there are too many failed updates.
Stop and rollback
You can stop an application deployment that is in process at any time using the AWS Management Console, the AWS CLI, or any of the AWS SDKs. You can simply re-deploy that revision if you want to continue the stopped deployment at a later time. You can also immediately rollback by redeploying the previous revision.
Monitoring and control
You can launch, control, and monitor deployments of your software directly from the AWS Management Console or by using the AWS CLI, SDKs, or APIs. In the case of a failure, you can pinpoint the script experiencing failure. You can also set push notifications that allow you to monitor the status of your deployments via SMS or email messages through Amazon Simple Notification Service.
One application can be deployed to multiple deployment groups. Deployment groups are used to match configurations to specific environments, such as a staging or production environments. You can test a revision in staging and then deploy that same code with the same deployment instructions to production once you are satisfied.
AWS CodeDeploy tracks and stores the recent history of your deployments. You can view which application versions are currently deployed to each of your target deployment groups. You can inspect the change history and success rates of past deployments to specific deployment groups. You can also investigate a timeline of past deployments for a detailed view of your deployment successes and errors.
Easy to adopt
Language and architecture agnostic
AWS CodeDeploy uses a file and command-based install model, which enables it to deploy any application and reuse existing setup code. CodeDeploy uses a single AppSpec configuration file to map application files or specify an AWS Lambda functions to replace. You can use the AppSpec file to run actions, tests, or verifications at each lifecycle event (phase of deployment). The commands can be any code, such as a shell script, a custom program, or even a configuration management tool.
Tool chain integration
It is easy to integrate application deployments with your existing software delivery toolchain by using the AWS CodeDeploy APIs. AWS CodePipeline, AWS CodeStar, and some AWS partners provide pre-built CodeDeploy integrations for continuous integration and continuous delivery services, making it simple to automatically deploy your updated application.