AWS CodeDeploy - Overview of Deployment Options on AWS

AWS CodeDeploy

AWS CodeDeploy is a fully managed deployment service that automates application deployments to compute services such as Amazon EC2, Amazon Elastic Container Service (Amazon ECS), AWS Lambda, or on-premises servers. Organizations can use CodeDeploy to automate deployments of an application and remove error prone manual operations from the deployment process. CodeDeploy can be used with a wide variety of application content including code, serverless functions, configuration files, and more.

CodeDeploy is intended to be used as a “building block” service that is focused on helping application developers deploy and update software that is running on existing infrastructure. It is not an end-to-end application management solution, and is intended to be used in conjunction with other AWS deployment services such as AWS CodeStar, AWS CodePipeline, other AWS Developer Tools, and third-party services (see AWS CodeDeploy Product Integrations for a complete list of product integrations) as part of a complete CI/CD pipeline. Additionally, CodeDeploy does not manage the creation of resources on behalf of the user.

Table 3: AWS CodeDeploy deployment features

Capability Description
Provision

CodeDeploy is intended for use with existing compute resources and does not create resources on your behalf. CodeDeploy requires compute resources to be organized into a construct called a “deployment group” in order to deploy application content.

Refer to Working with Deployment Groups in CodeDeploy for more details on linking CodeDeploy to compute resources.

Configure

CodeDeploy uses an application specification file to define customizations for compute resources.

Refer to CodeDeploy AppSpec File Reference for more details on the resource customizations with CodeDeploy.

Deploy

Depending on the type of compute resource that CodeDeploy is used with, CodeDeploy offers different strategies for deploying your application.

Refer to Working with Deployments in CodeDeploy for more details on the types of deployment processes that are supported.

Scale CodeDeploy does not support scaling of your underlying application infrastructure; however, depending on your deployment configurations, it may create additional resources to support blue/green deployments
Monitor

CodeDeploy offers monitoring of the success or failure of deployments, as well as a history of all deployments, but does not provide performance or application-level metrics.

Refer to Monitoring Deployments in CodeDeploy for more details on the types of monitoring capabilities offered by CodeDeploy

The following diagram illustrates a general use case for CodeDeploy as part of a complete CI/CD solution. In this example, CodeDeploy is used in conjunction with additional AWS Developer Tools, namely AWS CodePipeline (automate CI/CD pipelines), AWS CodeBuild (build and test application components), and AWS CodeCommit (source code repository) to deploy an application onto a group of EC2 instances.

Figure 3: AWS CodeDeploy use case