Aplicaciones modernas con AWS

  • Opinión

Aplicaciones modernas con AWS

El origen de AWS está en Amazon, una compañía con 25 años de antigüedad que en sus comienzos orbitaba alrededor de su Tienda de Libros. Las complicaciones para la empresa comenzaron a aflorar cuando esta aplicación monolítica y la base de datos correspondiente que alimentaba a Amazon.com se convirtieron en un lastre para la expansión e integración de nuevos productos y servicios.

Tribuna de Opinión de Werner Vogels, CTO, Amazon

A medida que iban apareciendo nuevas oportunidades, como el streaming de vídeo, o aumentaba el número de clientes, era preciso reescribir ingentes cantidades de código en una aplicación que estaba diseñada para ser solo una Tienda de Libros. Era un proceso largo y tedioso que limitaba la capacidad de Amazon para innovar rápido y de forma escalable. Si quería crecer y ampliar el repertorio de productos y servicios que podía ofrecer, tenía que cambiar el modelo de aplicación monolítica por otro modular y distribuido.

Hace 20 años, Amazon afrontó una transformación radical con el objetivo de hacer que el proceso iterativo postulado por Jeff Bezos como base para el éxito empresarial (inventar, desplegar, reinventar, desplegar, volver a empezar, optimizar, repetir, una y otra vez) se agilizase.

Se empezó por reestructurar la aplicación “core” de la empresa, “troceándola” en piezas más pequeñas llamadas “servicios”. Además, en 1998 todos los equipos de desarrollo en Amazon trabajaban en la misma aplicación y cada nueva versión de software tenía que coordinarse entre todos los equipos. Así que Amazon reestructuró su organización interna en forma de equipos más pequeños y autónomos que se centraban en productos específicos, servicios concretos o en funcionalidades concretas, y tomaban decisiones rápidas.

Esta forma de compartimentar la organización y las aplicaciones fue una idea arriesgada, pero funcionó. El éxito de este proceso de transformación interna de Amazon derivó en el nacimiento de AWS en 2006.

No solo se trata de Amazon

Para seguir siendo competitivas, las compañías tienen que agilizar sus procesos, descubrir nuevas oportunidades de negocio y crear mejores productos. Una forma de hacerlo es basar su estrategia de negocio en las “aplicaciones modernas”, aplicaciones que se caracterizan por su capacidad para escalar dinámicamente y rápidamente, estar disponibles a escala global, gestionar exabytes de datos o exhibir tiempos de respuesta de pocos milisegundos.

Se pasa de aplicaciones monolíticas a arquitecturas modulares y microservicios. Y también hay que repensar la organización de las compañías. Según Werner Vogels, CTO y VP de Amazon.com, las empresas que sigan este camino tienen que contemplar cinco elementos: microservicios, bases de datos a medida, métodos automatizados para la liberación de software, un modelo operacional “serverless” y seguridad automatizada y continua.

Microservicios

La mayoría de las compañías empiezan su modelo de negocio alrededor de una aplicación monolítica. Es la forma más sencilla y rápida de desarrollo, pero conlleva ciertas dificultades. Añadir o mejorar funcionalidades se convierte en una tarea compleja y las aplicaciones monolíticas añaden el riesgo de comprometer su disponibilidad: la probabilidad de que un fallo en un proceso afecte a la aplicación por entero aumenta.

Con los microservicios, una aplicación se construye a partir de componentes independientes. Cada microservicio ejecuta una única función, se ejecuta de forma independiente, se gestiona por equipos de desarrollo independientes y puede ser actualizado, desplegado y escalado para satisfacer necesidades específicas de una aplicación. Sin ir más lejos, un carrito de la compra tratado como microservicio, puede escalarse para servir a más usuarios en las rebajas sin que afecte a otras partes de la aplicación.

