May 18, 2017

Building a Microservice Organization

The many advantages of microservices have been well documented. From better team scalability, flexible deployment models and increased reliability to higher-levels of isolation that enforce a better overall application design.

However, moving from a traditional monolithic application to a microservice platform provides many challenges for organizations. In order to realize the many benefits of a microservice platform, organizations must ensure all stakeholders completely understand the platform’s vision and how to effectively deliver solutions under the new paradigms.

Architects

Architects will need the ability to clearly understand and articulate the vision for the platform. This includes ensuring the teams have clear solutions for cross-cutting concerns such as data storage, security, API contract stability, service dependencies, service discovery, test automation, log aggregation, tracing, monitoring, metrics, alerting, deployment automation and documentation. In addition, architects will need to work closely with teams to ensure each team has a clear understanding of microservice design principals.

Developers

Developers will need to understand the technical implications of building services on the platform. This includes a higher-level of focus on application monitoring and metrics as well as a shift from the transactional nature of traditional data stores to an eventually consistent model built upon eventing. In addition, with a move towards continuous delivery, development teams often take on an expanded role in supporting the deployment, rollout and operations of the various services the teams own.

Infrastructure

Infrastructure teams will need to understand the shift from a process built upon tollgates and approvals towards one that supports comprehensive monitoring, alerting, automation, A/B testing and blue-green and canary deployments. In doing so, infrastructure becomes an organization that allows teams to fail-fast and innovate quickly.

IT Leadership

IT Leadership will need to understand how to effectively organize teams to deliver solutions. Often times this means shifting the development team structure towards end-to-end teams vs teams aligned by skill-sets and expertise. This shift in team structures will also include creating new teams focused on platforms, continuous delivery and site reliability engineering.

Product

Product teams will need to understand how to scope, support and educate end-users on small continuous release cycles vs less frequent mass deployments. In addition, the product owners will need to work closely with the architects and development teams to help define the proper bounded context for one or more microservices and to understand the implications of those decisions when introducing and releasing new functionality.

In the right environments, microservice platforms provide many considerable benefits over the traditional monolithic approach. However, these benefits are only fully realized by organizations that can align stakeholders with the vision for the new platform.

About the Author

David Reines profile.

David Reines

VP - Technology

David has led the development efforts of several mission-critical enterprise applications in the Twin Cities area. During this time, he has worked very closely with numerous commercial and open source JEE technologies. David has extensive experience in the architecture, design, implementation, deployment and support of highly scalable business applications.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blog Posts
Simple improvements to making decisions in teams
Software development teams need to make a lot of decisions. Functional requirements, non-functional requirements, user experience, API contracts, tech stack, architecture, database schemas, cloud providers, deployment strategy, test strategy, security, and the list goes on. […]
JavaScript Bundle Optimization – Polyfills
If you are lucky enough to only support a small subset of browsers (for example, you are targeting a controlled set of users), feel free to move along. However, if your website is open to […]
Creating Mocks For Unit Testing in Go
Unit testing is an important part of any project, and Go built its framework with a testing package; making unit testing part of the language. This testing framework is good for most scenarios, but you […]
Resetting Database Between Spring Integration Tests
When tasked with having to write an integration test or a Spring Webflux test that uses a database, it can be cumbersome to have to reset the database between each test by using @DirtiesContext. Using […]