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 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 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 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 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 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.