Welcome!

Microservices Expo Authors: Pat Romanski, Liz McMillan, Mehdi Daoudi, Elizabeth White, Jason Bloomberg

Related Topics: Microservices Expo, Open Source Cloud

Microservices Expo: Article

SOA Pattern of the Week (#5): Service Decomposition

This pattern provides a technique for splitting up a service after its initial deployment into two or more fine-grained services

A service inventory is a living body of services that individually will need the freedom to evolve independently over time. What we learned when documenting the SOA design pattern catalog is that there are patterns that emerged not only at design-time but also during this post-implementation evolutionary stage in a service's lifecycle.

There is one common scenario that repeatedly surfaced in many projects:

  1. When we model and design services during early stages of SOA adoption we are constrained by current infrastructure and technology. These constraints require that we limit the size of service compositions and the extent of cross-service message exchanges. As a result, each service encompasses more logic and is coarser grained.
  2. Our infrastructure improves over time (because of new platform upgrades or new funding for better hardware, etc.). Our existing service compositions are comprised of coarse-grained services that were delivered within the parameters of the older environment. However, we now realize that services could be more fine grained (and could perform and be composed more effectively) because the infrastructure can support larger service compositions.

It is in response to this situation that the Service Decomposition pattern provides a technique for splitting up a service after its initial deployment into two or more fine-grained services.

Of course, such an approach will raise a few eyebrows from those involved in version control and change management. How can we break apart a service with an established contract without impacting all of the consumer programs that have been using the service and have formed very real runtime dependencies on how it currently exists?

To address these issues, the Service Decomposition pattern needs the help of several other SOA design patterns:

  • Proxy Capability - When logic is moved from one service to another, this pattern can be used to preserve the original capability that is expressed as part of the original service's contract.
  • Service Façade - In support of enabling Proxy Capability, this multi-purpose pattern can be used to establish (within the original service logic) a façade layer of processing that acts as a liaison between the original service and the new service. The façade component may actually invoke the corresponding capability on the newly created service, thereby acting as its service consumer on behalf of the consumer of the original service.

When applying these two patterns together with Service Decomposition, the façade logic can also be designed to compensate for a change in behavior that is likely to occur as a result of physically moving a segment of the original service logic into a new location.

An important requirement for the decomposition of a service to be successful is that the resulting, more fine-grained services have distinct functional contexts. When modeling and designing these new services, all applicable service-orientation principles and patterns must be considered as with any other new service. Other fundamental patterns, such as Service Normalization, also need to be applied to ensure that the new services properly line up with the others in the existing service inventory.

One common problem with post-implementation service decomposition, however, is that a given set of capabilities may not correspond cleanly to the functional contexts of the new services. What this means is that a new service may only require a portion of what the original service capability represents.

There are several ways of dealing with this, including a hybrid application of the Proxy Capability pattern where the original service retains some of its logic but then still calls a new service for the portion that now belongs elsewhere. However, there is yet another pattern we can take into account early on during the initial modeling stages of the original service in anticipation of future decomposition requirements. This pattern is called Decomposed Capability and it essentially asks us to think ahead as to how a given coarse-grained service context can be split into multiple finer-grained contexts and to then align the initial service capabilities correspondingly.

In the SOA design patterns catalog, the Service Decomposition pattern is classified as a governance pattern, even though it is very much related to service design. It is one of those patterns that can really help augment and streamline an existing collection of services in continual support of service composition and recomposition.

The SOA Pattern of the Week series is comprised of original content and insights provided to you courtesy of the authors and contributors of the SOAPatterns.org community site and the book "SOA Design Patterns" (Erl et al., ISBN: 0136135161, Prentice Hall, 2009), the latest title in the "Prentice Hall Service-Oriented Computing Series from Thomas Erl" (www.soabooks.com).

More Stories By Thomas Erl

Thomas Erl is a best-selling IT author and founder of Arcitura Education Inc., a global provider of vendor-neutral educational services and certification that encompasses the Cloud Certified Professional (CCP) and SOA Certified Professional (SOACP) programs from CloudSchool.com™ and SOASchool.com® respectively. Thomas has been the world's top-selling service technology author for nearly a decade and is the series editor of the Prentice Hall Service Technology Series from Thomas Erl, as well as the editor of the Service Technology Magazine. With over 175,000 copies in print world-wide, his eight published books have become international bestsellers and have been formally endorsed by senior members of many major IT organizations and academic institutions. To learn more, visit: www.thomaserl.com

More Stories By Herbjorn Wilhelmsen

Herbjorn Wilhelmsen is an Architect and Senior Consultant at Objectware in Stockholm, Sweden. His main focus areas include service-oriented architecture, Web services and business architecture. Herbjörn has many years of industry experience working as a developer, development manager, architect and teacher in several fields of operations, such as telecommunications, marketing, payment industry, health care and public services. He is active as an author in the Prentice Hall Service-Oriented Computing Series from Thomas Erl and has contributed design patterns to SOAPatterns.org. He leads the Business-to-IT group in the Swedish chapter of the International Association of Software Architects, which performs a comparative study of a number of business architecture methodologies. Herbjörn holds a Bachelor of Science from Stockholm University.

Microservices Articles
DevOps is often described as a combination of technology and culture. Without both, DevOps isn't complete. However, applying the culture to outdated technology is a recipe for disaster; as response times grow and connections between teams are delayed by technology, the culture will die. A Nutanix Enterprise Cloud has many benefits that provide the needed base for a true DevOps paradigm. In their Day 3 Keynote at 20th Cloud Expo, Chris Brown, a Solutions Marketing Manager at Nutanix, and Mark Lav...
"NetApp's vision is how we help organizations manage data - delivering the right data in the right place, in the right time, to the people who need it, and doing it agnostic to what the platform is," explained Josh Atwell, Developer Advocate for NetApp, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
TCP (Transmission Control Protocol) is a common and reliable transmission protocol on the Internet. TCP was introduced in the 70s by Stanford University for US Defense to establish connectivity between distributed systems to maintain a backup of defense information. At the time, TCP was introduced to communicate amongst a selected set of devices for a smaller dataset over shorter distances. As the Internet evolved, however, the number of applications and users, and the types of data accessed and...
The Software Defined Data Center (SDDC), which enables organizations to seamlessly run in a hybrid cloud model (public + private cloud), is here to stay. IDC estimates that the software-defined networking market will be valued at $3.7 billion by 2016. Security is a key component and benefit of the SDDC, and offers an opportunity to build security 'from the ground up' and weave it into the environment from day one. In his session at 16th Cloud Expo, Reuven Harrison, CTO and Co-Founder of Tufin, ...
Many organizations are now looking to DevOps maturity models to gauge their DevOps adoption and compare their maturity to their peers. However, as enterprise organizations rush to adopt DevOps, moving past experimentation to embrace it at scale, they are in danger of falling into the trap that they have fallen into time and time again. Unfortunately, we've seen this movie before, and we know how it ends: badly.
Kin Lane recently wrote a couple of blogs about why copyrighting an API is not common. I couldn’t agree more that copyrighting APIs is uncommon. First of all, the API definition is just an interface (It is the implementation detail … Continue reading →
The Jevons Paradox suggests that when technological advances increase efficiency of a resource, it results in an overall increase in consumption. Writing on the increased use of coal as a result of technological improvements, 19th-century economist William Stanley Jevons found that these improvements led to the development of new ways to utilize coal. In his session at 19th Cloud Expo, Mark Thiele, Chief Strategy Officer for Apcera, compared the Jevons Paradox to modern-day enterprise IT, examin...
Kubernetes is a new and revolutionary open-sourced system for managing containers across multiple hosts in a cluster. Ansible is a simple IT automation tool for just about any requirement for reproducible environments. In his session at @DevOpsSummit at 18th Cloud Expo, Patrick Galbraith, a principal engineer at HPE, discussed how to build a fully functional Kubernetes cluster on a number of virtual machines or bare-metal hosts. Also included will be a brief demonstration of running a Galera MyS...
Your homes and cars can be automated and self-serviced. Why can't your storage? From simply asking questions to analyze and troubleshoot your infrastructure, to provisioning storage with snapshots, recovery and replication, your wildest sci-fi dream has come true. In his session at @DevOpsSummit at 20th Cloud Expo, Dan Florea, Director of Product Management at Tintri, provided a ChatOps demo where you can talk to your storage and manage it from anywhere, through Slack and similar services with...
Growth hacking is common for startups to make unheard-of progress in building their business. Career Hacks can help Geek Girls and those who support them (yes, that's you too, Dad!) to excel in this typically male-dominated world. Get ready to learn the facts: Is there a bias against women in the tech / developer communities? Why are women 50% of the workforce, but hold only 24% of the STEM or IT positions? Some beginnings of what to do about it! In her Day 2 Keynote at 17th Cloud Expo, Sandy Ca...