Ir a

El futuro de la infraestructura se alojará en contenedores

Las empresas de tecnología y startups están incorporando rápidamente plataformas de contenedores administradas que les permiten dedicar menos recursos de ingeniería al mantenimiento de la infraestructura y más recursos a las prioridades de la hoja de ruta que impulsan resultados empresariales, como el crecimiento, la ventaja competitiva y el aumento de la rentabilidad.

Cómo puedes reducir la administración de la infraestructura para acelerar la salida al mercado

Si bien en la actualidad la mayoría de las empresas y startups de tecnología ejecutan sus servicios en la nube, muchas todavía no se dan cuenta de los beneficios que obtienen con esto. Si estás en la nube, pero no en Kubernetes, es posible que estés aprovechando soluciones propias mientras compilas y mantienes tus propias herramientas personalizadas complementarias. Tampoco estás aprovechando la eficiencia cuando ejecutas tus propias cargas de trabajo en máquinas virtuales (VM) sin aprovechar todo su potencial y, posiblemente, te limita. 

¿Cuántas herramientas utilizas hoy para administrar y aplicar parches a tus VM? ¿Cómo actualiza sus aplicaciones? ¿Cómo es tu utilización de VM? Es posible que tus herramientas actuales no sean tan eficientes. Se producen problemas (de escalabilidad o con interrupciones, etc.) provocados por debilidades en tu arquitectura de VM, los costos aumentan sin control o tu infraestructura no está preparada para soportar muchas de las actividades que quiere realizar en tu empresa, como las siguientes:

  • Refactorizar o rediseñar la arquitectura de un MVP para crear una solución escalable
  • Expandirse hacia proveedores de servicios en la nube adicionales para cumplir con las expectativas regulatorias o de los clientes
  • Expandirse geográficamente para reducir la latencia y entregarle mejores experiencias a la base global de clientes
  • Mejorar su postura de seguridad de extremo a extremo
  • Mejorar la experiencia del cliente (p. ej., la disponibilidad del servicio)

Los elementos heredados y la deuda técnica pueden ser una demora. Es por eso que estamos presenciando este cambio masivo a Kubernetes. Una arquitectura moderna compuesta por contenedores administrados que te brinda acceso a patrones comprobados para ejecutar una infraestructura confiable y segura. Puedes acelerar tu tiempo de salida al mercado y aumentar tu productividad, sin sacrificar la estabilidad y seguridad. Además, tienes la ventaja adicional de que puede ayudarte a convocar a los mejores talentos técnicos para trabajar en la innovación.

Por otra parte, es importante que no te quedes fuera de la comunidad de Kubernetes y del ecosistema que la rodea, cuya innovación estable define los estándares y las prácticas recomendadas de la industria en la actualidad. En definitiva, y esto es aún más importante si se tienen en cuenta los desafíos actuales a la hora de contratar personal, debes decidir a qué prefieres que dediquen su tiempo los ingenieros: al mantenimiento de la infraestructura y a la creación y el mantenimiento de herramientas personalizadas, o a cumplir con su lista de prioridades para que tu empresa progrese. Es posible que tu método actual funcione, pero, quizás, tu hoja de ruta incluye tareas que preferirías que no incluyera, como saldar la deuda técnica y llenar los vacíos en la plataforma:

  • Encriptación de extremo a extremo
  • Observabilidad (registros, métricas, registros automáticos)
  • Administración y aplicación de políticas
  • Alta disponibilidad y respaldo automático
  • Reducción de costos

Kubernetes es de código abierto y no depende de ninguna plataforma, además ofrece desde el primer momento todas las herramientas necesarias para proteger y acelerar cada etapa del ciclo de vida desde su creación hasta la implementación. Es la suma de todas las secuencias de comandos de Bash y las prácticas recomendadas que la mayoría de los administradores de sistemas redactan con el paso del tiempo, presentado como un solo sistema detrás de un conjunto declarativo de API. Todo está automatizado, los detalles están ocultos y está listo para usarse. Kubernetes puede eliminar la gran mayoría de la infraestructura como código mientras cambias tu plataforma por una infraestructura como datos. No tienes que escribir ni mantener el código, solo debes decirle a Kubernetes lo que quieres hacer, no qué hacer. Esto ahorra muchísimo tiempo en lo que respecta a la sobrecarga de la administración. 

