¿Qué es Nativo de la nube?

Nativo de la nube es un enfoque de desarrollo de aplicaciones que utiliza tecnologías como microservicios, contenedores, orquestadores de contenedores e infraestructura inmutable para construir, implementar, ejecutar y gestionar aplicaciones de software con capacidad de respuesta, escalables y tolerantes a fallos en un entorno de computación en la nube.

 

Nativo de la nube explicado

Nativo de la nube describe el diseño y el funcionamiento de las aplicaciones de software creadas para operar en la nube. Nativo de la nube acelera la transformación digital porque maximiza la flexibilidad, la escalabilidad y la resistencia de los servicios basados en la nube para ofrecer de forma eficaz aplicaciones fáciles de gestionar y mantener.

Aplicaciones monolíticas frente a aplicaciones nativas de la nube: Un ejemplo

Imagine que un banco necesita crear una nueva aplicación. Antes de la computación en la nube, el banco contrataba a desarrolladores para crear la aplicación, compraba la infraestructura física necesaria para ejecutar la aplicación in situ y mantenía esa infraestructura durante toda la vida útil de la aplicación. Para acceder a la aplicación, los usuarios debían conectarse a los servidores del banco y, dado que esos servidores albergaban cada uno de los servicios que ofrecía la aplicación -consultar números de cuenta, transferir fondos, etc.-, la actualización y el mantenimiento de cualquiera de los servicios requeriría el cierre de todo el sistema.

Cuando los desarrolladores empezaron a alojar aplicaciones en la nube, "levantaron y trasladaron" sus aplicaciones de los entornos in situ preservando la arquitectura general de sus aplicaciones, así como sus limitaciones. En lugar de comprar y gestionar servidores para alojar sus aplicaciones, alquilaron recursos informáticos a un proveedor de servicios en la nube (PSC). Pero los nuevos servicios, como la plataforma como servicio, los contenedores como servicio y la infraestructura sin servidor, han abierto nuevas oportunidades para crear, implementar y gestionar aplicaciones a una velocidad de vértigo, relativamente hablando.

 

Historia de Nativo de la nube

La práctica de crear aplicaciones in situ empezó a cambiar a principios de la década de 2000 con la llegada de la virtualización y la aparición de proveedores de infraestructura como servicio (IaaS) , como Amazon Web Services (AWS), que permitieron a los desarrolladores aprovisionar y gestionar máquinas virtuales en la nube. Esto allanó el camino para el desarrollo de ofertas de plataforma como servicio (PaaS) , como Google App Engine y Heroku, que proporcionaron una capa de abstracción de nivel superior para crear e implementar aplicaciones basadas en la nube.

Pero las primeras plataformas carecían de flexibilidad y los desarrolladores se veían encerrados, teniendo que utilizar API y herramientas propietarias. En respuesta, surgió un nuevo enfoque centrado en la creación de aplicaciones diseñadas para la nube y que utilizan tecnologías de código abierto.

Un ejemplo temprano de este enfoque fue la metodología Twelve-Factor App, que consiste en un conjunto de principios para crear aplicaciones nativas de la nube diseñadas para la portabilidad, la escalabilidad y la resistencia. Estos principios incluyen el uso de formatos declarativos para la configuración, la confianza en procesos sin estado y el tratamiento de los servicios de respaldo como recursos adjuntos.

Más o menos al mismo tiempo, la tecnología de contenedorización Docker surgió como un bloque de construcción clave para las aplicaciones nativas de la nube. Docker permitió a los desarrolladores empaquetar sus aplicaciones y dependencias en contenedores ligeros que podían implementarse fácilmente en distintos entornos de nube, resolviendo el problema de la portabilidad de las aplicaciones.

En 2014, Google lanzó Kubernetes, una plataforma de orquestación de contenedores de código abierto. Kubernetes, que proporciona un potente conjunto de herramientas para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores, se convirtió en el estándar para la gestión de aplicaciones en contenedores en la nube.

En los años transcurridos desde entonces, el enfoque nativo en la nube para la creación de aplicaciones ha sido adoptado por organizaciones de todos los sectores, desde nuevas empresas hasta grandes compañías, y ha dado lugar al desarrollo de un ecosistema de tecnologías, herramientas y plataformas de código abierto.

