How would you define your team’s Service Oriented Architecture (SOA) mindset and the value you derive from Big SOA or Small SOA approaches?
Service oriented architecture (SOA) represents a significant paradigm shift in application development techniques. SOA is a software design discipline in which application and infrastructure functionality are implemented as shared, reusable services. Each service implements a discrete task, and any application that needs to perform the task uses the shared service to do so. Teams create applications by assembling the appropriate services. After teams implement business functionality as services, an organization, their partners, and their customers should be able to mix and match these services and rapidly create new applications to support changing business requirements.
Because SOA presents an architectural goal state at odds with a long-lived legacy IT portfolio, SOA is a long-term architectural journey, and not a short-term implementation initiative. Because APIs interconnect business capabilities inside and outside the organization, APIs can provide a platform for business stakeholders sponsoring enterprise IT renewal and pragmatic business execution.
The last ten years of SOA promotion, implementation, and evaluation have cultivated two distinct ways to approach SOA; Big SOA Mindset and Small SOA Mindset.
Big SOA Mindset
Big SOA requires organizations to scale adoption across multiple consumers by establishing a shared understanding of business and technical domains. Each service is part of a bigger picture, and a well-designed service plugs into existing business processes and supports defined business requirements. Effective service adoption within an enterprise require significant planning, coordination, and governance. Organizations must be cautious not to let a Big SOA initiative fail due to analysis paralysis or inter-enterprise feudal fiefdoms.
Big SOA initiatives focus on enterprise governance processes, enterprise-wide re-use, and portfolio consolidation. Achieving these big goals requires structurally changing design-time processes and overcoming significant cultural bias that lead to inhibiting design, accounting, control, and operational ramifications. Traditional Big SOA initiatives can succeed, but only if top-level organizational support (e.g. C-level) overcomes organizational inertia and project teams bridge silos and operate as one team.
When tackling Big SOA, teams need to find an effective entry point. Some teams start with an IT-driven initiative or slipstream on important business-driven transformation initiatives.
An IT-driven Big SOA approach can be very effective when focusing on building shared infrastructure services, such as security, identity, auditing, monitoring, and cloud management. These efforts can deliver rapid returns on investment, and they don’t require extensive collaboration with the business units for success. On the other hand, this approach delays engaging the business and may provide minimal return on investment (ROI) recognition unless incorporated into more visible risk management, cyber-security, or customer experience initiatives.
A business-driven Big SOA approach is often triggered by a top-down imperative to redesign business processes and/or the customer experience. By design, these business transformation efforts must be highly coordinated across IT and the various business units. When considering pursuing Big SOA, slipstream service portfolio investment behind funded business projects.
A Big SOA initiative is not a short quarterly project but a multi-year program containing several roadmap steps. To maximize and accelerate success, team embarking on Big SOA should incorporate a structured transformation program into their journey:
- Set up a cross-functional SOA Working Group
- Develop a SOA Adoption Plan
- Define Target Service Portfolio
- Develop a Business Case
- Plan and Fund Development of SOA Infrastructure
- Establish New Roles
- Plan Training and Mentoring for Staff
- Develop Corporate Policies, Guidelines, and Best Practices
- Institute SOA Governance Processes
- Establish New Incentives that Reward Good Behavior
- Identify Candidate Projects
- Establish Priorities
- Reassess Your Software Development LifeCycle (SDLC)
Many teams embarking on SOA do not have the authority, span of control, or influence to implement required Big SOA activities. With Big SOA success unobtainable in many organizations, team members who want to ‘do SOA’ and demonstrate business value often focus on small SOA.
Small SOA Mindset
A Small SOA approach implements SOA principles on a project-by-project basis. This approach incurs less risk, but produces a smaller return. Typically there’s limited coordination across projects, and Small SOA doesn’t require as much cultural and political unrest. Using this process, the organization can slowly build a portfolio of services, but with limited coordination, the services are less likely to be reusable.
Small SOA initiatives often focus on run-time environment concerns instead of design-time concerns. Popular run-time environment concerns include enabling flexible communication styles, interaction patterns, and mediation mechanisms that facilitate integration and promote loose coupling. Example communication styles include synchronous, asynchronous, one-way, and request response messaging. Commonly supported interaction patterns include peer-to-peer, brokered delivery, hub-and-spoke, publish/subscribe, and orchestrated workflow, which are used to bridge the gap between consumer-provider availability, reliability, and topology.
Mediation mechanisms reduce the need to provide symmetric messaging platforms where both consumer and provider communicate using the same protocol, message format, and communication style. Mediation mechanisms also encapsulate implementation details related to location, versioning, and identity domain.
Adopting an IT-driven Small SOA approach requires a cautious approach to not let the effort focus exclusively on technology rather than design, culture, and IT goals. Successful IT-driven Small SOA teams promote consumer adoption stories, track service subscribers, and publicize usage growth.
A business-driven Small SOA approach can result in compelling singular success stories, which will encourage SOA adoption. However, business asset re-use is doubtful without cross-team collaboration and promotion. Uncoordinated and ungoverned project-by-project efforts can generate a chaotic situation resulting in little or no reuse. How many of your services are shared, and how many services simply facilitate point-to-point integration?