How to design AWS architecture ?
AHMED EMAD
Engineering Manager | Experienced Engineer & Mentor | Enterprise & Senior Java Solution Architect | Technical Consultant | PMP Certified | Cloud Architect (GCP & AWS) | Technology Advisor & Digital Transformation
Cloud computing is one of the boons of technology, making storage and access of documents easier and efficient. AWS cloud architecture need to be reliable, secure, high performing and cost efficient.
A good AWS cloud architecture design should take advantage of some of the inherent strengths of cloud computing – elasticity, ability to automate infrastructure management.
There are certain principles of architecture that one needs to follow to make the most of the tremendous capabilities of the Cloud. Here are some design principles that you must consider for your AWS cloud architecture.
Think Adaptive and Elastic
AWS cloud architecture should be support growth of users, traffic, or data size with no drop in performance.
It should also allow for linear scalability when and where an additional resource is added.
You will need to distribute your workload to multiple resources to build internet-scale applications by scaling horizontally.
AWS cloud architecture should be elastic enough to adapt to the demands of cloud computing
Treat servers as disposable resources
One of the biggest advantages of cloud computing is that you can treat your servers as disposable resources instead of fixed components.
One way to enable this is to implement the immutable infrastructure pattern, which enables you to replace the server with one that has the latest configuration instead of updating the old server.
It is important to keep the configuration and coding as an automated and repeatable process.
AWS Bootstrapping or a Hybrid of the two will help you keep the process automated and repeatable without any human errors.
Bootstrapping can be executed after launching an AWS resource with default configuration. This will let you reuse the same scripts without modifications.
Automate Automate Automate
Cloud enables automation of a number of events, improving both your system’s stability and the efficiency of your organization. Some of the AWS resources you can use to get automated are:
- AWS Elastic Beanstalk
- Amazon EC2 Auto recovery
- Auto Scaling
- Amazon CloudWatch Events
- AWS OpsWorks Lifecycle events
- AWS Lambda Scheduled events
Implement loose coupling
IT systems should ideally be designed in a way that reduces inter-dependencies. Your components need to be loosely coupled to avoid changes or failure in one of the components from affecting others.
By implementing smaller services can be consumed without prior knowledge of their network topology details through loose coupling. This way, new resources can be launched or terminated at any point of time.
Building applications in such a way that they handle component failure in a graceful manner helps you reduce impact on the end users and increase your ability to make progress on your offline procedures.
Focus on services, not servers
AWS cloud architecture should leverage a broad set of compute, storage, database, analytics, application, and deployment services.
To reduce the operational complexity of running applications through server-less architectures.
Database is the base of it all
On AWS, managed database services help remove constraints that come with licensing costs and the ability to support diverse database engines that were a problem with the traditional IT infrastructure.
There are three different categories of databases to keep in mind while architecting:
- Relational databases
- NoSQL databases
- Data warehouse
Be sure to remove single points of failure
Introduce redundancy to remove single points of failure, by having multiple resources for the same task.
It is crucial to have a durable data storage that protects both data availability and integrity.
Automated Multi –Data Center resilience is practiced through Availability Zones across data centers that reduce the impact of failures
Optimize for cost
Applying data caching to multiple layers of your AWS cloud architecture can improve application performance and cost efficiency of application.
There are types of caching:
- Application data caching- Information can be stored and retrieved from fast, managed, in-memory caches in the application, which decreases load for the database and increases latency for end users.
- Edge caching – Content is served by infrastructure that is closer to the viewers lowering latency and giving you the high, sustained data transfer rates needed to deliver large popular objects to end users at scale.
- Amazon CloudFront, the content delivery network consisting of multiple edge locations around the world is the edge caching service whereas Amazon ElastiCache makes it easy to deploy, operate and scale in-memory cache in the cloud.