Vídeo: Nativo de la nube se está moviendo rápidamente y aumentando en complejidad. Descubra las tendencias relacionadas con la tecnología, DevOps y los ecosistemas nativos de la nube.

 

¿Qué son las aplicaciones nativas de la nube?

En un nivel básico, las aplicaciones nativas de la nube son programas de software en los que la funcionalidad se descompone en microservicios, pequeños servicios poco acoplados que funcionan independientemente unos de otros. Gracias a esta estructura modular, las aplicaciones nativas de la nube son más fáciles de crear y modificar que las aplicaciones monolíticas tradicionales. Los desarrolladores pueden implementar nuevas funciones y actualizaciones en una aplicación sin interrumpir el sistema.

En comparación, las aplicaciones monolíticas se construyen como una única base de código, con todos los componentes estrechamente acoplados y ejecutándose en un único servidor o máquina. Esto significa que los cambios o actualizaciones de la aplicación obligan a recompilar y volver a desplegar toda la aplicación.

Otras tecnologías y metodologías características de las aplicaciones nativas de la nube son:

  • Infraestructura basada en contenedores, normalmente contenedores Linux con orquestación basada en Kubernetes
  • Arquitectura construida en torno a microservicios libremente acoplados
  • Desarrollo ágil al estilo DevOps
  • Uso de la integración continua y la entrega continua (CI/CD)
  • Uso de código abierto y bibliotecas
  • Funciones sin servidor y PaaS

 

¿Qué es la arquitectura nativa de la nube?

La arquitectura nativa en la nube es una metodología de diseño que admite técnicas de desarrollo de aplicaciones rápidas y ágiles para construir aplicaciones nativas en la nube como conjuntos de piezas más pequeñas y componibles, fáciles de mantener, cambiar, escalar y migrar. A continuación, los componentes de la arquitectura nativa en la nube.

La arquitectura de microservicios es la base de los beneficios asociados a la aplicación moderna basada en contenedores
Figura 1: La arquitectura de microservicios es la base de los beneficios asociados a la aplicación moderna basada en contenedores.

Infraestructura inmutable

La infraestructura inmutable es un paradigma en el que los servidores y las máquinas virtuales (VM) se sustituyen en lugar de cambiarse cuando hay que actualizar, arreglar o modificar algo. Si es necesario realizar un cambio, los nuevos componentes que incorporan esos cambios se construyen a partir de una imagen común y los antiguos se retiran de la producción. Este enfoque crea un proceso predecible para la implementación nativa en la nube.

Arquitectura de microservicios

El auge de la arquitectura nativa de la nube se ha visto impulsado por la arquitectura de microservicios, un patrón de diseño de software que hace hincapié en el uso de servicios desplegables de forma independiente, cada uno con una función empresarial específica, que trabajan juntos en la aplicación nativa de la nube. Los microservicios permiten a los desarrolladores crear aplicaciones complejas mediante la composición de componentes más pequeños y manejables, que pueden escalarse y actualizarse de forma independiente.

API

Las API son una herramienta de comunicación utilizada en las aplicaciones nativas de la nube. Facilitan una transferencia de información estándar y eficaz entre microservicios independientes, permitiéndoles compartir información para que puedan funcionar como un todo cohesionado.

Malla de servicio

Una malla de servicios es una capa de la arquitectura nativa de la nube que gestiona la comunicación entre microservicios. Las mallas de servicios también permiten añadir gestión del tráfico, seguridad y funciones adicionales a los servicios sin tener que añadir nuevo código.

Contenedores

Los contenedores permiten empaquetar los microservicios en entornos autocontenidos con sus dependencias -código, archivos de recursos, herramientas del sistema y bibliotecas del sistema- para que funcionen de forma coherente en cualquier circunstancia. Esto permite a los desarrolladores reproducir o analizar y aislar fácilmente un servicio. Dado que contienen todo lo que una aplicación necesita para ejecutarse, los contenedores permiten implementar aplicaciones nativas de la nube en cualquier lugar, ya sea in situ o en la nube.

