Deployments and Rollback

QBO client systems will comprise the following environments:
  • Production (PROD): users work with "live" data
    • non-destructive test specifications are run
    • web and application servers are load balanced
    • database has a cold standby at a minimum
  • User Acceptance Testing (UAT): power users configure QBO components, test users validate this configuration, 
    • test specifications are run
    • web and application servers may be run as a single server
    • database has no cold standby
  • Development (DEV): developers deploy new code
    • test specification are run
    • web and application servers may be run as a single server
    • database has no standby, and may have no backup
    • may not be publicly accessible

DEV Deployments

Since DEV environments are not generally accessible to end users, developers are free to choose the most efficient deployment practices for their particular needs. However, developers must be rigorous about ensuring changes they're making to DEV are reflected in source control as:
  • Data definition language: must be part of a Visual Studio SQL project (.sqlproj)
  • Web components (.css, .js, .xslts): must be part of a Visual Studio ASP.NET web application project (.csproj)
  • Data 

Use Case: Development and Deployment of QBO Plugins

Let's assume a QBO client wants to develop an interface with Acme Title company. The project will comprise:
  • Creation of an IService plugin to facilitate exchanging data with Acme Title company
  • Adding new columns to the standard QBO Title table
  • Adding QBO configuration, including custom statements, services, connection to a new FTP site, and associated credentials
  • Creating new QBO configuration, including a workflow and import file templates to handle the data being exchanged

UAT Deployment of "QBO releases" shall comprise the following steps:
  • Ensure there is a current backup of the target database
  • Deploy qbo.DB to the target database
  • Deploy Stand up a new server Using MSBuild (via Visual Studio or Powershell) to deploy QBO to a target machines

Developers: Deployment of application code and database structure changes

All application code and database definition language scripts shall be source controlled. 

Use case: Title interfaces

Power Users: Deployment of QBO configuration changes

QBO production deployments shall comprise:
  • (3 days before deployment) Regression testing a client's test scripts against a stable QBO branch deployed to a UAT site
  • (2 days before deployment) Standing up web and application servers from the tested stable QBO branch
  • (2 days before deployment) Running a finalization script against the web and application servers
  • (1 day before deployment) Running non-destructive testing of each web and application server
  • Stopping old application servers
  • Perform a database backup
  • Adding new web servers to the load balancer
  • Removing old web servers from the load balancer
  • Start new application servers
Rollback will comprise:
  • Restoration of the database backup (if required)
  • Stopping new application servers
  • Adding old web server to the load balancer
  • Removing new web servers from the load balancer
  • Starting new application servers