Los contenedores son la mejor manera de aprovechar el continuo del procesamiento

Si deseas ejecutar cargas de trabajo tradicionales, puedes hacerlo en una plataforma moderna con Kubernetes, si separas las apps de las VMs y las distribuyes en contenedores. Adoptar imágenes de contenedores para empaquetar tu software facilitará las actualizaciones de tus VMs. Actualmente, se puede separar la administración del ciclo de vida de la VM y la administración del ciclo de vida de la aplicación, lo que simplifica la VM tras quitar todo, como Ruby, Python y Java. Y si se traslada a donde debe estar, junto a la aplicación del desarrollador, puedes controlar todo en un solo lugar y mantener las máquinas de equipos físicos.

Las plataformas de computación administradas convierten los servicios en la nube en plataformas como servicio, lo que te ofrece el poder y la flexibilidad de los contenedores con la conveniencia de no requerir servidores. No hay servidor, ni configuración de clústeres, ni mantenimiento, lo que significa que puedes disfrutar de un enorme beneficio mientras mantienes el control.

Para las cargas de trabajo que no requieren mucho control de la configuración del clúster, puedes optar por dejar que tus servicios aprovisionen y administren la infraestructura subyacente del clúster, incluidos los nodos y los grupos de nodos, mientras solo pagas por la carga de trabajo, no por el clúster. De este modo, se puede eliminar la administración del clúster al mismo tiempo que se optimiza la seguridad y se ahorra una cantidad de dinero potencialmente importante.

Para las aplicaciones más nativas de la nube, la tecnología sin servidores hace lo mismo con menos trabajo, ya que elimina la infraestructura subyacente y sirve como host de extremo a extremo para tus aplicaciones, datos y hasta análisis. Una plataforma sin servidores te permitirá comenzar a ejecutar contenedores en un entorno completamente administrado con una complejidad mínima y la integración de seguridad, rendimiento, escalabilidad y prácticas recomendadas.

Analicemos las posibles implicaciones para tu empresa y cómo puedes mantener tu organización a la vanguardia en términos de eficiencia.

Por qué considerar los servicios administrados a partir de estándares abiertos

Algunas empresas consideran necesario operar en múltiples nubes. La gravedad de datos es real, y si tienes una base de clientes global, inevitablemente te encontrarás prestando servicios a clientes que quieren minimizar la latencia y las tarifas de red manteniendo su sistema informático cerca de donde se encuentran realmente sus datos.

En tales casos, las múltiples nubes pueden ampliar tu mercado objetivo. De cualquier manera, acabarás prestando asistencia a servicios administrados y a datos de otros proveedores. Otras empresas consideran las múltiples nubes como una estrategia de mitigación de riesgos. En cualquiera de las dos situaciones, la clave es adoptar correctamente las múltiples nubes, para lo cual pueden ayudar las soluciones estándar de la industria.

Primero: Asegúrate de poder reutilizar la mayor cantidad posible de tus flujos de trabajo para cumplir con las tareas.. Por flujos de trabajo, nos referimos a habilitar la automatización de tareas para crear la arquitectura de flujo de datos entre la base de datos y el procesamiento. En este punto es importante el código abierto; si seleccionas una base de datos que no sea abierta, tendrás dificultades para implementar la arquitectura de flujo de datos y la automatización. Te recomendamos optar por una opción como el protocolo Postgres (p. ej., Cloud Spanner) o una base de datos administrada de Postgres (p. ej., Cloud SQL) en cualquier proveedor de servicios en la nube.

Segundo: En cuanto al procesamiento, Kubernetes ahorra un tiempo considerable en las implementaciones y la automatización, por lo que cuando elijas un conjunto de tecnologías, asegúrate de que funcionen en los límites establecidos por tu proveedor. Los límites pueden ser diferentes regiones o zonas, proyectos o cuentas distintos, o incluso modalidades locales o en la nube. No pierdas tiempo construyendo y manteniendo infraestructuras separadas dirigidas a cada proveedor de servicios en la nube (p. ej., una para AWS, otra para Google y otra para Azure), de esta forma, tus ingenieros terminarán agotados tratando de mantenerlas a la par. Si construyes solo una infraestructura y la implementas en múltiples nubes, cuando necesites hacer actualizaciones, podrás realizarlas de forma centralizada y coherente. Las pilas de procesamiento como Kubernetes ofrecen una gran ventaja a los clientes que se toman en serio la creación de múltiples nubes de una manera eficiente y que no requiere volver a inventar la rueda cada vez que se desee incorporar un nuevo proveedor de servicios en la nube.