También pueden usarse contenedores o funciones AWS Lambda. Los contenedores son una buena herramienta para modernizar aplicaciones heredadas. Con Lambda, se maximiza la simplicidad: el único código que se escribe es en forma de lógica de negocio.

Gestión de datos: bases de datos a medida

Las aplicaciones modernas están construidas de modo que encontramos una correspondencia uno a uno entre bases de datos y microservicios en vez de tener una única base de datos monolítica, por lo que es posible elegir con libertad la que mejor encaja con cada microservicio.

En muchas aplicaciones la mejor elección será una base de datos relacional, pero también se puede elegir una orientada a grafos, como Amazon Neptune. Para acceso a datos en tiempo real, es factible elegir una base de datos en memoria, como Amazon ElastiCache, usada para aplicaciones relacionadas con el gaming o el IoT.

Despliegue de software: métodos automatizados para la liberación de software

Hacer cambios en las aplicaciones no es una tarea sencilla. Con una aplicación monolítica, los cambios en el código, las pruebas, la depuración y todo el proceso de desarrollo, se prolongan en el tiempo impidiendo reaccionar ágilmente ante las demandas del mercado y los usuarios.

Pasar a una estrategia modular y aplicaciones modernas, elimina los inconvenientes de las aplicaciones monolíticas, pero añade otros, como mantener una consistencia en los despliegues de software a través de los diferentes equipos, especialmente cuando cada paso del proceso de liberación del software es manual.

La solución pasa por la estandarización y la automatización. Desplegar software en entornos de producción sin intervención humana puede parecer arriesgado, pero, no solo incrementa la agilidad en los procesos de negocio, sino que también mejora la calidad del código.

Modelo operacional: tan “serverless” como sea posible

Las aplicaciones modernas tienen múltiples componentes modulares y están articuladas por diferentes servicios, cada uno de ellos con una base de datos a medida.

El modelo “serverless” o de informática sin servidor, se introdujo en 2014 con el lanzamiento de AWS Lambda, un servicio que permite ejecutar código sin aprovisionar ni administrar servidores. La informática sin servidor es clave en el desarrollo de aplicaciones modernas.

AWS Lambda ejecuta el código solo cuando es necesario, y se escala de manera automática. Además, estos servicios integran la gestión de la disponibilidad y la seguridad y solo se paga el tiempo de computación que se consume. La adopción de la informática sin servidor, en suma, permite a las empresas sacar el máximo partido de la agilidad que ofrece la nube.

Seguridad: una responsabilidad compartida

En el pasado, muchas compañías se han acercado a la seguridad de un modo monolítico, construyendo firewalls alrededor de las aplicaciones. Pero esta estrategia es problemática si se trabaja con microservicios independientes que pueden necesitar ajustes de seguridad diferentes.

En las aplicaciones modernas, las características de seguridad se implementan en cada componente de la aplicación y se prueban y despliegan con cada versión.  Esto significa que la seguridad pasa a estar integrada en cada etapa del ciclo de vida del desarrollo de aplicaciones.

El camino a seguir

¿Cómo están las empresas afrontando la modernización de sus aplicaciones? A pesar de que no hay un único camino, hay patrones comunes, incluyendo la aproximación que adoptó Amazon en su momento poniendo el foco en la innovación y la escalabilidad.

Hoy en día, un número creciente de compañías están reinventándose, construyendo nuevas aplicaciones (modernas) y microservicios “serverless” que permiten a las organizaciones aprovechar al máximo las posibilidades de la nube.

Lo habitual es que las empresas que adoptan las aplicaciones modernas vean los beneficios en todos los aspectos de su negocio, especialmente en el capítulo de asignación y reparto de tiempo y recursos. Así, invierten más tiempo en la necesaria definición de la lógica de negocio, mejoran la escalabilidad o aumentan la agilidad en la liberación de nuevas funcionalidades, pasando de hablar de meses a días.

 Werner Vogels, CTO, Amazon

TAGS Opinión