Con cada microservicio implementado en un contenedor, los grupos de contenedores trabajan juntos como un sistema, o "pila", para formar la aplicación nativa completa. Un sistema de orquestación dinámico supervisa automáticamente cada contenedor, poniéndolos en marcha y apagándolos según las necesidades del usuario, lo que se traduce en una mayor escalabilidad y eficacia.

 

¿Qué es el desarrollo de aplicaciones nativas de la nube?

El desarrollo de aplicaciones nativas en la nube es el proceso de creación de aplicaciones estables y escalables para su funcionamiento en una nube privada, pública o híbrida. Las prácticas comunes de desarrollo nativo en la nube incluyen:

Integración continua

La integración continua (IC) es una práctica que consiste en construir, probar e integrar automáticamente los cambios de código en un repositorio central. Esto ayuda a garantizar que los cambios en el código se prueben a fondo y se integren con el resto de la base de código de la aplicación. En el desarrollo nativo en la nube, el CI se utiliza a menudo junto con la contenedorización, que permite a los desarrolladores empaquetar su código, dependencias y configuración en una única unidad autocontenida.

Entrega continua

La entrega continua (CD) es el proceso de entregar aplicaciones creadas en el proceso de CI a un entorno similar al de producción, donde se someten a pruebas automatizadas adicionales para eliminar problemas de rendimiento inesperados. Al permitir más actualizaciones incrementales de las aplicaciones en producción, la CD ayuda a reducir el coste, el tiempo y el riesgo de la entrega de cambios y permite a los desarrolladores crear, probar y lanzar software de alta calidad con mayor velocidad y frecuencia. En el desarrollo nativo de la nube, la DC se utiliza a menudo junto con las prácticas de automatización y DevOps, que ayudan a agilizar el proceso de desarrollo e implementación del software.

DevOps

DevOps es un enfoque que combina el desarrollo de software y las operaciones de TI para aumentar la eficacia, la velocidad, la calidad y la seguridad del desarrollo y la entrega de software.

En el desarrollo nativo en la nube, DevOps se utiliza a menudo para automatizar muchos aspectos del proceso de desarrollo e implementación de software. El enfoque en un enfoque rápido e iterativo se alinea con el modelo nativo de la nube y ayuda a las organizaciones a ofrecer aplicaciones y servicios a gran velocidad. Esto permite a las empresas ofrecer un mejor servicio a sus clientes y competir más eficazmente en su sector.

Sin servidor

La computación sin servidor, utilizada junto con los microservicios, es un modelo de desarrollo nativo de la nube que permite a los desarrolladores escribir e implementar código sin tener que gestionar la infraestructura subyacente de la nube. Dado que los recursos se asignan dinámicamente en función de la demanda, la informática sin servidor puede reducir los costes y mejorar la escalabilidad.

 

Ventajas del desarrollo de aplicaciones Nativo de la nube

Las prácticas nativas de la nube ofrecen las mejores oportunidades para impulsar la transformación digital y el crecimiento empresarial. El desarrollo de aplicaciones nativas es rentable, ya que permite actualizar y mantener fácilmente las aplicaciones mediante la integración continua/entrega continua (CI/CD). También ayuda a las organizaciones a romper los silos entre desarrollo, operaciones y seguridad para ofrecer una experiencia coherente en todo el ciclo de vida de desarrollo de las aplicaciones.

Otras ventajas del desarrollo de aplicaciones nativas en la nube son:

Mayor velocidad

Las aplicaciones nativas de la nube se desarrollan mediante un proceso de desarrollo ágil, con servicios individuales desarrollados e implementados de forma independiente, lo que permite una iteración y una implementación más rápidas de las nuevas funciones o actualizaciones.

Calidad y fiabilidad mejoradas

Con el desarrollo de aplicaciones nativas en la nube, los desarrolladores pueden centrarse en aportar valor a la aplicación porque el proveedor de la nube gestiona la infraestructura subyacente. Esto también mejora la coherencia y la fiabilidad del entorno operativo.

Operaciones rentables

