CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES
As application complexity increases, microservice-based applications are widely used because of their flexibility and extensibility compared to monolithic applications. On the other hand, microservice architecture creates the need for circuit breaker pattern to protect remote calls that may fail....
Saved in:
Main Author: | |
---|---|
Format: | Final Project |
Language: | Indonesia |
Online Access: | https://digilib.itb.ac.id/gdl/view/66608 |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Institution: | Institut Teknologi Bandung |
Language: | Indonesia |
id |
id-itb.:66608 |
---|---|
spelling |
id-itb.:666082022-06-29T09:46:15ZCASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES Dean Anugrah, Naufal Indonesia Final Project microservice, circuit breaker, gRPC INSTITUT TEKNOLOGI BANDUNG https://digilib.itb.ac.id/gdl/view/66608 As application complexity increases, microservice-based applications are widely used because of their flexibility and extensibility compared to monolithic applications. On the other hand, microservice architecture creates the need for circuit breaker pattern to protect remote calls that may fail. However, current circuit breaker implementations only deal with failures from directly related service. As a result, remote calls that will eventually fail are still being made. This can lead to various operations that are unnecessary. In addition, the use of orchestration-based saga pattern creates the need for additional remote calls to compensate previous remote calls before failure happened. In this final project, cascading circuit breaker system is built. The system can propagate service availability status to other service that are not related directly. The system is implemented as a sidecar container which will run gRPC server that is used to wrap REST API calls. Service availability status propagation is done by utilizing service dependency data. The dependency data is built using additional data that are added into HTTP request header received from the application. Test conducted on application that is using orchestration-based saga pattern shows that the system has succeeded to propagate service availability status. As a result, endpoint calls that will eventually fail can be aborted earlier. CPU overhead caused by the system is linearly proportional to the incoming request rate. On the other hand, memory overhead caused by the system is constant regardless to the incoming request rate. Relatively, the overhead is constant and quite small, that are 2,33% increase on CPU and 3,47% increase on memory. The system also caused small overhead on HTTP response time, which is 3,2ms on average, but for a small number of requests there is a spike up to 35,1ms that can be seen in 95th percentile value. text |
institution |
Institut Teknologi Bandung |
building |
Institut Teknologi Bandung Library |
continent |
Asia |
country |
Indonesia Indonesia |
content_provider |
Institut Teknologi Bandung |
collection |
Digital ITB |
language |
Indonesia |
description |
As application complexity increases, microservice-based applications are widely
used because of their flexibility and extensibility compared to monolithic
applications. On the other hand, microservice architecture creates the need for
circuit breaker pattern to protect remote calls that may fail. However, current circuit
breaker implementations only deal with failures from directly related service. As a
result, remote calls that will eventually fail are still being made. This can lead to
various operations that are unnecessary. In addition, the use of orchestration-based
saga pattern creates the need for additional remote calls to compensate previous
remote calls before failure happened.
In this final project, cascading circuit breaker system is built. The system can
propagate service availability status to other service that are not related directly.
The system is implemented as a sidecar container which will run gRPC server that
is used to wrap REST API calls. Service availability status propagation is done by
utilizing service dependency data. The dependency data is built using additional
data that are added into HTTP request header received from the application.
Test conducted on application that is using orchestration-based saga pattern shows
that the system has succeeded to propagate service availability status. As a result,
endpoint calls that will eventually fail can be aborted earlier. CPU overhead caused
by the system is linearly proportional to the incoming request rate. On the other
hand, memory overhead caused by the system is constant regardless to the incoming
request rate. Relatively, the overhead is constant and quite small, that are 2,33%
increase on CPU and 3,47% increase on memory. The system also caused small
overhead on HTTP response time, which is 3,2ms on average, but for a small
number of requests there is a spike up to 35,1ms that can be seen in 95th percentile
value. |
format |
Final Project |
author |
Dean Anugrah, Naufal |
spellingShingle |
Dean Anugrah, Naufal CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES |
author_facet |
Dean Anugrah, Naufal |
author_sort |
Dean Anugrah, Naufal |
title |
CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES |
title_short |
CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES |
title_full |
CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES |
title_fullStr |
CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES |
title_full_unstemmed |
CASCADING CIRCUIT BREAKER SYSTEM ON MICROSERVICE APPLICATION RUNNING ON KUBERNETES |
title_sort |
cascading circuit breaker system on microservice application running on kubernetes |
url |
https://digilib.itb.ac.id/gdl/view/66608 |
_version_ |
1822933094465798144 |