Canary Deployment Service Graphs for Microservice Monitoring
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In microservice architectures, updating or upgrading individual microservices can require rebuilding and deploying the entire application, leading to complexities in monitoring and identifying issues introduced by new versions, especially when network traffic passes through a series of microservices.
Innovation Solution
Implementing a canary deployment method where a canary version of a microservice is deployed within a call chain, with identifiers in request headers to differentiate transactions processed by canary and production versions, allowing for monitoring and generating service graphs to identify issues introduced by the new version.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If a canary version of a microservice is deployed within a call chain to enable individual upgrading, then the ability to upgrade microservices independently is improved, but the complexity of monitoring and identifying issues introduced by the new version increases
Solution Approach 1:
The patent introduces an intermediary device (service mesh or proxy) that sits between clients and microservices. This intermediary automatically injects version identifiers into request headers, routes traffic to appropriate microservice versions, and collects response data. This mediator handles the complexity of version management and monitoring, allowing independent microservice upgrading without directly complicating the monitoring system.
Solution Approach 2:
The patent implements a feedback mechanism where the intermediary device collects response data from microservices, compares it against expected outcomes, and provides feedback on the health and performance of canary deployments. This automated feedback loop enables continuous monitoring of canary versions without manual intervention, resolving the monitoring complexity issue.
2Measurement precision
If version identifiers are included in request headers to differentiate canary and production transactions, then the precision of transaction tracking is improved, but the overhead of processing and transmitting headers increases
Solution Approach 1:
The patent applies partial action by only adding version identifier headers to a subset of requests (canary deployment traffic) rather than all requests. The intermediary device intelligently determines which requests need version tracking and adds identifiers only to those, reducing overall header processing overhead while maintaining precise tracking for canary transactions.
3Reliability
If canary deployment is implemented to reduce risk in production environment, then the reliability of deployment process is improved, but the time required for deployment and monitoring increases
Solution Approach 1:
The patent implements preliminary action by pre-configuring the intermediary device with deployment manifests that specify canary deployment parameters, version identifiers, and monitoring thresholds before deployment begins. The system pre-establishes the monitoring framework and routing rules, so when canary deployment starts, the infrastructure is already in place to handle it efficiently, reducing deployment time.
Data Source
AI summary
Described embodiments provide systems and methods for generating service graphs for canary deployment of microservices is provided. A call chain can include a canary version of a microservice and one or more production versions of microservices. The canary version microservice can receive a request and include into header portion of the request an identifier indicating the microservice is the canary version of the microservice. The microservice can provide, to the one or more subsequent microservices of the call chain, the request with the identifier. The one or more subsequent microservices can include one or more tags in the request to identify that the one or more subsequent microservices are executing the production versions while retaining the identifier with the request. A service graph can be generated identifying transactions processed by the canary version microservice and the production versions of the one or more subsequent microservices.


