Showing posts with label ROI. Show all posts
Showing posts with label ROI. Show all posts

Friday, April 23, 2010

Thoughts on the SOA Manifesto 2/2

Guiding Principles, important statements to make when thinking about SOA in general.

Respect the social and power structure of the organization.
We need to know that since every organization is different, and a SOA is business-driven, every SOA implementation is different. By respecting the social and power structure in the organization, we are allowed to continue developing a SOA architecture and implementation, whereas "rowing upstream" significantly reduces our productivity, as well as it may kill the entire SOA initiative.

Recognize that SOA ultimately demands change on many levels.
Since a SOA is business-driven and also aligning business / business and IT, a number of changes can be expected, not only in the IT landscape. For example, since processes are shared, processes and organizational departments must be aligned. Since infrastructure, service provided etc. are also shared, this requires different ways of funding projects, as well as new roles and responsibilities to be defined ie. for governance of the SOA, project and program management, program alignment, clear distinction for who is responsible for which aspects of the SOA and the organization etc. This has impact on all levels of the organization.

The scope of SOA adoption can vary. Keep efforts manageable and within  meaningful boundaries.
Well, keep it small and simple (K.I.S.S.) I guess... Try, when starting with SOA adoption define a meaningful boundary for the SOA adoption. Start small, start simple. Not only with the SOA implementation, but also when defining the scope. Try a proof of concept; try experiencing implementation of a few (sharable) services in production. Get your experience with them, and try to see how you can learn. Only then you should be ready to grow from there, in what is probably a multi-year effort, towards the intended initial scope. The scope itself - how far you adopt SOA - can be increased incrementally in a programme approach. In SOA, the big-bang approach is recipe for failure. It may be better to start off small and iteratively see how you can 'grow your garden' towards the 'end state'. But please remember, a garden is never finished and constantly needs maintenance and attention. In a garden usually there is also some waste; sometimes a bit more and sometimes a bit less: don't hesitate to discard some of your investments if there is no more clear business value in them.

Products and standards alone will neither give you SOA nor apply the service orientation paradigm for you.
SOA is not a tool, nor a silver bullet that you can buy, install and you have lift-off. It takes planning and skill to create a SOA. Actually, it is not something you build, but the way you do things. If you live by the service orientation principles, you have a fair chance of getting there. Buying tools without guidelines how to use them, without a proper plan in the appropriate programme, lacking management buy-in and governance to regulate, the product implementation will be ill-spent money.

SOA can be realized through a variety of technologies and standards.
As long as you stick to the principles of service orientation, you can realize any flavour of service orientation. Every technology and standard has its pros and cons. It all boils down to how you use them. That's why SOA can be implemented using most technologies and standards. SOAP is not the implementation of a SOA, but a SOA can be implemented using SOAP. And SOAP can be used on various transports like JMS, HTTP etc. But SOAP on itself, nor the transports mentioned are mandatory when "going SOA". Any middleware you use which allows utilizing the principles of SOA will suffice. And technologies can be mixed if it makes sense.

Establish a uniform set of enterprise standards and policies based on industry, de facto, and community standards.
Enterprise standards and policies help defining SOA elements in a consistent way. By applying the same guidelines, chances of (intrinsic) interoperability increase and this is key to a SOA foundation. Standards, policies and guidelines are not a necessary evil: without them there would not be a SOA. This implies that these must be properly enforced and governance is required to ensure they are applies consistently.

Pursue uniformity on the outside while allowing diversity on the inside.
This one is a bit more difficult and less obvious than the rest. By introducing uniformity on the outside (standardization at the interface level) you make interoperability easier, because more diversity increases a learning curve which reduces the achievable reuse. This is because when things get harder (to comprehend), the potential for reuse decreases. Having said that, internally, anything should be possible. Diversity should be allowed to be able to deliver effective core service logic. Effective core service logic contributes to the attractiveness of services and would inherently increase reuse potential. The one size fits all approach does not work on the inside as well as the outside. Some balancing and fair trade-offs may be required to make it work.

Identify services through collaboration with business and technology stakeholders.
No-one can understand an entire business. Noone can design a service or a system without understanding why he is doing it. That's where the business stakeholders come in. Also no-one can understand all the technology requirements and implementation consequences. This required technology stakeholders to participate. On the other hand, cooperation requires trust working both ways. The business participants should realize that in order to maximize enterprise effectiveness, the scope for the SOA architect can be larger than their own scope, and allow the technology people to design services which support the business as a whole.

Maximize service usage by considering the current and future scope of utilization.
Plan ahead. See how a service fits into the programme of projects and initiatives to shape the SOA. Try to predict how the SOA evolves and see how the service can be of greater benefit by predicting how the programme and long term plans affect the consumption of the service. Try to see how the potential of the service can be increased ie. by extrapolating how this service can be useful for other types of consumers, channels etcetera. This would ultimately result in a increased return on investment (ROI).