Tercero: Administración de los riesgos. Tener la capacidad de ejecutar tu pila en otro entorno ayudará a mitigar el riesgo de que tu proveedor de servicios en la nube falle o comience a competir con tu empresa. Para cumplir con los reglamentos, las organizaciones elegirán proveedores que garanticen la continuidad de su negocio. Por ejemplo, si fallan las operaciones en una región, no experimentarás ningún tiempo de inactividad con un proveedor de respaldo.

Las migraciones a múltiples nubes que suelen funcionar bien son las que aprovechan los estándares abiertos. Por ejemplo, considera a Kubernetes, que ofrece una API independiente del proveedor tanto para ejecutar aplicaciones como para configurarlas y también implementarlas, además de integrar aspectos como las políticas de seguridad, las redes y mucho más. Considera a Kubernetes como un sistema operativo de múltiples nubes; una vez que se convierte en tu capa de abstracción, normalmente puedes ocultar las diferencias entre la mayoría de los principales proveedores de servicios en la nube.

Reduzca la sobrecarga operativa con una administración completa

Cuando decide utilizar Kubernetes, tiene muchas opciones. Sin duda, tú puedes ejecutarlo; Kubernetes es un proyecto de código abierto, por lo que es posible descargarlo y pasar años integrándolo en tu proveedor de servicios en la nube o en tu entorno preferido.

Pero si consideras que este método no supone el mejor uso de tu tiempo, puedes optar por una oferta de Kubernetes administrado. Si estás trabajando con AWS, correspondería el servicio de EKS. Si usa Azure, sería AKS. Y si prefieres Google Cloud, contaría con Google Kubernetes Engine (GKE). Todas esas opciones te proporcionarán una API de Kubernetes común, de modo que cuando tu equipo desarrolle sus herramientas y flujos de trabajo podrás volver a utilizarlos en varios proveedores.

Pero no todas las ofertas de servicios administrados son iguales. El provecho que puedes sacarle a Kubernetes depende de la infraestructura en la que lo ejecutas. GKE llena los vacíos como servicio de organización de Kubernetes maduro y completamente administrado. Ofrece un IaaS totalmente integrado que va desde el aprovisionamiento de VM Tau, con una relación precio-rendimiento de un 42% mejor que la de otras ofertas comparables de uso general,1 ajuste de escala automático en múltiples zonas y actualizaciones, hasta la creación y administración de GPU, TPU para aprendizaje automático, volúmenes de almacenamiento y credenciales de seguridad a petición. Todo lo que tienes que hacer es ubicar tu aplicación en un contenedor y elegir un sistema en función de tus necesidades.

¿Qué pasa si eligió AWS como su proveedor de servicios en la nube para las VM? ¿Debe seguir con EKS? En general, Kubernetes es igual en todos los proveedores de servicios en la nube, lo que significa que terminarás usando la API de Kubernetes. Sin embargo, detrás de esa API hay un clúster, nodos trabajadores, políticas de seguridad y todo lo necesario, y es en este punto donde destaca GKE.

Por ejemplo, si todavía necesitas esos otros clústeres, puedes conectarlos a GKE Connect, lo que te permitirá disponer de un único lugar para administrarlos, verlos, solucionar problemas y depurarlos todos, al tiempo que administras de forma centralizada asuntos como las credenciales. GKE es el mejor Kubernetes de su clase por su capacidad de administración integral, no solo por su plano de control o su alta disponibilidad en varias regiones o zonas. GKE también puede beneficiarse de los balanceadores de cargas globales mediante el Ingress de varios clústeres administrado centralmente a través de múltiples clústeres y regiones.

¿Qué pasa si deseas usar la API de Kubernetes, pero no quieres lidiar con la responsabilidad de aprovisionar, escalar ni actualizar los clústeres? Para la mayoría de las cargas de trabajo, Autopilot de GKE simplifica la infraestructura subyacente del clúster, incluidos los nodos y los grupos de nodos, y solo debes pagar por la carga de trabajo. Autopilot de GKE te ofrece la API estándar de Kubernetes con todos los valores predeterminados de seguridad, para que puedas enfocarte en tus cargas de trabajo y no en el clúster.

