82
Views
7
Comments
Balanced Application Deployment - Is it supported using Lifetime?

I have read this nice Outsystems article about how you can (using a Load Balancer and at least 2 FE-servers) deploy to a production environment with any downtime.

But it only describes the process using Service Center and .oap/.oml or .osp files.

Does anyone know if Lifetime could be used instead? (as that is the 'default' deployment engine and would be involve fewer manual steps I assume)

2025-01-29 16-21-53
Luiz Alberto de Oliveira Júnior

Hi, Ravn.


You can use Lifetime to publish your applications both in scenarios where there is only one server in the environment and in scenarios where there is more than one server in the environment.


In your Lifetime you will point to the server of each environment that you have and is responsible for the Deployment Controller service, which must have only one server responsible for this in each environment.


Remembering that when installing the other servers in the environment, all the others will point to the main one and will use the same database access settings, for example, as the main one.


I hope I have helped you.


Luiz Alberto Jr.

2021-07-14 07-22-11
Ravn

Hi Luiz,

Thank you very much for your reply. I can see that a "typo" has snuck into my original post:

 with any downtime -> That should have read ->  without any downtime


The core  of my question is if it is possible to use Lifetime in the "Zero downtime" deployment as described in the article referenced? - Because currently that process is only described using Service Center and not described using Lifetime.

2025-01-29 16-21-53
Luiz Alberto de Oliveira Júnior

Hi, Ravn.


That's right, using more than one server in the environment it becomes possible to use the update procedure using the zero downtime mode. I can confess that it exists (downtime), but it is minimal in this model.


Let me explain to you how to update. First, and it's even recommended and described in the documentation, you upgrade Lifetime.

Next, you update the Development environment. At this point you can still take Quality applications to Production as both environments are still on the same version (the previous one).

Next, you update the Quality environment. At this point you can take applications from Development to Quality as both environments are in the same version (the new one). It's an important point because there may be a breakage and you need to fix it in Development and take it to Quality to ensure that it won't impact the new version in Production.

Next, you update the Production environment by applying the Zero Downtime mode; and, if necessary, takes the Quality corrections to Production when everyone is on the same version (the new one).

Publishing applications while updating the environment is not recommended.


I hope I have helped you.


Luiz Alberto Jr.

2021-07-14 07-22-11
Ravn

Hi Luiz,

Thank you for your answer, but that's not totally what I'm trying to find out. Let me try it in another way. Inside the Outsystems Documentation referenced in the question - can this step 4 (shown below) be replaced using LifeTime?

Because otherwise you will need to keep both "Solutions" in Service Center up-to-date and since the rest of the deployment is done using LifeTime (all the way to all environments) - then it seems non-optimal and more manual to suddenly have to use Service Center for deployment.

I was thinking that it might be possible to do something like this:

  1. Disable traffic to FrontEnd B in the LoadBalancer (updating server)
  2. Stop the 'Deployment Controller' Service on FrontEnd A (loaded server)
  3. Deploy version using Lifetime (which will execute on FrontEnd B because the deployment service is not running on FrontEnd A)
  4. After deployment to FrontEnd B
  5. Enable traffic to FrontEnd B in the LoadBalancer + Disable traffic to FrontEnd A in the loadbalancer.
  6. Start the 'Deployment Controller' Service on FrontEnd A (now Lifetime automatically deployes the same version to FrontEnd A).
  7. After deployment to FrontEnd A
  8. Enable traffic to FrontEnd A in the LoadBalancer again

Done

So instead of having to meddle with Service Center - then the same process can be completed with LifeTime...? But that's just not part of the documentation of the process... But maybe that's because the above is not possible or recommended...?

2024-07-05 14-16-55
Daniël Kuhlmann
 
MVP

Hi,

In lifetime if the target environment has more than 1 front end server you will automatically without downtime.

Just deploy the plan, lifetime takes care of it.

Regards,

Daniel

2021-03-05 13-56-11
Ricardo Pereira
 
MVP

Hi,

You can check here in more detail how that works (and the screenshots in this document are from Lifetime):

https://www.outsystems.com/evaluation-guide/how-does-outsystems-handle-deployment-and-staging/

You can see that the "zero downtime" isn't related with the tool that you use (Service Center or Lifetime), but with the OutSystems Platform Server.

Hope this can give you a little more context about how it works.


Best regards,

Ricardo Pereira

2021-07-14 07-22-11
Ravn
Hi Ricardo, It does - thank you. I have pasted in the section that describes this: This advanced deployment process is centrally controlled by the OutSystems Platform Server. During the deployment of a new version of an application, the new version of the web application logic is deployed to a protected area in all front-end nodes and made available to end-users simultaneously and together with the data model updates. What I do not understand is then "why" is the article about "balanced application deployment" written? I mean if Outsystem 11 is already deploying with Zero downtime I do not see the reason why an article about how to do it manually exists...?
Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.