Una visión general de la computación nativa de la nube
Aprende lo básico de crear aplicaciones en la nube.
― 7 minilectura
Tabla de contenidos
La computación nativa de la nube es una forma de construir y ejecutar aplicaciones que aprovechan al máximo el modelo de computación en la nube. Este enfoque permite un desarrollo y despliegue más rápido de aplicaciones. Con lo nativo de la nube, los desarrolladores pueden crear aplicaciones que son flexibles, escalables y resilientes.
Antes, las aplicaciones se construían a menudo de manera monolítica, lo que significa que estaban empaquetadas como una sola unidad. Esto podía dificultar las actualizaciones y la Escalabilidad. La computación nativa de la nube cambia esto al dividir las aplicaciones en partes más pequeñas llamadas Microservicios. Cada microservicio puede funcionar de manera independiente, pero también comunicarse con otros microservicios para ofrecer una aplicación completa.
Este artículo explorará la computación nativa de la nube, incluidos sus componentes clave, beneficios y desafíos.
Componentes Clave de la Computación Nativa de la Nube
Microservicios
Los microservicios son la columna vertebral de las aplicaciones nativas de la nube. Cada microservicio se enfoca en una función específica de la aplicación. Este enfoque permite que los equipos trabajen en diferentes partes de la aplicación al mismo tiempo, mejorando la eficiencia.
Por ejemplo, en una aplicación de comercio electrónico, un microservicio podría manejar cuentas de usuario, mientras que otro gestiona el carrito de compras. Estos servicios pueden desarrollarse, desplegarse y actualizarse de manera independiente, haciendo que todo el sistema sea más ágil.
Contenedores
Los contenedores son una forma ligera de empaquetar aplicaciones y sus dependencias juntas. Esto significa que un contenedor incluye todo lo que la aplicación necesita para ejecutarse, como código, bibliotecas y configuraciones. Los contenedores aseguran que las aplicaciones se ejecuten de manera consistente en diferentes entornos, desde el desarrollo hasta la producción.
Docker es una plataforma popular para crear y gestionar contenedores. Al usar contenedores, los desarrolladores pueden construir aplicaciones una vez y ejecutarlas en cualquier lugar, sin preocuparse por problemas de compatibilidad.
Orquestación
A medida que las aplicaciones crecen, manejar muchos microservicios y contenedores puede volverse complejo. Aquí es donde entran en juego las herramientas de orquestación para automatizar el despliegue, la gestión y la escalabilidad de estos contenedores.
Kubernetes es una de las plataformas de orquestación más utilizadas. Ayuda a los desarrolladores a gestionar aplicaciones en contenedores al proporcionar funciones como despliegue automático, escalado y balanceo de carga. Con la orquestación, los desarrolladores pueden centrarse en escribir código mientras la herramienta gestiona la infraestructura subyacente.
Beneficios de la Computación Nativa de la Nube
Escalabilidad
Una de las mayores ventajas de la computación nativa de la nube es su capacidad para escalar aplicaciones fácilmente. A medida que aumenta la demanda de los usuarios, las aplicaciones nativas de la nube pueden ajustarse rápidamente agregando o eliminando microservicios. Esto significa que las empresas pueden responder a las necesidades cambiantes sin un tiempo de inactividad significativo o intervención manual.
Flexibilidad
Las aplicaciones nativas de la nube están diseñadas para ser flexibles. Los equipos pueden elegir la mejor tecnología y herramientas para cada microservicio, lo que permite la innovación y la experimentación. Esta flexibilidad también facilita la adopción de nuevas tecnologías a medida que se vuelven disponibles.
Resiliencia
Las arquitecturas nativas de la nube promueven la resiliencia. Si un microservicio falla, no afecta a toda la aplicación. Los otros microservicios pueden seguir funcionando, asegurando que la aplicación permanezca operativa. Esta resiliencia es crítica para las empresas que dependen de sus aplicaciones para atender a los clientes de manera continua.
Tiempo de Lanzamiento Más Rápido
Con la computación nativa de la nube, los equipos de desarrollo pueden entregar aplicaciones más rápido. El uso de microservicios y contenedores permite un desarrollo paralelo, lo que significa que diferentes equipos pueden trabajar en distintas partes de la aplicación simultáneamente. Esto reduce el tiempo que se tarda en llevar un producto al mercado y permite a las empresas responder más rápido a las necesidades de los clientes.
Desafíos de la Computación Nativa de la Nube
Complejidad
Si bien la computación nativa de la nube ofrece muchos beneficios, también introduce complejidad. Manejar múltiples microservicios y contenedores puede ser un desafío, especialmente a medida que las aplicaciones crecen. Los equipos necesitan estar capacitados en herramientas de orquestación y tecnologías de la nube para navegar esta complejidad de manera efectiva.
Seguridad
Con la distribución de microservicios, la seguridad se convierte en una prioridad. Cada microservicio puede tener sus vulnerabilidades de seguridad, y asegurar que todos los componentes estén seguros requiere atención constante. Los desarrolladores deben implementar las mejores prácticas de seguridad a lo largo del ciclo de vida del desarrollo.
Monitoreo y Solución de Problemas
Las aplicaciones nativas de la nube pueden ser más difíciles de monitorear y solucionar en comparación con las aplicaciones tradicionales. Con múltiples servicios funcionando de manera independiente, identificar la causa raíz de los problemas puede ser complicado. Las empresas necesitan herramientas de monitoreo robustas para rastrear la salud y el rendimiento de sus aplicaciones.
El Ciclo de Vida de las Aplicaciones Nativas de la Nube
Construcción
La primera fase de crear una aplicación nativa de la nube es la construcción. Esto implica seleccionar la arquitectura apropiada, ya sea monolítica o basada en microservicios. Para la mayoría de las aplicaciones modernas, una arquitectura de microservicios es preferible debido a su flexibilidad y escalabilidad.
Una vez que se decide la arquitectura, los desarrolladores comienzan a codificar y crear imágenes de contenedor para cada microservicio. Estas imágenes de contenedor se publican luego en un registro, donde pueden ser accedidas para el despliegue.
Orquestación
Después de construir los microservicios, la siguiente etapa es la orquestación. Esto implica gestionar automáticamente el despliegue, escalado y operación de los contenedores. Una herramienta de orquestación como Kubernetes agiliza este proceso, asegurando que todos los servicios trabajen juntos sin problemas.
Durante la orquestación, la aplicación se despliega en el entorno de la nube y se asignan los recursos necesarios. La herramienta de orquestación también gestiona tareas como chequeos de salud y balanceo de carga para asegurar un rendimiento óptimo.
Operación
Una vez que la aplicación está en funcionamiento, entra en la fase de operación. Esto incluye monitorear el rendimiento de la aplicación, equilibrar cargas y escalar recursos según la demanda. Los desarrolladores deben asegurarse de que la aplicación siga siendo confiable y eficiente.
Si surgen problemas, el equipo de operaciones diagnosticará el problema y puede necesitar migrar servicios a diferentes contenedores o servidores para resolver cuellos de botella en el rendimiento.
Mantenimiento
La fase final del ciclo de vida de la aplicación es el mantenimiento. Esto implica actualizar microservicios, desplegar nuevas funciones y asegurarse de que se apliquen parches de seguridad. El mantenimiento regular asegura que la aplicación siga siendo relevante y continúe satisfaciendo las necesidades del usuario.
Conclusión
La computación nativa de la nube está transformando la forma en que se desarrollan y despliegan las aplicaciones. Al aprovechar microservicios, contenedores y herramientas de orquestación, las organizaciones pueden crear aplicaciones que son escalables, flexibles y resilientes.
Aunque existen desafíos, como la complejidad y las preocupaciones de seguridad, los beneficios de la computación nativa de la nube son significativos. Las empresas que adoptan este enfoque pueden responder más rápido a las demandas del mercado y ofrecer mejores experiencias a los usuarios.
A medida que la computación nativa de la nube sigue evolucionando, cambiará el panorama tecnológico y creará nuevas oportunidades para la innovación. Adoptar este paradigma es esencial para las organizaciones que buscan prosperar en un mundo digital competitivo.
Título: Cloud-Native Computing: A Survey from the Perspective of Services
Resumen: The development of cloud computing delivery models inspires the emergence of cloud-native computing. Cloud-native computing, as the most influential development principle for web applications, has already attracted increasingly more attention in both industry and academia. Despite the momentum in the cloud-native industrial community, a clear research roadmap on this topic is still missing. As a contribution to this knowledge, this paper surveys key issues during the life-cycle of cloud-native applications, from the perspective of services. Specifically, we elaborate the research domains by decoupling the life-cycle of cloud-native applications into four states: building, orchestration, operate, and maintenance. We also discuss the fundamental necessities and summarize the key performance metrics that play critical roles during the development and management of cloud-native applications. We highlight the key implications and limitations of existing works in each state. The challenges, future directions, and research opportunities are also discussed.
Autores: Shuiguang Deng, Hailiang Zhao, Binbin Huang, Cheng Zhang, Feiyi Chen, Yinuo Deng, Jianwei Yin, Schahram Dustdar, Albert Y. Zomaya
Última actualización: 2023-06-25 00:00:00
Idioma: English
Fuente URL: https://arxiv.org/abs/2306.14402
Fuente PDF: https://arxiv.org/pdf/2306.14402
Licencia: https://creativecommons.org/licenses/by-sa/4.0/
Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.
Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.
Enlaces de referencia
- https://www.cncf.io/about/who-we-are/
- https://github.com/cncf/toc/blob/main/DEFINITION.md
- https://kubernetes.io/docs/concepts/architecture/nodes/
- https://kubernetes.io/docs/concepts/overview/components/
- https://helm.sh/
- https://istio.io/
- https://www.envoyproxy.io/
- https://prometheus.io
- https://grafana.com
- https://www.elastic.co/kibana/
- https://kubeedge.io/en/
- https://kubeedge.io/en/docs/kubeedge/
- https://kubernetes-csi.github.io/docs/
- https://kubernetes.io/docs/reference/access-authn-authz/rbac/
- https://kubernetes.io/docs/concepts/configuration/secret/
- https://github.com/coreos/flannel
- https://github.com/projectcalico/cni-plugin
- https://www.weave.works/oss/net/
- https://www.nginx.com/blog/what-is-a-service-mesh/
- https://www.jenkins.io/
- https://github.com/kubernetes/community/tree/master/sig-multicluster
- https://kubernetes.io/blog/2018/12/12/kubernetes-federation-evolution/
- https://karmada.io/