Where’d the Hub-and-Spoke model go?
Wednesday, March 29th, 2006In a recent customer presentation, I had a slide up on the wall showing the CSA in the middle (sort of a hub-looking thing) with spokes coming out of it representing various SunGard application components. I generally use the slide (as I was doing at that time) to show that application parts, when following the same standards, can communicate with each other in a composite solution without necessarily knowing which components would be integrated together at the time each component is constructed (if you’ve seen my CSA presentation, you’ll likely remember the diagram I’m referring to).
An IT guy in the room asked if the graphic could be interpreted from a production perspective as a ‘Hub-and-Spoke’ runtime environment. I answered that SunGard Composite Solutions powered by the CSA are distributed runtime environments (more in line with agile system, SOA, asynchronous messaging, etc…) as opposed to the models associated with older attempts, which run counter to today’s agility goal. In other words, the runtime environment is not Hub-and-Spoke. This particular customer had been investing in getting away from a Hub-and-Spoke “attempt” at a universal IT infrastructure for a over a year, however we reminisced about the original virtues of the promise of what Hub-and-Spoke runtime environments claimed (the hype), although there is a place for this paradigm, it certainly doesn’t belong as a core strategy. There is “control” with Hub-and-Spoke, simplicity and lower overhead in managing the centralized paradigm. There is also the ability to standardize data elements and other items among applications and data sources, with a centralized model. Perhaps there is middle-ground somewhere … is it possible to enjoy the low-overhead and centralized control of a Hub-and-Spoke paradigm while fully leveraging distributed, loose-coupling, agile composite solutions? I think so; I’ll explain how I proposed the SunGard CSA Composite Solutions can offer the best of both worlds to this customer in the context of his inquiry regarding my Hub-and-Spoke diagram.
I recounted the historical perspective from CORBA to EAI to SOA, (I spent five years as a member of the OMG, collaborating on things like CORBA, UML and MDA), in order to shed some light on attempts at supporting dynamic service relationships between various parts of IT infrastructure, and SunGard’s work in all of the above over the years. The forerunners to SOA (CORBA, DCOM, etc.) force rigidity, proprietary languages, object models, tight coupling, and so forth. However, the SOA paradigm owes a lot to the work done in those early distributed computing years. Many of the popular SOA standards parallel things the CORBA introduced. Further, some SOA parts lag in areas CORBA was very advanced in (for example, Web Services aren’t as robust with performance and transaction processing as CORBA was/is, which some ESB vendors are trying to correct). Although, the general IT populous is heading for a different level of distributed computing than CORBA envisioned. SOA describes a network of independent, reusable services that may be discovered and accessed according to open Web standards. We didn’t know what the web was when CORBA began, at least in today’s terms. We were concerned primarily with getting rid of the redundant effort of remotely calling a function on a heterogeneous system by building the communication protocol and defining bit formats for accommodating the call. CORBA brought us IIOP, an efficient universal protocol for remotely communicating, but with it came inflexibilities not realized at the time, (because of all that IIOP was saving us, it was hard to complain about areas that would eventually be perfected by the proliferation of the Web).
Further, in the pre-Web days, EAI appeared as an alternative to the point-to-point and custom-programmed communication to access information with routines of code that had plagued organizations. The EAI approach was even more explicitly Hub-and-Spoke than the CORBA ORB in that there was centralized data transformation, adapters, security and routines/functions. The hub communicated with object-based adaptors, which wrapped legacy applications so they could communicate by sending/receiving data routed through the hub from other applications. EAI provided a much-hyped vision of application integration moved out of ad hoc plumbing to a more abstract level, where developers could focus on implementing component and object models. With this paradigm, EAI technologies assisted with the move to Model Driven Architecture (MDA, another OMG thing, I left the OMG shortly after MDA was ratified), in which developers were allowed to focus on implementing components through modeling, leveraging the UML (yet another OMG thing), allowing applications to work together without having to share network protocols or other specifics at the lower levels. EAI vendors implemented the CORBA specification originally to enable standard interoperability among distributed computing nodes in a Hub-and-Spoke fashion. CORBA and DCOM systems supported exclusively object-oriented RPC communications, (which is similar to how SOAP uses XML over HTTP and other IP protocols), with an interface definition language (similar to WSDL), where the interface wad defined to enable interaction within the ORB middleware. The primary form of early middleware communication was synchronous RPC, which was highly coupled, so requesting and responding entities must be in lock-step to avoid interface mismatches and breakdowns. Then came the asynchronous message and event-based computing technologies, which allowed for more flexibility. Still the Hub-and-Spoke paradigm existed, because the early approach was to use “adaptors” that would send and receive messages (called “events”) to and from a central broker that managed queuing, filtering, delivery and security. Systems scaled by adding more brokers. Around that time, the OMG defined an asynchronous messaging service for CORBA, however the proprietary nature of most CORBA implementations made heterogeneous computing tough. The Hub-and-Spoke relationships among servers had to be tightly coupled point-to-point connections between interfaces. That’s where Web Services came in, in order to solve the scaling problem of gazillions of unknown clients (the Web model) trying to communicate with servers over the Internet.
The centralized hub approach and the slower nature of MDA development methods associated with CORBA and EAI are abrasive to the agility sought after by most organizations today. CORBA has not incorporated XML in a straight forward manner. SOAP, WSDL, etc… gained momentum due to XML’s capability as a data-distribution middleware alternative to CORBA, which is why XML thrives in the Agile Methodology for development and rejects the older waterfall techniques of yesterday. Enter the ESB, or the Enterprise Service Bus, which leverages a message-oriented middleware paradigm, leveraging queues as its means of organizing and prioritizing data and content communications and passing state between distributed components in a loosely coupled fashion. This is where true event-based systems come alive, which rely on the ESB to serve as the backbone from which the system listens for events or state changes in subscribing applications and uses process intelligence to determine what to do next.
At the end of the day, IT professionals (such as the customer I was in discussions with on this topic referred to above) are looking to preserve certain “centralized” benefits through the Hub-and-Spoke model and at the same time they need the agility offered by asynchronous messaging or event-based models. The CSA approach to this need provides centralization for administrative functions common to all areas of the IT infrastructure in a single location, (such as identity management, user administration, security and entitlement manipulation, etc.) and yet all of the application components run on distributed computing resources for both scaling purposes, and most importantly, legacy leverage and integration purposes. The CSA bus capability allows for the distribution of the computing resources, while the core CSA components provide for a central location for administration and other common functions. At the end of the day, the CSA doesn’t care if the bus is communicating with a database over JDBC, or a service over SOAP/HTTP or SOAP/JMS or XML/JMS… etc. all it cares about is that the SunGard application components are agnostic to the runtime distributed complexities, allowing for centralization where Hub-and-Spoke is needed and distribution where agility and legacy leverage is required. The runtime environment should dictate the particular configuration, not develop-time choices made far in advance of the installation. This is the CSA-way, the best of both worlds.