Design Principles and Amazon
The Amazon Web Services machine has been growing faster than a brushfire in Australia. It makes sense too. The company has done quite a bit of work and has continued to innovate for itself while others may have lagged behind. As you may know, companies such as Netflix, Twitch, Linkedin, Facebook, ESPN, and Baidu use Amazon Web Services to run different segments of their operations.
These corporations spend at least $8 million or more to use the Amazon environment and are by no means the only ones that work with Amazon. The Seattle based tech giant caters to a wide variety of companies to create significant value for their partners and consumers.
Remember that this is all due to innovation and the right design from the start. But what are the AWS design principles and why do they matter?
Let’s find out.
AWS Design Principles
If you’ve been reading my previous posts, you have probably seen a couple of these design principles but we will dive into them further to recap.
If there’s one thing that you’ll want to know about the cloud environment, its scalability. The design principle is at the core of what Amazon Web Services is all about for themselves and their clients. Growth is everything in the world of business and entities must prepare to scale their organizations and systems. Organizations that continue to succeed are able to do so because of the best systems.
From a technical standpoint, scalable IT infrastructure allows organizations to grow, create, develop, and increase their value with fewer hassles. Scalable infrastructure can cater to and account for users, high throughput, and increased data with minimal performance issues.
Scalability for Amazon means
- Linear scale – resources grow with use
- Growth should come with economies of scale
- Scale takes place in a vertical or horizontal capacity
Scaling vertically means that will optimize for a specific characteristic such as CPU, RAM, or other capabilities while scaling horizontally means that you are adding further resources to the system. These resources may be servers or hard drives or other computing components.
Let’s dig a little deeper.
What Are Stateless Applications?
Stateless applications are those that do not store previous session data. It is an application that will provide equal results to all users at all times. These are horizontally scalable applications. You just need to use a specific resource and scale that further to handle more sessions.
Now, say you need to distribute workloads to multiple nodes, what do yo do?
You must turn to a push or pull model and use tools such as Elastic load balancing according to Amazon. Further, you may choose to go a different route with a push model with Amazon SQS to queue up tasks and process them with several compute resources.
What Are Stateful Components?
Stateful components are those that will store data, such as databases.
Disposable Resources Mitigates Issues
Long term assets like legacy server systems can create several problems for companies. First, they require regular maintenance on the client side, second, regular maintenance can create variation in version configuration. Disposable resources help to mitigate these issues.
The Amazon design principle here is to simplicity by doing away with a static culture and focus on a more dynamic one instead.
Infrastructure as Code and Automation
Popular Amazon design principles also include that of infrastructure as code and automation allowing you be more hands in the maintenance of your environment.
You can see instances of automation with Elastic Beanstalk, EC2 Auto Recovery, and Autoscaling.
These automatic options help to bring about more simplicity while helping you to focus on what matters, the user.
We’ll cover more aspects of the Amazon Web Services best practices in the next post.