HowTo: Deploy the same to several customers with GXcloud Deployment Services

Unofficial Content

This document helps you with the steps to deploying with GeneXus Cloud Deployment Services in the following multitenant scenario:
The same Software product or service for several customers; each customer on a separate Virtual Directory and a separate Database; but all on the same web server and database server.

About the production environment

What you need for the production environment: Your KB, a web server, and a database server.
What you get for customer1, customer2 ... customerN:

1) KB with N environments (Environment1 for Customer1, Environment2 for Customer2 ... Environment 3 for Customer N)
2) Web Server with N Virtual Directories: mySaaS.genexuscloud.com/Customer1, mySaaS.genexuscloud.com/Customer2 ... mySaaS.genexuscloud.com/CustomerN
3) Database server with N Databases: Customer1, Customer2 ... CustomerN. (In case of MySQL, if you use GAM or Flow, you get 2N databases)

Note:  if N = 1 all this may help you too.

Overview of deployment Steps

  1. Follow the steps described at Provisioning for Deployment with GXcloud 
  2. First Deployment case (deploy version V1):
    For each Customer
    1. Create an Environment
    2. Deploy Application
      Now version V1 is deployed to all customers!
  3. When you need to update the application (deploy version Vm)
    For each Environment (Customer)
    1. Update Application
      Now version Vm is deployed to all customers
  4. When a new customer (N) arrives, 
    1. Create an Environment
    2. Deploy Application
      Now customer N has version Vm too!

OK, those processes are correct, but: a) there may be some other steps and b) these all should be fully automated

What other steps may be required

  • Scheduling of Deployments. You may want to coordinate with your customer some specific moment in the upcoming days
  • Some additional steps pre or post Deploy. (e.g.: Send Release Notes to Customers)

Why automated

  • The scheduled deployment may be done at a time you don't want to be awake
  • Step 4 could happen just on time after your customers sign up
  • Step 3 ... when N is 10, 50, 100 (or any >0 ;-)) is just easier when automated

Tools to automate

Automation

Read HowTo: Automating Builds with GXserver and CruiseControl.NET and learn how to build up the whole thing.

Use the GeneXus MSBuild Tasks to automatically create environments, set properties, and Build.

Use the GXcloud MSBuild Tasks to automate the Deployment (Both, Application Creation, and Application Update).