- Increase the reliability of services
- Ensure compliance with international security standards
- Reduce the chance of knowledge silos developing within teams
Demonstrate understanding of:
- Making a service Scalable
- Making a service Highly Available
- Principle of Least Privilege
- Zero-downtime deployments
Be able to set up a highly available, internet facing web application.
- What are IaaS, PaaS, and FaaS?
- For each of these; Discuss a scenario where the technology is appropriate
- For each of these; Discuss a scenario where the technology is not appropriate
- What is the importance of having a highly available service?
You will be provided a Linux Container Image, though you can use your own if you wish.
- Run the image with your choice of IaaS.
- Make the service highly available
- Draw a diagram of your infrastructure
- Demonstrate that you can remove an instance, and your infrastructure will self heal
- Demonstrate that you can roll out a new deployment without causing any downtime. Use the provided downtime detection script.
There are certain providers, usually PaaS only providers, that do not offer the functionality we require for testing people on all the above aspects.
As such, we recommend avoiding solutions that hide:
- load balancing
- networking rules (routing, Firewalls)
Providers that can definitely be used are:
- ECS with FARGATE is fine, though be prepared for increased theory work around deployment processes
- Lambda is not recommended, as it hides a lot of networking rules, autoscaling, and deployment processes
- Elastic Beanstalk is not allowed, as it does everything for you, but in a way that makes it hard to adapt after the fact.
target="<your endpoint>" while :; do if (curl -m 1 "$target" &>/dev/null); then printf '.' else echo "target is down" break fi sleep 0.5 done