This chapter covers methods that should be used to deploy changes safely and reliably in a live environment, and demonstrates two of the common approaches to updating EC2 instances:
Each instance is updated individually at deployment time.
A new AMI is created every time a production version is released.
The remainder of this chapter investigates the pros and cons of each approach.
In the context of this chapter, deploying does not just refer to updating your application’s code or executable files. It’s a complete, end-to-end process that makes sure your running production environment is consistent and correct. It covers various other changes you need to manage, such as updating versions of software installed on EC2 instances and making changes to CloudFormation stack templates.
The focus here is on how to orchestrate a fleet of EC2 instances and reliably manage them. We won’t cover the actions taken by the deployment script (such as restarting services), because each application has its own unique requirements.
Before we look at the AWS-specific requirements of a deployment system, let’s first examine the components common to nearly all such systems. Consider the deployment workflow of a typical user application. We will look at this from the perspective of a developer making a change to some application code, but the same rules apply to a designer changing a CSS file or a sysadmin ...