__wf_reserved_heredar
Blog__wf_reserved_heredar
Kubernetes o sin servidor: ¿cuándo usarlo y cómo elegir? — parte 1
__wf_reserved_heredar

Kubernetes o sin servidor: ¿cuándo usarlo y cómo elegir? — parte 1

__wf_reserved_heredar
__wf_reserved_heredar
Alex Ivanov
June 2, 2021

Introducción

Hoy en día, cuando se trata del desarrollo y el alojamiento de una aplicación moderna, o incluso de toda la infraestructura de TI, hay dos palabras de moda que se escuchan todo el tiempo: Kubernetes (k8s) y Sin servidor. Algunos activistas del debate entre k8s y Serverless incluso dicen que uno está empezando a reemplazar al otro, lo que nos hace sonreír. La razón por la que reaccionamos es simple: cada caso concreto en el ámbito empresarial requiere una solución individual, bien planificada y manejable, creada por todos los medios posibles.

Tanto las empresas como los desarrolladores se preocupan por la eficiencia con la que se puede utilizar cada tecnología específica para alcanzar los objetivos empresariales y por la forma en que se pueden reducir los costos de tiempo y recursos.

Analicemos más detenidamente el análisis entre Serverless y Kubernetes, veamos qué tienen en común y en qué se diferencian, y por qué preferirías uno u otro desde un punto de vista empresarial o para tareas de desarrollo. Nuestro artículo te dará la oportunidad de descubrir tanto Kubernetes como Serverless, y te explicará cómo elegir entre ellos de forma inteligente.

Glosario básico o curso de actualización en términos

Infraestructura - un conjunto de instalaciones y sistemas fundamentales que respaldan la funcionalidad sostenible de sus aplicaciones.

Contenedor - un entorno aislado en el que una aplicación puede ejecutarse en función de todos los componentes y dependencias necesarios empaquetados en su interior, por lo tanto, contenedorización - el proceso de empaquetar una aplicación en contenedores y llenarlos con todo lo necesario para que funcione sin problemas.

Microservicios - es un enfoque de diseño para programas o servicios complejos que divide el sistema en pequeños servicios y componentes independientes.

Kubernetes (k8s) - es una herramienta para la gestión y el lanzamiento de aplicaciones en contenedores en los marcos de configuración declarada de contenedores.

Sin servidor - es un concepto de gestión de recursos informáticos en el que solo se compra tiempo de computación para las funciones en la nube y todo lo demás es un quebradero de cabeza para un proveedor de nube.

FPaaS (plataforma funcional como servicio) - AWS Lambda popularizó el suministro de un conjunto de funciones interconectadas para la informática, el procesamiento de datos y el almacenamiento en la plataforma (en particular, en la nube).

IaaS (infraestructura como servicio) - proporcionar recursos de computación en nube virtualizados conectados y administrados por proveedores de nube para ejecutar sus máquinas virtuales.

Las razones por las que aparecieron las tecnologías k8 y sin servidor

Hagamos un pequeño viaje de regreso a 2013. Google tuvo que hacer frente a la creciente carga de tráfico de sus servicios, como Gmail, Maps, etc., y utilizó la contenedorización con la ayuda de los ingenieros que estaban desarrollando Project Seven o Borg.

Una startup de la soleada ciudad de San Francisco llamada Dotcloud presentó Docker en la conferencia Pycon de 2013. Docker se convirtió en una herramienta revolucionaria para la gestión de contenedores de software, fácil de usar desde una línea de comandos. En un año, Google publicó Kubernetes como código fuente abierto escrito en Go, una nueva versión del antiguo Borg escrito en C++. Esto nos lleva a convertirse en una de las mayores ventajas de Kubernetes: sigue siendo una tecnología de código abierto con una comunidad activa, estándares amplios y listas florecientes de servicios y herramientas basados en k8s.

Todos estaban entusiasmados y, en 2018, proyecto k8s en GitHub se convirtió en una de las herramientas más populares entre los desarrolladores, y ahora, en 2020, es un estándar de la industria muy conocido. Al ser gratuito, portátil, ampliable y capaz de soportar la configuración declarativa, rápidamente cautivó los corazones y las mentes de los ingenieros y las empresas de DevOps.

¿Por qué es así?

Porque en los últimos 10 años, cada vez más desarrolladores han adoptado el nuevo paradigma de la cultura DevOps, que se aferra a la idea del contrabando de fronteras entre los equipos de desarrollo y operativos en aras de un trabajo más estable, tiempos de lanzamiento más cortos, una solución de problemas más rápida, menos fallas de seguridad, etc.

DevOps lifecycle.
Ciclo de vida de DevOps.

