Que las distintas cloud dejen fluir los datos entre ellas y sean interoperables es el desafío que tenemos por delante los próximos años (tanto proveedores como clientes) para hacer que estos servicios sean como lo son hoy la telefonía, la electricidad, el gas, el agua y tantos otros. Para ello, los principales proveedores de cloud pública han elaborado frameworks de buenas prácticas para facilitar la migración al cloud, que pretenden resolver o ayudar a la toma de decisiones al respecto, pero que por nuestra experiencia se quedan solamente como base teórica muy difícil de aplicar en organizaciones complejas como las comentadas en la anterior entrega de este post. P.e. Amazon AWS ( Well-Architectured Framework ), Google ( GCAF ), Microsoft Azure ( Best Practices y Landing Zones ) …
Intentando arrojar algo de luz en este punto, sería interesante identificar las diferentes estrategias de migración de infraestructura y aplicaciones al cloud público, las cuales podríamos definir como:
· Lyft and Shift: el “abc” de toda migración al cloud, donde muevo mi software tal y como corre en mi datacenter. Es la solución ideal para cierto software corriendo en máquinas virtuales o para base de datos, donde se migran las mismas de forma sencilla y automática ( los principales vendors cloud tienen herramientas específicas para tan fin ) desde sus datacenter a servicios IaaS y PaaS en el cloud, sin interrupciones de servicio.
Mención especial aquí hay que hacer si entre sus proveedores de base de datos tiene Oracle, ya que entonces dicha migración no va a ser tan sencilla, y algunos clientes incluso se plantean en dicho proceso cambiar a bases de datos más mainstream cloud-friendly like PostGreSQL.
En el caso de aplicaciones de Big Data, se disponen de soluciones PaaS totalmente basadas en open source que permiten un proceso sencillo de migración de las mismas ( AWS EMR, Azure HDInsight, Google DataProc … ) o de terceros ( Databricks ).
· Refactorización: puede ser el termino temido por todo responsable de una aplicación, por el gran esfuerzo y cierto riesgo que ello supone …. pero también tiene sus muchos beneficios, por lo que este proceso también se conoce como “modernización de aplicaciones” (… no pain, no gain … ).
En este contexto, la migración al cloud se está aprovechando para la refactorización de aplicaciones monolíticas o web de 3 capas a arquitectura basada en microservicios ( contenedorizados ) que aprovechen todas las bondades de elascticidad y flexibilidad que proporciona el cloud público. Con estas nuevas arquitecturas de microservicios, y utilizando soluciones basadas en Kubernetes, podremos correr nuestras aplicaciones sin grandes cambios en diferentes proveedores cloud o en on-premise.
Otra opción a la hora de refactorizar es usar soluciones Serveless, donde existe un acoplamiento mucho mayor al proveedor cloud, que te proporciona un entorno de software ( sandbox ) donde incluir tu código abstrayéndote de los demás detalles físicos de donde y como se ejecuta el mismo. Teniendo ventajas claras y nativas al cloud, como su elasticiadd y modelo de precio ajustado por consumo real ( peticiones, eventos, flujos de ejecución, consultas … ), el excesivo acoplamiento a los servicios cloud del proveedor, supone que vaya hasta cierto punto en contra de una estrategia real de multicloud, siendo por ello más utilizada la refactorización de aplicaciones mediante microservicios sobre Kubernetes.
· GreenField: probablemente el sueño de todo equipo técnico, desarrollar una aplicación desde 0, si es posible con una lista de requisitos de negocio bien definida desde el principio al estar ya implementada en una aplicación legacy, y pudiendo hacer uso de la multitud de servicios y tecnologías nativas que proporcionan los proveedores de cloud.
En este contexto, tiene un mayor porcentaje de utilización los servicios puramente serveless del cloud, que agilizan en gran medida el desarrollo y mantenimiento de las aplicaciones, ya que no hay que preocuparse de la compatibilidad con entornos on-premise.
Llegados a este punto, hemos hablado del contexto actual del uso del cloud público en grandes y medianas corporaciones, los trade-offs y obstáculos que se pueden encontrar, y las estrategias que pueden seguir a la hora de realizar las migraciones. Consideremos que ya hemos superado esta etapa, y que después de un largo proceso de adaptación al cloud, gran parte de nuestras aplicaciones ya son public cloud-friendly …. y que nos planteamos las siguientes cuestiones:
· Llegados a un estado maduro del proceso de migración, todas las nuevas aplicaciones y gran parte de la existentes correrán ya en entorno de cloud pública, y habrá que justificar de forma muy explícita el por qué mantener o desarrollar aplicaciones para estar corriendo en entornos on-premise, al ir en contra de la corriente tecnológica que se ha implantado. Mención especial las soluciones corriendo en mainframe, que probablemente sean las últimas en migrase ( si es que lo son …. ) y en las cuales los proveedores de cloud pública ya han puesto su foco con herramientas de migración y recomendaciones específicas.
· Una vez realizado el esfuerzo de la migración, podemos encontrarnos con que el objetivo de reducción de costes en el modelo Cloud no cumple con las expectativas existentes a priori. Esto se produce porque la estimación inicial de coste, que está ligada a una carga de trabajos variables, se puede considerar un arte totalmente dependiente de cada tipología de cliente y aplicación de negocio, por lo que muchas veces la experiencia en migraciones y clientes similares no puede ser reaprovechada. Estas circunstancias han originado una nueva práctica relacionada con el mundo cloud, que es FinOps, que consiste en actividades de monitorización, planificación y optimización del uso de los servicios cloud por la organización, con el fin de una reducción de costes en el uso de la misma. Dicha práctica que de forma errónea muchas corporaciones incorporan tras migrar sus aplicaciones al cloud, debería estar realmente involucrada en todo el proceso desde fases iniciales, ya que añade un criterio más en la selección de la estrategia para migrar una aplicación, pudiendo condicionar la selección de un servicio u otro para tal fin.
· Hemos trasladado las aplicaciones desde nuestros datacenters al public cloud, para ofrecer servicios a nuestros clientes de una forma mucho más ágil, global y flexible …. pero podemos ir más allá mediante la adopción de soluciones de Edge o Fog Computing, donde el cómputo de las aplicaciones se acercan mucho más a los beneficiarios de las mismas, consiguiéndose una mejor experiencia e iteración de usuario ( p.e. mediante wearables ). Dichas soluciones pueden funcionar de forma autónoma ( Edge computing, p.e. para la aplicación de modelos de Inteligencia Artificial ) o como una extensión del cloud público al mundo físico en el entorno en el que nuestro cliente realiza sus actividades ( Fog Computing favorecido por la implantación del 5G ). Probablemente estas tecnologías por sí sola darán para un nuevo artículo en breve …