AWS EMEA Solutions Architect Hiring Assignment

Author: Sebastiaan Verbeek.

In the subsequent paragraphs, I will play the role of a freelancer that helps an imagined customer that has not used AWS before. The customer is encountering issues when trying to launch the web application outlined in the CloudFormation Stack attached with this assignment.

Re: answer to your query on 17-4-2020

Hi John,

Thank you for considering me to work on this project. Like we discussed over the phone, I received the export of your present AWS solution in the CloudFormation Stack format (.yaml). AWS is a huge platform so I can understand the difficulties you're having in creating the best possible solution.

Solution to make the website operational

Steps to get a working solution

I've reproduced your error in my AWS account. I've provided you with a new configuration that's sufficient to get you back on your feet. Here are the concrete steps you and your team should take right now:

Explanation for the working solution

sv aws $ diff aws-sa-cloudformation-v20190724-TROUBLESHOOTED.yaml aws-sa-cloudformation-v20190724.yaml 
155c155
<         Subnets: [!Ref 'PublicSubnetA']
---
>         Subnets: [!Ref 'PublicSubnetB']
165c165
<           Target: HTTP:80/demo.html
---
>           Target: TCP:443
178,183d177
<         SecurityGroupIngress:
<           - Description: Accessible by the internet
<             CidrIp: 0.0.0.0/0
<             FromPort: 80
<             IpProtocol: tcp
<             ToPort: 80
195,200d188
<         SecurityGroupIngress:
<           - Description: Accessible by SASGELB
<             FromPort: 80
<             IpProtocol: tcp
<             SourceSecurityGroupId: !Ref 'SASGELB'
<             ToPort: 80
  1. There should be a load balancer node in the availability zone of an instance to pass the health check. If an instance is considered healthy, then the load balancer routes traffic to an instance.
  1. Any non-200 response code by a load balancer results in an unhealthy instance.
  1. The load balancer security group should allow internet traffic to access the load balancer DNS hostname.
  1. The application security group should allow traffic by the load balancer security group to route traffic to the application.

Short term changes to improve availability, security, reliability, performance and cost before production

Before launching your web service, I'd like to talk you through some proposals based on my AWS expertise. These proposals are based on the AWS Cloud Best Practices. Each proposal improves a subset of availability, security, reliability, performance and cost.

1. Instantiating compute resources by using the golden image pattern

2. De-couple stateless and stateful components

3. Improve security by enabling secure sessions using SSL and stricter networking policies

4. Serve content using a content delivery network