No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Orquestadores y serverless en de alta concurrencia

10/17
Recursos

Aportes 6

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Orquestadores

  • K8s
  • OpenShift
  • Docker Swarm

¿Qué orquestador es recomendable utilizar para clusterizar aplicaciones de alta concurrencia?
Hay varias opciones de orquestadores disponibles en la industria (Kubernetes, OpenShift y Docker Swarm son las principales), sin embargo, desde hace un tiempo, la batalla fue ganada por Kubernetes.

Un orquestador se encarga de orquestar contenedores a través de muchos servidores. Esta funcionalidad es muy útil porque en ciertos escenarios tenemos muchos servidores y sería imposible manejar los contenedores en cada uno de dichos servidores de forma independiente. El orquestador se encarga de ubicar los contenedores en diferentes servidores y nos ahorra el trabajar de tener que hacerlo. Esto es de mucha ayuda puesto que si uno de los contenedores se cae, el orquestador puede crear un nuevo de forma automática e inmediata.

Los orquestadores también cuentan con reglas de auto-escalado que nos ayudarán a afrontar problemas de alta concurrencia. Dichas reglas pueden utilizar disparadores como uso de CPU, uso de memoria o incluso algunas métricas externas.

Docker es simplemente la tecnología en la que corren los contenedores; sin embargo, Docker carece de la funcionalidad de poder orquestar los contenedores en muchos servidores, y es en esto en lo que nos ayuda Kubernetes. Podríamos decir que Kubernetes necesita Docker para desplegar contenedores, y Docker necesita Kubernetes para correr en Producción.

En cuanto a costos, ¿nos beneficia implementar una infraestructura serverless?

Serverless es una estrategia muy útil en escenarios de alta concurrencia: Serverless nos permite ejecutar funciones en la nube sin la necesidad de tener un servidor; es decir, simplemente cargamos el código de cada una de las funciones y el proveedor se encarga de ejecutar dicho código en los servidores que él mismo administra. Aquí no nos preocupamos por comprar, iniciar o administrar un servidor. Además, serverless nos permite escalar de manera automática a medida que recibamos más peticiones; y es esta la principal ventaja de serverless: mientras no estemos recibiendo tráfico, el proveedor no nos cobra ya que no se está ejecutando ningún proceso; mientras que cuando recibimos peticiones, el proveedor empezará a crear servidores de manera automática sin nuestra interacción.

Una de las desventajas de Serverless, es que mientras se espera a que una petición inicie un servidor, podemos tener un poco de delay (aunque son poquísimos segundos) a la hora de ejecutar nuestras funciones. Es un factor a tener en cuenta si es que nuestra aplicación es sensible a este tipo de escenarios.

hasta que entiendo la diferencia entre docker y kubernetes. Kubernetes corre contenedores Docker y Docker necesita de Kubernetes para correr en produccion

En AWS se llama lambda y ejecuta funciones que tienen cobro por el tiempo en que tarda en ejecutarse el código

Yo diría que coldstart de una aplicación que esté desplegada de manera serverless siempre se puede mejorar, a día de hoy por lo menos aws permite configurar un parámetro muy específico para reducir el tiempo que inicia una lambda function, para Amazon se conoce cómo provisioned concurrency

Excelente contenido gracias Pablo