Avallain is a highly successful development company solely focused on delivering the highest quality digital solutions for Education worldwide. Within their core product offerings is their flagship education platform called Unity. Unity is a feature-rich learning platform upon which bespoke learning management systems can be developed for Education customers, to hold their learning content.
Avallain requires each Unity build to be deployed onto AWS following a reliable, repeatable, secure, testable method. Each build will then require a number of bespoke configurations for the particular customer. It is vital that each build is deployed in a timely manner in order to be available within a project release or to meet the Unity product release schedule.
CirrusHQ created an AWS CloudFormation template, with sub-templates to manage each component of the build. The template uses parameters throughout to manage the custom values and variables for a particular Unity build.
For more information about Avallain and the solutions they offer, please visit their website.
Business Challenge / Problem Detail
Avallain’s customers typically offer platform solutions with targeted content for courses in a particular subject area and age group. The content is distributed worldwide.
The Unity platform needs to be deployed for each of Avallain’s customers. Each build has configurations specific to that solution and planned user base. Each build needs to be deployable across multiple environments, meeting agreed milestones in the project. This means that the Unity platform needs to be built using infrastructure as code in its entirety rather than having any manual elements or configurations applied to it.
The main goals for the solution included to:
- Provide infrastructure as code for the entire Unity solution following AWS best practice
- Improve time to build, deploy, and test infrastructure
- Improve ways of collating variables within the infrastructure build, avoiding hard-coding them into templates
- Deploy reliable, repeatable builds, avoiding human-error
- Be able to diagnose and debug quickly if part of the build fails to deploy
CirrusHQ worked with Avallain to agree the scope, requirements, and boundaries of the architecture. The key to the solution was to deliver a full infrastructure as code deployment of a Unity platform.
The architecture diagram above shows the solution delivered by CirrusHQ. The solution followed the AWS CloudFormation best practices documentation.
Avallain request a build by passing configuration details to CirrusHQ. CirrusHQ updates the CloudFormation templates for that particular Unity deployment but passing in the configuration details into parameters within the CloudFormation templates. The build is then added to an s3 bucket.
Each Unity deployment has a single master CloudFormation template and seven sub-templates; all templates built using JSON
The sub-templates are:
- Security groups
- CloudFront distribution
- ElastiCache resources
- RDS service
- Application Stack
When a Unity stack is created, the master template runs each sub-template in sequence. The sequence ensures that each component of the build is built and available before initiating the next template. This ensures against components failing to launch due to other components unavailability and removing any unneeded costs in the process.
After running the CloudFormation template, there are two possible outcomes: success or failure.
If CloudFormation encounters a failure on any sub-template the process will stop at that point. The events tab in the CloudFormation console will show the failure point in the sub-template. Expanding that log gives further details on the failure. This means that CirrusHQ can quickly isolate the error and correct the specific sub-template that failed. CirrusHQ then removes all elements provisioned up until the point of failure and re-run the templates.
CirrusHQ peer reviews each build to check that configurations have been fulfilled correctly.
Typical successful deployment times now take under an hour end-to-end. This ensures that Unity deployment is available to the education customer promptly, with confidence that the build is as expected, secure, performant and scalable, and will meet their particular education customer needs.
The hugely improved deployment process has helped Avallain deploy Unity to several of the top educational publishers worldwide.
CirrusHQ worked closely with Avallain, to design, build, deliver, and maintain the required infrastructure for Avallain’s solutions. The following are some of the key responsibilities of the team:
- Cloud system architecture and design
- Development of the CloudFormation templates aligned to the Unity stack
- Deploying and configuring each Unity stack
- Cost and performance optimisation
- Monitoring and alerts
Tooling (Tools and Technologies)
Amazing Simple Storage Service (S3), AWS CloudFormation, Amazon Machine Images (AMI), AWS Application Load Balancer (ALB), AWS Auto Scaling
- Ensuring that each build of Unity can be configured as Avallain requires
- Ensuring that the process is automated and that time to deliver the build is reduced heavily