En los últimos años, las Nubes se han extendido sobre el panorama empresarial. Poco a poco, sus ventajas han motivado que muchas empresas, incluso las de sectores que poco tienen que ver con el tecnológico, hayan decidido dar el paso hacia infraestructuras más flexibles, seguras y escalables.
Partiendo de un concepto relativamente desconocido hace 10 años, la Nube se ha convertido en una palabra de moda que se apoderó de la conciencia colectiva de las empresas. Hace no mucho tiempo mover cargas de trabajo críticas a una Nube era considerado casi imposible.
El Cloud Computing no es una cosa, no es un equipo, no es sólo hardware en algún Centro de Datos. Es un modelo de servicio. Es la disponibilidad bajo demanda de los recursos de sistemas informáticos, especialmente el almacenamiento de datos y computación, sin una gestión activa directa por parte del usuario.
Poco a poco, la tendencia ha ido cambiando y cada vez más organizaciones optan por esta opción. En el ecosistema actual de TI, se trata de adaptarse o morir, pues las compañías aprenden que si no transforman la forma en que interactúan con los clientes, corren el riesgo de perder ante las empresas que se mueven más rápido. Estas compañías innovadoras saben cómo cambiar sus modelos de negocio con nuevas realidades comerciales.
Las organizaciones normalmente comienzan a migrar a la Nube sus aplicaciones existentes y la complejidad que pueda existir varía, dependiendo de la arquitectura y de las dependencias. Pensando en el universo de aplicaciones para migrar en un espectro más, colocamos una arquitectura virtualizada orientada a servicios en el extremo de baja complejidad y una aplicación monolítica en el extremo de alta complejidad.
Ahora bien, ¿qué pasa con las nuevas aplicaciones? El proceso de cómo se diseña y desarrolla la aplicación utilizando características nativas de Nube es distinto y muy beneficioso. Una aplicación diseñada para la Nube agrega características, disponibilidad y rendimiento que de otro modo es casi imposible de lograr en sistemas existentes que no fueron diseñados para la Nube.
Es un sistema diseñado específicamente para una arquitectura de computación en la Nube y para aprovechar las ventajas del Cloud Computing, que se componen de servicios acoplados en la Nube.Como la infraestructura en la que se ejecuta una aplicación nativa de la Nube no es local, éstas se diseñan teniendo en cuenta que la aplicación pueda soportar fallas del hardware y software, pero esta redundancia se hace desde la aplicación y no desde componentes de hardware, es decir, existe una lógica y componentes preparados para estas contingencias.
Las aplicaciones nativas de la Nube a menudo operan a escala global. Si bien se puede acceder a un sitio web ordinario en cualquier lugar donde Internet está desbloqueado, la verdadera escala global implica mucho más. Implica que los datos y servicios de la aplicación se replican en los Centros de Datos locales para minimizar las latencias de interacción. Implica que los modelos de consistencia utilizados son lo suficientemente sólidos como para brindar al usuario confianza en la integridad de la aplicación.
Estas plataformas deben escalar bien con miles de usuarios concurrentes. Esta es otra dimensión requerida para la distribución a escala global y requiere una atención cuidadosa a la sincronización y la consistencia en los sistemas distribuidos.
Se basan en el supuesto de que la infraestructura es fluida y la falla es constante. Este concepto es la base del diseño original de los protocolos de Internet, pero las aplicaciones que se crearon para ejecutarse en una sola PC, mainframe o supercomputadora suponen que el sistema operativo y el hardware subyacentes son sólidos como una roca. En consecuencia, cuando se portan a la Nube, fallan con el primer problema en el Centro de Datos o la Red. Incluso cuando la tasa de fallas para el hardware o las redes es extremadamente pequeña, cuando se intenta una escala global, algo siempre está a punto de romperse.
Las aplicaciones nativas de la Nube están diseñadas para que la actualización y la prueba se realicen sin interrupciones en producción. Si bien no todas éstas están destinadas a ser utilizadas por un millón de usuarios simultáneos en todo el planeta, la mayoría están hechas para un funcionamiento continuo. El monitoreo de parámetros críticos que no deben dejarse desatendidos, es un ejemplo.
Fundada en 2015, la Cloud Native Computing Foundation (CNCF) existe para alinear a la industria tecnológica en torno a su evolución. Hoy, CNCF cuenta con el respaldo de más de 450 patrocinadores. Los miembros fundadores incluyen Google, CoreOS, Mesosphere, Red Hat, Twitter, Huawei, Intel, Cisco, IBM, Docker, y VMware.
“The twelve-factor app” es una metodología para construir aplicaciones. Se puede ver como un conjunto de prácticas de desarrollo y arquitectura, que presta especial atención a las dinámicas del escalamiento y cubre los puntos fundamentales que debería cumplir el desarrollo de una aplicación preparada para ser distribuida como un servicio. En resumen es una guía para construir aplicaciones nativas de Nube.
El equipo de Ingeniería de Heroku generó estas buenas prácticas sobre su experiencia construyendo variedad de aplicaciones SaaS poniendo especial atención a las dinámicas del crecimiento de una aplicación a lo largo del tiempo.
Organizaciones como Facebook, Uber, Netflix, Airbnb y Tesla crecen continuamente, siendo líderes en la industria y dictando pauta en sus modelos de entrega de servicio. Puedes consultar los 12 puntos en su sitio: https://12factor.net/.
Recuerde, contar con un aliado de tecnología con la experiencia y el conocimiento necesario, le ayudará a lograr sus objetivos comerciales, le invitamos a visitar https://www.kionetworks.com/es-mx/
Fuentes:
(s/a) La aplicación de doce factores https://12factor.net/ consultada febrero, 2020.
CNCF. (2020). Construyendo ecosistemas sostenibles para software nativo en la nube https://www.cncf.io/ consultada febrero, 2020.
Heroku. (2020). Plataforma de aplicaciones en la Nube https://www.heroku.com/ consultada febrero, 2020.