Preparing for Microservices
The latest formalization of enterprise web architecture best practices is microservices. Microservice architectures combine the best parts of minimalist modular software ideals from unix and applies the lessons of cloud scaling and distributed software. This combination creates a unique software ecosystem which fits cleanly with agile development practices and continuous delivery.
A microservice architecture is well suited to meet the current omni-channel demands of the enterprise. It provides patterns to help connect new channels and ensure deeper engagement with customers is reached more quickly than ever before. However, there are no free lunches. Indeed, developing and transitioning existing enterprises to a microservice architecture has many possible pitfalls.
Organizational Changes Ahead
Most organizations work hard to optimize their delivery processes. Know that a microservice architecture will demand new organizational structures and processes. The transition to microservices will require shifting through two organizational phases, that we’ll call dual-minded and stewardship.
In a dual-minded organization some members support existing systems, while others work to restructure capabilities into microservices. This shift occurs early in the transition to microservices and can persist to varying degrees throughout the transition. Good planning and communication will keep these respective groups aligned on their ultimate goals – serving your business and customers.
Once the transition is mostly completed another shift is required. Microservices demand ownership and care, where each service has it’s own feature plans and delivery timelines. This requires a stewardship model, where work becomes organized around individual services acting as distinct products. Successfully adding new features into a microservice architecture frequently requires up-front coordination between these stewarding groups. Asking which capabilities fit into existing services, when to add new services, and when to replace a service, must be addressed continually. Prepare your teams for each of these shifts. Learn from your team’s agile retrospectives and make the adjustments needed.
Perhaps your organization has an existing system architecture that is showing it’s age. You regularly experience unexpected regression and performance issues, and every feature seems to cause new bugs or get delayed. If this is your reality, you might already be planning major changes. If so, take time to deeply understand your existing system. Identify not just the pain points that you’re feeling now, but dig deep into the history and wins that the system experienced during its lifetime. Those lessons will be incredibly valuable as you plan your transition and segment capabilities into services.
Microservices can provide increased scalability, and improve parallel and decentralized delivery. Additionally, these characteristics provide improved responsiveness and flexibility to meet enterprise demands. However, gaining these advantages will require careful planning, continual course correction, and navigating through the dual-minded organizational phase into an organization of product stewardship.
In future articles we’ll share additional details about technical and architectural pitfalls of microservices, information on transitioning a legacy monolith to microservice architecture, and the application of the automated test pyramid within microservice architectures.