Search code examples
ibm-cloudwebsphere-liberty

How to update bluemix application but leaving this application available?


I have Java Liberty Web Application on Bluemix. If I need to update it, the app becomes unavailable for a few minutes. Is it possible to update it without turning it off? For example deploy two applications and reroute to a second one one when first is being updated?


Solution

  • This is known as a blue-green deployment, and there are several cloud foundry plugins which will do it 'automatically':

    Bluemix's Active Deploy service

    This is new function, so it's in beta at the moment. To make the service available, you can add it from the Bluemix service catalog to your space. If you're running cf locally, you'll need to install the plugin:

      cf add-plugin-repo bluemix http://plugins.ng.bluemix.net/
      cf install-plugin active-deploy -r bluemix 
    

    Once it's available (either with a cf plugin install, or the catalog configuration), and you have routes, you can do

    cf push --no-route new-version
    cf active-deploy-create old-version new-version
    

    Cloud Foundry community-contributed plugin for blue green deployments

    You can install this using cf add-plugin-repo garage https://garage-cf-plugins.eu-gb.mybluemix.net/ cf install-plugin blue-green-deploy -r garage

    Then, to push,

    cf blue-green-deploy app_name --smoke-test <path to test script>
    

    The smoke test part is optional, but a good idea.