Microservices promise to deliver new business services faster and at lower cost, but it comes at a price: increased operational complexity. I share my vision on managing microservices on the enterprise level:
- Why you should manage your services
- What challenges you will face
- What benefits you can get
- What you can do to get in control
This article is part of a series on service monitoring.
About me: For more than 20 years i work as a consultant and developer, building and managing services. My biggest challenge is to make organisations aware that managing services must be taken seriously. As soon as the organisation and its management see the whole picture, the technological issues can be addressed one by one and success is unavoidable.
The challenge of being aware
The Agile Scrum development methodology combined with microservices architecture enables companies to develop new business in no time. Large companies in finance, telecom and utilities are replacing their old monolithic applications with new technology based on microservices. This is great but in order to be successful we have to address some very important issues.
Managing services efficiently
Most organisations go for the quick wins by putting their focus on developing new business processes. Product owners and DevOps teams therefore allocate all their resources to development and minimize time for maintaining and improving existing services. This while most of the company’s revenue still comes from existing business processes. The result is a steadily growing amount of substandard services, eventually resulting in increasing numbers of failures and major incidents.
You need to manage your services more effective and efficient
Microservice architecture enables the agile development approach but also creates a real service governance challenge. It generates a complex network of dependencies between the services and the teams that develop and manage them.
On top of that you have to manage millions of events on several abstraction levels:
- Business process
- User transaction
You need a solution to handle complexity and information overload
In today’s economy the ability to deliver your services with round the clock availability and excellent performance can make the difference. And sometimes you not even have the choice but customers and regulators just demand 99,8% or more availability.
All this can raise the question: “If i have to do all this, how do i that and still make money”.
Smart monitoring can help you to understand your infrastructure, verify service reliability before you deploy, and automate your daily service monitoring. This will bring you back in control and saves money and time by reducing the number of incidents and increase hardware utilisation.
The challenge of managing services
Once your organisation is aware of the situation that it is facing and management has allocated some time and resources to find a solution you can start thinking about the problem itself.
To get an idea of this challenge i have created this video.
- You have to face organisational issues
- Company strategy (Agile, DevOps, cost reduction)
- Stakeholders with different goals and opinions (Business, Product owner, DevOps team)
- Many teams developing and managing services
- You have to handle complex and dynamic topology
- Business processes, services, user transactions
- Monitoring events and metrics (logging and monitoring data)
- Dependencies between all these components
- Everything is constantly growing and changing
- You have to handle a full set of requirements
- Reliability and performance
- Guidelines and standardisation
The first question is: “who will develop and implement the solution”. If you have a large company with many DevOps teams you cannot leave it to the teams to come up with their own monitoring solution. The purpose of DevOps teams is to develop, manage and monitor their own services and business transactions. But they cannot do this without guidance or you will endup with total chaos (Franken monitor syndrome). DevOps teams need to have monitoring guidelines and the tools to implement them.
Strategy: Setup a monitoring support team that defines enterprise wide standards and provides the required monitoring tools and training for the DevOps teams to implement them. The support team must have authority and reports to management and product owners on service quality, availability and performance.
How can you manage your services effectively
Now that you have selected a strategy, you can think about a solution that:
- Fits within a Agile / DevOps development methodology
- integrates with continuous deployment
- minimizes the time spent on monitoring
- helps to improve quality
- Helps you to be in control and increase business value
- shows business proces usage and performance
- shows team performance (added business value and quality of their services)
- help to maximize availability and user experience
- enable you to reduce resource usage and license cost
The product owner is an intermediary between the business and the DevOps team. They interact with business, collect requirements and forward them to DevOps teams. The product owner is responsible for delivering reliable services on time. Business and PO need to have up to date information on service availability and performance.
DevOps teams develop, maintain and manage services. They have full end to end responsibility for your business value chain. In order to fulfill that task successfully they need some help. One of the challenges for the DevOps team is to get an overview of the technology stack. Because everything is constantly changing it’s very hard and time consuming to keep documentation up to date. Smart monitoring provides such an overview and more by automatic discovery of all your services and infrastructure components.
Automated discovery creates a model of your infrastructure. It includes your services, the servers they run on, the middleware components they use and the applications and databases they connect to. This model is constantly updated with the latest events and therefore represents the current status of your system. The model is intelligent, it knows about the dependencies between the components and rules defined by experts constantly calculate component health.
The ability to determine component health is one of the most interesting features of Smart monitoring. Component health is determined by metrics of the component itself and also the health of components that it directly or indirectly depends on. This results in a complete health status overview:
- Availability (does it work as designed)
- Usage (workload, is it doing anything)
- Functionality (does it do what the customer expect, are there any errors)
- Performance (does it respond on time )
- Resource usage (does it work efficiently, how much resource usage)
The Smart Monitoring approach enables you to leave service monitoring to the monitor. Smart monitoring will inform you when it needs your attention. So instead of constantly watching dashboards full of data get you get notified.
There are some use cases:
- Planning phase
- Robustness: Because of its internal model and rule system Smart monitor can detect structural integrity violations and help teams to design a robust solution.
- Confirmation of compliance: The model can help performing Business Impact Analysis and verify compliance
- Day to day monitoring
- Dashboards: provide structured and normalized data
- Alerts and automation: help you to get notified and even automate response
- Impact analysis: when services fail you want to know how it affects business. The model determines the affected business services and estimates the number of affected transactions and end users
- Predictive monitoring
- Resource optimization: During deployment services have to be assigned to physical servers. The model can be used to calculate an optimized service to server assignment plan. Server optimization can save you lots of money.
- Whatever technology you use it has to be maintained and monitored
- Your infrastructure is complex and will constantly change
- Monitoring can be a complex and time consuming task
- You therefore need a smart and flexible monitoring solution
- Keep on learning and experimenting
- Martin Fowler: Microservices
- Golang UK Conference 2016 – Asim Aslam: Simplifying Building and Managing Microservices with Micro
- GOTO 2016 Matt Ranney: What I Wish I Had Known Before Scaling Uber to 1000 Services
- GOTO 2016 Tom Wilkie: Monitoring microservices
- Lightbend: Monitoring Microservices in Production with Lightbend Platform
- David Gildeh (Dataloop.IO) : Monitoring for DevOps & Micro-Services
- Rafael Winterhalter: Monitoring distributed (micro-)services
- Mike Kavis: Monitoring in the DevOps Era
- ING microServices: Slideshare presentation
- IBM Redbook: Microservices from Theory to Practice
- ITSM Professor: IT Service Management
Please contact me if you have any question: