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