About SOA: Why, What, and How by Jeff Zhuk
What is Service-Oriented Architecture (SOA)?
SOA is a software architecture style that focuses on services across multiple enterprise applications. Although SOA sounds very technical, the SOA approach is more about bridging business and technology and touching some organizational issues. SOA is not a tool or technology; its rather a concept which shifts development focus and overall mentality from applications to services.
Why SOA and where it works best?
SOA fits best into big corporate IT structures with multiple applications built-in-silos that often duplicate their main business functions.
Next Step: From Business as Usual
SOA simplifies IT infrastructure and accelerates the process of transforming business idea to its implementation. In the transition to SOA, current applications (that represent today a mix of business and service logics) will become a thin layer that orchestrate services and expose them via portal faces.
integration SOA leads to greater reuse and smaller maintenance by creating robust and scalable services registered and discovered at the enterprise service bus. The services will use data layer to interact with data sources and will be shielded (by stable data layer API) from changes in the data structures.
Translate SOA into savings from maintenance:
SOA simplifies systems and gives less space for errors.
Translate SOA into new sales:
SOA delivers strategic advantage of quick business changes and more opportunities for sales (this is only true when business is working with IT to capitalize on this advantage.)
How to perform SOA?
SOA requires more disciplined approach to SDLC, transition to agile methodology, and architecture presence at each development step from requirements till deployment.
Important factor is early business involvement into the process and persistent communications between subject matter experts, architects, and developers.
SOA is a natural step in software architecture evolution.
Anyone remembers the days when no operating system (OS) existed?
That was a long time ago. Back then, software programs included hardware support, data drivers, and business logics all together.
Today we call this spaghetti code, but at that time it was necessity for programs to run.
Then OS vendors and database vendors took part in the process. Software evolved into layered and component-based architecture and most of programmers today work in the application layer space.
But software architecture evolution doesnt stop there. What drives the evolution?
While SOA was an old concept, the current technology paved the way for efficient implementations.
In the SOA world applications are dissolved into orchestrated services and orchestrations (that represent service calls and business rules) are shifted on the top of the software pyramid.
On the slide you can see yellow triangles on the left. They represent old fashioned applications or application layer. This layer is going to split into service and business intelligence layers displayed in the pyramid.
The change in architecture will change development focus from applications to services.
Here is an example of re-packaging Applications into Orchestrated Services
You can see multiple applications (we can see only two but it could be more).
Each application has its own implementation of the LOGIN function
We remove this code from applications and (after analysis) consolidate into a service deployed in the Service Layer. This service will have its own cache and management.
Whats left in the applications? Applications shrink to a thin orchestration layer. One line will call the Login service scenario when needed and provide necessary parameters.
Here is an example of the Login scenario that consists of two prompts for name and password and returns users profile.
Another scenario sample is a composite service that consists of several small services.
This is the Order scenario that includes Login, GetOrderData and PlaceOrder services.
These scenarios are written with simple XML that can be easily processed.
The next step is to replace if/else logic with business rules and operate with close to natural language expressions while describing business rules and requirements.
This replacement will give us a real jump in productivity. Here we gain a strategic advantage enabling quick changes of business rules.
On this picture multiple business terms, rules, and scenarios are collected into a SOA dictionary knowledgebase. SOA Dictionary is a collection of related business and technical terms and documents that represent a navigation map from descriptions of business functions to their technical implementations as services.
Subject Matter Experts converse with SOA Dictionary while writing requirements.
Imagine that you finished a sentence and the machine talks back to you: you just said this, did you mean that?
The machine will map your language to existing terms and help you to transform requirements into service orchestrations.
One of the first things in SOA projects is creating an inventory of business functions and related technology implementations. We often call it a Business-to-IT AS-IS map.
Then we map business functions to services in the TO-BE Business Process Model (BPM).
The slide below displays a BPM captured with one of SOA tools. In the model each icon reflects a business function performed by a service. There are SOA tools that monitor service performance and provide BAM, BEM, and CEM.
Here are the explanations to these abbreviations related to service monitoring and management.
Business Activity Monitoring (BAM) monitors business processes in real time in an effort to support operational improvements
Business Event Management (BEM) monitoring all current processes to provide meaningful alerts and analytics to users
Performance Analysis and Notifications
Complex Event Processing (CEM) correlates events into patterns that may represent a threat, looks for a real reason for exceptions and invoke an action to prevent serious system failure
SOA delivers Simplicity in IT infrastructure; provides less space for errors and easier maintenance, and most importantly achieves a great acceleration in the process of transforming business ideas into their implementations.
This doesnt come automatically. SOA requires: governance of the development process; greater architecture presence in all steps of the development process; Training sessions, architecture, design, and code reviews; New Skills, New Processes, and New Ideas
Software Engineering with XML, Java, .NET, Wireless, Speech, and Knowledge Technologies, Cambridge University Press, Jeff Zhuk, ISBN 0521525837
http://cyc.com Cycorp, Inc., a leading provider of semantic technologies
http://javaschool.com/about/publications.html - more publications