Platform Engineer Hiring Challenge
Important Note - please do NOT put “Synpulse” or “Synpulse8” in your code or documents
Background
A well-known international bank in Asia is looking for ways to increase the productivity of their developers. The bank currently operates all infrastructure on-premise. Deploying applications - and any changes to them - is a long process involving multiple departments that prepare the required infrastructure, networking, access controls and monitoring separately for each application. While security is a high priority, the bank is interested in exploring different services and setting up their pre-production environments on a public cloud provider. It is also important to automate as much of build and deployment processes as possible.
The bank’s architecture is a 3-tier stack, using a JavaScript-based React front-end with a network load balancer, auto scaling is used for Tomcat J2EE application servers deployed on VMs and an MySQL database.
Your task is to put together a plan to create this environment.
Further concerns raised by the bank:
- Security of resources and limiting access to infrastructure
- Potentially high cloud costs
- Whether they should move from self-hosted tools like
Jenkins
,Artifactory
andSonar
to managed services, and if so, what to choose - Whether they should change from the concept of ‘single app, single vm’ towards kubernetes or other managed services, and if so, what to choose
- Strict separation of environments
- Ability to easily create/replicate environments as needed
Objective
- Propose an environment setup that addresses the bank’s concerns
- Suggest a CI pipeline and its key steps to ensure code quality and security
- Suggest a CD pipeline and its key steps to take source code and have it running on a public cloud provider
- Prepare a brief Terraform-based infra-as-code prototype environment for AWS, Azure or GCP based on the bank’s architecture
Deliverables
A concise and well articulated document (no more than 3 pages) that articulates the proposed pipelines, and a code sample/repository containing the required Terraform code to bring up a prototype environment.