Las aplicaciones nativas de la nube están diseñadas para ser escalables horizontalmente, donde los recursos pueden añadirse o eliminarse de forma dinámica en función de la demanda. Por el contrario, las aplicaciones monolíticas suelen escalarse verticalmente, lo que significa que se añaden recursos adicionales al servidor o la máquina para gestionar el aumento de la demanda. Este enfoque puede resultar caro e ineficaz, ya que a menudo requiere un aprovisionamiento excesivo de recursos para hacer frente a los picos de demanda.

Mejor adaptabilidad y escalabilidad

El desarrollo de aplicaciones nativas en la nube facilita seguir el ritmo de las necesidades cambiantes de los clientes y de la empresa porque ofrece aplicaciones compuestas de microservicios poco acoplados que son fáciles de actualizar, cambiar y escalar en tiempo real.

Mayor resistencia

El desarrollo de aplicaciones nativas en la nube mejora la capacidad de recuperación porque utiliza microservicios que pueden aislarse. Si un componente de una aplicación monolítica falla, puede hacer caer todo el sistema. Pero las aplicaciones tolerantes a fallos y nativas de la nube están diseñadas para seguir funcionando incluso si fallan servicios individuales.

Riesgo minimizado de bloqueo del proveedor

Dado que el desarrollo de aplicaciones nativas de la nube utiliza contenedores para transferir microservicios entre las infraestructuras de distintos proveedores, las organizaciones no están atadas a un proveedor concreto. Pueden utilizar los servicios de múltiples proveedores de nubes y seleccionar las opciones que mejor se adapten a su negocio.

Solución de problemas simplificada

El desarrollo de aplicaciones nativas en la nube simplifica la resolución de problemas porque su arquitectura de microservicios facilita el seguimiento de los problemas hasta el servicio de origen y su solución sin tiempo de inactividad del servidor.

Superficie de ataque reducida

Las aplicaciones nativas de la nube están diseñadas para la seguridad, con servicios individuales normalmente aislados entre sí. Esto reduce la superficie de ataque de las aplicaciones monolíticas tradicionales construidas con componentes estrechamente acoplados que facilitan a los atacantes el acceso a datos sensibles.

 

¿Qué es una pila nativa de la nube?

La pila nativa en la nube hace referencia a las capas de herramientas y tecnologías que los desarrolladores utilizan para crear, gestionar y ejecutar aplicaciones nativas en la nube. Las capas de la pila nativa de la nube incluyen:

Capa de infraestructura

La capa de infraestructura constituye la base de la pila nativa de la nube. Está formado por los componentes de soporte del desarrollo de aplicaciones nativas de la nube, incluidos los sistemas operativos, el almacenamiento, la red y otros recursos informáticos. La capa de infraestructura está gestionada por terceros proveedores de nubes.

Capa de aprovisionamiento

La capa de aprovisionamiento en la pila nativa de la nube está formada por las herramientas utilizadas para crear y asegurar la infraestructura. Esto incluye herramientas para escanear y almacenar imágenes de contenedor y permitir el establecimiento y la aplicación de políticas.

Capa de ejecución

La capa de tiempo de ejecución engloba todo lo que un contenedor necesita para ejecutarse en un entorno nativo de la nube. Esto incluye el código utilizado para iniciar un contenedor y las herramientas que ponen el almacenamiento persistente a disposición de los contenedores.

Capa de orquestación y gestión

La capa de orquestación y gestión es similar a un sistema operativo, responsable de reunir los componentes de la nube para que puedan trabajar juntos como una unidad cohesionada. Las herramientas de orquestación como Kubernetes, Docker y OpenShift permiten a los desarrolladores implementar, gestionar y escalar aplicaciones en contenedores.

Capa de definición y desarrollo de aplicaciones

La capa de definición y desarrollo de aplicaciones está formada por todas las tecnologías que los desarrolladores utilizan para crear aplicaciones, incluidas las bases de datos, los sistemas de mensajería, las imágenes de contenedor y los Canales de CI/CD.

Observabilidad y herramientas de análisis

Las herramientas de observabilidad y análisis observan todas las capas de la pila nativa de la nube para supervisar y evaluar la salud de las aplicaciones en la nube y asegurarse de que no se interrumpe la calidad del servicio de la aplicación. Se dividen en las categorías de registro, supervisión y rastreo y se utilizan para supervisar métricas como el uso de la CPU, la latencia y la memoria.

 