Verify that services satisfy business requirements and goals.
Obviously, business requirements drive a SOA. Without business requirements, there would not be a need for a SOA and services would probably not be the best approach as the effective implementation of services creates certain overhead which would cost a lot of money, resulting in decreased performance of the architecture. Without a goal, pursuing business requirements may result in a majority of tactical decisions preventing to reach the actual enterprise goals. So while implementing services from tactical point of view, try to never loose the strategic goals out of sight.

Evolve services and their organization in response to real use.
Let me come back to the gardening analogy I made earlier. When creating a garden, everything makes perfect sense. All plants and flowers look great together and everything is tuned. But no garden can survive without gardening (maintenance). In the course of time, taste (requirements) changes. Also sometimes, things that looked great initially, may seem trivial after a while, or may even explicitly be undesired (change of enterprise goals). Be prepared to review and maintain the (service) garden and make sure it's always aligned with the actually expected use. When a garden (SOA) is not aligned with the expectations, use decreases and in the end, has no right to survive and may even be replaced by something else.

Separate the different aspects of a system that change at different rates.
I feel this statement is a bit narrowing the actual potential it could have had. If the statement would be "Separate concerns" I could have better agreed with it. When separation of concerns, as a principle, is properly applied, this greatly increases the comprehensibility and decreases complexity (learning curve). Separation of aspects of a system that change at different rates would be a special version (implementation) of the statement to separate concerns.

Reduce implicit dependencies and publish all external dependencies to increase robustness and reduce the impact of change.
Reduction of implicit dependencies actually refers to the principle of abstraction. Abstraction leads to loose coupling. Loose coupling is key to a SOA as it increases flexibility and consequently the ability to change. When the ability to change increases, the impact of change is lower.

At every level of abstraction, organize each service around a cohesive and manageable unit of functionality.
Abstract each functional group of logic into a self-contained, isolated, cohesive logical unit. This makes the functionality more manageable by the separation of concerns principle. A group of related logical units can be encapsulated into a service. A service can have many capabilities it ultimately encapsulates a manageable unit of functionality. By having isolated units of work, autonomy and composability increases contributing to the (re)use of services.

Perhaps it's wise to make the following statement: Thomas Erl already described the principles for service orientation. The statements in these posts do not attempt to redefine these principles. If you want to review them, take a look at the soabooks.com website where you should find lots of information on the Prentice Hall SOA Books by Thomas Erl et al.


Phew... this is it for now. I hope this gives food for thought. If you agree or especially if you disagree with the statements made here, please be invited to drop me a line and explain your point of view. Perhaps I have to change my insights and way of thinking :)

Saturday, November 14, 2009

Common causes of SOA failure

A number of common misconceptions will make most SOA initiatives fail, hard to survive or not start at all. This post is not complete, and may be updated many times, depending on the feedback I get from you, the users. If you feel a cause is missing, drop a comment including your issue, cause and resolution. Don't forget to mention your name and contact details.

  • SOA is a silver bullet
  • Failure to implement proper governance
  • Failure to get management buy-in
  • SOA "the enterprise"
  • Specific vendor has the best SOA implementation
  • SOA quickly brings ROI
  • We are doing web services, so we are doing SOA

SOA is a silver bullet

Issue: SOA is not a tool but an architectural approach. Implementing a tool does not implement the SOA concepts into the business and technology.

Cause: Vendors explain their SOA tools to be the silver bullet.

Resolution: There is none. SOA is a mindset supported by tools; as long as you are aware about that, and live up to those concepts and patterns, you may be fine.



Failure to implement proper governance

Issue: Failure to consider/facilitate the governance burden in a project will increase the governance burden after the project, if not make it virtually impossible.

Cause: Implementing a SOA in a project instead of a programme may easily let the project slip into the tactical approach instead of the strategical approach.

Resolution: Setup some governance requirements prior to starting your first business project. Having these can force the project to include governance in the project, making sure the deliverables are not left 'floating' in the organization after project delivery.



Failure to get management buy-in

Issue: We, the IT department got this SOA installed, but no-one is willing to invest the extra money required with the implementation of SOA services. Every project is going for the quick and dirty approach, continuing as they were...

Cause: No management buy-in, resulting in lack of appropriate governance.

Resolution: Evangelize! Convince the senior management staff that the SOA thing they bought is really a good thing, resulting in long-term benefits, the traditional way of working will not provide. Result of management buy-in can be that the appropriate governance is implemented and a SOA way of working is enforced. Explain the same situation to everyone who's willing to hear your story.



SOA "The enterprise"

Issue: Companies try to change the entire enterprise at once. This is a definite recipe for failure. No single company can change all their IT systems, business processes, governance etc. in one go.

Cause: This is a common misconception: Implementing a SOA involves people from the entire enterprise when the business analysis and service modeling project phases take place. This means people from the entire enterprise, multiple disciplinces. This does NOT mean that we need to involve EVERYONE and ALL systems.

Resolution: To start very small: select specific business processes to change. Implement SOA services using the SOA approach which show a clear business value and can demonstrate that SOA can work. Typically management only chooses a technology if the proof is there. Maybe even demonstrate a few quick wins. Even then, SOA is a strategical approach so don't expect miracles.



