Sergey Nivens - Fotolia

Evaluar Conozca los pros y contras de las tecnologías, productos y proyectos que está considerando.

Diseñe una aplicación de nube con la portabilidad en mente

Escribir aplicaciones para una portabilidad más fácil entre nubes requiere algo de trabajo y viene con compensaciones. Sin embargo, el esfuerzo requerido para diseñar una aplicación portátil puede dar sus frutos a largo plazo.

Las organizaciones que priorizan una estrategia de múltiples nubes quieren la capacidad de levantar y cambiar una aplicación de una nube a otra, o incluso ejecutar esa aplicación en varias nubes al mismo tiempo. Pero esto es difícil de lograr si la portabilidad de las aplicaciones no es una prioridad desde el principio.

Las organizaciones adoptan una estrategia de múltiples nubes por varias razones, incluidas las preocupaciones sobre la dependencia de un solo proveedor o los requisitos de residencia de datos. No es para todos, ya que requiere que los equipos de TI tomen pasos adicionales para abstraer las cargas de trabajo. También deben renunciar a muchas de las herramientas nativas que simplifican las implementaciones en la nube.

Sin embargo, las empresas siguen cada vez más estrategias de múltiples nubes, a pesar de los desafíos. Si su empresa está en ese campo, explore las siguientes técnicas para que pueda diseñar su aplicación en la nube teniendo en cuenta la portabilidad.

Elija el lenguaje de programación adecuado

Para empezar, asegúrese de que todos sus entornos de alojamiento sean compatibles con el lenguaje que planea usar para su aplicación. La mayoría de las veces, el lenguaje en el que está escrito no importará en términos de portabilidad de la aplicación. Por ejemplo, si su aplicación se implementa con VM autoaprovisionadas y basadas en la nube, tiene la libertad de configurar las VM para que admitan cualquier lenguaje que desee.

Sin embargo, otras estrategias de implementación pueden limitar su elección de lenguajes de programación. Por ejemplo, las plataformas sin servidor como AWS Lambda o Microsoft Azure Functions no permiten a los usuarios realizar cambios significativos en el entorno del host. Estos servicios solo admiten aplicaciones escritas en determinados lenguajes y no todas las nubes admiten los mismos.

Por lo tanto, si usa funciones sin servidor o cree que podría hacerlo en el futuro, sería mejor seleccionar un lenguaje que sea compatible con todas las principales plataformas sin servidor, como Python, C# o Java.

Ponga su aplicación en contenedores

Los desarrolladores también pueden usar contenedores para ayudar a optimizar la portabilidad de las aplicaciones en la nube. Los marcos de contenedores de software, como Docker, no abstraen totalmente las aplicaciones de los entornos de host. La principal limitación, a este respecto, es que un contenedor de Linux solo se puede ejecutar en un host Linux y un contenedor de Windows solo se ejecuta en Windows.

No obstante, los contenedores hacen que muchas de las otras variables del entorno de alojamiento de aplicaciones sean irrelevantes. La distribución particular de Linux o la versión de Windows utilizada no importa, siempre que sea compatible con su marco de contenedores.

Los contenedores no se preocupan por variables como dónde se almacenan los datos, siempre que tengan una forma de acceder a ellos. En consecuencia, es relativamente fácil levantar y cambiar una aplicación en contenedor de una nube a otra o a un entorno local.

Cuando se trata de ejecutar contenedores en la nube, no tiene que preocuparse demasiado por las características específicas de los entornos con los que está tratando. Siempre que sean compatibles con el marco de contenedores que elija, está listo para comenzar.

Utilice una API de nube unificada

Otro enigma común que surge al diseñar una aplicación en la nube para la portabilidad es si se deben usar las API nativas de una nube en particular. Por lo general, las API nativas son la forma más fácil de agregar funcionalidad a su aplicación. Sin embargo, la desventaja es que cuando escribe una aplicación de esta manera, esa parte de su aplicación debe reescribirse antes de que pueda moverse a una nube diferente.

Una forma de evitar esto es evitar el uso de API por completo. Sin embargo, eso no es práctico ni deseable para la mayoría de las empresas. Un mejor enfoque es utilizar una API en la nube unificada, como Apache Libcloud o Kloudless.

Estas herramientas sirven esencialmente como capas de abstracción. Sus aplicaciones emiten solicitudes y la API unificada reenvía las solicitudes a cualquier nube que esté utilizando. De esta manera, solo escribe llamadas a la API una vez.

Desafortunadamente, las API unificadas tienen una funcionalidad limitada. Solo admiten ciertos lenguajes y no hay garantía de que siempre funcionen sin problemas. Si un proveedor de nube cambia su API nativa sin previo aviso, es posible que una API unificada ya no pueda admitirla.

Por lo tanto, puede que no sea la mejor idea hacer que toda su aplicación dependa de una API unificada. En su lugar, aproveche las API de nube unificadas para las partes de su aplicación en las que puede tolerar cierto riesgo de interrupción. Esto no resolverá todo, pero reducirá el esfuerzo requerido para portar la aplicación a una nube diferente.

Utilice la infraestructura como código para la implementación de aplicaciones de nube

La infraestructura como código se refiere a la práctica de escribir archivos para definir cómo se debe implementar o configurar un entorno de software o una aplicación. Luego, esas herramientas se utilizan para crear automáticamente las configuraciones especificadas.

Cuando se trata de implementar aplicaciones en la nube, muchas herramientas de infraestructura como código de terceros, como Terraform, Chef o Puppet, son relativamente independientes de la nube. En otras palabras, pueden tomar una configuración y usarla, con algunos ajustes menores, en cualquier nube pública importante.

Por lo tanto, al adoptar herramientas de infraestructura como código para automatizar la implementación de aplicaciones, simplifica el proceso de mover su aplicación de una nube a otra. La infraestructura como código no hará que su aplicación sea más portátil por sí misma, pero hará que el proceso de implementación sea más portátil, lo que se suma a una mayor portabilidad en general.

Por supuesto, migrar una aplicación de una nube a otra casi siempre requerirá alguna reconfiguración y ajustes. No existe una aplicación completamente independiente de la nube y 100 % portátil.

Es más fácil hacer un trabajo adicional por adelantado para garantizar la portabilidad de la aplicación que reescribir grandes porciones de la aplicación en el futuro. Y el mero conocimiento de que puede trasladarse fácilmente a una nube diferente le otorga a su negocio un grado de agilidad que es muy valioso, especialmente cuando las ofertas de los proveedores de la nube evolucionan constantemente.

Investigue más sobre Cloud computing (Computación en la nube)

Close