Episodio #4: ¿K8s on-prem o en nube pública?

Published: Mar 4, 2020 by

En este episodio nos tomamos a la tarea de discutir acerca de ¿qué es mejor? ¿k8s on-prem o en nube pública? La realidad que no todo es blanco, no todo es negro, hay una escala de grises en este tema y es importante saber en qué escala nos encontramos.

Y bueno, entonces, ¿qué uso?

Si tienes la necesidad específica de: Resguardar tus datos dentro del país por leyes que te acorralan No exponer tus aplicaciones a la humanidad Estás atado por protocolos legales Estás en medio de un proyecto de innovación, ciencia, brujería, magia negra

Entonces, piensa un poco mejor antes de usar kubernetes en cloud público porque es muy probable que no pueda satisfacer tus necesidades.

Considerando lo anterior, todo lo demás puede ir en un cluster de kubernetes en cloud público.

¿Por qué usar kubernetes en cloud público? Te ahorras costo de soporte, mantenimiento y operación de alto nivel. Es el resumen.

¿Qué tomar en cuenta para saber si uso kubernetes on-prem o público?

Recuerden que los más importante para tomar la decisión de qué kubernetes usar, si on-prem o cloud, y siendo cloud, ¿en qué cloud? Se basa en 2 puntos principales.

  1. Recursos
  2. Requerimientos

Cuando hablamos de recursos nos referimos a:

  1. Cómputo
  2. Red
  3. Storage
  4. Tiempo
  5. Recursos humanos
  6. Financiamiento

Cuando hablamos de requerimientos nos referimos a:

  1. Fecha de entrega
  2. Performance
  3. Concurrencia
  4. Arquitectura
  5. Diseño
  6. Especificaciones custom
  7. Protocolos, leyes, definiciones, etc…

Una vez que tienes claro tus requerimientos y el presupuesto que tienes para cumplirlos tendrás en claro la decisión que debes tomar.

Pero más importante aún, es que sepas si necesitas realmente kubernetes para ello te aconsejamos que pienses en estas 3 maneras de usar kubernetes y determines si alguna realmente te hace sentido como solución a parte de tus problemas.

Un framework para la infraestructura

Antes de que tuviéramos kubernetes las aplicaciones vivian apegadas a la infraestructura inmediata sobre la que corrían, por lo que las migraciones causaban problemas a los equipos, problemas que representaban pérdida de recursos y por lo tanto dinero. Cuándo kubernetes apareció se convirtió de inmediato en la solución para quitar ese problema del medio, se convirtió en un framework para infraestructura, que estandarizó una manera en la que todas las aplicaciones contenerizadas podían ser ejecutadas, exponerse y orquestadas.

Partiendo de la idea de que kubernetes es un framework, podemos hacer la analogía de ¿cómo elegimos un framework para una aplicación? Y de esta manera determinar si realmente necesitamos un framework para esto o si sólo necesitamos un script, sin complicaciones.

Despliegue y actualización de software

Kubernetes puede ser una herramienta bastante poderosa para implementar un ciclo de integración y liberación de software a grande escala. En este uso lo que buscamos es ser ágiles al momento de integrar y liberar software, bajo estándares ya pre-establecidos, con procedimientos claros y tareas repetitivas, dónde podemos prescindir en un 60% de la actividad humana.

  • Con kubernetes tenemos:
  • Escalabilidad
  • Visibilidad
  • Control de versiones
  • Ahorro de tiempos de operación para despliegue
  • Rollbacks sencillos
  • Canary Deployments
  • Escalamiento horizontal

Todo esto de manera, rápida y sencilla, pero ojo esta fluidez se dará siempre y cuando nuestras aplicaciones sean compatibles con los procesos que hemos definido, por ejemplo no podemos hacer uso de las réplicas y esperar que al caerse un pod la sesión de la aplicación persista o los procesos que quedaron pendientes se retomen mágicamente, para que eso pase se debió pensar durante el diseño de la aplicación.

Cloud Native Apps - Landscape

Kubernetes es parte de la Cloud Native Foundation y tiene un landscape bastante amplio, con soluciones a todos los niveles, storage, red, CI/CD, proxy, deployments, etc… toda esta gama de herramientas y opciones, es una clara muestra de todas las posibles combinaciones que podemos tener en nuestra implementación de kubernetes y por lo tanto si se toman el tiempo de revisar las múltiples opciones, justo aquí : https://landscape.cncf.io/ preguntense ¿Que necesito de cada sección? ¿Lo tienes claro? Es probable que no y la siguiente pregunta sería ¿Me puedo arriesgar a experimentar? Y dependiendo de esa respuesta sabrás si usar kubernetes es para ti o no. Es fácil manejar Cloud Native Apps en kubernetes porque nacieron juntos, con conceptos base de ya muchos años pero con nuevas necesidades, por las nuevas herramientas y desarrollos han creado nuevos problemas que toda esta gama de herramientas del landscape puede solventar.

¿Eres este tipo de aplicación? Usa kubernetes.

Referencias:

  • https://www.amazon.com/Cloud-Native-DevOps-Kubernetes-Applications/dp/1492040762
  • https://www.infoworld.com/article/3173266/4-reasons-you-should-use-kubernetes.html
  • https://hackernoon.com/why-and-when-you-should-use-kubernetes-8b50915d97d8
  • https://landscape.cncf.io/