Welcome!

Machine Learning Authors: Liz McMillan, Yeshim Deniz, Pat Romanski, Elizabeth White, Corey Roth

Related Topics: @CloudExpo, Microservices Expo, Containers Expo Blog, Machine Learning

@CloudExpo: Blog Post

Architecting for the Cloud Using Amazon Web Services

AWS allows you to create an efficient, elastic architecture - It all boils down to elasticity, flexible compute demand as needed

Traditional IT environments that are built using physical servers can only scale and grow by buying new hardware and software and taking time to install and rack the hardware, configure the software and the application. If/when the excess capacity is not needed the servers stand idle consuming power, cooling and rackspace. This is inefficient and a waste of money.

Amazon Web Services (AWS) allows customers to scale using elastic demand. Just like a rubber elastic band stretches to accommodate more items , AWS provides elastic computing to allow a customer to scale up (or down); to grow or shrink their architecture quickly efficiently with minimal intervention.

The following is a summary of an AWS whitepaper and webinar that describes how you can use AWS to architect your system for the cloud.

Concepts/Definitions

  1. AWS EC2 - an elastic cloud computing platform that allows you to add/remove virtual servers as needed. These virtual servers  (instances) can be configured with an operating system, application software and configuration settings into an AMI (Amazon Machine Image). AMIs can be acquired as needed or reserved.
  2. Availability Zones - distinct locations within geographical regions that ensure you are insulated from failures in other zones.
  3. Elastic IP addresses - programmatically and dynamically assign an IP address to an instance.
  4. Cloud Watch - monitor the performance of instances: CPU, memory, network and disk utilization.
  5. Autoscaling - automatically scale your environment to grow or shrink based on metrics sourced from Cloud Watch.
  6. Elastic Load Balancing - distribute traffic between your instances to ensure customers get good response from your application.
  7. Elastic Block Storage - network attached persistent storage that you attach to your instances, thus if an instance is removed the data is not lost.
  8. S3 - Simple Storage Service for storage of data in buckets or backups/snapshots of EBS volumes.
  9. CloudFront - a content delivery service (CDN) for distributing content close to your customers to reduce latency and response times.
  10. RDS - Relational Database Service - allows you to setup and operate MySQL or Oracle databses without worrying about backups, patches etc.
  11. SQS - Simple Queue Service for distributed messages.
  12. SNS - Simple Notificaiton Service to notify applications or people using publish/subscribe protocols.
  13. Route53- - scalable DNS service
  14. IAM - Identity and Access Management Service to create multiple users with unique credentials and permissions.

With these components in mind, how do I build a truly scalable application that can operate in an AWS cloud?

Scalable applications
First, let's define a scalable application:

  1. Resources increase as performance or demand increases. Example: I add new hard-drive  capacity only when the disk is approaching full, I don't have empty wasted disk on standby "just in case". Similarly, I add additional servers as my server utilization (CPU or memory) approaches capacity, rather than having extra yet idle servers "for when the need arises".
  2. Heterogenous - diverse. Example,  I am not bound to using one operating sytem.
  3. Efficient - only uses the resources it needs
  4. Resilient - if any resource in the architecture fails, users experience little if any disruption of the service.
  5. Cost effective - only buy what you need when you need it, not idle wasted excess.

Design philosophy
Be pessimistic! Assume instances will fail and build redundancy into your architecture.

To accomplish this in AWS you can:

  1. Build AMI packages that get their configuration from AmazonSimple DB and can be started automatically by CloudWatch to either replace failed instance or provide growth to a package of instances. Elastic IPs can also map IP addresses from to new instances.
  2. Architect your application across several Availability Zones, in case one zone is unavailable another can take over.
  3. Similarly deploy multiple databases across Availability Zones for redundancies
  4. Use Amazon EBS to take snapshots of your volumes in case a volume fails you have an instantaneous back up available that can be attached to an AMI.
  5. Design your software application using loosely coupled SOA components that do not have tight dependencies on one another. Thus if one component fails,the other components are able to operate until the failed component is replaced.
  6. Message queues, such as SQS (defined above), allow components to be loosely coupled, if one component is unavailable messages simply queue up in the buffer until the component is online again. This differs from tightly coupled systems written in procedural programming languages which depend on other components being available all the time for the entire system to remain functional.

Elasticity
The most important factor in building a scalable application is elasticity. What components of my application can be made elastic and how?

There are three types of elasticity:

  1. Proactive - at fixed interval perhaps month-end or quarter-end.
  2. Event based - when traffic surges are expected, example tax season
  3. On demand - automatically add/remove capacity as needed.

To implement elasticity:

  1. Automate - the ability to automatically request and start AMIs with minimal manual configuration and intervention.
  2. Bootstrap - assigns a role to an AMI, such as "web server" or "database server" which allows the AMI to instantiate itself using preconfigured options.
  3. Store configuration options in Amazon SimpleDB.
  4. Use AWS CloudWatch to notify you of  system metrics which allows you to create new instances to performs event or proactive elasticity.
  5. AutoScaling allows you to grow your infrastructure, elastically, on-demand.
  6. Boot instances from EBS volumes for faster elasticity.
  7. Parallelization - design your architecture to take advantage of executing multiple tasks at the same time, thus you can store and fetch data if the processes are concurrent.

It all boils down to elasticity, flexible compute demand as needed....

More Stories By Jonathan Gershater

Jonathan Gershater has lived and worked in Silicon Valley since 1996, primarily doing system and sales engineering specializing in: Web Applications, Identity and Security. At Red Hat, he provides Technical Marketing for Virtualization and Cloud. Prior to joining Red Hat, Jonathan worked at 3Com, Entrust (by acquisition) two startups, Sun Microsystems and Trend Micro.

(The views expressed in this blog are entirely mine and do not represent my employer - Jonathan).

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


CloudEXPO Stories
CloudEXPO New York 2018, colocated with DXWorldEXPO New York 2018 will be held November 11-13, 2018, in New York City and will bring together Cloud Computing, FinTech and Blockchain, Digital Transformation, Big Data, Internet of Things, DevOps, AI, Machine Learning and WebRTC to one location.
The best way to leverage your Cloud Expo presence as a sponsor and exhibitor is to plan your news announcements around our events. The press covering Cloud Expo and @ThingsExpo will have access to these releases and will amplify your news announcements. More than two dozen Cloud companies either set deals at our shows or have announced their mergers and acquisitions at Cloud Expo. Product announcements during our show provide your company with the most reach through our targeted audiences.
DevOpsSummit New York 2018, colocated with CloudEXPO | DXWorldEXPO New York 2018 will be held November 11-13, 2018, in New York City. Digital Transformation (DX) is a major focus with the introduction of DXWorldEXPO within the program. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term.
Traditional on-premises data centers have long been the domain of modern data platforms like Apache Hadoop, meaning companies who build their business on public cloud were challenged to run Big Data processing and analytics at scale. But recent advancements in Hadoop performance, security, and most importantly cloud-native integrations, are giving organizations the ability to truly gain value from all their data. In his session at 19th Cloud Expo, David Tishgart, Director of Product Marketing at Cloudera, covered the ins and outs of Hadoop, and how it can help cloud-based businesses.