Resumen:
|
[ES] En la construcción de aplicaciones en la nube actualmente se suele emplear una arquitectura basada en microservicios. En estas aplicaciones parte de los microservicios
son puntos de entrada a la aplicación desde el ...[+]
[ES] En la construcción de aplicaciones en la nube actualmente se suele emplear una arquitectura basada en microservicios. En estas aplicaciones parte de los microservicios
son puntos de entrada a la aplicación desde el exterior, típicamente HTTP. Permitir este
acceso lleva a enrutar a quien lo demanda hacia el componente deseado mediante proxies
balanceadores de carga.
Trabajando en entornos cambiantes, como lo son las aplicaciones desplegadas en la
nube, debemos tener en cuenta ciertos aspectos. La cantidad de servicios que hacen uso
del balanceador varía con el tiempo, al igual que la carga de balanceo de cada uno de
estos servicios. Además, los servicios deben cumplir los acuerdos a nivel de servicios a
los que se han llegado con el cliente.
En el presente trabajo de fin de grado se propone la implementación de un sistema
distribuido de balanceadores de carga, encargados en su conjunto de distribuir el tráfico
entrante de un conjunto de servicios, de forma altamente disponible y escalable, y automáticamente configurable y regulable en base al estado y requerimientos de las aplicaciones a las que sirve; compatible con entornos Kubernetes, dado que es habitual orquestador
en el despliegue de aplicaciones en la nube.
Para el desarrollo, se ha escogido Envoy Proxy como balanceador de carga. A este se
le acompañará de un servidor al cual podrá hacer consultas. En lugar de emplear APIs
de tipo REST en ellos, se ha escogido comunicación RPC empleando gRPC y el uso de
Protocol Buffers por su eficiencia en la serialización de datos para el intercambio de mensajes. Como lenguaje de programación se ha escogido Go. Posteriormente justificaremos
por qué estas tecnologías.
[-]
[EN] In the construction of cloud applications, a microservices-based acrchitecture is often used nowadays. In these applications, part of the microservices are entry points to the application from outside, typically HTTP. ...[+]
[EN] In the construction of cloud applications, a microservices-based acrchitecture is often used nowadays. In these applications, part of the microservices are entry points to the application from outside, typically HTTP. Allowing this access leads to routing whoever requests it to the desired component through load balancing proxies.
Working in changing environments, such as cloud applications, we must take into account certain aspects. The number of services that make use of the balancer varies over time, as well as the load balancing charge of each of these services. Furthermore, the services must comply with the service level agreements reached with the client.
In this thesis, the implementation of a distributed system of load balancers is proposed, as a whole responsible of distributing the incoming traffic of a set of services, in a highly available and scalable way, and automatically configurable and adjustable based on the status and requirements of the applications it serves; compatible with Kubernetes, as it is usual for the deployment of cloud applications.
For development, Envoy Proxy has been chosen as the load balancer. It will be accompanied by a server that it can make requests. Instead of implementing a REST API, RPC communication has been chosen using gRPC and Protocol Buffers for the exchange of messages, due to its efficiency at serializing data for message exange. Go has been chosen as the programming language. Later we will justify why these technologies.
[-]
|