What is the difference between immutable and blue/green deployments?
Thanks for your question, they are actually two very different things.
Immutable – by definition means "Unchanging over time or unable to be changed"
So when referring to immutable infrastructure, you are talking about infrastructure that, by definition, will not change.
There are many ways you can keep something immutable, and there are many tools and methodologies to help you achieve this. Really recommend doing a quick google search on "what is immutable infrastructure" and there are so many articles on methodology and technologies you can use for this.
Where as blue/green, when people refer to it, they are often talking about deployment methodology. You can read more about these two different topics here:
here is a white-paper that covers blue/green deployments within AWS.
AWS has some amazing white-papers you can actually use if you want to know how how to dive in from basic concepts to really deep dive topics.
I think in this context of question, the immutable update should be referring to one of the elastic beanstalk deployment, which actually is very similar to the concept of blue/green deployment of the ci/cd deployment. i.e., you create a new set of instances (behind autoscaling group as in elastic beanstalk) with the upgraded version (green), and route some of the traffic to the new env with health check along with the current version of env (blue). Once the new deployment tests fine, you switch the URL/router.
The big difference is if you change your Beanstalk configuration to use immutable deployments, while it does build a parallel environment and do a cut over, it also deletes the original environment which means rollback takes considerably more time than just switching the URL back when you have 2 parallel environments you create yourself.