Distributed Computing Case Studies
With Globex, when CME distributed the architecture from a central mainframe to a pair of mainframe-class computers coupled with workstation-class servers running Linux and Solaris, it was able to handle more than 2 million transaction requests daily, with response times reduced to 150 milliseconds or less. To maintain an advantage in terms of cost, customer response time, and overall reliability, CME relies heavily on open source software and low-cost, increasingly powerful x86-based servers. CME also uses Novell's ZENworks configuration management software for distributed-application management and as a step toward introducing virtualization into the architecture. What's next? Like a lot of companies, CME has its eye on cloud computing, but it doesn't have a detailed plan it's ready to share since, like a lot of companies, it's taking small steps while waiting for cloud standards to mature.
Another distributed computing project worth examining is eBay. Although users sell millions of dollars of goods through the system daily, eBay's product is a Web site that it must maintain with the most efficient software architecture possible. That architecture has grown to become a three-tier design with business logic, presentation code, and database code separated into different physical tiers.
Over time, servers have been continuously added to each tier, including the database, which has been partitioned and distributed among many servers across multiple geographic locations. The application tier has been rewritten in Java to enable even more computing distribution. Entire feature sets -- search, indexing, transaction management, billing, and fraud detection -- have been moved out of the core application and into separate pools of servers. The architecture has moved to this level of distribution so that eBay can keep up with growth in the number of users and active auctions. Like CME, eBay hasn't said of how it will use cloud resources, but it's a founding member of the Cloud Security Alliance.
As companies consider moving distributed computing to cloud resources, Forrester Research's Ted Schadler advises that they launch pilot projects that have milestones for measuring use, renegotiating pricing, and increasing employee training.
Design And Build
The cloud is tomorrow's promise, but biggest current gains come from increasing levels of speed and parallelization of low-cost servers that let them reduce costs and meet increasing demands. There's no magic in this; higher demands have been placed on networking and communication technologies. These demands are being met with software advances in the form of enterprise service buses, Web services, and virtualization.
Tools for building highly scalable applications based on the distributed computing design methodologies are readily available, many as open source. But open source isn't a panacea when it comes to building distributed systems. While freely available open source software can cut licensing costs, it also can drive up staff costs because of the special skills and knowledge required to work in an environment where formal technical support may not be available.
An example of how developers can use open source to extend distributed computing is detailed below. Open source application servers such as Sun Microsystems' GlassFish and the Sun Cloud Computer Service let developers write and integrate application components in Java, Python, and Ruby. Sun -- at least before its planned acquisition by Oracle -- said its Sun Cloud would be a public cloud for developers. To further attract developers, Sun is also providing a set of REST-based open APIs published under the Creative Commons license, letting anyone use them at no cost. Developers can immediately deploy applications to the Sun Cloud, by leveraging prepackaged virtual machine images of Sun's open source software.
Say your developers want to build an application using a set of Web services written in Ruby, application logic written in Java and PHP, presentation logic in JavaServer Pages, and running on OpenSolaris (or Linux). To add both desktop and mobile device support, they write a JavaFX application as an alternate presentation layer. With a combination of XML and an enterprise service bus, they can reliably tie all these components into one scalable application that runs on a farm of cheap x86 servers.
- Stock quotes, a REST-based service that returns quote data in XML.
- Data Requestor, a component that uses a message broker or ESB to reliably request and distribute critical financial data.
- Stock Viewer, a JavaFX app that uses the other components to display the latest data for a given stock symbol.
The key to this architecture is that not only is it distributed by design, but it's also based on both open standards and open source. Thanks in part to XML and HTTP, the result is platform and language independence for each component at every tier. Some of the components, such as the Quotes and News services, use a messaging protocol (JMS) to distribute and scale their internal components. For instance, the Quotes service is distributed across multiple nodes for redundancy, and uses a reliable message queue to coordinate and distribute requests amongst them
Multiple Java Servlets are deployed to serve requests for quote data over HTTP. This data is retrieved from an internal cache, if available and up to date. Otherwise a request to a third-party provider is enqueued on a reliable JMS queue. Separately, one of the redundant Quote Requestor components will dequeue the request, retrieve the data from the provider, and then return it to the client in the form of XML. This distributed architecture provides scalability to the quotes service (multiple Quote Servlets share the load), and reliability (the queue has guaranteed delivery, and multiple queue readers ensure uptime).
Whether companies are implementing mission-critical service-based applications that span virtual servers around the globe or prototyping a simple application based on Web services and widgets like this, the underlying technology is fundamentally the same. Of course, the scale and complexity are different. But with advances in CPU, memory, and bandwidth capabilities, the promise of distributed computing is on the way to becoming fully realized.