Contenido del curso
Escalabilidad
Herramientas
Seguridad
Protocolos
Negocios y casos de uso
Conclusiones
Orquestadores y serverless en de alta concurrencia
Contenido del curso
Orquestadores y serverless en de alta concurrencia
Juan David Cajamarca Acuña
studentAlexis Dorado Muñoz
studentDAVID EDUARDO BAEZ SANCHEZ
studentCARLOS RODRIGO DEL TORO ORTIZ
studentRONALD MARTINEZ
studentJesus David Posada Escobar
studentRoyer Guerrero Pinilla
studentDiego Hernán Moreno Amaya
studentjefred bedoya
studentAiry Nieves
studentDaniel Eduardo Rojas Pulido
studentJuan Quevedo Sanchez
studentAlexis Dorado Muñoz
studentIrving Juárez
studentJHENER LIRIO OVIEDO CHAHUA
studentJuan Manuel Hincapié
studentMARIA TERESA PANIAGUA RIVERA
studentCristian Leiton Valencia
studentCristian Leiton Valencia
studentJuan David Acosta González
studentJuan David Acosta González
studentHECTOR FABIO JIMENEZ SALDARRIAGA
studentHECTOR FABIO JIMENEZ SALDARRIAGA
studentJesus David Posada Escobar
student¿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.
Gracias por tu aporte tan completo! 👏 Has explicado de manera clara y concisa la importancia de los orquestadores y las ventajas de Kubernetes. Además, has incluido información valiosa sobre serverless, ¡un tema cada vez más relevante! 🌟
Orquestadores
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
Lambda es solo una parte de serveless hay muchos mas https://aws.amazon.com/es/serverless/
En google existe este mismo servicio pero es llamado Cloud Funtions
Uno de los servicios de orquestadores también utilizados en AWS se llama ECS (Elastic Container Service), en el cual tienen dos variantes, una directamente en EC2 y otra completamente automatizada por AWS mediante Fargate (que puede resultar un poco más costosa, pero es bueno para iniciar en este mundo, entender y aprender, no es tan complejo de implementar).
En su contrario con Kubernetes, en AWS se utiliza el servicio llamado EKS (Elastic Kubernetes Service).
La clase se centra en cómo gestionar cargas masivas sin que el sistema colapse. El núcleo es el equilibrio entre la escalabilidad automática de serverless y la orquestación precisa de contenedores.
Pilares de la alta concurrencia
Orquestación y alta concurrencia
lo de kubernetes me parece muy brutal, automatiza demasiadas cosas, auto escalado, recuperación ante fallos
Los orquestadores son herramientas que automatizan la administración y coordinación de contenedores en ambientes distribuidos, facilitando el despliegue, escalado y gestión de aplicaciones. Ejemplos incluyen Kubernetes y Docker Swarm.
Por otro lado, serverless es un modelo de computación que permite a los desarrolladores construir y ejecutar aplicaciones sin preocuparse por la infraestructura, ya que el proveedor de servicios cloud gestiona automáticamente la escalabilidad y el mantenimiento.
En resumen, la orquestación se centra en la gestión de contenedores, mientras que serverless abstrae la infraestructura en sí, permitiendo a los desarrolladores enfocarse en el código.
Orquestación de contenedores para alta concurrencia:
La elección del orquestador es clave para gestionar aplicaciones en entornos de alta concurrencia. Kubernetes se ha convertido en el líder indiscutible, pero veamos por qué:
¿Qué hace un orquestador?
Ventajas de Kubernetes:
Docker vs. Kubernetes:
Serverless: ¿una alternativa?
En resumen:
Aqui se menciono el concepto de Cluster, y para el que no este familiarizado con esto, basicamente un Cluster es un conjunto de servidores que van a ser manejados por un punto en común. Por ejemplo en este caso, Kubernetes es el orquestador de diferentes contenedores. Nosotros como "usuarios", vamos a manipular Kubernetes, pero no tenemos acceso a los recursos individuales que este maneja. Es una capa que reduce la complejidad de manejar tantos recursos computacionales. A todos estos recursos es a lo que se le llama Cluster
Orquestadores para closterizar aplicaciones de lata concurrencia • Kubernetes • Open Shift • Docker Swarm El orquestador es el encargado de ubicar los contenedores en los diferentes servidores, para en caso de que presente o se caiga, crear uno nuevo. La diferencia entre Kubernetes y Docker es; Kubernetes corre contenedores Docker y Kubernetes necesita de Docker para correr en producción ServerLess: Permite correr funciones en la nube sin la necesidad de tener un servidor, ésta permite escalar automáticamente cuando se recibe mas tráfico
Orquestadores
La función es orquestar todos los contenedores a través de muchos servidores, se encarga de ubicar los contenedores en diferentes servidores, si un contenedor se cae puede crear uno nuevo. Kubernetes corre los contenedores Docker en un servidor.
Serverless: Usada en escenarios de alta concurrencia, corre funciones en la nube sin la necesidad de administrar el servidor, permite escalado automático
Gracias
K-Native
Recomiendo este video del Pelado:
Existen diferentes servicios serverless o en AWS no administrados, dentro de ellos estan: Lambda, DynamoDB, RDS, Redshift etc.
Orquestador: gestiona los contenedores que se encuentran en los diferentes servidores, el más conocido es Kubernetes. Y Kubernetes corre containers dockers.
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
Provisioned Concurrency, a feature that gives you more control over the performance of serverless applications. Using Provisioned Concurrency, you can avoid cold starts and startup latency issues for your Lambda functions.
Excelente contenido gracias Pablo