Revenue cycle management (RCM) is a complicated process that involves several steps and considerable data flow. A software development organization (SDO) that was building an RCM application quickly realized the complexity of this task. Specifically, the cyclomatic complexity of the application was in the thousands. The SDO could not easily scale the application or add features without having an impact on the entire code base.
In the early 2000s, no clear means was available to overcome this challenge until, per the suggestion of a consultant, the SDO began to discuss how to simplify the system by isolating the RCM steps into smaller, independent services. Later, this idea became known as microservice architecture (MSA), which has recently been touted as a promising software architecture alternative. Generally, an architecture style denotes a plausible and reusable pattern of solutions, backed by experience, to a set of known programming problems.10 The architecture conveys a highly abstracted conceptual model of structure and behavior of the software, given its design goals and constraints. The choice of the architecture has an impact on the ways the software will be implemented and how its development can be organized. A judiciously chosen architecture style helps reduce technical debt and enhances software efficiency and quality.9
Generally, a MSA solution is founded on the idea of "orchestrating" the software, comprising loosely coupled and independent "services."13,18,22 In an MSA solution, each service is responsible for a dedicated, well-defined, and scalable function, which may and often is expected to serve, at the same time, other applications. Credit card processing, product rating, and checkout business functions are examples of microservices in e-business. Each service is developed, tested, and deployed independently without making strict assumptions as to how the deployment of the service will affect its use as part of other applications. Under MSA, some services are developed internally, while others are developed by third parties and linked to the final application through APIs through service orchestration. From a historical perspective, MSAs are a testament to the software community's aspiration to develop and manage highly modular, well-organized software assets.3
In the past, software has been built mainly around a tightly coupled code-base called a monolith architecture. This style mainly organizes software as a modular single tier or, later, as a horizontally isolated n-tier architecture (Internet stack). Software built using a monolith architecture faces significant challenges to its feature growth, scalability, or performance when the software continues to evolve, often under tight time pressure.2 As new requirements emerge or innovative technologies are adopted, the "legacy" code often fails to support a rapid implementation of such changes.
Recent technological advances have created versatile software ecosystems to develop and deploy microservices. For example, Docker, a container platform, provide a means to operate system-level virtualization to package software in lightweight "containers" orchestrated by Kubernetes.5 A growing number of software service startups now offer support services for container deployment, management, and security. This also allows small SDOs to increasingly deploy software assets previously available for large SDOs, such as Amazon.
Moving to MSA, however, is neither easy nor risk free. It calls for a strategic, disciplined approach that avoids the disruption of current operations and user experience with software. Many SDOs remain uncertain of the benefits of the transition and remain on the sidelines.15 The published success stories of transition offer often unfounded and far too positive claims and give the appearance that a decoupling will automatically lead to scalability, flexibility, and decreased time to market. The most publicly known successful examples come from large and born-digital operations, such as Amazon, whereas most SDOs that consider the transition lack the resources, skills, and project management capabilities of such software giants. Therefore, companies with legacy systems need to carefully consider alternatives to accomplish the transition.
Per our field study, most SDOs with significant software assets select an incremental strategy to decrease transition risks and ensure a smooth transition. Under the incremental strategy, the monolith legacy software and the new, modular MSA-based software will be simultaneously present for a significant period. This calls for a deeper appreciation of their joint impact on software assets, people, the organization, and managerial practices.8 SDO management must prepare for a wide array of changes at multiple levels of the organization while the transition unfolds and to assess the impact of the benefits and inevitable risks. We next identify some of those changes and related challenges identified in a field study that focused on leading industry practices during a successful MSA transition.
The field study data was collected between February 2018 and June 2019. The study relied on semi-structured interviews that focused on changes, challenges, and opportunities during the architectural transition and the impacts of the transition on SDO's management of software assets and their software process and organization. The data was collected from nine SDOs that had experienced an incremental transition in different forms and stages. The SDOs were of varying sizes and operated in six industries. The study included 23 interviews with 31 software experts, whose titles included CTO, Global Director, Senior/Principal Architects, Application Architects, and Lead Developers. The data collection progressed through three iterative rounds. In the first round, we sought to understand the impact of emerging technologies on software development. During this round, informants unanimously identified MSA as a critical architectural trend. In the second round, we sought to identify the motivations and decision logics that guided the selection of architectural styles and transitions. During the third round, we sought to identify and understand pivotal challenges in operating co-existing monoliths and MSA architectures and solutions. We also validated our study findings and conclusions among a subset of informants. The transition strategies and challenges discussed here were inductively derived from the transcripts. We coded data simultaneously with the data collection to ensure higher validity and reliability of emerging themes, guide follow-up interviews, and identify saturation in data and code. Further details of data collection and analysis as well as examples of coding trees are reported in Appendix A available online at https://dl.acm.org/doi/10.1145/3378064.
During incremental architectural transition, microservices are introduced in a piecemeal fashion while software assets are iteratively and successively re-architected. Table 1 provides a summary of the benefits, risks, and organizational impacts of the incremental transition to MSA, as derived from our field study. The benefits and drawbacks of the two most common alternative strategies—big bang and zero alternative, no transition—are reported in Appendix B available online at https://dl.acm.org/doi/10.1145/3378064. In the incremental strategy, the choice of applications to be re-architected and the way microservices are spun out from monolith code base are guided primarily by the determination of whether the re-architecting provides recognizable value to the business and immediate benefits to the application users. Business needs drive which services will be isolated and developed independently. Under the incremental strategy, the final goal is not necessarily to decouple the system fully unless it comes with clearly defined and measurable advantages. Overall, the goal is to continually balance transition risks23 with expected benefits.1,7,12
Table 1. Incremental transition to MSA.
The four phases of incremental transition. Typically, an incremental transition process unfolds through four phases: identify goals for transition; identify the scope and level of architectural changes; prepare for resource readiness; and change critical development practices. The phases are distinguished by:
The mechanisms are defined organizational capabilities that are used to make related decisions or to implement these decisions. SDOs will deploy such mechanisms when making and executing decisions about the transition directions while developing their software assets. The accompanying figure provides a summary of the principles that separate the phases and the logical dependencies between them. The top-down arrows in the figure illustrate the increasingly granular focus of the incremental transition as it moves across the phases. Initially, the leadership must put mechanisms in place that help to identify the gaps between an SDO's strategic goals and the extent to which the current software development practices align with them. These mechanisms help to identify the limitations that must be overcome and the opportunities that need to be capitalized on during the MSA transition. The strategies in an incremental transition that help to achieve goals the most often involve scalable applications, enhanced application flexibility, and velocity-improved time to market. Based on identified gaps, the SDO leadership needs to establish specific strategic goals for incremental transition.
Figure. Incremental transition process phases.
During the next phase, mechanisms need to be established to identify a select set of applications and related services as targets for decoupling. This determines the scope of the architectural choice guidelines and, potentially, the impact of the proposed service splits. Such impacts can be evaluated only by knowledgeable software architects. In the next phase, project managers need to reorganize software teams to execute the splits. This calls for establishing new roles and responsibilities to properly develop, deploy, and maintain microservices. The mechanisms here relate to the knowledge and skills to reorganize teams and execute related organizational change. In the final phase, software developers must learn and make the transition to new development practices, and software managers will acquire new responsibilities to manage service vendor relationships. The mechanism here aims to change local software development principles and provides the means to change project management practices and related development guidelines, which then result in new software development practices, such as DevOps.3,9
The bottom-up arrows depict the expected impact of each phase, that is, learning-based feedback loops. For example, a change in development practices is likely to have an impact on the teams and their skills and behaviors. A proper team structure will drive a feasible separation of services, while each decoupling step needs to be checked against the established goals to ensure the split will bring business value.
Understanding the role and impact of all four phases in regard to transition outcomes is a vital precursor to a successful MSA transition. Phasing activities and related role changes help SDOs to gradually prepare for and manage the incremental transition effectively. In particular, if each phase is properly planned and managed, and related tasks are addressed prior to moving to the next phase, the transition is likely to be more successful in balancing the risks and benefits. Each phase involves multiple critical activities. Table 2 provides a summary of the key activities and facets as well as their impacts on the organization.
Table 2. Incremental transition phases, activities, key facets, and organizational impact.
When a microservice has been identified for separation, either building it internally in an isolated fashion or searching for a third-party service provider is a viable option. For example, if a product rating service is added to a commercial sales site, it can be developed in-house. Alternatively, a third-party may offer a fully tested, feature-enhanced product rating service ready to be deployed. In such a situation, it is important to understand and anticipate the future maintenance, customization options, and consequences for data ownership before committing to any final decision.
Acquiring critical MSA design and implementation skills, such as continuous delivery, represents a radical departure from the past. Training for the DevOps skills and associated code management must be conducted. Outside consultants are commonly invited initially to guide developers to execute the first split smoothly and to manage the code change. The training should cover the skills to build relationships with external service providers that engage in the transition effort. Developers should attend professional conferences to build up developers' critical knowledge base and create learning networks.
MSA is not a silver bullet. It will not solve all persistent problems of managing software assets. For example, decoupling monoliths and isolating critical microservices will not fix the problems that arise from designing a flawed system or those emerging from writing poor-quality code. An incremental transition, however, can realize better business value derived from software assets if guided by the realistic and measurable goals and the SDO is aware of the cascading impact of the transitioning to the entire organization.
The SDO must have a solid reason for the MSA transition. If a realistic strategic goal can be established for the MSA transition, then the SDO needs to prepare and build the mechanisms that it can, make competently necessary decisions, and implement them properly. The transition strategy should be incremental unless the organization has significant resources and deep software experience, or the full transition will be necessary due to drastic operational failures or other business reasons.
The SDO needs to state clear, measurable benefits for service isolation that outweigh related risks and higher organizational complexity. The SDO should not decouple service without understanding its benefits for more flexible development, scalable applications, or enhanced time to market. The SDO must also establish stringent technological discipline with well-founded, standardized splitting rules. It should execute the service splitting iteratively, following established priorities, as determined by business needs.
The key to success in an MSA transition is to understand and deal with the softer social underbelly of the organization. MSA is fundamentally about a deep change in the SDO's structure, minds, and hearts, triggered by a new technological opportunity. It shapes the organization in a holistic and punctuated manner and results, over time, in a deep transformation of the organization's status quo, whereby its structures, roles, responsibilities, skills, incentives, and routines all are affected. SDO managers should not expect these incumbent and deeply entrenched structures to adapt to MSA automatically or by fiat. The SDO needs to be prepared for continued change and to learn to adjust the organization in a disciplined manner to the new architectural regime. Poor execution will create confused and disheartened employees, unfit applications, and, ultimately, the loss of competitiveness.
1. Abbott, M. and Fisher, M. Scalability Rules: 50 Principles for Scaling Web Sites (2nd ed.). Addison-Wesley Professional. 2016.
2. Andriole, S.J. The death of big software: We are past the tipping point in the transition away from 20th-century big software architectures. Commun. ACM 60, 12 (Dec. 2017), 29–32.
3. Balalaie, A., Heydarnoori, A., Jamshidi, P. Microservices architecture enables devops: Migration to a cloud-native architecture. IEEE Softw. 33, 3 (2016) 42–52.
4. Bucchiarone, A., Dragoni, N., Dustdar, S., Larsen, S. and Mazzara, M. From monolithic to microservices: An experience report from the banking domain. IEEE Softw. 35, 3 (2018), 50–55.
5. Burns, B., Grant, B., Oppenheimer, B., Brewer, E., Wilkes, J. Borg, Omega, and Kubernetes. Commun. ACM 59, 5 (May 2016), 50–57.
6. Conway, M.E. How do committees invent? Datamation 14, 5 (1968), 28–31.
7. Dragoni N., Giallorenzo, S., Lafuente, A.L., Mazzara, M., Montesi, F., Mustafin, R. and Safina, L. Microservices: Yesterday, today, and tomorrow. Present and Ulterior Software Engineering. M. Mazzara and B. Meyer (Eds). Springer, 2017, 195–216.
8. Floyd, C. Managing Technology for Corporate Success. Gower Publishing Ltd., 1997.
9. Forsgren, N. DevOps delivers. Commun. ACM 61, 4 (Apr. 2018), 32–33.
10. Forsgren, N. and Kersten, M. DevOps metrics. Commun. ACM 61, 4 (Apr. 2018), 44–48.
11. Karimi, J., Bhattacherjee, A., Gupta, Y.P., and Somers, T.M. The effects of MIS steering committees on information technology management sophistication. J. Management Info. Syst.17, 2 (2000) 207–230.
12. Killalea, T. The hidden dividends of microservices. Commun. ACM 59, 8 (Aug. 2016), 42–45.
13. Klock, S., van der Werf, J. M.E.M., Guelen, J.P., and Jansen, S. Workload-based clustering of coherent feature sets in microservice architectures. In Proceedings of the IEEE Intern. Conf. Software Architecture, 2017, 11–20.
14. Knoche, H. and Hasselbring, W. Using microservices for legacy software modernization. IEEE Softw. 35, 3 (2018), 44–49.
15. Kromhout, B. Containers will not fix your broken culture (and other hard truths). Commun. ACM 61, 4 (Apr. 2018), 40–43.
16. Markus, M.L., Robey, D. Information technology and organizational change: Causal structure in theory and research. Management Science 34, 5 (1988), 583–598.
17. Newman, S. Building Microservices (1st ed.). O'Reilly. 2016. Sebastopol, CA.
18. Pahl, C. Containerization and the PaaS cloud. IEEE Cloud Computing 2, 3 (2015), 24–31.
19. Parnas, D. L. On the criteria to be used in decomposing systems into modules. Commun. ACM 15, 12 (1972), 1053–1058.
20. Peyrott, S. Intro to microservices, Part 4: Dependencies and data sharing. Nov. 9, 2015; https://auth0.com/blog/introduction-to-microservices-part-4-dependencies/
21. Taibi, D. and Lenarduzzi, V. On the definition of microservice bad smells. IEEE Softw. 35, 3 (2018), 56–62.
22. Thönes, J. Microservices. IEEE Software 32, 1 (2015), 113–116.
23. Wiedemann, A., Forsgren, N., Wiesche, M., Gewald, H., and Krcmar, H. Research for practice: the DevOps phenomenon. Commun. ACM, 62, 8 (Aug. 2019) 44–49.
24. Yegger, S. Stevey's Google Platforms Rant. Oct. 11, 2011; https://plus.google.com/110981030061712822816/posts; https://gist.github.com/chitchcock/1281611
©2021 ACM 0001-0782/21/1
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from [email protected] or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2021 ACM, Inc.
No entries found