I am using Elastic Beanstalk to handle my deployments.
I read the explanation for these deployment options but it was not quite clear to me.
Could someone explain it in simpler words?
I think this will help a little bit.
Immutable
– starts by deploying your application code to a single newly created EC2 instance. Once the deployment succeeds on the first instance, the remaining number of instances required to create a parallel fleet are created and the application code is deployed to them. After the deployment succeeds on the entire parallel fleet, instances running the old application version are terminated 25% at a time. This deployment policy ensures that the impact of a failed deployment is minimal (i.e.: a single EC2 instance) and enables your application to serve traffic at full capacity during an ongoing deployment.
Rolling with an additional batch
– starts by deploying your application code to a single batch of newly created EC2 instances. Once the deployment succeeds on the first batch of instances, the application code is deployed to the remaining instances in batches until the last batch of instances remains. At this point, the last batch of instances is terminated. This deployment policy ensures that the impact of a failed deployment is limited to a single batch of instances and enables your application to serve traffic at full capacity during an ongoing deployment.
Rolling
– starts by deploying your application code to a single batch of existing EC2 instances. Once the deployment succeeds on the first batch, the application code is deployed to the remaining instances, in batches. This deployment policy ensures that the impact of a failed deployment is limited to a single batch. However, since no new instances are created during the deployment, your application can serve traffic at a reduced capacity (i.e.: a single batch of instances are out of service at any given time during the deployment).
I found this post easier to understand than the accepted answer, so here's my take on it.
Ordered by high-to-low risk, and calling the deployed versions v1
to v2
:
v1
with v2
at the same time. Failure not handled.v2
is deployed and observed. If successful, all remaining v2
instances are deployed immediately.v1
instances with v2
instances one at a time. Watch for failures.v2
instances. If successful, roll out on v1
instances. When all are v2
instances, scale back to original size.v1
instances. Create same number of v2
instances. Wait for success, then stop v1
instances.v2
, and switch over when ready.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With