En las empresas que comenzaron a adoptar enfoques de DevOps, toda la infraestructura estaba cambiando: todo tenía como objetivo reducir los costos, mejorar la seguridad y simplificar la implementación de los cambios. Y ambos contenedores y microservicios son tecnologías que comenzaron a adaptarse a las necesidades de los equipos fluctuantes. Los contenedores brindan a los ingenieros de DevOps la posibilidad de ejecutar las aplicaciones sin limitaciones de idioma, plataforma o entorno, simplemente corrigiendo una configuración detallada anterior. Los microservicios recrean sistemas masivos con jerarquías verticales y dependencias en una masa horizontal bien conectada de suites lanzadas por separado que realizan la misma tarea que la infraestructura anterior.

A medida que cada vez más empresas implementaban ambas tecnologías, los desarrolladores utilizaron y mejoraron k8s como la herramienta más popular para la gestión de contenedores. Una de las cosas más positivas de Kubernetes es su naturaleza declarativa: un desarrollador describe el entorno una vez y Kubernetes reúne todo lo que necesita: recursos, bibliotecas, API necesarias, dependencias, etc.

Gracias a la naturaleza declarativa del servicio, los programadores se acercan más a la implementación de microservicios y se ocupan de tareas más pequeñas que pueden realizarse más fácilmente con Agile. El primero de estos cambios en la infraestructura puede ocurrir no solo en servidores reales, sino también en máquinas virtuales o locales, y en cualquier lugar en el que se lance Kubernetes.

Este es el momento en el que las tecnologías en la nube permiten a las empresas obtener algunos conocimientos.

Cuando las empresas empezaron a migrar a la nube y a establecerse allí, descubrieron que sus aplicaciones o servicios serían competitivos y más estables que otros solo si encontraban la manera de escalar en respuesta a una actividad similar a la de los picos de tráfico o solicitudes. E incluso reducir el volumen de recursos disponibles si no están en uso en la actualidad. Esto reducirá drásticamente los costos de las aplicaciones ubicadas en la nube.

Además, muchas empresas dividen sus aplicaciones y programas según las estructuras básicas de eventos lineales o en forma de árbol, y necesitan que funcionen en un lugar económico y eficiente. Y siempre hay gente a la que le gusta crear programas tan sencillos que su mapa de funciones puede ajustarse a la lista A4. Estas circunstancias dieron origen a Serverless como estilo de arquitectura de software.

Después de este breve recorrido histórico, analicemos cada tecnología por separado y analicemos los discutibles pros y contras de Kubernetes en comparación con los pros y los contras de Serverless.

Más información sobre kubernetes

Veamos cómo funciona esta tecnología para brindarle más información sobre la evaluación de las ventajas y desventajas de Kubernetes.

Puedes configurar k8s literalmente en cualquier lugar. Es ampliamente compatible con una amplia variedad de proveedores de nube en todo el mundo, y es una de las principales ventajas de Kubernetes. En producción, la plataforma normalmente consiste en un componente de plano de control que se ocupa de la administración de clústeres de k8 y de los nodos de trabajo para ejecutar la carga de trabajo de las aplicaciones.

Si está alojado en la nube, no solo podría alojar todo el clúster k8s en los servicios de máquinas virtuales (IaaS), sino que también podría decidir transferir una parte de la instalación, la administración y el soporte de los nodos maestros y todo el «plano de control del clúster» al proveedor de la nube y centrarse en lo que es realmente importante para sus aplicaciones.

Typical Kubernetes project structure
Estructura típica de un proyecto de Kubernetes. Fuente

Esta opción se denomina «servicio de Kubernetes administrado» y, entre las tres principales, está representada por Elastic Kubernetes Service (AWS), Azure Kubernetes Service (Azure) y Google Kubernetes Service (GCP). Normalmente, un proveedor solicitaría una pequeña tarifa para ejecutar y administrar un clúster de Kubernetes por ti; es decir, en AWS, normalmente cuesta 0,10 USD por hora.

Y eso no es todo. Encontrarás una serie de ventajas y desventajas de Kubernetes que son discutibles para los desarrolladores, ya que, por un lado, puedes elegir todo según tus necesidades personalizadas y, por otro, preferirías delegarlo sin pensar demasiado en ello:

  • Una API para gestionar la carga de trabajo de su clúster y contenedor;
  • Base de datos para almacenar la configuración de cargas de trabajo de clústeres y contenedores;
  • Plugins de almacenamiento y red para proporcionar almacenamiento definido por software y una red para operar su clúster y las aplicaciones que ejecuta;
  • Implementación básica de DNS para soportar la resolución de nombres;
  • Autenticación, equilibrio de carga, mecanismos de escalado, sondeos.

