Nativo en cloud no se centra en dónde reside una aplicación, sino más bien en cómo se crea y se despliega.
En el vídeo "What is Cloud Native?", Andrea Crawford describe de forma general algunos de los conceptos clave:
Los microservicios (también denominados arquitectura de microservicios) son un enfoque arquitectónico en el que una única aplicación se compone de muchos servicios o componentes de menor tamaño y sin conexión directa que se pueden desplegar de forma independiente. Estos servicios (también denominados microservicios) normalmente tienen su propia pila de tecnología, que incluye el modelo de datos y la base de datos, y se comunican entre sí a través de una combinación de API REST, transmisión de sucesos e intermediarios de mensajes.
Dado que los microservicios se pueden desplegar y volver a desplegar de forma independiente, sin afectar a los demás ni alterar la experiencia del usuario final, son una opción perfecta para metodologías de entrega automatizada e iterativa, como integración continua/despliegue continuo (CI/CD) o DevOps.
Además de utilizarse para crear nuevas aplicaciones nativas en cloud, los microservicios sirven para modernizar aplicaciones monolíticas tradicionales.
En una encuesta de IBM realizada a ejecutivos de TI, desarrolladores y ejecutivos de desarrollo, el 87 % de los usuarios de microservicios afirmó que el gasto y el esfuerzo necesarios para adoptar los microservicios valen la pena.
Los desarrolladores suelen desplegar los microservicios dentro de contenedores, que son componentes de aplicaciones ligeros y ejecutables que combinan código fuente de la aplicación (en este caso, el código de los microservicios) con todas las bibliotecas y dependencias del sistema operativo (SO) necesarias para ejecutar el código en cualquier entorno. Más pequeños, más portátiles y con un uso más eficiente de los recursos que las máquinas virtuales (MV), los contenedores son las unidades de cálculo de facto de las aplicaciones nativas en cloud modernas.
Los contenedores amplían las ventajas de los microservicios ya que permiten un despliegue y una experiencia de gestión coherentes en un entorno multicloud híbrido: cloud público, cloud privado e infraestructura local. Sin embargo, a medida que las aplicaciones nativas en cloud se multiplican, también lo hacen los contenedores y, por lo tanto, la complejidad de su gestión. La mayoría de las organizaciones que utilizan microservicios en contenedores también utilizan una plataforma de orquestación de contenedores, como Kubernetes, para automatizar el despliegue y la gestión de los contenedores a escala.
Los clientes de IBM cada vez asumen más tareas de mejora de las aplicaciones existentes, creación de nuevas aplicaciones y mejora de la experiencia del usuario. Las aplicaciones nativas en cloud satisfacen estas demandas e incrementan el rendimiento, la flexibilidad y la extensibilidad de las aplicaciones.
Ventajas
Desventajas
Las aplicaciones nativas en cloud suelen tener funciones bastante específicas. Piense en cómo se pueden utilizar las aplicaciones nativas en cloud en un sitio web de viajes. Cada tema que aborda el sitio —vuelos, hoteles, coches, ofertas especiales— es su propio microservicio. Cada microservicio puede desplegar nuevas características de forma independiente a los demás microservicios. Las ofertas especiales y los descuentos también se pueden ampliar de forma independiente. Si bien el sitio de viajes se presenta a los clientes como un todo, cada microservicio sigue siendo independiente y se puede escalar o actualizar según sea necesario sin afectar a otros servicios. A continuación, se muestran algunos ejemplos de otras aplicaciones nativas en cloud.
IBM Cloud Garage proporciona a los clientes de IBM experiencia en consultoría para crear rápidamente aplicaciones nativas en cloud innovadoras y escalables. Ofrece un centro de innovación en el que empresas de todos los tamaños pueden diseñar y crear aplicaciones que resuelvan necesidades de negocio del mundo real.
Tanto para crear una nueva aplicación nativa en cloud como para modernizar una aplicación existente, los desarrolladores siguen una serie de principios coherentes:
Las aplicaciones nativas en cloud se suelen basar en contenedores. El atractivo de los contenedores es que son flexibles, ligeros y portátiles. Al principio, el uso de los contenedores tendía a centrarse en aplicaciones sin estado que no tenían necesidad de guardar datos de usuario de una sesión de usuario a la siguiente.
Sin embargo, a medida que se han ido trasladando al cloud más funciones principales de negocio, se debe abordar el problema del almacenamiento persistente en un entorno nativo en cloud. Para ello, es necesario que los desarrolladores consideren nuevas formas de afrontar el almacenamiento en cloud.
Del mismo modo que el desarrollo de aplicaciones nativas en cloud, el almacenamiento nativo en cloud debe adoptar un enfoque modular y de microservicios. Los datos nativos en cloud pueden residir en cualquier lugar, como registros de eventos o sistemas, bases de datos relacionales y almacenes de documentos u objetos.
La ubicación de los datos, las demandas de retención, la portabilidad, la compatibilidad de plataformas y la seguridad son solo algunos de los aspectos que los desarrolladores deben tener en cuenta al planificar el almacenamiento nativo en cloud.
Una aplicación habilitada para cloud es una aplicación que se ha desarrollado para desplegarla en un centro de datos tradicional, pero que posteriormente se ha modificado para poder ejecutarla también en un entorno en cloud. Las aplicaciones nativas en cloud, sin embargo, se crean para funcionar solo en el cloud. Los desarrolladores diseñan aplicaciones nativas en cloud que son escalables, no dependen de ninguna plataforma y están compuestas de microservicios.
En la breve historia del cloud computing, el significado de "preparado para el cloud" ha cambiado varias veces. Inicialmente, el término se refería a software o servicios diseñados para funcionar a través de Internet. Hoy en día, el término se utiliza más a menudo para describir una aplicación que funciona en un entorno en cloud, o una aplicación tradicional que se ha reconfigurado para un entorno en cloud. La historia del término "nativo en cloud" es mucho más breve y se refiere a una aplicación desarrollada desde el principio para funcionar solo en el cloud y utilizar las características de la arquitectura en cloud, o una aplicación existente que se ha refactorizado y reconfigurado con principios nativos en cloud.
Una aplicación o servicio basado en cloud se entrega a través de Internet. Es un término general que se aplica ampliamente a una gran cantidad de ofertas en cloud. Nativo en cloud es un término más específico. Nativo en cloud describe las aplicaciones diseñadas para funcionar en entornos en cloud. El término denota las aplicaciones que utilizan microservicios, integración continua y entrega continua (CI/CD) y se pueden utilizar a través de cualquier plataforma en cloud.
Cloud first describe una estrategia de negocio en la que las organizaciones se comprometen a utilizar primero los recursos de cloud al lanzar nuevos servicios de TI, renovar los servicios actuales o sustituir la tecnología existente. Los factores principales de esta estrategia son el ahorro de costes y la eficiencia operativa. Las aplicaciones nativas en cloud combinan bien con la estrategia cloud first, porque solo utilizan recursos en cloud y están diseñadas para aprovechar las ventajas de la arquitectura de cloud.
IBM Cloud es un líder destacado en el desarrollo de aplicaciones nativas en cloud y un socio fiable para crear aplicaciones empresariales de forma rápida en una plataforma abierta, segura e integrada.
Despliegue clústeres de Kubernetes altamente disponibles y totalmente gestionados para sus aplicaciones en contenedores con un solo clic.
Ejecute imágenes de contenedor, trabajos por lotes o código fuente como cargas de trabajo sin servidor, sin necesidad de dimensionamiento, despliegue, conexión en red o escalado.
En una arquitectura de microservicios, cada aplicación se compone de muchos servicios más pequeños, débilmente acoplados y de despliegue independiente.
Los contenedores son unidades ejecutables de software que empaquetan código de aplicación junto con sus dependencias de bibliotecas y pueden ejecutarse en cualquier lugar, ya sea en un escritorio, TI tradicional o el cloud.
Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza el despliegue, la gestión y el escalado de aplicaciones en contenedores.