Cloud Computing: Desarrollo de aplicaciones cloud nativas

Cloud

,

Pensamiento de liderazgo

,

Google

,

AWS

Cloud Computing: Desarrollo de aplicaciones cloud nativas

Roberto Clemente | May 08, 2019

Durante los últimos años, el cloud público (Google Cloud Platform/GCP, AWS, Azure) está viviendo una auténtica explosión, siendo considerado por Forrester una de las tendencias más disruptivas de los últimos 15 años en el mercado tecnológico. Existen estimaciones sorprendentes al respecto; por ejemplo, que el 83% de la carga de trabajo empresarial estará en el cloud en 2020.

 

Las plataformas de cloud público nacieron como IaaS (Infraestructure as a Service) pero ahora son mucho más que eso; como PaaS (Platform as a Service), ofrecen un amplio conjunto de servicios para Inteligencia Artificial, IoT, desarrollo y despliegue de aplicaciones, analítica, etc.

logos-google-aws-azure

Dentro del cloud computing, este artículo se centra en el desarrollo de aplicaciones cloud nativas (cloud-native application development) y en los servicios que ofrecen GCP, AWS y Azure para la implementación y despliegue de aplicaciones en el cloud. Es increíble la evolución en este sentido; por ejemplo, es posible activar en minutos un servicio de base de datos completamente administrada por el proveedor de la plataforma, y pagar únicamente por el consumo que se realice.

Esto se traduce en un considerable ahorro de tiempo en la disponibilidad de la infraestructura y, por consiguiente, en los tiempos de implementación y despliegue de las aplicaciones. Asimismo, el concepto de PaaS y pago por consumo conlleva un gran ahorro de costes como se detalla en los siguientes puntos.

 

Enfoque tradicional: Infraestructura y operaciones

En un enfoque tradicional de desarrollo y despliegue de aplicaciones, el foco no está únicamente en la propia aplicación, sino que una parte importante de los esfuerzos y costes dedicados se centran en la infraestructura que la soporta y en las operaciones asociadas.

En la siguiente imagen, se muestra un stack clásico de infraestructura para soportar una aplicación Web:

cloud-development

Algunas características de este enfoque son:

  • Costes Infraestructura: Hay que tener en cuenta múltiples elementos en esta infraestructura que hay que alojar en sus correspondientes servidores o máquinas virtuales.
    • Elementos de seguridad.
    • Balanceador de carga para alta disponibilidad.
    • Servidores de aplicaciones, pudiendo estar en un cluster de servidores.
    • Servidor de base de datos.
    • Necesidad de varios entornos, por ejemplo: DEV, PRE, PRO.

Uno de los puntos importantes es que esta arquitectura es poco flexible, y siempre hay que pensar en el peor de los casos, es decir, en el pico de consumo de recursos que puede tener. Esto puede ocasionar que se disponga de una infraestructura sobredimensionada durante la mayor parte del tiempo.

  • Costes Operaciones:
    • Mantenimiento S.O. (Incluyendo aplicación de parches, cambios de versión, etc.).
    • Mantenimiento de Servidores de Aplicaciones y servidor de Base de Datos.
      • Servidores de Aplicaciones: En algunos casos se requiere de la instalación y mantenimiento de servidores sencillos (Tomcat) o más sofisticados (J2EE Servers). En otros casos, es necesario instalar y mantener actualizado el runtime para la ejecución de las aplicaciones (node.js, Ruby, etc.).
      • Bases de Datos: Se requiere la instalación y administración de la base de datos, lo que en la mayoría de los casos supone disponer de un perfil específico: DBA (Administrador de Base de Datos).
    • Operaciones para asegurar la disponibilidad (99%, 99.9%, etc.).
    • Resolución de incidencias.
  • Valor añadido:
    • Por defecto, no hay servicios de valor añadido en este modelo, y es necesario desplegarlos o configurarlos según el caso.

 

New call-to-action

 

Enfoque cloud basado en servicios: Flexibilidad y pago por uso

En este enfoque, el foco está claramente en la aplicación, dado que la activación de los servicios necesarios para su implementación y despliegue se puede llevar a cabo en minutos, la disponibilidad y seguridad de los servicios es responsabilidad del proveedor y únicamente se paga por el consumo que se haga de ellos.

Por ejemplo, la siguiente imagen muestra un stack de servicios de GCP para una aplicación Web como en el anterior caso:

cloud-development2

Algunas características de este nuevo enfoque son:

  • Servicios y Pago por consumo:
    • No existe el concepto de infraestructura como en el anterior enfoque; ahora existe el concepto serverless y los costes se miden por consumo de servicios.
    • La provisión de nuevos servicios se mide en minutos.
    • Los servicios son flexibles y escalables según las necesidades de cada momento.
    • La propia plataforma gestiona aspectos tan críticos como la seguridad.
  • Disponibilidad y Operaciones:
    • Responsabilidad del proveedor de la plataforma (Google / AWS / Azure).
    • Actualizaciones automáticas sin afectar a la disponibilidad de los servicios.
    • Disponibilidad en base a SLAs definidos por cada servicio. Ejemplo de App Engine de GCP: https://cloud.google.com/appengine/sla  
  • Valor añadido:
    • Servicios de Inteligencia Artificial, Machine Learning, Big Data, Analytics, Internet of Things (IoT), etc.
    • Las plataformas están en constante innovación, disponiendo de las mejoras y nuevos servicios de manera inmediata una vez liberados.

 

Resumen: Del enfoque tradicional al PaaS

La siguiente imagen ilustra perfectamente los diferentes enfoques que puede adoptar una empresa, desde tener una infraestructura propia hasta el PaaS que aquí presentamos, y sobre el que se sustenta el desarrollo de aplicaciones cloud nativas.

cloud-development3

Como se observa, con un enfoque de IaaS los servicios gestionados por el proveedor de la infraestructura son bastantes; sin embargo, el cliente sigue siendo responsable de los sistemas operativos, bases de datos, servidores de aplicaciones y la seguridad. Todo esto genera una necesidad de recursos económicos y humanos para gestionarlo.

Con el enfoque de PaaS, el proveedor de la plataforma de servicios es responsable de todo lo anterior, siendo la única responsabilidad del cliente el desarrollo y despliegue de las aplicaciones.

 

Desarrollo de aplicaciones cloud nativas en la práctica

La siguiente aplicación Web de “Registro Horario de Trabajadores” puede ser un perfecto ejemplo o caso de uso de aplicación en el cloud público:

cloud-development4

A la hora de abordar un proyecto de este tipo en el cloud público, el 100% del foco se encuentra en la propia aplicación:

  1. Análisis y diseño de la aplicación según sus necesidades.
  2. Implementación de la aplicación.
  3. Despliegue de la aplicación en el PaaS.

Según una estimación basada en la experiencia de Techedge, mediante este enfoque se podría conseguir el siguiente ahorro de tiempo y costes:

Ahorro Cloud Development

 

 

Siguientes pasos: Explora las capacidades del cloud público

Te ayudamos a descubrir las capacidades del cloud público para sacarles el máximo rendimiento, tanto si estás pensando migrar al cloud o no, buscando el mejor caso de uso para implementar una prueba de concepto, una nueva aplicación o la migración de una aplicación ya existente de tu organización.

Contacta con nosotros

¡Suscríbete!