De todos modos, parece un poco enorme, ¿no? Esa es una de las famosas estafas de Kubernetes que asustan a los desarrolladores o empresas que comienzan a pensar que es solo para grandes empresas internacionales. O tienes que ser muy rico para usar este tipo de herramienta.

Bueno, para ser honesto, una de las desventajas ocultas de Kubernetes es que la disponibilidad de una herramienta completa puede resultar un poco cara. Sin embargo, además de los beneficios de Kubernetes para los clientes corporativos, vale la pena invertir en estos gastos.

Cuando pruebas los famosos K8, notarás la diferencia de utilizar las ventajas de Kubernetes de inmediato, como la escalabilidad, por ejemplo. Como desarrollador, puedes empezar a usar Kubernetes instalándolo en cuestión de segundos y ejecutando microdespliegues de k8s como «minikube» o «kind» en tu propio portátil sobre Docker. Como empresa, puede ejecutar un clúster de Kubernetes en sus propias instalaciones con filas de racks reforzadas con potentes servidores de hasta 5000 nodos por clúster.

¿Sabes qué beneficios de usar Kubernetes se derivan de la escalabilidad? Su inicio rápido y sus funciones multiplataforma. Las describiremos con más detalle y, a continuación, analizaremos los beneficios empresariales de Kubernetes.

¿Qué necesitaría realmente además de su infraestructura k8s?

Para un caso de producción, querrás que tu implementación de Kubernetes esté madura y que sea fácil de administrar y solucionar problemas. Es probable que esto incluya aspectos como la supervisión, el registro, la mejora de la seguridad y las copias de seguridad. Hay una gran cantidad de soluciones disponibles, lo que quizás sea uno de los principales beneficios de Kubernetes y Docker.

