Tuesday, January 6, 2009

Is SOA Dead?

Burton Group analyst and SOA guru Anne Thomas Manes recently blogged that “SOA is Dead” (http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html), referring to the disillusionment and even disgust some feel towards the over-hyped term. But she was referring just to the term SOA, not the concept itself. On the contrary, service orientation has seemed to find firm roots in diverse areas such as mashups, RIA, BPM, cloud computing, and others.

I completely agree that service orientation is here to stay. But I don’t agree that the term SOA is going away any time soon. We are in the typical “trough of disillusionment” Gartner speaks about, as a huge wave of over-hype sets high expectations for a technology. Industry buys into the vision, then slowly comes to realize it is not a silver bullet. Hard work is still to be done to extract the benefits of the new technology. When so many people express disappointment in a technology, negative momentum builds, and soon a consensus develops that the new technology is a failure at best, and evil at worst. Such is the case with SOA.

To be sure, some technologies never fully emerge from the trough. Artificial Intelligence and Object Databases are two examples that never achieved wide-spread adoption after huge early stage hype. Others fare much better, like EAI and even Java. I remember the early Java days working at MCI circa 1997. Despite huge investments including the best consultants Sun had to offer, projects were massively under-performing, or even failing altogether. But the gradual maturation of the platform and supporting tools pulled Java from the trough of disillusionment to eventually make it the most popular programming language ever.

Anne concludes by saying that we need to move away from the term SOA and simply use the term “services”, since that is the core foundation of the concept. I think that’s fine for the time being. In fact, I’ve recently found myself using the term “service orientation” instead of SOA anyway. But I believe this is a temporary diversion. Eventually, market noise will settle down, and we in the software industry will finally develop a consensus on what this concept really is. When that happens, I believe, it will mark the emergence from the trough of disillusionment, and the return to calling this concept “SOA” once again, without fear of scorn.

See my related post here.

Wednesday, December 3, 2008

The Long Tail of IT

In these days of recession and shrinking IT budgets, development groups are forced to do more with less. This appears to be an opportunity for growth for Open Source projects, as companies find it difficult to purchase products, or even expand use of products they currently own. Open source products are available to assist in implementations of a wide range of IT problems. And with a very low cost of entry, development groups can kick the tires, and even implement an entire project, without awaiting the decision of an enterprise architecture group or budget committee. In a recent meeting with AMR Research, analyst Dave Brown talked about “Long Tail” effects within IT, where large, mainstream projects are still getting funding, but the large number of smaller, tactical projects are left to fend for themselves. This is exactly where Open Source can make the biggest impact… the large number of tactical projects going on within a company, often “flying under the radar” of the corporate enterprise architects. And it is not just the stealth projects benefiting from Open Source. Many projects designated as “tactical” or short term solutions have the flexibility to select the most expedient solution, which often turns out to include Open Source. I discussed Long Tail effects in the creation of services here.

So, in addition to areas where Open Source has a solid beachhead, like Linux usage for corporate servers, it certainly appears that Open Source is making additional headway, filling many nooks and crannies in the IT development space.

SOAWorld

This fall’s version of SOAWorld ran November 19-21. I attended all three days, and presented a session on creating and managing data services for both SOA and RIA environments. The show was a combined conference that also included the named conferences Cloud Computing World, Virtualization World, and Data Services World. David Linthicum gave the keynote address on Wednesday, with a theme of “its time to make something work”. The hype is officially over, with 53% of companies now having SOA up and running. As an industry, we’ve proven SOA works if you approach it right. He reiterated several concepts he’s conveyed in the past, such as “SOA is something you do, you can’t just buy it”, and “understanding your data is key to success”, and “data is the foundation of SOA”. Architects should apply a layered approach to data, with an abstraction layer over the raw data sources, and services then binding into the abstraction layer. David spent a good portion of his presentation outlining a full SOA process that he helps clients implement. To summarize, if you follow the right process, SOA works.

Some other interesting thoughts and ideas from the show

Paul Lipton from CSC warned about ensuring governance is in place fairly early in an SOA initiative. Once your services are reused, you risk becoming a support group, so you need to implement a plan for reuse and support.

Michael at Active Endpoints had an interesting presentation on Complex Event Processing, which I wrote about here.