Retos de la seguridad nativa de la nube

Dado que los entornos en nube y nativos de la nube tienen arquitecturas diferentes que dependen de tecnologías distintas, la seguridad en nube y la seguridad nativa de la nube difieren. La seguridad en la nube requiere un enfoque amplio y holístico de la seguridad, ya que abarca una serie de activos y aplicaciones. La seguridad nativa de la nube, por otra parte, requiere un enfoque especializado que tenga en cuenta los problemas de seguridad exclusivos de las aplicaciones y la infraestructura nativas de la nube.

Entre los retos de seguridad comunes de la nube nativa se incluyen:

Falta de visibilidad: La complejidad del entorno de nube dificulta una visibilidad completa, creando puntos muertos en los que pueden enconarse los riesgos de seguridad.

Amenazas diversas: Los actores de amenaza en la nube encuentran vías de ataque creativas y soluciones a las soluciones de seguridad tan rápido como se crean.

Incapacidad para aplicar políticas coherentes: La infraestructura nativa de la nube de una organización suele conllevar múltiples proveedores de servicios en la nube y herramientas de seguridad dispares, lo que dificulta la centralización de las políticas de seguridad y su aplicación coherente.

Configuraciones erróneas: Una falta histórica de seguridad integrada en el proceso de desarrollo de aplicaciones deja espacio para configuraciones erróneas y vulnerabilidades de código abierto que pueden provocar la exposición de datos y el acceso no autorizado a cargas de trabajo .

Procesos de seguridad lentos: Mantener la vigilancia del cumplimiento y la seguridad que exigen los Canales de CI/CD de alta velocidad ralentiza la flexibilidad, agilidad y velocidad inherentes a la computación en la nube.

Inseguridad por defecto: Muchas herramientas nativas de la nube proporcionadas por los CSP ofrecen configuraciones flexibles, incluidas configuraciones predeterminadas inseguras que pueden dar lugar a violaciones de la seguridad.

Vulnerabilidades de la cadena de suministro de software: Las vulnerabilidades sin parches en el software de código abierto aumentan la fragilidad de la cadena de suministro de software.

Con las herramientas adecuadas, los equipos de seguridad pueden superar los retos de la seguridad nativa de la nube. Una plataforma de protección de aplicaciones nativas en la nube (CNAPP) proporcionará una visibilidad continua en un único panel de control, así como una aplicación coherente de las políticas de seguridad en todo el entorno de nube.

 

Preguntas frecuentes sobre Nativo de la nube

La seguridad en la nube se refiere a la protección de los activos y datos basados en la nube, independientemente de dónde se crearon o implementaron originalmente. La seguridad nativa de la nube se centra en la seguridad de las aplicaciones y la infraestructura creadas específicamente para el entorno de nube.
La Fundación para la Computación Nativa en la Nube (CNCF) es el centro neurálgico de la computación en la nube, de código abierto y proveedor neutral. Con la misión de hacer que la computación nativa en la nube sea universal y sostenible, la CNCF aboga por la adopción de la computación nativa en la nube y ayuda a la comunidad de código abierto a desarrollar tecnologías nativas en la nube emergentes.
Tanto el "nativo de la nube" como el "lift and shift" son métodos para crear un servicio o una aplicación en la nube. En el caso de las aplicaciones nativas de la nube, el nuevo código de la aplicación se desarrolla junto con la canalización CI/CD y la infraestructura inmutable como código necesario para soportarla. Lift and shift es un proceso relativamente rápido, mientras que Nativo de la nube requiere más desarrollo previo. Al final, el coste global del enfoque nativo en la nube es menor que el coste de elevación y desplazamiento.
Una aplicación habilitada para la nube es una aplicación heredada que se ejecutaba en un centro de datos in situ y que se ha modificado para ejecutarse en la nube. Dado que las aplicaciones en la nube se construyen con tecnologías monolíticas, no tienen la flexibilidad y la escalabilidad de las aplicaciones nativas de la nube.