__________________________

1Los resultados se basan en la ejecución estimada SPECrate®2017_int_base en VM de producción de otros dos proveedores líderes en la nube y en VM Tau de Google Cloud en preproducción con compiladores recomendados por el proveedor. SPECrate es una marca de Standard Performance Evaluation Corporation. Más información disponible en www.spec.org.

Simplifique la entrega de apps sin servidores

Kubernetes trasladó las organizaciones de las VMs a un nuevo conjunto de abstracciones que te permiten automatizar operaciones y enfocarte en las aplicaciones. Sin embargo, si se trata de cargas de trabajo más específicas (p. ej., apps web y para dispositivos móviles, backend de API de REST, procesamiento de datos, automatización del flujo de trabajo), puedes simplificar aún más y optimizar tu implementación aprovechando el modelo sin servidores.

Puede ser que estés usando AWS Lambda, una popular plataforma sin servidores que te permite escribir funciones como servicio y conectarlas a todo tipo de eventos. Sin embargo, como terminas conectándote a una base de datos y manejando asuntos de seguridad, estas funciones tienden a crecer en complejidad, y algunas incluso son más grandes que las aplicaciones normales. Entonces, ¿qué sucede cuando se tiene una aplicación que supera la simplicidad de una función como servicio, o una aplicación existente que se quiere ejecutar sin servidores?

A diferencia de una plataforma tradicional sin servidores que requiere que vuelvas a escribir sus aplicaciones, Cloud Run ofrece un enfoque que ayuda a reutilizar tus inversiones existentes en aplicaciones alojadas en contenedores. Aunque GKE es un servicio administrado, aún deberás tomar algunas decisiones clave, como en qué zonas ejecutarlo, dónde se almacenan los registros, cómo administrar el tráfico entre las diferentes versiones de las aplicaciones, los nombres de dominio registrados o la administración de los certificados SSL.

Cloud Run evita todas esas decisiones, ya que te permite ejecutar cargas de trabajo más tradicionales y prevenir los inicios en frío inhabilitando por completo la reducción de escala a cero. Si tus aplicaciones se deben ejecutar siempre, Cloud Run también es compatible con eso, junto con otros requisitos tradicionales como NFS, integraciones de VPC y WebSockets. Pero al igual que la mayoría de las plataformas tradicionales sin servidores, Cloud Run está bien definido y ofrece características como la administración de tráfico integrada y el ajuste de escala automático.

Cómo aprovechar al máximo el presupuesto de migración

Estudie su lógica de migración

Supongamos que no utilizas contenedores en absoluto y te preguntas cómo empezar. Este es el enfoque pragmático para adoptar la creación de contenedores.

La primera razón para adoptar contenedores es resolver el problema del empaquetado. En la actualidad, se está trabajando bastante en la producción de artefactos reproducibles y en la comprensión de lo que hay realmente dentro de nuestro software, o, como lo llama la industria, la “cadena de suministro de software seguro”. Creemos que una forma ideal de hacerlo es aprovechar las imágenes de contenedor que contienen el código y los entornos de ejecución de tus aplicaciones y sus dependencias. Uno de los beneficios de los contenedores es que se pueden implementar en las VM, lo que reduce la complejidad de la implementación y el mantenimiento del software en las máquinas.

El segundo motivo para adoptar contenedores es la organización. La administración de las VMs conlleva toneladas de gastos de administración y mantenimiento. Si tu empresa es como la mayoría, tu equipo realiza decenas o cientos de pasos para administrar la infraestructura, incluso si esos pasos están automatizados, las herramientas de automatización seguirán requiriendo un mantenimiento continuo. Todo ello, asumiendo que se utilicen herramientas de automatización estándar de la industria, como Terraform, Puppet, Chef y Ansible. La sobrecarga de mantenimiento es aún peor para las herramientas de fabricación propia o personalizadas.

