I have created a simple rolling deployment plan for our infrastructure to achieve zero downtime.
Process
Main Step - “Rolling Deployment”
Child step - Remove server from load balancer
Child step - Deploy package
Child step - Add server to the load balancer
We have 2 servers that are in a target group and are hosted on AWS. We have multiple apis hosted on these servers, all deployed via Octopus and wondering what would happen if there is a case of simultaneous deployments? These are independent APIs and are not dependent on one another.
Scenario
Application 1 deployment completed deployment to first server and is now deploying to second server. To be precise, it has now removed the server from load balancer
Application 2 is now deploying to first server and has removed the server from load balancer.
This scenario will result in a downtime (as per my knowledge). Is there a way to get around this issue or any ideas on how you I can manage this better?
As I am not a load balancer expert, i did a quick search about AWS load balancer and found this link AWS Elastic Load Balancing
Looks like there are 3 different types of load balancer and the Application Load Balancer interests me, looks like it can do load balancing on application level, if that is the case, on your Remove server from load balancer step, instead of removing the server, can you remove the application/binding from the load balancer, that way it won’t affect the other applications.
Thanks for your suggestion. We cannot remove an application binding with our current setup as the ALB is pointing to one group (Target Group) of servers.
As the server is shared by multiple applications, by removing the server from the LB, or deregistering it from the target group does not help, it has to be in the application level.
I am a bit hesitate to say that this might not be solved by using octopus nicely without some infrastructure restructure. Would you mind also contacting AWS and ask if removing application binding is possible?