Werner Vogels, CTO at Amazon, gave the Day 2 keynote. He spoke about Amazon’s cloud infrastructure for both storage and processing capabilities, and noted that many startups are using these services to gain scalability for very little investment. He likened the cloud infrastructure business like early 20th century Belgium brewing companies. At that time, each brewery had its own power plant. Power companies centralized this infrastructure, freeing brewers to concentrate on their core business. Computing infrastructure seems to be following the same path. Vogels also revealed Amazon’s deep adoption of service orientation, noting that a typical web page on Amazon.com involves the invocation of 200-300 services to build the page.

Dr. Michael Carey, who formerly led much of the development for BEA’s Aqua Logic, described some of the major design concepts in Aqua Logic, which map fairly closely to the capabilities of XAware. One primary goal of Aqua Logic is to create a data abstraction layer, and expose data, wherever it resides physically, as “entity” services. Business information objects, like a customer, order, or invoice, is represented as a service, with multiple operations to read, write, update, and delete, as well other more business-centric operations like “process order”. Without this entity service layer, orchestration is very difficult, as every data access invocation requires multiple calls. Carey made a compelling case that any composite app built on services requires an entity service layer.

Rob Steward of Data Direct discussed Data Direct’s SOA Data Access tools. Like Dr. Carey, Rob discussed the need for a data services layer, and provided a definition of data services that included abstracting physical location away from the logical model, ideas that are core to XAware as well. Rob described typical client application operations in terms of queries into a data services layer implemented by Service Data Objects (SDO), which are then manipulated, possible off-line, then updated back to the services layer.

Jeff Davis of HireRight, Inc. gave an interesting talk on his company’s services implementation using Apache Tuscany, which is a framework for implementing the Service Component Architecture (SCA), which allows services to be defined once, and invoked over any supported transport. HireRight is mainly using JMS as their channel to invoke services.

Glen Daniels of WSO2 spoke about their company’s Registry product, and the influence of social web site features on its design. The registry manages access to service definitions, and provides social features like ratings, comments, and labeling. I thought this tack was interesting, because I believe the main reasons software reuse has never been what it should be revolves around human trust issues. Can you trust the developer or his code? Who else is using it that you might talk to? If you trust the developer (based on a high rating), and a component is used by others with good reviews, then you are more likely to use that component. This registry product includes core features common in most web 2.0 and community sites, to increase the trust factor, hopefully leading to better reuse.

While this is just a sampling of the sessions I attended, it does represent the most interesting of the bunch in my mind.

Wednesday, November 26, 2008

Complex Event Processing

At SOAWorld in San Jose last week, I attended a session by Michael Rowley of Active Endpoints, covering Complex Event Processing (CEP), another TLA (three letter acronym) that is getting some press these days. This was my first real exposure to CEP, so I’d like to briefly share my thoughts on it for others not familiar with it. CEP is a smart way to associate events in the enterprise. A typical scenario is credit card processing fraud detection. While listening on an event stream of credit card authorizations, you might want to know if the same card was being used at 2 different physical locations at roughly the same time. That’s a good indicator of fraudulent use. CEP generally provides a query language, similar to SQL, but extended to deal with events. The primary new dimension queriable with CEP is that of time. For our fraud detection case, we might query for any credit card authorization occurring within a 15 minute window where the distance between physical locations is greater than 15 miles. An engine processing such a query would listen to the event stream, and send a notification each time a match is found. Thus, alarms are generated for potential fraudulent use.

CEP is a natural fit with business process management, like Active Endpoint’s line of BPEL engines. For those that don’t know, Active Endpoints is a partner of XAware, as data services created in XAware fit nicely as the data layer in a BPEL process. With Active Endpoint’s integration with CEP, events are automatically generated for each step in a BPEL process. Then, the CEP query language enables operators, analysts, and developers a means to easily and flexibly evaluate the event stream, identifying important trends or critical compositions of related events. This really seems to be a neat technology that I think will gain traction in the future.

For further investigation, I'd recommend looking at the Esper project, a commercial open source project located at http://esper.codehaus.org/.

Wednesday, October 29, 2008

Services for RIA

