AWS Part Two – Seven best practises for building systems with AWS

Barry Stevens
December 17, 2013

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

Implement elasticity

  • 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

Think parallel

  • 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
  • NoSQL

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 Stevens is part of our Data Ops team who specialises in SAS Administration, helping you prevent chaos.

Connect with Barry on LinkedIn or read some of his other blogs here.

Copyright © 2019 OptimalBI LTD.