Amazon ECS Rolling Update Deployment

Rolling update deployment is managed by Amazon ECS. The service scheduler replaces the currently running version of a container with the specified version (which can be a newer or older version).

During a rolling update, the number of tasks Amazon ECS adds to or removes from a service is controlled by the DeploymentConfiguration.

The DeploymentConfiguration consists of the minimum and maximum number of tasks allowed to run during a service deployment.

What is DeploymentConfiguration?

What?

DeploymentConfiguration is a property of a Service in AWS ECS.
This property specifies optional deployment parameters that control the number of tasks running during a deployment, as well as the order in which tasks are stopped and started.

DeploymentConfiguration has 2 attributes: MaximumPercent and
MinimumHealthyPercent.

MaximumPercent

MaximumPercent represents the deployment batch size as a percentage of the desired task count. It sets the upper limit (rounded down) on the number of tasks that can be in RUNNING or PENDING state during a deployment. If using the EC2 launch type, tasks with containers in DRAINING state also count toward this upper limit.

The default value for MaximumPercent is 200%.

MinimumHealthyPercent

MinimumHealthyPercent represents the lower limit (rounded up) on the number of tasks that must remain in RUNNING state during a deployment, expressed as a percentage of the desired task count. If using the EC2 launch type, tasks with containers in DRAINING state also count toward this lower limit.

Examples

Consider a Service with a desired task count of 4. The currently running version is Version A, and the target version to update to is Version B.

MaximumPercent=200, MinimumHealthyPercent=100

During deployment, the upper limit on task count is 8 (⌊4*200%⌋), and the lower limit is 4 (⌈4*100%⌉).

deployment-200-100.gif

MaximumPercent=100, MinimumHealthyPercent=75

During deployment, the upper limit on task count is 4 (⌊4*100%⌋), and the lower limit is 3 (⌈4*75%⌉).

deployment-100-75.gif

MaximumPercent=121, MinimumHealthyPercent=74

During deployment, the upper limit on task count is 4 (⌊4*121%⌋), and the lower limit is 3 (⌈4*74%⌉).

deployment-121-74.gif

MaximumPercent=100, MinimumHealthyPercent=0

During deployment, the upper limit on task count is 4 (⌊4*100%⌋), and the lower limit is 0 (⌈4*0%⌉).

deployment-100-0.gif