Ok, part two of a series on what I found interesting or thought will be useful from the ‘Architecting with AWS’ training. But first it was pointed out to me not everyone knows what AWS is so to recap AWS or Amazon Web Services offers web services that make up a cloud computing platform.
Another good sub-section was ‘Seven best practises for building systems with AWS’. These seven best practices are:
Design for failure and nothing fails
- Avoid single points of failure
- Assume everything fails and design backwards
Loose coupling sets you free
- Design architectures with independent components
- The more loosely they’re coupled, the bigger they scale
- Design every component as a black box
- Load balance clusters
- Use a queue to pass messages between components
- Elasticity is a fundamental property of the cloud
- Don’t assume the health, availability, or fixed location of components
- Use design that are resilient to reboot and re-launch
- Bootstrap your instances
- When an instance launches, it should ask “Who am I and what is my role?”
- Favour dynamic configuration
Build security in every layer
- Security is a shared responsibility. You decide how to:
- Encrypt data in transit and at rest
- Enforce principle of least privilege
- Create distinct, restricted Security Groups for each application role
- Restrict external access via these security groups
- Use multi-factor authentication
Don’t fear constraints
- Need more RAM
- Consider distributing load across machines or a shared cache
- Better IOPS for databases?
- Instead, consider multiple read replicas, sharing, or DB clustering
- Hardware failed or config got corrupted
- “Rip and Replace” – Simply toss bad instances and instantiate replacement
- Experiment with parallel architectures
Leverage different storage options
- One size does not fit all
- Object storage
- Content delivery network/edge caching
- Block storage
- Relational database
Note: I have taken these 7 principles straight from the course slides, if you are about to embark on implementing an AWS solution I suggest looking into the courses provided by AWS.
So my (brief) take on it:
Cloud does make things easier however it may require a new way of thinking. You still need good planning and design of your overall architecture. Although the infrastructure is hosted by someone else it doesn’t always mean you can shed your responsibilities. Use all the services if you need to, they are there for a reason. Finally, adhere to these principles and you are on your way to producing a durable and scalable solution to your end-users.
Barry, Preventer of Chaos
Barry blogs about how to stop chaos in your systems.
You can read Barry’s blog AWS Part One – 5 Benefits of the Cloud or all of Barry’s blogs here.
We run regular business intelligence courses in both Wellington and Auckland. Find out more here.