Business continuity/disaster recovery for on-premise

This article is a subset of the Jira Align documentation of our Standard Operating Procedures for maintaining High Availability (HA) in our SaaS environment. This document should help on-premise customers plan and deliver their own High Availability solutions.

Major goals of the disaster recovery plan

  • To minimize interruptions to normal operations.
  • To limit the extent of disruption and damage.
  • To minimize the economic impact of the interruption.
  • To establish alternative means of operation in advance.
  • To train personnel with emergency procedures.
  • To provide for smooth and rapid restoration of service.

Application profile

The following sections detail the software components required to run the SaaS applications.

Application element Purpose Criticality/occurrence Notes
Web HTTP tier Responds to HTTP requests High
  • Microsoft IIS HTTP/HTTPS engine
  • Microsoft website hosts bindings
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
ASP Application Tier Business logic High
  • Microsoft IIS ASP engine
  • Microsoft Application Pool per website which hosts vbscript.dll and .Net framework elements
  • Stateless, all configuration and customer data are in the AWS MS SQL Relational Database System (RDS)
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
.NET framework Authentication and REST API v1 High
  • Microsoft IIS .Net framework
  • Microsoft Application Pool per website which hosts vbscript.dll and .Net framework elements
  • Stateless, all configuration and customer data are in the AWS MS SQL Relational Database System (RDS)
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
API V2 Rest API v2 High
  • Microsoft .Net Core
  • Microsoft Application Pool per website
  • Stateless, all configuration and customer data are in the AWS MS SQL Relational Database System (RDS)
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
Static elements Large static share 24/7
  • Stateless; data are stored in EBS, updated from BitBucket
Connectors Sync engine Batch processes
  • .NET application with native ADO retry logic to SQL RDS
  • Windows service has restart logic rules enabled by default
  • No local state in the service itself
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
SSIS ETL Pushes data from db into Azure DW Executes as batch process every hour
  • SSIS system installed on SQL Server inside the firewall
  • Batch jobs are deployed as SQL agent jobs
  • Deployed from Deployment Tools
  • No important local state
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
Site DB Hosts all data 24/7
  • Unique AWS MS SQL server database per site deployed in mirror configuration on EBS
  • Primary and ONLY System of record
  • The infrastructure is defined by Cloud Formation Template and Deployment Tools
AgileCraft (Jira Align) server DB Metabase 24/7
  • System of record; easy to replace
  • The infrastructure is defined by Terraform and Deployment tools
Mail service Pushes on cycle 24/7
  • Stateless
AWS SES TLS mail 24/7
  • Third-party
Splunk Logging 24/7
  • Universal Splunk forwarder
  • Watches for updates to the log directory and will queue when offline
  • Real-time elements: perfmon counters will not queue
  • The infrastructure is defined by Terraform and Deployment tools
Enterprise Insights Data warehouse 24/7
  • Data warehouse, analysis services, and API
  • Partial replicas of Site DB, no special state in this tier
  • The users in the directory are replicated at whole Azure tier by default
  • The infrastructure is defined by Terraform and Deployment Tools

Website uptime Markov model

This diagram captures a high-level Markov model and implications for the solution site. This visualization is the documented uptime of the AWS components.

  • ELB is a native component
  • Web/app, connectors are on EC2 with EBS backing store
  • SQL RDS is on RDS mirrored.

The calculated uptime for solution independent of software failure is:

Website & Connectors : Uptime[ELB] * Uptime[Web] * Uptime[SQL RDS] * Uptime[EBS] => 99.929%

Website_uptime_Markov_model.png

Fault chain analysis – full user

This diagram captures the fault profile of the major elements that affect the use case/persona. The blue ovals are internal components and the green elements are external to AgileCraft (Jira Align) SaaS.

Fault_Chain_Analysis_Full_User.png

Fault chain analysis – Enterprise Insights user

This diagram captures the fault profile of the major elements that affect the use case/persona.

Green elements are external to AgileCraft (Jira Align) SaaS.Fault_Chain_Analysis_Enterprise_Insights_User.png

Fault chain analysis – connectors

This diagram captures the fault profile of the major elements that affect the use case/persona.

Green elements are external to AgileCraft (Jira Align) SaaS.Fault_Chain_Analysis_Connectors.png

Logical architecture diagram

 

The diagram is intended to represent a Highly Available deployment of Jira Align that can be used on-premise.

There are three major points of design:

  1. The load balancer for the web tier must be sticky and NOT round-robin. The user session state is maintained on the web server.
  2. The connector for Jira and/or Azure DevOps is a Windows service. This service performs the synchronization queries. The system is fault tolerant to any form of failure at the service level because it performs the changes within SQL transactions locally. The service will retry based on the last completed work. This service is most easily deployed on a single server instead of a cluster. However, it is possible to configure using standard practices of Microsoft Clustered Services if so desired.
  3. The SQL server should be deployed in a Microsoft ODBC compliance cluster. Note that the SQL server is primarily OLTP usage, so the fault-tolerant pair should be laid out for minimal impact to write operations. In our production SaaS, we use AWS storage which has 3000 IO/sec with an average latency of less than 1ms. We highly recommend a storage solution on SSD to enable this.

