Much of what we hear in the news about new technology tends to have marketing hype all over it. Software architects need to remove hype from the real thing to match expectations of stakeholders with current technologies. This article touches upon the difficulties of "going SOA," as well as some of the benefits. Most of us have only heard of the benefits of SOA, but none of the challenges. The article will also go into how Grid computing can remedy these difficulties.
What is SOA? The buzzword does not give an adequate explanation. There is no simple answer to the question, but rather a set of criteria that define what comprises a service-oriented architecture. A Web service is registered with UDDI Directory by a service provider and its public interface is exposed via WSDL and accessed by a Service Consumer thru SOAP.
Figure 1: The Triangle of Web Services
We've known about this concept for a while, but we now have the technology to backup what the "theory" of SOA originally set forth to do. Services can be explained as "self-contained" and "self-managed" components, but these terms are the cause of many headaches and sleepless nights. Benefits such as decoupling of clients from the business logic, run-time binding of supply and demand, scalability, availability and being able to implement an enterprise SOA solution can be easily realized, as well.
These benefits come with challenges, such as securing your enterprise, accessing services, providing quality of service desired by service consumers, controlling services in a uniform, central location and managing the infrastructure that supports your services.Enterprise SOA Explained
Enterprise SOA can be defined as being able to expose services to the entire enterprise and accessing services exposed by others. The identification process, recognizing which pieces of your enterprise can be service-ized, is the key step for a service-oriented design. Decoupling business logic from the rest of the application can be daunting. A service must be general enough to answer the call of more than one application, and specific enough to do something useful for that application.
A bottom-up or a top-down approach can be taken toward enterprise SOA. The bottom-up approach starts with one application -- a low hanging fruit -- and works up through the rest of the enterprise by service-enabling one application after another. This approach is safer, but takes longer and faces bigger challenges after service enabling a few applications -- when larger, mission-critical applications have different and more constraining requirements.
The top-down approach starts with top-level managers and a vision, which is propagated throughout the enterprise, with different groups taking on the challenge. This approach has better promise, but can lead to top-level management not realizing the needs of every project in large enterprises, resulting in an implementation that is staggering at best -- with lack of interoperability between applications at worst.
A hybrid of the two approaches is becoming commonplace. Consider management from the enterprise level with architects and managers representing different parts of an enterprise. The 4 Ps -- people, pilot, plan and proceed -- are one way to go. Select the right p
eople to p
ilot small applications, ensure feasibility, come up with an enterprise-wide p
lan and p
roceed with its execution upon approval.
Standards and protocols that effect Web services and SOA implementations must be followed closely. Vendors do not tend to implement every standard for obvious reasons. Part of the job of your consortium is to choose standards that your enterprise needs to follow. This is not an easy task because this choice could tie you to a specific vendor. SOA and Grid Computing
Some challenges faced by enterprise SOA implementations have already been resolved with Grid computing. It can be argued that Web services and SOA are extensions of what we expect from high-performance and cluster computing. Being able to remotely invoke an executable service, without much knowledge of the executable location or configuration, has been around with batch systems for decades. As remote execution or Remote Procedure Call (RPC) has evolved to Web services, batch systems have evolved to Grid computing -- allowing us to think of the two technologies as complementary.
Thinking of both technologies as one makes decision making much easier. If a Grid computing infrastructure is in place, you should look into utilizing it for your SOA initiatives. Both initiatives should fall under the same umbrella -- even if you are not ready to take on both challenges simultaneously. Grid computing has a lot to offer your enterprise's SOA plans, as problems such as security, Quality-of-Service management, deployment of services and central administration have already been solved by Grid software vendors.
Figure 2: The Triangle of Grid Computing
As an added benefit, Grid computing virtualizes your services even more by adding another layer of indirection. The scheduler in Figure 2, known as the resource manager, is accessed by clients to forward client requests to the appropriate Service. The Grid service is exposed through the same fashion a regular Web service would (through UDDI and WSDL), but the scheduler can enforce Quality-of-Service, security and load balancing across available resources.
Enterprise SOA Management
Now that all of your services are developed and ready for use, how are you going to manage them? This is probably one of the most challenging tasks of an SOA infrastructure. Central policy management is required for a sizeable SOA implementation. Access policies go from "nice to have" to "must have" in a moment's notice, obligating additional resources to manage your services. The cycle continues until ROI is vanished due to the vast resources required to keep your infrastructure up. What's worse is going back to the silo implementation that you started with.
Implementing a grid can assist in achieving an enterprise SOA solution. It manages resource deployment, provisions, and alleviates the costs and headaches of administration. As application silos fade, overall management of your enterprise becomes more efficient in the process.
Figure 3: Using Grid Computing to Achieve Enterprise SOA
Having solved application deployment and provisioning, you need to manage access to the available services. This might be an easy task to start with, having only a couple of services and a limited number of clients to worry about, but it will soon require additional time, resources and money -- much more than you are willing to spend. Grid computing software can take care of resource management for your enterprise and virtualize your underlying infrastructure and available resources. It takes control of your resources, schedules services to run as requests come in, prevents denial of service attacks and meets Quality-of-Service requirements set forth by users.
High-resource utilization and sharing of resources across the enterprise is the added benefit of implementing a Grid infrastructure. Since the resource manager is in charge of knowing what each grid participant is doing, it becomes trivial to schedule requests to be processed by services wherever there is free cycle to be had.