Esta es una lista de algunas de las principales tecnologías de código abierto para complementar su implementación de k8s:

  • Monitorización (Prometheus/Grafana);
  • Registro (Elasticsearch stack);
  • Gestión de certificados (administrador de certificados con certificados Let's Encrypt automatizados);
  • Proxy inverso y equilibrio de carga (Nginx).

Con todo esto preparado, tienes una infraestructura meticulosamente diseñada que aprovecha todos los beneficios de Kubernetes. Pero para ser más objetivos, sabemos cómo describir todas las desventajas de Kubernetes, ya que Dysnix lleva trabajando con él desde 2016.

Pasemos a nuestra parte sin servidor, donde revisaremos los detalles esenciales sobre Serverless, especialmente las desventajas de Serverless y los beneficios de Serverless.

Más información sobre la tecnología sin servidor

Serverless es un modelo de ejecución de computación en la nube en el que un proveedor le permite usar sus capacidades para un tiempo de ejecución y asigna los recursos de la máquina a pedido, ocupándose de toda la administración en lugar de usted. Esa es una de las enormes ventajas de la tecnología Serverless. Serverless apuesta por un enfoque arquitectónico nativo de la nube para desarrollar, crear y ejecutar sus aplicaciones. Además, prácticamente elimina la necesidad de operaciones (todo teniendo en cuenta la parte operativa) del paradigma de DevOps.

La tecnología sin servidor a los ojos del desarrollador tiene el siguiente aspecto:

  • Implementar las funciones del núcleo como microservicios;
  • Vincularlos con todos los servicios de proveedores y en la nube necesarios, como las integraciones de terceros;
  • Administrar y sincronizar todo junto en función de los eventos.

La tecnología sin servidor en forma de plataforma de funciones como servicio (FPaaS) existe desde hace mucho tiempo. Sin embargo, no fue hasta 2014, cuando Amazon anunció su servicio AWS Lambda, que obtuvo un verdadero éxito y una aceptación generalizada por parte de desarrolladores y empresas. Entre los grandes profesionales de Serverless también se puede mencionar que ganó una rápida popularidad y un gran aprecio entre los desarrolladores. No llegó en un solo día, sino que AWS desarrolló una amplia gama de servicios similares, como Amazon Elastic Compute Cloud, Simple Storage Service y el Simple Notification Service (SNS) de Amazon, por nombrar algunos. Al ampliar su funcionalidad, los desarrolladores ampliaron sus posibilidades de crear servicios sencillos, mientras que AWS se preocupa por la supervisión de los procesos, el registro de los eventos y el escalado de la capacidad informática. De aquí provienen todos los profesionales de AWS lambda. Esta estrategia funciona bien para las aplicaciones web, donde el tráfico puede fluctuar en un amplio rango y generar muchos picos, lo que resulta realmente difícil de gestionar para una persona. La FPaaS le ayuda a superar este desafío mediante el escalado automático de la potencia informática y la configuración básica de la configuración.

De acuerdo con Gartner, la proporción de empresas que ejecutan sus aplicaciones en FPaaS pasará del 20% en 2020 al 50% en 2025.

Pero volvamos al grano, hablando de las ventajas y desventajas de AWS lambda, veamos qué desventajas de AWS lambda podemos recordar. Echemos un vistazo más de cerca a la estructura de la FPaaS y veremos cómo funcionan.

Typical Serverless Web Application
Aplicación web sin servidor típica
  1. Empaque su solicitud y prepárela para la migración.
  2. Súbelo a la nube y paga solo por la solicitud.
  3. Reacciona a los eventos para realizar acciones gracias a las colas de SNS.

Desde el punto de vista empresarial, no hay de qué preocuparse: si nadie usa tu aplicación, no pagarás por almacenarla en la nube. Si tu tráfico aumenta de forma significativa, todo se escalará automáticamente. Ambas funciones reducen los costos. ¡Impresionante! ¿Qué más se puede decir sobre los pros y los contras de Serverless?

Y aquí hay un punto en el que los estafadores de Serverless contraatacan, ya que en un momento mágico puede darse cuenta de que su proveedor de nube no cumple con los servicios de terceros que necesita. Azure, GCP o AWS son famosos por sus servicios en la nube, pero en el paquete de integraciones encontrarás diferentes tipos de servicios. Se podría decir que es una cuestión de elección, no de ventajas y desventajas de la tecnología sin servidor, pero si ninguno de los proveedores tiene el paquete ideal, ¿abandonaría una parte de la funcionalidad de su aplicación para convertirla en una aplicación sin servidor? ¿Y si te haces una idea de cómo salir de la nube? Sigue siendo un quebradero de cabeza para los desarrolladores y para toda la infraestructura.

Por lo tanto, los proveedores hacen todo lo posible para integrar las soluciones de FPaaS que ofrecen en su ecosistema de todos los tipos de productos que ofrecen. Y la mayoría de las veces, todo lo que necesita es elegir un conjunto de servicios gestionados que necesita su aplicación y dejar que su código se conecte a ellos mediante bibliotecas que, por lo general, están bien documentadas y desarrolladas, proporcionadas por el proveedor de la FPaaS.

Para endulzar la olla, lo único de lo que tienes que preocuparte con Serverless es:

  • Plataforma de ejecución para elegir (difiere según la FPaaS);
  • Integración con los demás servicios de un proveedor de FPaaS.

Y si encuentra una que se pueda aplicar a su aplicación y compara dos veces todas las ventajas y desventajas de la arquitectura sin servidor, tenemos algunas recomendaciones más para mejorar el uso de la nube de su aplicación.

Una de las tecnologías más populares para complementar su experiencia de desarrollo e implementación en los tres principales proveedores de nube (no solo) es un marco sin servidor. Cada proveedor de servicios en la nube le ofrecería una caja de herramientas determinada para ejecutar las acciones más importantes:

  • Configure y vincule sus funciones con entradas y salidas (clientes/servicios) que activarían las funciones y utilizarían el resultado;
  • Gestione las integraciones de terceros con las API;
  • Supervise los eventos y los cambios de tráfico;
  • Gestione sus secretos de autenticación digital;
  • Registrar los estados de la aplicación;
  • Edita y actualiza tu código, etc.

En resumen, la ventaja más atractiva de la tecnología sin servidor es un modelo simple de «pago por uso» y una gran escalabilidad. Cada vez es más popular porque los proveedores de servicios en la nube han agregado muchas tecnologías a sus sistemas de integraciones y han minimizado la parte operativa de la administración de aplicaciones. Sin embargo, algunos casos y escenarios no se pueden implementar en Serverless.

Eso es prácticamente todo lo que podríamos mencionar brevemente sobre las ventajas y desventajas de la arquitectura sin servidor, y estamos listos para comenzar la comparación directa de ambas tecnologías.

Continúe con la segunda parte de la investigación de Kubernetes contra Serverless de Dysnix.

__wf_reserved_heredar
Alex Ivanov
Senior DevOps at Dysnix
Specialized in Kubernetes, infrastructure optimization, traveling, and compliments.
Tabla de contenido
Artículos relacionados
Suscríbete al blog
La mejor fuente de información para el servicio al cliente, consejos de ventas, guías y mejores prácticas de la industria. Únase a nosotros.
Gracias por suscribirte al blog de Dysnix
Ahora serás el primero en enterarte cuando publiquemos un nuevo post
Lo tengo
¡Uy! Algo salió mal al enviar el formulario.
__wf_reserved_heredar
Copiado al portapapeles
Pégalo donde quieras