On_Premise_deployment.jpg

Information services backup procedures

The following section captures backup procedures. The Jira Align customer solution has a single system of record, where all customer data is stored for the application. This database is the only component required to regenerate all customer data.

AWS RDS provides the design and overall solution for database management as a service. Thus, the process for backup and restore of the actual database is a service described at https://aws.amazon.com/rds/details/backup/. After the restore, depending upon the use case, the operations team can do any of several next steps:

  • Restore database from point in time
    • Perform RDS restore in AWS UI
    • SSMS connect to new RDS instance
    • If Single DB then:
      • AWS backup into S3
      • Restore backup
  • Move customer production database into their UAT environment:
    • Create local SQL backup to S3 in SSMS
    • Run AWS restore and rename on top of the existing test system

The Jira Align backup retention policy is 35 days for multi-tenant and the same default for the dedicated instances. You can customize the retention policy in a dedicated instance.

As of September 2020, no data are 'trimmed' for hygiene purposes due to the nature and size of the data within the application.

Description

Mechanism Frequency
AWS RDS DB Snapshots Daily
AWS RDS DB EBS Point in time recovery Real-time
EC2 EBS Snapshots Daily
Azure DB Service Native N/A, rebuild from master System of Record (SOR)
Azure Analysis Services Service Native N/A, rebuild from master SOR

Disaster recovery procedures

The following sections capture the steps to recover the solution in the event of different failure classes. This table maps to the website uptime model above. The table below maps failure elements that are expected or can be validated.

Description Mechanism Notes
EC2 Hypervisor failure - Web tier AWS Status check automatically restarts
  • The web tier is load balanced. As of September 2020, end users that were connected to the recycled server will be logged out, and shifted to another server by load balancer. Instance is automatically added back to load balancer after HTTPS stack is active again.
  • Monitor and alerts are captured in Cloudwatch and trapped in Rackspace ticketing system as of September 2020
  • See Automated recovery EC2 below
EC2 Hypervisor Failure - Connector or Enterprise Insights AWS status check automatically restarts
  • Connector and Enterprise Insights are both batch processes. They will not lose data due to transactional nature of batch processes.
  • Monitor and alerts are captured in cloudwatch and trapped in Rackspace ticketing system as of Sept 2020
  • See Automated recovery EC2 below
AWS RDS DB Hypervisor instance failure RDS automated Fail over to mirrored node
  • The RDS system automatically fails over and restarts.
  • SNS will send Opsgenie alerts to an on-call team.
AWS availability zone fault

Web load transition at load balancer

RDS fails over to mirror node

Connectors manual config

  • Web site fails over automatically

  • Connectors would need to be re-deployed into surviving zone

  • Enterprise Insights would need to be re-deployed into surviving zone

  • RDS fails over automatically

AWS region failure

Rebuild from cloud formation template

  • AWS regions have never failed at this level. If this were to happen, realistically new server deployments for all affected customers would stall out the delivery time more than it would take for AWS to bring region back online.

Automated recovery EC2

The settings below show how the elements are monitored:

CloudWatch_Settings.png

This shows how the monitor recovers the server:

Server_Recovery.png

Emergency response procedures

This section documents the appropriate emergency response to a fire, natural disaster, or any other activity to protect lives and limit damage.

  • Create HOT via PIR
    • Gather update from vendor or location about expected downtimes
    • Determine which use cases are at risk

Backup operations procedures

Backup operations procedures ensure that essential data processing operational tasks can be conducted after the disruption.

We recommend keeping track of quarterly backup testing internally.

Zone fault

We recommend keeping track of quarterly backup testing internally.

Disaster action list

This list provides possible initial actions that you might take following a disaster.

  • Gather team
  • Communicate to customers from Product Support communication list
  • Create change log
  • Execute recovery startup procedures

Fallback plan

Failback steps are only required for a horizontally scaled solution. The HA configuration of the solution can run with new primary without any changes.

Testing the disaster recovery plan

We recommend keeping track of quarterly backup testing internally.

Schedule

The process outlined here is executed quarterly so that we can ensure the plan's ongoing effectiveness in addition to familiarity with the process for the engineers involved.

 

Was this article helpful?
0 out of 0 found this helpful
Print Friendly Version of this pagePrint Get a PDF version of this webpagePDF

Join the Atlassian Community!

The Atlassian Community is a unique, highly collaborative space where customers and Atlassians come together. Ask questions and get answers, start discussions, and collaborate with thousands of other Jira Align customers. Visit the Jira Align Community Collection today.

Need to contact Jira Align Support? Please open a support request.

0 comments

Article is closed for comments.