DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Guiding Organizational Design With SOA Principles

Guiding Organizational Design With SOA Principles

According to Thomas Erl’s book, “SOA Principles of Service Design,” there are eight main SOA principles. Learn more here.

Greg King user avatar by
Greg King
·
Nov. 28, 16 · Opinion
Like (1)
Save
Tweet
Share
5.52K Views

Join the DZone community and get the full member experience.

Join For Free

A couple of years ago, Mike Cottmeyer wrote a blog post on How to Structure Your Agile Enterprise. He contended that at scale, we need to organize teams around capabilities. He referenced refactoring legacy architecture into a Service Oriented Architecture (SOA).

We have proven this with many of our clients over the last couple of years. We want to organize around products and their capabilities. A capability is an outcome-based view of what the product does. In other words, products, features, or services can be capabilities. As you design your organization, you can use SOA principles to structure around these capabilities.

According to Thomas Erl’s book, “SOA Principles of Service Design,” there are eight main SOA principles. Below are ways that you can use these principles as you transform your enterprise.

1. Standardized Service Contract

“Services within the same service inventory are in compliance with the same contract design standards.”

Individual parts of an engine each have detailed specifications so that they will fit together consistently when assembled. As we design an organization, we want our teams to be highly cohesive and well understood. We want to have a governance model that defines the inputs and outputs for each stage. This ensures consistency and predictability of value flowing through the system of delivery. Understood definitions of ready and done for epics, features, and stories between portfolio, program, and delivery teams provide the contract for work to flow through the system.

2. Service Loose Coupling

“Service contracts impose low consumer coupling requirements and are themselves decoupled from their surrounding environment.”

Think about an electrical outlet. You can plug in a lamp, radio, television, or even a toaster because the interface is standardized. You wouldn’t connect your television directly to the underlying electrical wires. This is analogous to loose coupling of teams. Teams agree to contracts across different capabilities in an organization to sequence or orchestrate work in parallel. Back-end services and front-end UI teams can develop capabilities simultaneously with a standardized and agreed-upon interface. When decomposing work, keeping this in mind allows for better efficiency.

3. Service Abstraction

“Service contracts only contain essential information and information about services is limited to what is published in service contracts.”

As we design organizations around capabilities, we want to bring together cross-functional teams of experts in that capability. We want to define the interface for teams to interact and exchange work, but allow each team to decompose and refine their own work. Teams require autonomy to self-organize and determine the best way to accomplish their work. Other parties don’t need to know how they do their work, just that it returns the expected result every time.

4. Service Reusability

“Services contain and express agnostic logic and can be positioned as reusable enterprise resources.”

As we look across the organization, we want to identify areas of reuse. For example, many different products utilize the services layer to localize business logic. Forming teams around such capabilities allows for the optimized expertise of the platform and eliminates the need to spread this knowledge across every team. While small-team Scrum may advocate for full cross-functional teams, as you scale in larger organizations, this becomes impossible due to size, complexity, and the sheer number of different technologies and domains. As in SOA, we monitor for bottlenecks and can optimize flow based on demand.

5. Service Autonomy

“Services exercise a high level of control over their underlying runtime execution environment.” 

Teams need to be stable and have local autonomy to make decisions and do the work requested. We want to decouple systems and environments to allow Continuous Delivery and break dependencies to allow these teams to be successful. Over time, independent funding of teams is possible, allowing for true agility.

6. Service Statelessness

“Services minimize resource consumption by deferring the management of state information when necessary.”  

In SOA, statelessness means that a service doesn’t need to know or care about previous calls. It can do the work it needs to do with the information provided. Applied to organizational design, we want teams to be autonomous and have knowledge of their own work. Build your team structure to eliminate or minimize dependencies. Require well-defined requests as input to the team so they have the clarity required to take it and run. This means no dependencies or reliance on other teams.

7. Service Discoverability

“Services are supplemented with communicative metadata by which they can be effectively discovered and interpreted.” 

Defining a clear end-state vision for your organization is crucial for reaching organizational agility. It ensures that everyone is on the same page and working towards the same goals. Defining the structure, governance, and metrics to measure progress is step one in any transformation. A transparent roadmap and plan ensure that teams understand the organizational design and how work needs to flow through the system.

8. Service Composability

“Services are effective composition participants, regardless of the size and complexity of the composition.”

The concept of service composability is taking a large problem and breaking it into smaller, more manageable chunks. In organizational design, this speaks to organizing in vertical structures that progressively decompose business value. Use a multi-tiered governance model to refine work into smaller pieces so the appropriate team can carry out the work (i.e., Epic to Feature to Story to Task). This also allows for adaptability and flexibility as your market or organization changes.

Organizational design is complex and one size definitely does not fit all. It requires working with the client and understanding their unique end state. These ideas are by no means comprehensive, but they can help guide towards the path of organizational agility.

SOA Design scrum agile Service abstraction

Published at DZone with permission of Greg King. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Journey to Event Driven, Part 1: Why Event-First Programming Changes Everything
  • 5 Steps for Getting Started in Deep Learning
  • Create a CLI Chatbot With the ChatGPT API and Node.js
  • What “The Rings of Power” Taught Me About a Career in Tech

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: