The simplest way to perform switchover to your new application deployment (EC2 instance) could work like this:
- launch/configure another EC2 instance and deploy new version of application on it
- test new deployment
- when you are ready reassign the EIP from the old EC2 instance to the new one
This method will definitely introduce some minimal down time during reassignment of EIP address. This is not a real-time operation.
You can also perform classic DNS switchover (kind of blue/green deployment) to switch from old to new application deployment. You could have two weighted, e.g. CNAME, resource records in designated Route53 DNS zone pointing to your old and new deployment. When processing a DNS query, Route53 will select one answer using a probability calculated based on those weights. To perform the switchover you will initially have weight 100 for "old" record and 0 for "new" record. At the end, you will have just simply swap these weights. The only disadvantage of this approach is that propagating DNS changes can take some time, so you would have no control over when the user will perceive it. This is due to the fact that many clients just don't obey DNS TTL values, and will cache DNS for days, even though the record has TTL e.g. 60s.
- "old" weight = 100, "new" weight = 0 - only "old" is used
- "old" weight = 75, "new" weight = 25 - start testing the "new" one
- "old" weight = 0, "new" weight = 100 - switch over to the "new" one
BTW, there is a nice presentation regarding "Blue/Green deployments on AWS".