Vamos a la nube. Cómo?

Vamos a la nube. Cómo?

De que manera las empresas adoptan el cloud? Concepto de plataform engineer

Introducción

El cloud se expande año a año y continuará de ese modo, creo que de eso no hay duda al respecto. El inconveniente es que el mundo cloud tiene, como todo, sus cosas buenas pero también sus cosas no tan buenas.

Por un lado comenzamos a dividirnos la responsabilidad de gestión de la infraestructura y servicios que brindamos, ya que si venimos del onpremise la responsabilidad era 100% nuestra. Por otro lado debemos tomar con cuidado de que manera configuramos los servicios, montamos las redes, manejamos la seguridad porque la información que antes vivía en un disco en el rincón mas oscuro de nuestro datacenter ahora por una mala configuración puede quedar en manos de cualquiera.

En este artículo voy a poner en palabras mi experiencia en cuanto al modo en el que las empresas hacen su llegada a la tecnología cloud. He tenido la suerte de trabajar en varias fintech y algunas startups por lo que tengo un abanico de escenarios que creo pueden ser de ayuda para quién tenga que comenzar a tomar desiciones de como empezar el camino cloud.

Comenzamos el viaje?

Porqué ir al cloud?

Lo primero que debemos preguntarnos es, porqué debemos ir al cloud?.

En muchos casos noto que esto no esta del todo claro y la verdad es que es fundamental comprender porqué nuestra empresa quiere ir hacia tecnologías cloud, es fundamental que todos los líderes (C level y hacia abajo) tengan esto claro porque será necesario luego que este concepto sea bajado al resto de la organización de una manera efectiva y con un objetivo y roadmap claro para poder contagiar a las personas en que es necesario cambiar el modo en el que se están haciendo las cosas.

El echo de ir a la nube simplemente porque todos lo hacen no tiene sentido, si no viene con mucho valor agregado para nuestros clientes.

Por esto considero que todas las empresas deben verificar si realmente lo que necesitan resolver requiere el uso de tecnología cloud. De mas esta decir que este comentario se refiere mas que nada a empresas con inversiones en on premise para las cuales no es trivial comenzar con la nube.

Si vamos a iniciar de 0 o tenemos solo unos servidores en nuestro on premise sin dudas nos vamos para la nube desde mi punto de vista.

Una vez resuelta esta parte les cuento la que para mi es la mayor ventaja de las tecnologías cloud Poder equivocarnos rápido y barato. Esta frase me encanta porque viene muy ligada a uno de mis libros favoritos: El método lean startup de Eric Ries, que implica entre muchas otras cosas poder contruir, medir y aprender lo más rápido posible!

Cómo vamos a la nube?

Aquí comienzan nuevamente los problemas, ya que hay tantas maneras como empresas existen en la faz de la tierra. Intentaré agruparlas en 3 grupos que creo cubren la mayoría de los casos de uso por lo menos que he visto.

A lo macho! (perdón por el lenguaje técnico)

En búsqueda de mayor agilidad en la entrega de software dentro de la empresa sale la idea, vamos a la nube!.

En el mejor de los casos se habla con uno de los proveedores (GCP, azure, GCP) con algún tipo de acuerdo para contratar los servicios, algo de soporte y arrancamos.

El paso siguiente es obtener credenciales de acceso a las cuentas, darnos vuelta con los equipos de desarrollo y decirles: "Chicos acá tienen las credenciales, muchos éxitos"

image.png

Luego de un tiempo indefectiblemente nos encontramos con muchísimos problemas

  • Credenciales desparramadas por todos lados
  • Ningún tipo de estandarización sobre la infraestructura desplegada, lo que la hace inadministrable
  • Casi imposible replicar un ambiente
  • Problemas de seguridad por doquier

Si tenemos algo de suerte puede existir algunas divisiones creadas con obligación, infraestructura, seguridad, devops, etc... Por lo general en este punto las dependencias entre estos equipos son muchas, se necesita un pedido para cambiar algo en la infraestructura que tiene que realizar el equipo correspondiente sin el contexto indicado, un nuevo deploy implica que devops lo ejecute sin saber ni siquiera que hace eso que esta desplegando, 5 minutos antes de salir a producción consultamos a los equipos de seguridad si todo lo que desarrollamos y tenemos montado en los últimos 4 meses es correcto, y más...

Claramente este modo no me agrada mucho :)

Plataforma, como me gusta esta palabra

Este segundo camino, muy acertado desde mi experiencia, implica muchos cambios al momento de pensar nuestro camino a la nube pero que termina poniento una plataforma entre los equipos de desarrollo y la nube, con su equipo encargado de construirla y mantenerla. (Más alla del equipo, estas plataformas son de todos. Todos los equipos deben aportar para que funcione y mejore día a día)

image.png

El concepto principal es brindar a los equipos de desarrollo por un lado una forma estandard de comunicarse con el cloud.

Entre otras cosas esta plataforma responderá estas preguntas:

  • Cómo acceden los equipos al cloud?
  • Cómo desplegamos nuestras aplicaciones?
  • Cómo manejamos los diferentes entornos (dev,stg,prd)
  • Cómo desplegamos infraestructura?
  • Cómo manejamos las configuraciones y versiones de nuestras aplicaciones?

Con este concepto podemos ya disponer de algo mas de orden y control sobre lo que tenemos disponible en la nube, los diferentes generan "componentes" que se suman a la plataforma y permiten que los equipos de desarrollo puedan trabajar enfocados en el código que resuelva el caso de negocio que necesitamos.

Esta plataforma puede ser tan grande y compleja como Fury de Mercadolibre. Para quién no conozca de que se trata, aquí aunque algo vieja la presentación se habla del tema. También puede ser pequeña como algunos repositorios de infraestructura como código + algunos repositorios con skeleton de código para un estandard desde la infraestructura y también desde el código.

Plataforma con esteroides

Aquí ya creo que queda solo para los mas grandes del mercado, la idea es expandir esta plataforma a tecnología multi cloud. Seguimos teniendo una interfaz para relacionarnos con la nube, pero ahora ni sabemos contra que nube estamos trabajando, incluso podría ser una de ellas nuestro propio datacenter.

Este tipo de plataformas son ya mucho mas complejas de crear y mantener y no he tenido la fortuna de trabajar con alguna empresa que haya creado algo similar.

image.png

conclusión

Es probable que en tu empresa te encuentres en alguno de estos grupos, o quizás en alguno en medio que no he definido con claridad.

Considero vital para el éxito de los equipos de ingeniería de hoy en día, tener claro el objetivo por el cual todos los equipos están trabajando día a día. Ayudar a los equipos de desarrollo a ganar ciclos y poder resolver de la mejor manera los problemas del negocio puede ser uno de ellos.

Esto implicará, en mayor o menor medida, crear ciertos estándares de gestión cloud. Debe ser claro el norte en todo momento, caso contrario nos encontraremos solucionando problemas de la diaria sin llegar a discutir los temas importantes que nos permitirán acelerar el crecimiento global de la empresa.

Referencias

Fases de la adopción cloud

Internal developer platform

Fury