Deploying a Multi-Tenant Web App to Multiple Customers - Will it Deploy? Episode 5

Published on: 29 Mar 2018 by: Rob Pearson

Welcome to another Will it Deploy? Episode where we try to automate the deployment of different technologies with Octopus Deploy. In this special double-episode, we're trying to deploy a multi-tenant SaaS web app to different customers running on Amazon Web Services (AWS) virtual machines.

Problem

Multi-Tenant architecture

Tech Stack

Our app is a quote generator called Random Quotes. The application is relatively simple but it includes a number of common features that allows us to illustrate the complexities of multi-tenant deployments.

Features:

  • Customised app settings for each customer
  • Dynamic feature/module loading at application startup
  • Customised colors and styles for each customer

Technologies:

SQL Server logo

Kudos to our marketing manager Andrew who has been learning to code and built the first cut of this app. Great work!

Deployment Target

Amazon web services logo

Solution

So will it deploy? Yes it will! Our deployment process looks like the following.

Octopus Multi-Tenant Deployments

Octopus deployment process

Then we add the following steps to successfully deploy our app.

  • Octopus Deploy a Package step to copy our database scripts to our database deployment target
  • Octopus Community Contributed step template - SQL - Execute Script File to execute our Entity Framework Core migration script agaist our SQL Server database.
  • Octopus Deploy to IIS step to deploy our multi-tenant ASP.NET Core web application
  • Octopus Deploy a Package step to copy the Admin Module to customer's website if they pay for this feature
  • Octopus Deploy a Package step to copy the Sharing Module to customer's website if they pay for this feature

This project uses the following variables, variable templates and common variable templates to store our app settings, database connection details and web app configuration.

Project variables

Project variable templates

Common variable templates

This episode's GitHub repo contains all the resources and links used in this video.

Wrap-up

We hope you enjoyed this episode as we have many more in the works! If there's a framework or technology you'd like us to explore, let us know in the comments.

Don't forget to subscribe to our YouTube channel as we're adding new videos regularly. Happy deployments! 😃