Last week I presented a session at AJAXWorld 2008 in San Jose, titled “Hands On Data Services for RIA, WOA, and SOA”. While the “hands on” part was a demonstration of the XAware technology, where I showed building a data mashup from text data logically linked to a database, the first half of the presentation was a discussion about the key role of data services in Rich Internet Applications (RIA), Web Oriented Architecture (WOA), and Service Oriented Architecture (SOA). Data is almost always at the heart of an application, thus finding appropriate ways to get data to an application is a key part of making a software system work. Since I was at AJAXWorld, where RIA was all the buzz, I focused the importance of data service in an RIA environment.

The idea of using a services layer to supply information and operations to a web client application is not new. While I’ve written about the combination, I certainly am not the first to recognize the nice fit. Some of the acronyms floating around the internet, and the AJAXWorld conference were SOFEA (Service Oriented Front End Architecture) and SOUI (Service Oriented User Interface). SOFEA was coined by Ganesh Pradad and a couple coworkers in October, 2007, in a paper titled “Life Above the Service Tier” (http://sofea.googlegroups.com/web/Life+above+the+Service+Tier+v1_1.pdf). Ganesh’s blog (http://wisdomofganesh.blogspot.com/), which is high on my favorites list, contains additional information and resources.




SOFEA recommends a clear separation of presentation tier concerns. The major processes involved in the presentation tier are:

1. Application Download phase
2. Presentation Flow – driven by client side
3. Data Integration – use the service tier, peer-to-peer (allowing two way communication like notifications). XML based using REST or WS-*.

By separating these concerns, each can be optimized for its special needs. Whereas traditional thin-client technology requires the server to be involved in all three concerns, the rich capabilities of RIA no longer require that. In addition, the data integration piece can take advantage of an existing services layer, that is likely already built or under construction within the enterprise. Ganesh also claims that the Front Controller pattern, used in all the server-based web development frameworks, is actually an anti-pattern, made popular simply because of the previous lack of capabilities on the client side. The existence of so many frameworks supports his point, as none of them seem to quite satisfy the needs of the presentation layer. They never will, according to Ganesh, because, among other things, placing portions of the presentation flow logic on the server violates the principle of separation of concerns. Encapsulating presentation flow fully on the client side is now possible with the quickly maturing RIA development environments.

SOUI shares a very similar architecture. Proposed by Nolan Wright and Jeff Haynie (who founded Appcelerator on this principle), SOUI also places presentation flow logic on the client side. The major difference between SOUI and SOFEA is the preference for JSON in SOUI. JSON is more compact than XML. But the advantage of XML is the better typing system (elements and attributes can be strongly typed), along with validation tools built in.

The XAware project appears to be a very viable candidate to fill the gap of the data integration piece within SOFEA and SOUI. The environment is well-positioned to create information-rich services to supply data to the presentation tier. As we continue with project development, we will be adding more support material and features to make it even easier to use XAware for RIA development.

RIA at AJAXWorld 2008

I attended AJAXWorld 2008 in San Jose last week, where I sat in many sessions and also presented a session myself. It was a good and interesting show, focused mainly on Rich Internet Application (RIA) development technologies. While my day job usually has me dealing with back-end server, data integration, and data services issues, it was a refreshing change of pace to look at what is happening on the user-facing side. I’ve always had a thirst for building user-facing applications, and as you would expect, the attendees as a whole share that sentiment. Paraphrasing the words of Jeremy Grelle of SpringSource, one of the beautiful things about user interface development is the immediate, visual feedback you get during the development cycle. You make a change, hit refresh on the browser, and voila, you see your change. I’d like to share just a couple tidbits I picked up at various sessions:

Jeremy Chone of Nexaweb, pointed out the different target markets for UI development, the consumer market (think Google.com, Yahoo.com, MySpace.com), and the corporate market whose users are employees of a company. The consumer market demands the most polished and engaging experience, because users are surfing on their own time, and generally pick the site that’s most enjoyable to visit. The corporate environment, on the other hand, focuses on productivity. Users want to get their job done quickly and efficiently, so they can go home on time after a successful workday. Consumer apps must scale in terms of users. Companies must scale in terms of the number of applications that will help automate business processes. Business agility is important here, where new features and new applications can be built quickly. See http://www.jeremychone.com/ for more information about Jeremy and his blog.

Jeremy Grelle of SpringSource talked about the many Spring projects supporting Rich Internet Applications. Spring hopes to augment the popular AJAX and RIA environments like JQuery, YUI, Dojo, and Ext, but also has projects in the works with competing technologies. Jeremy emphasized that balance must be achieved between client side and server side processing.

The balanced approach that Jeremy talked about seems less pure than another theme I saw in several sessions, that RIA should exploit client processing to the greatest extent possible. In particular, Michael Galpin’s presentation on Networked Application Architecture (his blog at http://fupeg.blogspot.com/) noted the migration of RIA processing responsibilities towards the client. Whereas the 2003 view of RIA was that client and server shared presentation logic responsibilities, the preferred architecture is to place all the presentation logic on the client. This exploits the massive increase in client computing power over the last few years, while reducing server burden. We now get this power for free. Michael canvassed some of the most popular RIA environments, like Flex, Google Web Toolkit, Silverlight, and JavaFX. He currently favors the technology of Flex, with its 97% browser penetration, but he sees good improvements in the competition and vendors try to leapfrog one another. Michael also mentioned a couple acronyms to watch out for as emerging impact makers – SOUI (Service Oriented User Interface) and SOFEA (Service Oriented Front End Architecture). I’m working on separate blog article on these, as both use an architecture near and dear to my heart – using services to supply the information to the client application.

Douglas Crockford, most recently famous as the “discoverer of JSON”, gave an interesting presentation on JavaScript (ECMAScript, officially), its strengths and weaknesses. The primary strengths are support of dynamic objects, the lambda property of functions (a function is an object that can be created on the fly, and passed as a parameter), and the loose typing that eliminates casting in most cases. JavaScript does have its shortcomings, but they are not that plentiful. The real problem, Douglas says, is that JavaScript is so easy on the surface, that developers rarely take the time to really learn it in depth. As a result, he calls JavaScript the world’s most misunderstood language, and highly recommends that developers take the time to learn it, as they will be pleasantly surprised. Douglas created a tool, JSLint, a program checker that he feels helps define a “professional subset” of JavaScript that will help developers avoid the few non-obvious pitfalls of the language. For more information about Douglas and his prodigious contributions to the software world, see http://www.crockford.com/.

I also attended a session on Google APIs focusing on RIA support. Google has been a leader in exposing Google features through an API, encouraging early experimentation in visual mashups and client applications. The Google Web Toolkit (GWT) is Google’s development environment for RIA. It is unique in its approach in that a developer writes code in Java, calling APIs as necessary. Then the client application retrieves components in the form of JavaScript, which is actually compiled on the fly from the original Java. A GWT bootstrap module determines the browser type and version, so that the conversion to JavaScript is optimized for that specific environment.

This is just a sampling of the sessions I attended, but does represent the most interesting of the bunch, at least in my mind.

Monday, September 22, 2008

Service Contract Design Strategies

A key design principle for a Service Oriented Architecture (SOA) is the definition of a service contract. The contract clearly specifies the technical interface a client uses to invoke each service operation, as well as the expected behavior of the service. The contract is independent of the underlying implementation, so users of theservice don’t need to care about implementation details and are shielded from its changes over time. Implementers of the service benefit, too, as they have broad flexibility in determining the implementation strategy, and can fine-tune the implementation over time.

When designing data services, there are two main strategies for service design: contract-first service design and data source-first service design. Contract-first design is very much a top-down design strategy, while data source-first design is bottom-up. In contract-first service design, the technical interface is clearly defined first, using XML Schema to define the information flowing across the interface. The information objects defined by the XML schema, which are the primary subjects of these services, are often custom-designed, but sometimes they are drawn from industry standard schemas. If you work within an industry with a commonly used industry XML schema, chances are good that schema contains many definitions you can reuse for your own data services.

Data source-first design often fits the mental model of a data-oriented developer or architect who is intimately familiar with the physical data sources. In this scenario, the emphasis is more on exposing the data as is, combining data from multiple sources as necessary. The design process here follows a trail of building low level components, then selecting a set of them, and combining them together into a composite which is then exposed as a service. The final technical interface is a composite of many lower level components. The contract is simply derived as a result of the composition work. Some caution is warranted with this approach, as the resulting interface is essentially hard-wired into the back-end systems, making interfaces brittle in the face of change to data sources or client needs. The benefit to this approach is that it leads to extremely quick service implementations, and fits the mental model of many of those charged with implementing data services. Areas of development where many fine-grained services are required will benefit from these approaches.