Welcome to Sentia Recruitment
The purpose of this repository is to provide an assignment that will highlight the strengths required by a cloud systems engineer in our public cloud consultancy workforce.
This assignment is meant to challenge the potential applicant in the complete spectrum of designing a solution and delivering an environment in the public cloud using Infrastructure as Code (IaC).
Please be aware of the fact that we are not only looking at the actual deliverables but also the process followed to achieve these results. The presentation of the results is of equal importance to the actual results.
You will need to make a choise of delivering your solution in either Amazon Web Services or Microsoft Azure. We prefer the usage of native tools for IaC. Please use CloudFormation (CFN) or Azure Resource Manager (ARM) templates for this purpose and not Terraform. Of course, third party tools are always necessary in some cases. Please find suggested tools and guides in the Links section that may help you in this journey.
You have participated in a meeting with a client to assess their strategy to migrate to the public cloud. They are currently hosting 10 WordPress sites usign WordPress Multisite in a private datacenter. They achieve HA by using 2 servers and having two copies of their Multisite. For the database, they are using 2 MySQL servers behind and HAProxy to achieve HA.
The past few months, they have been having a lot of issues because some of their websites has increased in popularity, especially during certain timeframes. For the future state, they have agreed that they want to move away from Multisite, and have independent Wordpress applications. They have also pointed out that they have 5 more sites in the making that will reach Production in the next 12 months.
The client is only interested in developing the WordPress sites from an application perspective. They work using GIT repositories, and they have agreed to provide access to the application source code in one or more repositories.
You have undertaken the task to design the future state of this environment in the public cloud. The solution needs to:
- be scalable and flexible.
- be futureproof and expandable with new WordPress sites with minimal effort.
We need to utilize to its full extend the ability of the cloud to scale, when necessary. We also need to version control our IaC templates and for this reason the environment should not be deployed manually within the console in terms of clicking around the different services.
Please provide a design for the designated architecture in either AWS or Azure. For the same design, please provide CloudFormation or ARM templates, and everything else that you need to accompany your solution with based on your approach.
Please provide a design for the CI/CD pipeline that you will use to deliver the changes to the environment, every time the client updates any of their WordPress applications in GIT. For this purpose, please treat the target architecture from Part 1 as a black box.
Please provide the following:
- For Part 1, an architectural design and IaC templates for deploying the components.
- For Part 2, a complete architectural design of the CI/CD process.
- Please include a simple time log of the activities you have performed.
- A presentation of the results within slides, ready to be presented to our client.
- GitHub For Beginners: Don’t Get Scared, Get Started
- Draw.io
- AWS CloudFormation Documentation
- Resource Manager on Azure documentation
- AWS Cloud Development Kit (AWS CDK)
- Amazon EC2 Auto Scaling
- Microsoft Azure Virtual Machine Scale Sets
- AWS Well-Architected
- Microsoft Azure Cloud Design Patterns
- The Twelve Factors
- Containers
- Kubernetes (K8s)
Copyright © 2019, Sentia. All rights reserved.