Comments
yourfanat wrote: I am using another tool for Oracle developers - dbForge Studio for Oracle. This IDE has lots of usefull features, among them: oracle designer, code competion and formatter, query builder, debugger, profiler, erxport/import, reports and many others. The latest version supports Oracle 12C. More information here.
Cloud Expo on Google News
SYS-CON.TV
Cloud Expo & Virtualization 2009 East
PLATINUM SPONSORS:
IBM
Smarter Business Solutions Through Dynamic Infrastructure
IBM
Smarter Insights: How the CIO Becomes a Hero Again
Microsoft
Windows Azure
GOLD SPONSORS:
Appsense
Why VDI?
CA
Maximizing the Business Value of Virtualization in Enterprise and Cloud Computing Environments
ExactTarget
Messaging in the Cloud - Email, SMS and Voice
Freedom OSS
Stairway to the Cloud
Sun
Sun's Incubation Platform: Helping Startups Serve the Enterprise
POWER PANELS:
Cloud Computing & Enterprise IT: Cost & Operational Benefits
How and Why is a Flexible IT Infrastructure the Key To the Future?
Click For 2008 West
Event Webcasts
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....

About 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).

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1

Latest Cloud Developer Stories
DX World EXPO, LLC, a Lighthouse Point, Florida-based startup trade show producer and the creator of "DXWorldEXPO® - Digital Transformation Conference & Expo" has announced its executive management team. The team is headed by Levent Selamoglu, who has been named CEO. "Now is the ...
"Space Monkey by Vivent Smart Home is a product that is a distributed cloud-based edge storage network. Vivent Smart Home, our parent company, is a smart home provider that places a lot of hard drives across homes in North America," explained JT Olds, Director of Engineering, an...
SYS-CON Events announced today that Conference Guru has been named “Media Sponsor” of the 22nd International Cloud Expo, which will take place on June 5-7, 2018, at the Javits Center in New York, NY. A valuable conference experience generates new contacts, sales leads, potentia...
DevOps is under attack because developers don’t want to mess with infrastructure. They will happily own their code into production, but want to use platforms instead of raw automation. That’s changing the landscape that we understand as DevOps with both architecture concepts (Clo...
In his Opening Keynote at 21st Cloud Expo, John Considine, General Manager of IBM Cloud Infrastructure, led attendees through the exciting evolution of the cloud. He looked at this major disruption from the perspective of technology, business models, and what this means for enter...
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021



SYS-CON Featured Whitepapers
ADS BY GOOGLE