Aunque el uso del cloud ofrece una forma de resolver problemas gracias a la escalabilidad, la disponibilidad y la fiabilidad de nuestras aplicaciones, no es una solución infalible. No podemos poner nuestras aplicaciones en el cloud y esperar que funcionen a la perfección siempre, como tampoco podemos empaquetar nuestras aplicaciones en contenedores para convertirlas en microservicios que puedan funcionar sin problemas en el cloud. Para aprovechar al máximo lo que ofrece el cloud, necesitamos desarrollar infraestructuras y servicios con el cloud siempre en mente.
Para entender realmente el recorrido nativo del cloud y su importancia, tenemos que fijarnos primero en cómo era el mundo de la infraestructura y los servicios durante los primeros tiempos de Internet. Emprendamos juntos este viaje.
La transición hacia el cloud
En los inicios de Internet, la infraestructura general de las aplicaciones web se alojaba en servidores físicos que había que adquirir y preparar para poder ofrecer las aplicaciones desde ellos. Los equipos de TI tenían que comprar físicamente los servidores y configurarlos on-premises, instalar los sistemas operativos de los servidores correspondientes, preparar los entornos y luego implementar las aplicaciones sobre ellos. Este enfoque planteaba muchos problemas: por ejemplo, algunos servidores estaban infrautilizados (ya que nunca se llegaban a usar del todo), era difícil ejecutar varias aplicaciones y los costes de configuración y mantenimiento eran elevados. La virtualización se desarrolló para permitir una utilización más eficiente de los servidores físicos. La virtualización crea una capa de abstracción sobre el hardware físico que permite dividir y compartir los recursos subyacentes, como los procesadores, la memoria y el almacenamiento
La virtualización resolvió muchos problemas con la utilización de los recursos y el sistema mutiempresa, pero aún se necesitaba el hardware para implementar la aplicación y se seguía asumiendo toda la carga que implicaba la ejecución del centro de datos. De ahí surgió la necesidad de ejecutar la infraestructura como servicio (IaaS), donde los servidores son propiedad de terceros que se encargan de la infraestructura subyacente de las aplicaciones. Así comenzó la era de la computación en el cloud, que permitió a las empresas centrarse en sus aplicaciones y entornos subyacentes sin preocuparse por el hardware, los gastos generales o los problemas de configuración. A IaaS le siguió la plataforma como servicio (PaaS), que se centró en mitigar los problemas aún más separando el entorno de software subyacente y el tiempo de ejecución. De este modo, los desarrolladores solo tenían que centrarse en escribir sus aplicaciones y definir las dependencias, y la plataforma de servicios se encargaba por completo de alojar, ejecutar, gestionar y exponer las aplicaciones. El sistema PaaS dio paso a los servicios en el cloud totalmente gestionados con la llegada del software como servicio (SaaS), más conocido como «software a la carta», que ofrece a los consumidores la aplicación como servicio con un modelo de pago por uso.
A medida que la computación en el cloud ganaba terreno, también lo hacía la idea de contar con tecnologías nativas del cloud que utilizaran este de forma más eficiente y aprovecharan todo el potencial de infraestructura y las múltiples ofertas que ofrecía. Esto dio lugar al desarrollo de la infraestructura nativa del cloud y el desarrollo de aplicaciones nativas del cloud. La infraestructura nativa del cloud crea una abstracción en la infraestructura subyacente del proveedor de cloud y expone la infraestructura con API. Esta filosofía de administración de infraestructuras facilita mucho la posibilidad de ampliar o reducir la complejidad subyacente, lo que a su vez mejora indirectamente la disponibilidad, la resiliencia y el mantenimiento. Del mismo modo, las aplicaciones nativas del cloud afianzan el puente entre la aplicación y la infraestructura con la incorporación de funciones de apoyo como las comprobaciones de estado, la telemetría y las métricas, la resiliencia, un entorno de microservicios y la recuperación automática.
Veamos ahora los retos que plantea el entorno de la computación en el cloud.
Dificultades en el cloud
Los proveedores de cloud público se han convertido en una solución empresarial preferente para muchas necesidades crecientes del sector y muchos requisitos empresariales. Ofrecen ventajas como una mayor disponibilidad y escalabilidad, además de la flexibilidad para diseñar aplicaciones de modo que utilicen los servicios en el cloud. Cuando se introdujeron por primera vez las soluciones en el cloud, a los posibles clientes les preocupaban varios puntos difíciles, como la seguridad, la gestión eficaz de los costes, el cumplimiento de la normativa y el rendimiento. Esas dificultades iniciales ya son cosa del pasado para la mayoría de los consumidores del cloud, pues se han solucionado gracias a los avances en las tecnologías de los proveedores de servicios en el cloud y a la forma en que las empresas implementan sus soluciones en el cloud.
No obstante, aunque hemos avanzado mucho, no significa que el cloud sea perfecto. El cloud sigue planteando retos, pero son muy diferentes de los que se afrontaban cuando aún era una novedad. Hoy en día, los clientes necesitan tener en cuenta los siguientes retos:
Demasiadas opciones
Hay un montón de proveedores de cloud con una amplia gama de servicios entre los que elegir. Eso implica la necesidad de contratar a arquitectos y equipos de ingeniería expertos que sepan cómo manejar los servicios y utilizarlos de acuerdo con el caso práctico de una empresa. No solo es difícil contratar a estos ingenieros, sino que encontrar ingenieros expertos en un campo específico requiere una inversión de tiempo considerable.
Crecimiento rápido y desarrollo de tecnologías y servicios en el cloud
Numerosos proveedores importantes de cloud, como Amazon, Microsoft y Google, están lanzando un gran número de nuevos servicios en el cloud. Esto se traduce en una mayor necesidad de formar a los ingenieros en estos nuevos servicios y de mantener estos servicios a medida que las aplicaciones crecen. A menudo, la magnitud de las inversiones en estos servicios también causa indirectamente la dependencia de un solo proveedor, lo que a su vez desencadena una serie de futuras limitaciones para diseñar las aplicaciones.
Múltiples generaciones de tecnología
A medida que nos hemos adentrado en la era del cloud, también hemos trasladado y cambiado nuestras pilas de aplicaciones de varias generaciones de soluciones de infraestructura, que van desde máquinas virtuales hasta contenedores y tecnologías sin servidor. Esta migración de aplicaciones conlleva un importante esfuerzo para comprender las tecnologías subyacentes y darles soporte en el futuro.
Complejidad operativa creciente
Estas tecnologías de rápido crecimiento, combinadas con la migración acelerada de las cargas de trabajo al cloud, han dado lugar a una complejidad operativa y una lista cada vez mayor de factores a los que prestar atención, como los sistemas de almacenamiento, los modelos de seguridad, los modelos de gobierno y las plataformas de gestión, entre otros.
Evolución de las necesidades empresariales y de las tecnologías
Además, los nuevos ámbitos tecnológicos y los cambios culturales también han permitido una rápida evolución de la arquitectura empresarial. Por ejemplo, con la llegada de la cultura DevOps, una nueva aplicación que antes se desarrollaba en cuestión de semanas o meses ahora puede desplegarse en un par de minutos. También han aparecido en escena áreas más avanzadas, como la ciencia de datos y el machine learning, lo que ha dado lugar al aumento de las necesidades empresariales y la madurez general de la ingeniería.
Por lo tanto, a pesar del poder de la computación en el cloud, las empresas han tenido que sortear numerosas dificultades. Con el tiempo, quedó claro que las empresas querían tener la velocidad, la escala y el margen del cloud, pero sin sus complicaciones. Para lograrlo fue necesario adoptar el enfoque nativo del cloud para la creación de aplicaciones que ayudara a las empresas a sacar el máximo partido al cloud.
Cloud Native Computing Foundation
A medida que más empresas adoptan tecnologías nativas del cloud, crean software interno y se asocian estrechamente con otras empresas para comercializar rápidamente los productos, se están dando pasos para mejorar el dominio nativo del cloud. Una organización que está ayudando a liderar el camino de esta iniciativa es la Cloud Native Computing Foundation (CNCF). Su misión es la siguiente:
Las tecnologías nativas del cloud permiten a las empresas crear y ejecutar aplicaciones escalables en entornos modernos y dinámicos, como clouds públicos, privados e híbridos. Los contenedores, las mallas de servicios, los microservicios, la infraestructura inmutable y las API declarativas son un ejemplo de este enfoque.
Estas técnicas hacen posible que los sistemas de acoplamiento flexible sean resistentes, manejables y observables. Combinadas con una buena automatización, permiten a los ingenieros efectuar cambios profundos de forma frecuente y predecible con el menor esfuerzo posible.
La Cloud Native Computing Foundation busca impulsar la adopción de este paradigma fomentando y respaldando un ecosistema de proyectos de código abierto y neutrales en cuanto a proveedores. Democratizamos patrones de vanguardia para que estas innovaciones puedan ser accesibles para todos.
CNCF ha compilado un panorama nativo del cloud interactivo que muestra todo el alcance de las soluciones nativas del cloud actuales. El panorama de la CNCF funciona como un mapa de las tecnologías nativas del cloud y ofrece pautas para construir aplicaciones nativas del cloud con éxito. Aunque el panorama nativo del cloud proporciona mucha información sobre cómo crear servicios, trabajar con él puede resultar complejo, especialmente para los principiantes, pues incluye una serie de servicios que se utilizan conjuntamente. En este libro, hemos elegido lo mejor de la tecnología disponible mientras seguimos las directrices de CNCF para navegar mejor por el mundo nativo del cloud.
Adoptar una infraestructura nativa del cloud con Azure
Ahora que ya conoces los orígenes de la computación en el cloud, los retos de trabajar con él y cómo las ofertas nativas del cloud aspiraban a cambiar la forma en que se desarrollaban y prestaban los servicios, veamos cómo este libro puede ayudarte a avanzar.
Si echas un vistazo al movimiento nativo del cloud y empiezas a recorrer su historia desde el principio, la primera tecnología que aparece es Kubernetes y verás que muchas personas la adoptaron. A primera vista, puedes observar que muchas empresas tienen a Kubernetes como algo central en su pila de aplicaciones. Eso puede llevarte a pensar que Kubernetes es una herramienta imprescindible capaz de resolver todos tus problemas y que mágicamente hace que tu entorno sea autorreparable y tolerante a errores. Este concepto erróneo ha hecho que mucha gente crea que Kubernetes es una fórmula mágica sin comprender completamente su significado más profundo. Es importante entender para qué sirven estas soluciones y tener una visión completa del ecosistema sin perder de vista la perspectiva general.
En los siguientes capítulos, ofrecemos orientación sobre cómo crear entornos nativos del cloud según las directrices propuestas por la CNCF. Hemos escrito este libro como un manual para ingenieros y aficionados que están iniciándose en las transformaciones nativas del cloud y quieren profundizar en la necesidad general de las arquitecturas nativas del cloud. Aprenderás formas prácticas de crear infraestructuras nativas del cloud sobre Microsoft Azure gracias a este recorrido general que te presenta la CNCF. También aprenderás los principios de la infraestructura nativa del cloud con una perspectiva de principiante e implementarás soluciones maduras en Azure.1 Como Azure es uno de los elementos clave en el ecosistema del cloud público, proporciona una comprensión madura de la pila de infraestructura. Te explicaremos los conceptos básicos de la infraestructura de cloud y explicaremos cómo convertirnos en nativos del cloud a través de diversas tecnologías, al tiempo que destacaremos por qué estas tecnologías son necesarias. Compartiremos una extensa explicación sobre las tecnologías nativas del cloud y los servicios de Azure a través de una aplicación práctica y mostraremos las ventajas de basarse en el cloud (con Azure) frente a las soluciones nativas del cloud. Nuestro objetivo final es ofrecerte un libro que incluya todas las tecnologías nativas del cloud más importantes y su trascendencia para que entiendas el razonamiento lógico que explica las ventajas de utilizarlas.
Resumen
En este capítulo introductorio, hemos sentado las bases de lo que significa la computación en el cloud y de cómo las tecnologías nativas del cloud ayudan a reforzar su adopción. Ya has descubierto cómo se popularizó el cloud y cómo la computación en el cloud evolucionó del hardware físico a un entorno sin servidores. También hemos visto los desafíos de la computación en el cloud y la creciente necesidad de adaptarse a las tecnologías nativas del cloud. Hemos explicado qué significa «nativo del cloud» y cómo en el resto del libro se seguirá la trayectoria hacia el cloud nativo en Azure. Esperamos que el viaje que te espera sea interesante y que este esfuerzo te ayude a adaptar las tecnologías nativas del cloud de manera más eficaz.