No tienes acceso a esta clase

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

Balance entre Kubernetes y Serverless en Despliegue de Aplicaciones

10/19
Recursos

¿Qué es Google Cloud Run?

Google Cloud Run es una plataforma que destaca en el mundo del serverless computing, permitiendo implementar y ejecutar aplicaciones de manera escalable y flexible, manteniendo las ventajas del pago por uso. Su versatilidad radica en que no solo permite ejecutar funciones, sino también ofrecer cierto grado de control y personalización, lo cual es vital para negocios que buscan soluciones adaptables a sus necesidades tecnológicas.

¿Cómo minimizar el riesgo de "vendor lock-in"?

Una preocupación común en el uso de servicios en la nube es el vendor lock-in, la imposibilidad de migrar fácilmente aplicaciones y servicios a otros proveedores. La recomendación es crear soluciones que inicialmente resuelvan problemas de negocio, pero que también minimicen este riesgo. Para ello, los contenedores juegan un papel crucial al actuar como una solución intermedia, que facilita la portabilidad de las cargas de trabajo entre diferentes entornos sin el ancla de recursos específicos de un proveedor.

  1. Utiliza contenedores: Facilitan el traslado de aplicaciones de un proveedor a otro sin complejas reconfiguraciones.
  2. Adopta herramientas abiertas: Apostar por herramientas y servicios que no dependan exclusivamente de un proveedor permite mayor flexibilidad.
  3. Arquitecturas desacopladas: Diseñar las aplicaciones para ser lo más independientes posible del proveedor.

¿Qué son los contenedores y cómo funcionan?

Los contenedores ofrecen una forma consistente de empaquetar aplicaciones y todas sus dependencias, asegurando que funcionen uniformemente en cualquier entorno. La base de los contenedores es el aprovechamiento de diversos componentes del sistema operativo, como los procesos, espacios de nombres, cgroups y el sistema de archivos en capa, combinando eficientemente:

  • Procesos: Administrados por el sistema operativo, cada proceso incluye su memoria virtual.
  • Namespaces: Definen el alcance de los recursos visibles y accesibles.
  • Cgroups: Controlan el uso de recursos como CPU y memoria.
  • Filesystem capas: Permiten crear contenedores mediante la superposición de capas de archivos.

Los contenedores brindan la posibilidad de ejecutar aplicaciones de forma aislada, asegurando que funcione igual en desarrollo como en producción, eliminando ese miedo a la frase "solo funciona en mi máquina". Además, su naturaleza modular facilita la portabilidad, asegurando que las aplicaciones puedan ser trasladadas y ejecutadas en distintos servicios compatibles con contenedores.

Beneficios de los contenedores frente a otros modelos

Comparando con otros esquemas, los contenedores simplifican el despliegue al enfocarse solo en la aplicación y sus dependencias, sin preocuparse por toda la infraestructura física subyacente. Mientras que en modelos tradicionales y de virtualización es necesario gestionar la infraestructura y el sistema operativo, los contenedores requieren:

  • Solo un runtime de contenedor compatible.
  • Libertad de elegir el entorno compatible que los ejecute.

¿Por qué usar Kubernetes para la orquestación de contenedores?

Con el crecimiento de la utilización de contenedores, surge la necesidad de herramientas de orquestación, donde Kubernetes destaca por su capacidad de manejar cargas de trabajo complejas y múltiples contenedores. Aunque nació dentro de Google, ahora es un proyecto de software libre que forma parte de Cloud Native Computing Foundation (CNCF).

Características de Kubernetes

  1. Escalabilidad: Gestiona implementaciones y escalamientos automáticos.
  2. Portabilidad: Permite mover aplicaciones libremente entre entornos.
  3. Manejo de recursos: Asegura el uso eficiente y controlado de los recursos disponibles.
  4. Autocuración: Detecta y reemplaza contenedores fallidos automáticamente.

Kubernetes no es solo la solución para el manejo de contenedores, sino un ecosistema robusto para el desarrollo y despliegue de aplicaciones modernas y escalables.

Comparar Serverless y Kubernetes: ¿cuál elegir?

Al elegir entre un enfoque serverless o un sistema basado en Kubernetes, es crucial evaluar las necesidades específicas del proyecto y los recursos disponibles:

  • Serverless proporciona simplicidad y eficiencia en costos gracias al pago por uso, ideal para aplicaciones pequeñas o de pocos requisitos.
  • Kubernetes ofrece mayor control y flexibilidad, apto para aplicaciones complejas y con múltiples módulos o servicios.

Para decidir, es importante considerar la escala, flexibilidad, rendimiento esperado y necesidades de administración. Un enfoque híbrido, combinando lo mejor de cada mundo, podría ser el camino a seguir en muchos escenarios tecnológicos. ¡Sigue explorando!

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

prefiero mi propio server

Kubernetes
Un servicio para manejar los clusters donde vamos a desplegar nuestras aplicaciones.

Me sonó muy similar a Docker por lo que investigué un poco al respecto y me encontré un post que habla de sus similitudes.

Al parecer Kubernetes se trabaja comúnmente con Docker para orquestar todos los contenedores. (aún no lo entiendo del todo, pero seguiré investigando, espero les sirvan estas pequeñas pistas)

Notas de Contenedores

Process
Recursos manejados por el sistema operativo que tiene su propia memoria virtual.

Namespaces
Alcances: Qué elementos son visibles, qué IPs puedo ver, qué árbol de directorios a los cuales tengo acceso.

CGroups
Cuánto CPU, Cuánta Memoria voy a ocupar

Union File System
Mecanismo que permite que se construya nuestra aplicación a través de capas en las que se definen las relaciones con las bibliotecas.

Containers: Codigo y dependencia empaquetados para que la aplicación se ejecute de forma rápida y confiable de un entorno a otro.
Kubernetes: Es una plataforma open source que automatiza las operaciones de los contenedores.

los contenedores facilitan muchisimo tareas que antes tomaban su tiempo, como levantar un aplicativo o desplegar un servicio

cuando manejamos kubernetes tenemos muchas posibilidades pero dependiendo el escenario hay que considerar el uso de serverless

“Kubernetes (K8s) es una plataforma de código abierto para automatizar la implementación, el escalado y la administración en contenedores.”