No importa qué proveedor de nube utilice si la carga de trabajo está diseñada para ser portátil. Cuando diseñe teniendo en cuenta la portabilidad y la estandarización, empiece por identificar los puntos de bloqueo del proveedor o dónde existe la posibilidad de que un proveedor de nube le impida cambiar a otro proveedor.
Por ejemplo, diseñar en torno a elementos como Kubernetes no siempre es suficiente. Piense en otros sistemas con los que el clúster de Kubernetes podría interactuar o necesitar interactuar. Evalúe esos requisitos y diseñe su arquitectura utilizando soluciones de código abierto y primitivas de infraestructura de nube básicas, que puede encontrar en cualquier proveedor de nube.
Céntrese en las API estándar para garantizar la compatibilidad entre la aplicación y otros sistemas. Empiece con las API RESTful para componentes que utilicen comunicación síncrona (solicitud/respuesta). Su popularidad se debe al uso de HTTP, el protocolo más común y ampliamente soportado. Aunque otros protocolos han ido y venido y seguirán viniendo para cosas como el streaming de vídeo, los que se han mantenido son los basados en HTTP.
Los diseños modulares con microservicios o contenedores descomponen la aplicación en componentes más pequeños y manejables, lo que facilita añadir o eliminar funcionalidades según sea necesario y hace que la aplicación sea más flexible y escalable. Un enfoque nativo en la nube brilla porque proporciona un proceso eficiente para actualizar y sustituir esos componentes sin afectar a toda la carga de trabajo.
Una vez que se dispone de una arquitectura portátil, ¿cómo evitar que resulte tan abrumadora desde el punto de vista de la gestión? La automatización simplifica y agiliza el despliegue y la gestión de la aplicación. Utiliza pipelines de integración continua/despliegue continuo (CI/CD) y herramientas de infraestructura como código (IaC).
Un enfoque declarativo de la implantación le permite codificar cada parte de su carga de trabajo: la aplicación, el software, las configuraciones del sistema y todo lo que se ejecuta en los entornos de desarrollo, ensayo y producción. Como resultado, puede iniciar rápidamente una nueva nube, realizar una conmutación por error o pasar a otro proveedor de nube. Con un entorno totalmente codificado que también está versionado, tienes todo documentado con respecto a cómo se configura exactamente todo, y tienes un historial transparente de todos los cambios y de todos los que han hecho cambios en él.
Y, por supuesto, no hay que olvidar la seguridad. Seguir este camino hacia la portabilidad permite desarrollar un enfoque más estándar de la seguridad, eliminando una peligrosa mentalidad de "configúralo y olvídate". He visto esto muchas veces. Despliegas una carga de trabajo en una nube privada virtual (VPC) y asumes que es segura.
Dentro del mismo enfoque "Todo como código", implantamos una arquitectura portátil y estandarizada; los aspectos de su postura de seguridad también pueden estandarizarse y codificarse. Además de las prácticas DevSecOps que automatizan los bucles de retroalimentación, las pruebas de vulnerabilidad, etc., piense en las políticas de control de acceso y las plantillas de configuración reforzadas, que pueden ser independientes de la plataforma subyacente y, por lo tanto, pueden proteger sus recursos con coherencia en todos los entornos. Este enfoque de la seguridad puede ser inmensamente poderoso, especialmente cuando se puede coger esa aplicación y dejarla en cualquier proveedor de nube. Ser capaz de recoger su carga de trabajo y moverla es una sólida estrategia defensiva para la recuperación de desastres.
Ventajas de una arquitectura portátil
Una arquitectura de nube portátil ofrece flexibilidad, optimización de costes, resistencia, escalabilidad y mejores prácticas de implantación. Le permite elegir las mejores soluciones de nube para sus necesidades, evitar la dependencia de un proveedor y adaptarse rápidamente a la evolución de los requisitos o las condiciones del mercado. También puede:
- Aumentar la disponibilidad: Una arquitectura portátil garantiza que las aplicaciones puedan desplegarse fácilmente en varias plataformas en la nube, lo que reduce el riesgo de tiempo de inactividad debido a problemas específicos de la plataforma.
- Mejorar la agilidad: Una arquitectura nativa en la nube permite a los desarrolladores iterar y desplegar rápidamente nuevas características y funcionalidades, lo que reduce el tiempo de comercialización y mejora la competitividad.
- Mejorar la seguridad: Una arquitectura portátil permite que las aplicaciones y los componentes de la infraestructura estén protegidos de forma más coherente, con funciones de seguridad como el cifrado y la gestión de identidades integradas en la arquitectura en lugar de depender de las funciones de la plataforma.
- Aumentar la resistencia: Una arquitectura portátil garantiza que las aplicaciones puedan sobrevivir a fallos de hardware y software sin interrupciones ni pérdidas de datos.
- Gestión más sencilla: Una arquitectura portátil permite gestionar las aplicaciones de forma más eficiente, con herramientas de supervisión, automatización y orquestación que funcionan en múltiples plataformas en la nube.
- Aumentar la innovación: Una arquitectura portátil permite a las organizaciones utilizar tecnologías nuevas y emergentes, como la IA y el aprendizaje automático, para crear nuevas aplicaciones y servicios innovadores.
Comentarios