Analysis and usage of API gateways in Kubernetes

Boris Radovič · Repository of the University of Ljubljana (University of Ljubljana) · 2020

Containerization has marked a turning point in the way software gets developed: applications' functionalities, instead of being bundled inside of single and potentially very large code bases as is the case in monolith architectures, are split into smaller units, the microservices precisely, and even though these latter improve the backends of applications when it comes to flexibility, scalability, and some other aspects too, they bring along a whole lot of new challenges. For some of these, an API gateway might represent the solution, while others, that are introduced by the distributed nature every MSA (``microservices architecture'') application inherits, just have no way out, and force developers to make do. Furthermore, containerization never gained much attention when it comes to the data layer, but this aspect, mostly because of the developers' desire of having a standard way for managing both the data and the business layer, has been changing lately. In this light and with the aim to simplify the deployment of an Apache Kafka cluster inside of Kubernetes, the Strimzi project was born, and in this paper we describe two extensions that can be applied to the Strimzi Bridge, a microservice that decouples clients and Kafka brokers on one hand, and relieves these clients from the necessity of using the Kafka binary protocol on the other. These extensions, namely rate-limiting and content-based routing, aim to solve some conundrums that are in other situations dealt with by API gateways, so before proposing them, we shall carry out a comprehensive study of API gateways, after which it shall be clear, that MSA applications have common pitfalls, and that the solutions adopted to cope with them are almost standardized as well.

Read the paper · More papers on PaperTik