lunes, 17 de octubre de 2022

Diez mandamientos para migrar a la nube y no fracasar

Permanentemente escuchamos a los lideres de las organizaciones que hablan desde un pseudo entendimiento y plantean "porque no llevamos todo nuestro data center a la nube" pero la respuesta es mucho más compleja. 

A excepción de las startups del último tiempo, que nacieron como nativas digitales, hacer una buena migración (desde lo técnico y lo eficiente económicamente) es mucho más difícil de lo que muchos creen, ya que requiere un estado de maduración y capacitación de todos los equipos intervinientes que es mas bien un "state of art" que una serie de procesos repetibles automáticamente. Sin duda las bondades de la nube están muy claras, agilidad de disponibilidad de recursos, flexibilidad, costos iniciales bajos, etc. la idea de este artículo es exponer en un lenguaje claro y coloquial algunas dificultades que pueden venir en forma de sorpresa si no son tratadas debidamente.

En base a muchísimas investigaciones, lectura de papers, libros, documentos, etc y sobre todo experiencia propia y el intercambio con otros colegas les dejo un decálogo con los diez mandamientos para migración a la nube inteligente y sustentable Esto es independiente del hyperscalers que elijas, pero en especial me centré en los mas importantes, que son: AWS, AZURE, GCP, y algunos otros proveedores de nube menos relevantes que andan por ahí.

  1. LA NUBE NO ES PARA TODO: Si tenes tu data center propio seguramente hay cosas que hacen sentido no migrar, ya sea por latencia, confidencialidad, costos, eficiencia de los enlaces que tenes contratados, porque son aplicaciones "legacy" etc. Lo primero que necesitas un buen assesment y una buena planificación. Clasificá, ordená, priorizá, detecta donde tenes los quick-wins (ej sacarse migrar un server que no tiene soporte de hardware, etc) y seguir migrando paso a paso. Cada migración tiene que tener un sentido y un porqué. Una frase que me gusta para representar este enfoque equivocado es: "Cuando la única herramienta que conoces es el martillo, todos tus problemas se parecen a un clavo".
  2. NO PODES OPERAR EN LA NUBE TAL CUAL COMO OPERABAS ANTES: cada cosa que haces en la nube se paga, todo, absolutamente todo. Seguramente nunca te pusiste a calcular cuantos GB de transferencia tenia una placa de red de un server X, pero por más que salga 0,00001 USD por cada GB hay que pensar que todo tiene un costo, eso antes ni lo tenias medido. Hay que mirarlo con lupa. Los hypersacaler tienen herramientas que ayudan, pero hay que ponerlo en la rutina de tareas, a veces las calculadoras pueden ser complejas de utilizar. También vas a tener que replantearte el ancho de banda de tus enlaces. Les recomiendo el AWS Cloud Adoption Framework (ESP)  Es el muy completo y te cuenta como hacer un buen camino a la nube. Conozco muchos casos de empresas que vuelve de la nube al on-premise por no planificar adecuadamente y encontrarse con facturas sorprendentes a fin de mes.
  3. SE NECESITAN NUEVOS SKILLS EN EL EQUIPO: Gestionar la nube es complejo, si venias de un entorno simple, ahora vas a tener mucha mas granularidad que administrar, permisos entre redes, permisos de usuarios, grupos, auditorias, controles de costos, servers, etc, etc. Es mas complejo. necesitas adquirir nuevas capacidades, no es rocket science, pero si no te capacitas, la vas a pasar mal. Se necesita perfeccionar los skills de seguridad de todos los equipos de IT.
  4. LA NUBE NO ES PERFECTA: Si bien los proveedores ofrecen excelentes capacidades de disponibilidad, si queres una aplicación REALMENTE alta disponibilidad ES TU responsabilidad en el diseño de la arquitectura de la solución para que realmente sea alta disponibilidad, ya que no todos los recursos son redundantes por default en la nube, entonces debes agregar recursos en distintas zonas y el diseño de la arquitectura debe estar acorde.
  5. LA MAGIA ESTA EN LOS MICROSERVICIOS: la nube comienza a ser eficiente cuando haces uso de las tecnologías mas avanzadas, mientras tanto es caro. Tenes opciones de "apagar el server cuando no lo usas" pero una vez mas vuelve el concepto de operar la nube a "conciencia de costos". Tener encendido un server 24x7 en la nube igual que en tu data center funciona, pero no es eficiente. Seguramente vas a tener que rehacer aplicaciones.
  6. APROVECHÁ LA TECNOLOGÍA DISPONIBLE: no reinventes la rueda, siempre pensá en utilizar las herramientas que ya tenes en la nube, son agiles y fáciles de implementar (también agiles de adquirir, comparado con un proceso administrativo de cualquier organización standard). Revisá en las herramientas existen en la nube, probablemente ya haya disponibles soluciones pueden ser fáciles y rápidas de implementar para tu negocio. Mantenete actualizado con los servicios que van saliendo, porque permanentemente se publican nuevas herramientas.
  7. RESERVAR LOS RECURSOS MINIMOS: en el viejo mundo cuando nos pedían un server antes pensábamos en xx CPU,  xx GB de RAM, xx TB de disco, proyectando en crecimiento a xx años, etc. Acá tenés que pensarlo exactamente al revés, reservá la instancia mínima y después vas creciendo a demanda, y después preparate para pelearte con los app owner que te van a venir con el manual de instalación de su producto para hacerlos entender que tienen que salir de su standard y pensar en un modelo que sea escalable, seguramente vaya a tener que hacer que su app escale a demanda requerirá un desarrollo por parte de ellos, pero es la única forma que la nube sea productiva. 
  8. NO EXISTE UNA NUBE PERFECTA PARA TODOS LOS USOS: Para las empresas grandes el futuro es hibrido y multinube. Hibrido porque hay cosas que nunca saldrán del on-prem (excepto que te decidas por AWS Outpost o Azure HCI) y multinube porque cada una tiene sus virtudes donde se destaca sobre el resto. En relación a los costos no se sacan mayores diferencias ya que en líneas generales están muy parejos, pero si hay algunas salvedades tecnológicas que vale la pena remarcar por características distintivas de cada una:
    1. AWS: se destaca por la su solvencia en innovación tecnológica de vanguardia, granularidad para elegir alternativas mas eficientes en costos y disponibilidad de talentos en el mercado con conocimientos de la plataforma.
    2. Azure: ventaja competitiva en licenciamiento, que se traduce en eficiencia de costo y el apalancamiento que le da los clientes corporativos que ya están usando la suite de Office 365 y en especial Azure AD.
    3. GCP: Integraciones y herramientas de desarrollo/web. Big Data, analítica, Machine learning y la baja latencia de sus servicios basados en kubernetes.
  9.  LOS DATOS EN LA NUBE SON TU RESPONSABLIDAD: Todos los hyperscalers tienen modelo de responsabilidad compartida, despendiendo del tipo de servicio que consumas varían los grados de responsabilidad, pero siempre el responsable de los datos sos VOS! No te relajes. Revisá  permanentemente la integración de tu estrategia de backups en la nube.
  10. LOS ERRORES CUESTAN PLATA (Y MUCHA) En un entorno tradicional, un desarrollador o un proveedor se equivocaba, dejaban un proceso corriendo mal, una base de datos ejecutando una consulta ineficiente, con una recursividad que causara un loop o algo similar (incluso en un ambiente de test) un viernes a la noche y a lo sumo el lunes a la mañana tenias el server colgado, lo reiniciabas y listo. Acá el tema es distinto, acá pagas y mucho, una query mal programada en test puede terminar en una facturación de miles de dólares (lo he visto). Viene la factura y a pagarla. Muchas empresas fueron a la nube sin una buena estrategia y "terminaron volviendo al onpremise" para correr algunas de sus cargas, con la gran dificultad que eso representa. Si bien es cierto que tener herramientas de analisis de costos, alertas, forcasting, etc, etc, lo malo es que muchas veces son post-mortem, el gasto ya se realizó. Lamentablemente aún no implementaron el concept de "quotas" sobre recursos. También comparto el link de FinOps, una ONG creada por The Linux Foundation con el fin crear conciencia en el uso eficiente de las tecnologías nube. 


CAPACITARSE, CAPACITARSE, CAPACITARSE y SEGUIR CAPACITANDOSE. Los viejos SysAdmin deberán convertirse en los próximos DevOps. Para eso aprender a programar es una obligación.



BONUS TRACK: te dejo una comparativa de los nombre de los productos equivalentes en cada uno de los principales hyperscalers, como ya lo dije el futuro es multinube y tenemos muchos nombres que aprendernos, si si, son un montón de productos, aquí solo los mas importantes  --> muy buena cuenta para seguir @simonholdorf