El tercer motivo para adoptar contenedores es la eficiencia. Además de la carga de mantenimiento, la mayoría de las organizaciones solo alcanzan entre un 5% y un 10% del uso de CPU, sin mencionar la memoria y el almacenamiento lo que representa una gran pérdida de recursos. Muchos equipos están creando herramientas incluso más personalizadas para cerrar esta brecha, e implementando procesos como el ajuste de escala automático y la compresión eficaz, lo cual hace que se desperdicie más tiempo operativo. Esto provoca que se gaste más de lo que se debería y que la factura por los servicios en la nube sea sorprendentemente alta.

Muy pocas organizaciones son capaces de construir con éxito su propia plataforma de organización, por lo que aprovechar una plataforma de código abierto como Kubernetes, Mesos o Nomad es una opción habitual. Ahora bien, si deseas una plataforma con la que obtengas beneficios, como la reducción del mantenimiento, la aplicación de las prácticas recomendadas estándar de la industria y una sólida integración en el resto de tu proveedor de servicios en la nube, te conviene optar por un servicio administrado, como GKE, para maximizar el valor potencial de tus contenedores.

Conceptos básicos para una buena migración

En este punto, es posible que te preguntes lo siguiente: ¿la migración a contenedores supone realmente mucho tiempo de inactividad sin ningún valor? Lo último quieres hacer es detener el desarrollo futuro, ¿verdad?

Para responder a esto, vamos a revisar cómo hacerlo correctamente, de forma que aproveches tu experiencia en la nube obtenida hasta la fecha.

Puede parecer difícil migrar las aplicaciones de las VM a los contenedores, sobre todo si implica trasladar las operaciones de procesamiento a un nuevo proveedor de servicios en la nube. Pero la realidad es que no tienes que hacerlo todo de una vez; puedes empezar con una aplicación a la vez, comenzando con las VM y moviendo una o dos aplicaciones a Kubernetes, donde pueden coexistir en la misma red y comunicarse con las VM. No tienes que embarcarte en una transición de principio a fin; puedes ir moviéndote poco a poco de una plataforma a otra.

Continuar con las VM puede ser útil para algunas apps, como las bases de datos grandes y pesadas que se benefician poco de Kubernetes. Y eso está bien, no hay problema en mezclar y combinar. No obstante, lo que observamos es que la mayoría de los clientes se benefician mucho con el traslado de sus aplicaciones y proyectos de código abierto al entorno de Kubernetes. Prioriza las aplicaciones con las que obtendrás un mayor rendimiento cuando las pases a GKE, no tienes que trasladar todo a la vez.

Kubernetes continúa ejecutándose sobre las mismas VMs de Linux que probablemente estás utilizando hoy en día. Lo que realmente se logra es un flujo de trabajo más racionalizado y coherente que incorpora muchos elementos que deberían incluirse en la hoja de ruta de la infraestructura, en lugar de lo que podría ser una colección de secuencias de comandos y automatizaciones de producción propia. La integración de nuevos miembros al equipo también resulta mucho más fácil cuando se utiliza una herramienta estándar de la industria como Kubernetes, en lugar de tener que enseñarles todos los métodos personalizados que utiliza tu empresa.

A partir de aquí, dispones de una ruta para adoptar contenedores de forma pausada, pero pragmática, lo que permite ahorrar tiempo a tu equipo en términos de sobrecarga administrativa, a la vez que ahorras dinero a tu empresa en costos de procesamiento.

¿Deseas dar el siguiente paso?

Migra, innova y crece

Hablamos bastante sobre los contenedores y las migraciones a la nube, ya sea que estés totalmente enfocado en Kubernetes y busques una mejor oferta, o que necesites un enfoque diferente que se adapte a tus aplicaciones existentes y a tu hoja de ruta.

Cualquiera que sea tu ruta de desarrollo de apps, la opción de contenedores administrados minimiza tus costos de infraestructura al mismo tiempo que maximiza la capacidad de tu equipo para enfocarte en desarrollar grandes productos. El futuro de la infraestructura es la creación de contenedores. Es el momento de asegurarte de que tus ingenieros y tu empresa están preparados para alcanzar el mayor éxito posible.

¿Te sientes inspirado? Trabajemos juntos para abordar tus desafíos.

Descubre cómo Google Cloud puede ayudarte a aprovechar al máximo el proceso de tus apps modernas.
Hable con un experto
Google Cloud Next '21: Presentamos Autopilot en Google Kubernetes Engine
Mirar el seminario en línea

Completa el formulario, y nos comunicaremos contigo. Ver formulario