Continuing the discussion from last week about how we might look to related disciplines and industries to improve our ability to execute on SOA, I had an interesting discussion last week with my good friend Stefan Andreason, CTO of mashup data provider Kapow, and the CEO of StrikeIron, Bob Brauer.
Both companies have a long track record in helping organizations access their data via services and they were discussing with me their new joint effort to combine services in the "head" of the services market (StrikeIron) with the tail of the services market (Kapow) and create a consistent delivery and management capability around them. I think it's a smart move that reflects a growing realization about the very nature of enterprise services themselves.
Recognizing the Service Diversity in the Real World
The premise is that businesses and the Web have a lot more data than can be reached through traditional means, either as services or otherwise. Though we have been service-enabling our IT systems and data silos for a decade, there's still so much work to be done that we have to almost radically step up our our ability to deliver on them.
One of the big elephants in the room these days is that the Web has risen in the last few years as one of the most important content "silos" to many firms. This has led to the growing understanding that we need fundamentally more effective ways to scale up both the creation and consumption of services. As part of this, it's also started to become clear that in the real world there is a broader continuum of types of services that organizations should support in their SOA efforts. Despite positive moves in certain directions -- I see many firms adding JSON to the mix for example -- we've been largely ignoring a broad class of network delivery models that should probably be first class citizens in a modern SOA.
A fuller services continuum -- you can click to enlarge the visual above -- starts with the traditional Web services that we use in our SOA efforts today and can be as simple as WS-I Basic Profile (SOAP + WSDL) or more sophisticated versions that include support for security, transactions, policy, and more (often referred to in shorthand as WS-*). The continuum ends with the lightweight services of the Web such as REST, RSS, and ATOM. It even includes Web content itself, something that we're learning can be treated as services since everything on the Web or local intranet can be accessed in the same way, via HTTP, which also happens to be the foundational protocol of Web services in general.
This highlights a certain level of myopia we still have in enterprise architecture, where we tend to look at services with a very narrow definition, when we are likely much better served by a more encompassing view. While we might have at most a few hundred well-defined services in a typical organization today, there are literally millions of them on the open Web and many more inside our organizations under this larger umbrella. Whether we are trying to integrate systems more quickly, discover and get access to information more effectively, or rapidly building business apps based on these services (mashups), this more expansive and heterogeneous notion of services gives us a much bigger and richer pallette to work with to meet our needs.
5 Ways To Expand Your Services Continuum
To expand our conception then of modern SOA and enterprise services, we must consider the following:
- Make it formally acceptable to use a broader range of services in the organization. Not every job requires a hammer as the tool and the same goes for the ypes of services we use. For example, transaction processing systems are very different than say, analytical systems, where the former needs more structure and control and the latter might need less. The architecture group, CTO, or other governing bodies can enable the business to get access to far more value by green lighting more types of services to use, particularly feeds, Web APIs, and Internet/intranet content-as-a-service.
- Establishing guidance across the services continuum. Clearly define what architects, developers, designers, and end-users can do with this broader range of services -- both in the enterprise and out on the Web -- and under what conditions.
- Adopt management, administration, and governance capabilities that support a fuller services continuum. Right now, services of all kinds are already being consumed in many organizations but by bringing the full continuum into the formal IT fold, the quality and predictability issues can often be made to go away and business opportunities increased.
- Ensure internal customers have the ability to consume new type of services. This actually goes for both traditional enterprise services as well as the full continuum itself; focusing on driving consumption hasn't been a high priority in many organizations and both technical and line of business workers are too often lacking the ability readily incorporate services in their work, even when they are available. Updating local frameworks, acquiring mashup tools, and using service registries that can manage the full spectrum of modern services are examples of how to address this. For example, StrikeIron even has an interesting method of connecting Excel to this full services landscape so that all business users can consume them. This is a big change in thinking about increasing service consumption and opens up intriguing possibilities.
- Create many more services to consume. It's a supply and demand problem, in that if there are not enough services, they will be very little demand, not too much. Other ways will be found to solve the problem of accessing data or interacting with trading partners. Solutions such as Kapow and WSO2 Data Services server are good examples of how to create a much bigger services landscape in short amounts of time. I'm not advocating a speculative "field of dreams" approach here, but the ability to find, build, or provision services right when they're needed.
What are you seeing with data services? Are you seeing the broadening of the idea of enterprise and Web services?