olly - stock.adobe.com
Principios y pilares de las aplicaciones modernas
Agilidad, resiliencia, portabilidad y escalabilidad son los pilares de las aplicaciones modernas, a lo cual hay que añadir seguridad, señaló el proveedor F5.
Durante estos años, las aplicaciones han evolucionado para ejecutarse eficientemente en contenedores, explotando las ventajas de utilizar e interactuar a través de APIs y pudiendo ser ejecutadas en una o más nubes públicas, lo cual es un avance hacia un modelo de aplicaciones distribuidas.
La empresa de soluciones de ciberseguridad F5 informó que el equipo de Cloud Native Computing Foundation (CNCF) ha establecido ya una visión de alto nivel para las aplicaciones, incluyendo un Trail Map donde se describen las capas y algunas consideraciones a nivel arquitectura para las aplicaciones nativas de nube, incluido el despliegue en contenedores, procesos de CI/CD, arquitecturas de service mesh, observabilidad y bases de datos distribuidas.
Al considerar las definiciones que los desarrolladores, arquitectos e ingenieros de DevOps (que participan en la extensa comunidad de sus tecnologías código abierto) han dado, F5 definió las principales características de las aplicaciones modernas, a partir de ciertos pilares y principios que éstas deben cumplir. Estos pilares son:
1. Escalabilidad.Las aplicaciones pueden extender su capacidad de cómputo de una manera ágil y rápida con dos tipos de escalabilidad:Fast scalling (poder incrementar la capacidad de las aplicaciones en una pequeña ventana de tiempo) y Long scalling (incrementar la capacidad de las aplicaciones hasta 10 veces, por ejemplo, en un año, sin cambios mayores o sustanciales en el código, ni la infraestructura que subyace).
2. Portabilidad. La capacidad de mover una aplicación de un proveedor de nube a otro, y que ésta pueda ejecutarse perfectamente. En la práctica, muchas veces no sucede tan lineal, ya que, independientemente de los contenedores, hay componentes o soluciones de los proveedores de nube que difieren entre sí. Se observan dos tipos de portabilidad:Portabilidad funcional, que permite que los elementos, el código y la lógica de la aplicación pueda ejecutarse no importa el ambiente o nube donde se encuentre); y Portabilidad de la gestión, que que sería una mirada agnóstica a la capa de gestión, incluyendo observabilidad, seguridad y monitoreo de las aplicaciones.
3. Resiliencia.La alta disponibilidad de un sistema y la capacidad para recuperarse ante un incidente o problema, considerando dos tipos de resilencia: Resiliencia hacia el usuario(ya sea un usuario final u otra aplicación, no debería notar una disrupción del servicio o problema de desempeño causado por alguna falla de un componente de la aplicación) y Resiliencia ante una falla (la aplicación debería contar con la capacidad de restaurar su estado dentro de los cinco minutos producida la falla, ya sea de un componente o de un servicio del cual esta dependa, como una CDN o un servicio de DNS).
4. Agilidad. Estado aspiracional para las aplicaciones modernas con el fin de moverse velozmente ante nuevos requerimientos de negocio y luego replicar los cambios rápidamente, ya sea al mismo nivel de los aplicativos o en la (o las) infraestructura(s) en donde se encuentran. Los conceptos relacionados con la agilidad son:
- Agilidad del Código. Las empresas que crean aplicaciones modernas deben contar con procesos y entornos que les permitan implementar cambios varias veces al día y, de este modo, la aplicación debe estar diseñada para absorber constantemente dichos cambios. Usualmente, estas aplicaciones son basadas en microservicios y se vinculan a través de APIs para reducir las interdependencias de los mismos.
- Agilidad de la Infraestructura. Habilitar la infraestructura de tal manera que satisfaga las necesidades de todos los «clientes», incluyendo los equipos de desarrollo, seguridad y los equipos de DevOps para poder contar en la práctica con un desarrollo ágil y permita desplegar servicios de manera automatizada.
Además de estos pilares, es importante incorporar seguridad en las aplicaciones modernas, dijo Andrew Oteiza, gerente de Ingeniería de Aplicaciones modernas para LATAM de F5, quien refirió que es fundamental ofrecer soluciones de seguridad «que ayuden a los clientes a ser agnósticos a la plataforma o nube donde corran sus aplicaciones, permitiendo definir configuraciones de alta disponibilidad, resiliencia, portabilidad, escalabilidad y seguridad como código, habilitando de esta forma procesos de integración y entrega continuo, mejorando radicalmente el time to market y haciendo que el negocio sea cada vez más rentable».