|
Computer application architectures have undergone a relatively small number of major shifts over the past 50 years.
One obvious shift was the emergence of client-server architectures in the mid-1980s. Prior to client-server, application logic was generally confined to a single computer, which users accessed through a dumb terminal. The client-server model split application processing across two tiers: typically a PC front end and a minicomputer database server.
Client-server gave way to 3-tier and N-tier applications throughout the late 1990s with the introduction of middleware servers: Web servers such as Apache and application servers such as WebLogic.
We now appear to be in the midst of a new wave of architectural revolution driven by a convergence of technologies and concepts including software as a service (SaaS), virtualization, grid and utility computing. While the N-tier architecture remains the dominant logical architecture, it no longer needs to be directly mapped to physical hardware. Instead, it is mapped to virtual servers which are allocated on demand and which are backed by a hardware grid allowing computing resources to be allocated to virtual servers on demand.
Although many companies will choose to run these logical servers on their own local hardware, it’s increasingly possible to purchase these logical resources directly from a hosting provider. The physical machines reside somewhere in “the cloud” (that is, on the Internet), leading to the term "cloud computing.”
A number of vendors offer virtual hosted servers and could be considered cloud computing vendors. Sun has a cloud computing service (network.com) and Microsoft has announced an upcoming cloud environment. But perhaps surprisingly it is Amazon that has taken the early lead in providing a more fully realized cloud computing environment within the Amazon Web Services (AWS) framework.
AWS originally provided Web services that allowed ISVs to develop applications leveraging Amazon online marketplace services - specialty book sellers for instance. However, AWS today provides a rich environment for deploying almost any kind of Web application.
The key services in AWS that enable cloud computing are Elastic Compute Cloud (EC2), Simple Storage Services (S3) and SimpleDB.
EC2 provides on-demand, pay as you go, virtualized computing services based on Xen-based virtual machines. An EC2 server can be started on demand and with a specific hardware configuration, operating system and software stack. You pay only for the CPU and network consumption that each server consumes.
S3 is a distributed storage service which allows applications within or outside the cloud to share file-based data. EC2 hosts can use S3 to provide a clustered file system.
SimpleDB extends S3 by providing a simple indexed access method for data stored in the cloud. SimpleDB “domains” resemble hash tables indexed by a primary key value. Domains can scale virtually infinitely, are accessible from virtually anywhere and have high availability and redundancy. However, SimpleDB offers virtually none of the features of a relational database - there is no SQL access, for instance.
Amazon offers a number of other services that some application vendors will find attractive, such as billing services, queuing and authentication.
Using AWS it is possible to develop web applications that run completely within Amazon’s cloud, are highly scalable and which require virtually no upfront hardware or administration costs. This is a very appealing model for Web application start-up companies. However, fully scalable AWS applications will want to leverage SimpleDB rather than a traditional RDBMS as their data store. If cloud computing services similar to AWS take off, then simple database services similar to SimpleDB could have a very disruptive effect on the mainstream RDBMS market.
Stop the presses: As this column went to print, Google announced their cloud computing initiative, Google App Engine. Google’s offering is conceptually similar to Amazon’s, though there are some significant differences, which we’ll discuss in a future column.
About the Author:
Guy Harrison is a chief architect for database solutions at Quest Software, and is a recognized expert with over 15 years of experience in application and database administration, development, performance tuning and project management. Harrison is the author of Oracle SQL High Performance Tuning (Prentice Hall) and MySQL Stored Procedure Programming (O’Reilly), and is a regular speaker at trade shows and events Information about Quest Software can be found at www.quest.com.
|