In an article last week, Steve Stefanovich, a principle architect at RDA Corp. asked the question "do you have a governance plan?"
Visions of endless meetings and committee reviews immediately give you that queasy feeling in the pit of your stomach.
But he continues
Don’t let the term, "governance" strike fear in your heart while planning your Service Oriented Architecture. You might already practice governance and don’t even know it...it is simply a reorientation and formalization of many of the things good software architects have been doing all along.
He sees Governance as allowing you to:
proceed in a proper, consistent, and repeatable manner. Consistency is essential when designing, building, deploying, and managing services across an organization.
This view is somewhat similar to Todd's view:
My view on governance is that it is about guiding an organization to a desired behavior.
Steve divides SOA Governance into:
design-time governance [which] covers the analysis, design, construction, and deployment phases [and] run-time governance [which] applies to operations and maintenance.
Others, such as Gary So, a VP at Software AG, sees a bit more granularity:
- Architecture governance
- Service governance
- Design-time governance
- Run-time governance
- Change-time governance
Neil Macehiter recently also added Data Governance to the realm of SOA Governance.
Steve provides then a series of recommendations for each phase of service construction based on the following principle:
All the experience and all the proven practices you learned pre-SOA still apply in the SOA world. Understanding that helps you understand that governance is your friend and no SOA is complete until a governance plan is part of the design.
Before concluding:
A spoonful of governance helps SOA go down in a most delightful way.
Where are you in your SOA Governance effort? Have you covered the entire lifecycle? Is it integrated within a more general IT governance process? Are you using SOA Governance suite? What kind of issues are you confronted with at run-time?