Specific vendor has the best SOA implementation

Issue: Comparing vendors' SOA products based on their marketing and their product specifications gave me this best of breed product, but it's not doing what I want. It's not possible to 'get the best SOA products out there'.

Cause: A lot of vendors deliver their SOA product with a lot of promises and marketing terminology. Sometimes it's even not true that certain vendors claim delivering SOA tools because people mistakenly assume 'web services' being 'services'. Also it's hard to do a product selection without requirements. It is similar to the 'get me the best car out there' discussion. If you don't tell your requirements you may end up with a Ferrari on an offroad track.

Resolution: Define your company's requirements, define a strategy and then compare products with your requirements.



SOA quickly brings ROI

Issue: If I buy this SOA thing, I will quickly get a better ROI.

Cause: Not understanding the strategical nature of a SOA.

Resolution: Increased ROI, Better technology/organizational alignment are prerequisites for a reduced IT burden. All of these are indirectly obtainable SOA characteristics, depending on a number of other SOA concepts. This illustrates the strategical nature of the SOA approach.



We are doing web services, so we are doing SOA

Issue: Web services and SOA service terminology is mistakenly assumed "the same thing"

Cause: Web services provide a standard technology for the service contract. Web services don't force the user into following SOA concepts and patterns delivered by the SOA approach, resulting in "SOA Services"

Resolution: This needs a proper implementation of accurate terminology in people's minds. Once this is reached, a common understanding of the difference between a web service as technology and service as concept is reached and the mistake will not be made again. This may very well be one of the hardest things to achieve (my definition of service is better than yours, your definition of service does not deliver anything concrete etcetera).

Tuesday, October 20, 2009

SOA is not a disease!

So... I finally gave in... Soooo many times I have thought about what I could do with my experience and ideas related to clarifying what SOA is all about. Yes I hear you! I'm nr. 10 billion who writes about SOA and probably there will be another five before the next hype comes along! And you are probably right. Just bear with me and give it a chance - and btw thank you for being one of the five people reading this blog!

So here I am, in the field since 1995 and many years experience with SOA and distributed computing in general. After graduating I started working at a large consumer electronics firm, writing prototype software (user interfaces) for televisions and set-top boxes. This was mainly of the demo nature and the only true production-ready SW I ever wrote for that company was embedded software implementation for a set-top box. This was challenging as the platform had many constraints and performance was all that mattered. These restrictions got to me and I moved to another company. I still remember when I wrote my first service broker based component based distributed system for my new employer, a large telco in the Netherlands. I've tried MS's COM/DCOM/MSMQ/MTS server based software and was amazed with the openness and flexibility this gave me. Nowadays we would know the concepts applied back then as service broker, asynchronous queuing, distributed transactions, durable subscribers etcetera. Little did I know :). Later I continued on the J(2)EE platform which was much more stable and required hardly any workarounds. I integrated a lot of systems and even dipped into the web-pool shortly while (co)writing two web portals intended to merge information management, workflow and sales tooling for this telco. We used BEA and JBOSS (now oracle and redhat) tooling. Around 2002 some people were talking about SOA and I looked into it - it looked promising. At the time I considered SOA a been-there-done-that exercise. Well, guess what - we made some mistakes - expensive ones. Very expensive ones! Not just technology and architecture, but mainly governance and organisational mistakes.

Anyway, this brings me to the title of this blog. Where I'm from, The Netherlands, the acronym means something entirely different - in English you will all know the term STD and that's what SOA means in Dutch: Sexually Transmittable Disease. Today, many companies have turned their back towards SOA and indeed treat it as a disease. Because it did not deliver what it promised, or because they purchased a tool and figured it would change their luck and would reduce their investment. Well, WAKE UP! Nothing is less true. SOA will not bring return on investment, and will probably make matters worse if nothing else changes in the enterprise. Great, you think, I just invested tons into this new tool and hardware, and now you tell me it was a mistake. You tell me I will spend much more. Whoa... hold your horses. Indeed I am convinced that if nothing else changes, purchasing a "tool with a promise" will cost you. So, what else needs to change? In order to figure that out, we have to explore a number of concepts and patterns which will most likely change your mindset about SOA. And when it does, we are ready to talk about how the tools can help you leverage your architecture to bring reduced IT burden and consequently, a better return on investment.

I won't be writing often as I simply don't have the time for it - yes I too tend to think I have a life. I will purposely pick topics to trigger discussion clarifying how SOA may or may not work, hoping that it may do the same for you.

From this article I hope to convey one message: it's not something you can buy, it something that requires hard work and a lot of planning! Implementing a SOA is not something you do in a week-end. It is something that takes years. Any benefit you expect, don't expect it anytime soon. From my personal experience I think it would take 3-5 years before the SOA starts bringing structural benefits. If you think you need show return on investment results during this or in the next fiscal year, maybe SOA is just not your thing! That's what it is about: tactical versus strategic. And SOA definitely qualifies for the strategic approach.

See you next time...