Microservices application network control plane
Disclosed embodiments are directed at systems, methods, and architecture for operating a control plan of a microservices application. The control plane corresponds with data plane proxies associated with each of a plurality of APIs that make up the microservices application. The communication between the data plane proxies and the control plane enables automatic detection of service groups of APIs and automatic repair of application performance in real-time in response to degrading service node conditions.
1. A system comprising:
an application control plane; and
a service group of a microservice architecture application, the service group comprising a plurality of services that interact to perform an overall application function,
wherein each of the plurality of services comprises an application programming interface (API) and a data plane proxy that is communicatively coupled to the application control plane, and
wherein the application control plane is configured to:
inject a plurality of packets into a starting service of the service group, wherein each of the plurality of packets comprises a known packet identifier that is updated subsequent to processing by a service of the plurality of services,
wherein each data plane proxy of a corresponding service of the service group is configured to:
generate, based on the known packet identifier of one or more of the plurality of packets, a report comprising one or more metrics, and
wherein the application control plane is further configured to:
receive, from the data plane proxy of the corresponding service of the service group, the report comprising the one or more metrics, and
in response to identifying, based on the reports, an anomalous behavior between a first service in the service group and a second service in the service group, execute a remedial action comprising at least one of:
rerouting the plurality of packets from the first service to a third service in the service group with a functionality similar to the second service,
deprioritizing or deactivating the first service or the second service,
load balancing the service group by rate-limiting one or more services, or
rolling-back a version of the API associated with the first service or the second service to a previous stable version.
2. The system of claim 1 , wherein the application control plane is further configured to:
generate, based on the reports, a dependency graph that represents (a) characteristics of at least one of the plurality of services and (b) interactions and dependencies between the plurality of services of the service group.
3. The system of claim 1 , wherein the loading balancing the service group comprises a decentralized load balancing operation that includes at least one of: a round robin protocol, a ring hash protocol, or a maglev protocol.
4. The system of claim 1 , wherein the one or more metrics comprise at least one of a timestamp, a duration associated with processing the plurality of packets in the corresponding service, a throughput, an uptime or a downtime, a Layer 4 metric, a Layer 7 metric, a number of errors, an ingress packet rate, or an egress packet rate.
5. The system of claim 4 , wherein the application control plane is further configured to:
generate, based on the one or more metrics, at least one visualization for display on a dashboard accessible by an administrator of the application control plane.
6. The system of claim 1 , wherein the functionality of the third service is identical to the functionality of the second service.
7. The system of claim 1 , further comprising:
a monitoring platform, communicatively coupled to the data plane proxy of each of the plurality of services, configured to:
tracking metrics and events associated with each of the plurality of services;
performing at least an aggregation operation on the metrics; and
transmitting a result of the aggregation operation to an administrator of the application control plane.
8. A method comprising:
injecting, by an application control plane, a first plurality of packets into a starting service of a service group of a microservice architecture application, the service group comprising a plurality of services that interact to perform an overall application function, wherein each of the plurality of services comprises an application programming interface (API) and a data plane proxy that is communicatively coupled to the application control plane;
receiving, from each data plane proxy of a corresponding service of the service group, a report comprising one or more metrics;
in response to identifying, based on the reports, an anomalous behavior between a first service in the service group and a second service in the service group, executing a remedial action comprising at least one of:
rerouting a second plurality of packets from the first service to a third service in the service group with a functionality similar to the second service,
deprioritizing or deactivating the first service or the second service, or
load balancing the service group by rate-limiting one or more services;
generating, based on the reports, a dependency graph that represents (a) characteristics of at least one of the plurality of services and (b) interactions and dependencies between the plurality of services of the service group;
determining, based on the dependency graph, that a performance of a fourth service is causing a performance metric of the microservice architecture application to drop below an application performance benchmark for the plurality of services in the microservice architecture application; and
deploying, based on the determining, a fifth service to replace the fourth service.
9. The method of claim 8 , wherein the second plurality of packets is received at the first service subsequent to the first plurality of packets being received at the first service.
10. The method of claim 8 , wherein the second plurality of packets are identical to the first plurality of packets.
11. The method of claim 8 , wherein the third service is an additional instance of the second service.
12. The method of claim 8 , wherein an end user of the microservice architecture application communicates with the API of each of the plurality of services through an API gateway.
13. The method of claim 12 , wherein the API gateway is configured to manage at least an authentication function for the API of each of the plurality of services.
14. The method of claim 8 , further comprising:
monitoring each of the plurality of services to track a response status code, a response time, or a traffic throughput associated with the service;
creating, based on the monitoring, a log for each of the plurality of services; and
transmitting the log to a single location external to the microservice architecture application.
15. A method comprising:
injecting, by an application control plane, a first plurality of packets into a starting service of a service group of a microservice architecture application, the service group comprising a plurality of services that interact to perform an overall application function, wherein each of the plurality of services comprises an application programming interface (API) and a data plane proxy that is communicatively coupled to the application control plane;
receiving, from each data plane proxy of a corresponding service of the service group, a report comprising one or more metrics;
in response to identifying, based on the reports, an anomalous behavior between a first service in the service group and a second service in the service group, executing a remedial action comprising at least one of:
rerouting a second plurality of packets from the first service to a third service in the service group with a functionality similar to the second service,
deprioritizing or deactivating the first service or the second service, or load balancing the service group by rate-limiting one or more services;
generating, based on the reports, a dependency graph that represents (a) characteristics of at least one of the plurality of services and (b) interactions and dependencies between the plurality of services of the service group;
identifying, based on the dependency graph, an execution path associated with the second service, the execution path comprising a plurality of ingress paths from one or more services to the second service and a plurality of egress paths to one or more services from the second service; and
rerouting packets on the plurality of ingress paths and the plurality of egress paths to ingress paths and egress paths associated with the third service.
16. The method of claim 15 , wherein the second plurality of packets is received at the first service subsequent to the first plurality of packets being received at the first service.
17. The method of claim 15 , wherein the second plurality of packets are identical to the first plurality of packets.
18. The method of claim 15 , wherein the third service is an additional instance of the second service.
19. The method of claim 15 , wherein an end user of the microservice architecture application communicates with the API of each of the plurality of services through an API gateway.
20. The method of claim 19 , wherein the API gateway is configured to manage at least an authentication function for the API of each of the plurality of services.
21. The method of claim 15 , further comprising:
monitoring each of the plurality of services to track a response status code, a response time, or a traffic throughput associated with the service;
creating, based on the monitoring, a log for each of the plurality of services; and
transmitting the log to a single location external to the microservice architecture application.