SOA and BPM - Enterprise Agility
Service-Oriented Architecture (SOA) and Business Process Management (BPM) remain the core disciplines for automating the enterprise. If agile methods and processes are about making development teams more agile, SOA and BPM are about making the enterprise more agile. Proper SOA and BPM can truly accelerate the organization's ability to respond to changing market conditions.
What is SOA?
SOA is often confused with web services: SOAP, REST, and many other platform-independent specifications that allow disparate applications to talk to one another. Although SOA can be realized through these technologies, SOA itself is a method of designing business functionality as well as a process for governing that method. At its core, SOA is about delivering a structured layering of composable, reusable services. At the lowest level, the service is broadly applicable and readily usable. At the outermost layer, the service can in fact be a one-instance service assembly, i.e., application.
History and Goals
For as long as we've been building software, the long-standing goal of development has been the delivery of reusable building blocks that could be used to help reduce custom development and thus accelerate the speed of delivering new applications. Depending on the era, this looked like object-oriented classes and frameworks, native application UI widgets, CORBA, COM, DCOM, or EJB and related RMI-style architectures in the Java world. Services are both a complementary as well as extending technology designed with precisely the same goal in mind: improving business agility by leveraging flexible, reusable, run-time services. What makes SOA compelling over older approaches are the platform-independent standards that have evolved along with advances in the Cloud that make procuring and hosting these services cheaper and easier.
SOA and the Cloud
Perhaps the only word more vague than Cloud is Object. So as wordsmiths it seems we're making progress. Still, the term is huge and for our purposes needs to be put in context. Basically, there are three core areas of service when discussing the cloud:
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Software as a Service (SaaS)
IaaS is about procuring and governing computing power, storage, and networking hardware. PaaS is about procuring and governing development platforms that assist in the creation of building software. SaaS is about having business functionality available as run-time services. We leverage the first two in delivering the third for your enterprise. SaaS can be developed without the first two, but a synergy exists amongst the three and leveraging all three can make a substantial impact on the speed and effectiveness of your SOA efforts.
SOA and Agile?
One of the concerns of Scrum for organizations new to the practice can be its just-in-time design and development. There is no architecture or design phase - and surely, with something as all-encompassing as a SOA, that would be needed, right? To generalize the argument, many we consult with can see how Scrum is a boon for application-specific development, but wonder how it can be applied to holistic-thinking-intensive activities such as SOA, Data Analytics, and even User Experience Design (UED) where a lot more than a two-to-four week set of functionality is being considered. To intensify matters, SOA itself comes with its own process that may seem orthogonal to an agile practice such as Scrum. However, we can guarantee that the two not only can co-exist, but can be done in a way that will provide maximum benefit to the enterprise. The solution lies in how component and application teams are organized, how user-stories are phrased and developed for each of the areas, and by extending our views out just a little farther on the component teams than the application teams. As far as user stories go, whether the story is for a business user or a developer user, beginning with the end in mind is key.
Begin with the End in Mind - A Story
We were in training session lead by the architect of the Delphi development platform back in the mid-90's and this is what was written on the whiteboard:
Delphi Product Vision:
button.label.color = Color.Red;
Without any context, it seems a little ridiculous to have the color of a label set on a button be the vision for a product. But, of course, this really wasn't the vision. The vision was about presenting a declarative programming model to the developer. No user-stories were presented that day, but we imagine something like "As a Delphi developer, I would like to realize real-time updates to a component in design mode simply by setting its properties, so that I can build an application two orders-of-magnitude faster than building one by utilizing the native Windows API." End-in-mind enterprise business objectives can be used in precisely this way to drive a service inventory that will truly make the business more agile.
- Delivered many enterprise SOA systems for the health care, insurance, finance, and retail industries.
- Upgraded mainframe and client-server systems to SOA and for one client in particular, retired the mainframe and it's legacy applications entirely.
- Customized agile process practices to gracefully handle both tactical and strategic concerns while delivering SOA.
- Bring experience and pragmatism to current and future SOA efforts.