The emergence of service-oriented architectures (SOAs) is an exciting development, providing a springboard for the advancement of flexible, dynamic distributed computing solutions. For those not familiar with SOAs, you can think of them as loosely coupled pieces of applications that are published, consumed, and combined with other applications over a network. These are in contrast to existing, tightly coupled distributed computing platforms (such as CORBA, DCOM, or RMI) in that they offer dynamic discovery and binding of application functionality through service descriptions that provide the details on what a given piece of an application does and how its services can be accessed. Sounds a lot like Web services, doesn't it?
Well, Web services represents a form of SOA that is currently making its mark on the IT industry. It is a distributed computing technology that enables flexible, dynamic integration of applications across a network. I'd like to explore what Web services represents to distributed computing, and look at what the broader category of SOAs might offer.
Let's first review the key benefits of distributed computing. In a distributed environment you can move portions of an application under the control of the group responsible for its associated resources. An obvious example would be an inter-enterprise application (e.g., ERP) that spans the control domains of multiple companies. You might also wish to leverage distributed computing for load balancing or failover of your applications. Additionally, in a mobile application you might want to move portions of your application closer to the user, where they will run efficiently. Finally, you may wish to enable peer-to-peer sharing of information or computing resources. In short, distributed computing architectures represent the varied relationships among users and computing resources.
Existing distributed computing platforms have realized many of these benefits. However, the platforms that came before service-oriented architectures tended to be monolithic (despite their object-oriented approach), inflexible, and complex. Developing applications on these systems required expertise in complex programming models, and these systems did not lend themselves to interoperability with other platforms. Often, these platforms restricted the distribution paradigms that could be supported (e.g., lack of peer-to-peer support).
So, isn't that what the buzz around Web services is all about? Freed from the shackles of tightly coupled distributed computing platforms, IT organizations can harness the dynamic capabilities of Web services to achieve their aims, supporting n-tier and P2P architectures. Well, yes, sort of. In the realm of application integration, this is certainly true, but distributed computing is about so much more than application integration.
The full potential of SOAs is to more flexibly enable distributed computing at the subapplication, or component, level. Web services that you see in the near future will still suffer from many of the same limitations as tightly coupled platforms because they will continue to be built on these platforms. J2EE and .NET-based Web services will present dynamic service interfaces to monolithic, statically deployed applications. And that's fine at the application integration level.
But I expect to see SOA-based distributed component systems that offer the advantages of a service-based architecture at a finer granularity within the applications. Here's what I think this will look like. First, we will be able to dynamically deploy portions of applications on the network. Imagine having an application component follow a user around a network, from mobile device to PC to wherever. You'll instantiate components when they're needed, where they're needed.
Next, we'll have a location-sensitive communication infrastructure with the intelligence to determine the most efficient means of communication, whether that is direct access to a component service interface on the same system, or an efficient message transport for communication within an enterprise, or SOAP communication for inter-enterprise communication.
You'll be able to update components on the fly to support true, incremental application upgrades. Unlike today's monolithic object-oriented designs, where components cannot be readily replaced without application disruption, SOAs enable dynamic upgrades of portions of an application.
An SOA-based approach will enable the flexibility of both P2P and n-tier application architectures to support the natural use pattern of the distributed application.
Web services is a distributed computing technology that is ideal for interconnecting applications across disparate platforms, but it only scratches the surface of the potential for leveraging SOAs for enabling component-level distributed computing. While we should embrace Web services for what they're capable of achieving, we should be pushing the advance of SOAs to take us to the next step in the evolution of distributed computing.
Author Bio
Dave Olander is VP of engineering at Improv Technologies, a leading developer
of enterprise infrastructure software products. Dave has 20 years of experience at HP, Novell, and AT&T Bell Laboratories. His team has just released the latest version of Improv's Cirquet Solution Suite, a life cycle platform for Web services-based distributed
applications.
daveolander@improv-tech.com
All Rights Reserved
Copyright © 2004 SYS-CON Media, Inc.
E-mail:
info@sys-con.com