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
Historically, some banking activities such as trading have been relying heavily on analytics and cutting edge algorithmic tools. The coming of age of powerful data analytics solutions combined with the development of intelligent algorithms have created new opportunities for finan...
In his session at 21st Cloud Expo, James Henry, Co-CEO/CTO of Calgary Scientific Inc., introduced you to the challenges, solutions and benefits of training AI systems to solve visual problems with an emphasis on improving AIs with continuous training in the field. He explored app...
As you move to the cloud, your network should be efficient, secure, and easy to manage. An enterprise adopting a hybrid or public cloud needs systems and tools that provide: Agility: ability to deliver applications and services faster, even in complex hybrid environments Easier...
From 2013, NTT Communications has been providing cPaaS service, SkyWay. Its customer’s expectations for leveraging WebRTC technology are not only typical real-time communication use cases such as Web conference, remote education, but also IoT use cases such as remote camera monit...
Charles Araujo is an industry analyst, internationally recognized authority on the Digital Enterprise and author of The Quantum Age of IT: Why Everything You Know About IT is About to Change. As Principal Analyst with Intellyx, he writes, speaks and advises organizations on how t...
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