Installation Guide: AWS - quandis/qbo3-Documentation GitHub Wiki
Overview
AWS Components
All QBO3 web and application servers in AWS are EC2 Instances.
EC2 Instances are instantiated by AWS Auto Scaling Groups.
Auto Scaling groups are updated by creating a new AWS Launch Configuration.
Launch Configurations are based on an AWS Machine Image (AMI).
When an environment is to be updated, Quandis creates a new AMI of a Release box. A Release box is a single EC2 Instance that receives code deploys, and hosts a bare bones testing web site.
The AMI is then used to create a new Launch Configuration.
The Launch Configuration is then assigned to an existing Auto Scaling Group.
When the Auto Scaling group is updated with a new Launch Configuration, the Auto Scaling Group instantiates new EC2 Instances based on the Launch Configuration, and retires the previous EC2 Instances.
Auto Scaling Groups are assigned to an AWS Elastic Load Balancer (ELB).
Azure Devops deployments
The automated deploy process from Azure Devops to AWS consists of two patterns:
- Deploying source code to a Release box
- Promoting an Image of the Release box (AMI) to any upstream environments, such as UAT or PROD.
Quandis currently utilizes Azure DevOps Release Pipelines to implement these patterns.
These images demonstrate a sample deploy and promotion process:
We will now examine each of these Stages in detail.
Deploy to a Release box
The first stage is 'Deploy To Dev':
This Stage retrieves source code and other artifacts that result from Azure Devops Build Pipelines. This data is stored in Artifacts that can be referenced by Release Pipelines.
These artifacts are then deployed to an existing Release server. A Release server is an single AWS EC2 Instance web server. It is intended to provide the simplest configuration required to run a QBO3 website, and allow for configuration testing prior to promotion to upstream environments. When the time for promotion comes, the Release server is imaged, and any EC2 Instances for upstream environments are clones of the Release server, based on the Image.