Detrás del modelo de precios de pago por uso, la nube pública está repleta de las últimas y mejores herramientas de desarrollo, devops e IA para crear aplicaciones mejores y más inteligentes con mayor rapidez.
Cuando pensamos en la nube pública, a menudo la primera consideración que nos viene a la mente es la económica: trasladar a la nube las cargas de trabajo de centros de datos de capacidad limitada reduce los gastos de capital (CapEx) pero aumenta los gastos operativos (OpEx). Esto puede ser atractivo o no para el director financiero, pero no es precisamente una tontería para los desarrolladores, los ejecutivos de las operaciones o los que combinan ambos aspectos como devops.
Para estas personas, la computación en la nube ofrece muchas oportunidades que simplemente no están disponibles cuando los nuevos servicios de software requieren la compra de nuevo hardware de servidor o suites de software empresarial. Lo que tarda seis meses en desplegarse en las instalaciones propias puede tardar a veces 10 minutos en la nube. Lo que requiere la firma de tres niveles de gestión para poder desarrollar en las instalaciones on premise puede cargarse a una tarjeta de crédito en el modelo cloud.
No es solo una cuestión de tiempo y comodidad. La nube también permite una mayor velocidad de desarrollo de software, lo que a menudo redunda en un menor tiempo de comercialización. La nube también puede permitir una mayor experimentación, lo que a menudo conduce a una mayor calidad del software.
Además, existen verdaderas innovaciones en cloud que pueden proporcionar beneficios inmediatos y resolver problemas de larga duración con la informática local. A continuación presentamos 16 atractivas capacidades del modelo cloud.
Instancias de computación bajo demanda
¿Necesita una nueva base de datos en su propio servidor local? Póngase a la cola y prepárese para esperar meses, si no años. Si puede tolerar tener una máquina virtual (VM) local en lugar de un servidor físico y su empresa utiliza VMware o tecnologías similares, su espera podría durar apenas unas semanas. Pero si quiere crear una instancia de servidor en una nube pública, puede tenerla aprovisionada y funcionando en unos 15 minutos, y podrá dimensionarla según sus necesidades y apagarla cuando no la utilice.
Imágenes de máquinas virtuales preconstruidas
Poder crear una máquina virtual con el sistema operativo de su elección es conveniente, pero luego todavía tiene que instalar y licenciar las aplicaciones que necesita. La posibilidad de crear una máquina virtual con el sistema operativo y las aplicaciones que elija, listas para funcionar, no tiene precio.
Servicios sin servidor
“Sin servidor” significa que un servicio o pieza de código se ejecutará bajo demanda durante un breve periodo de tiempo, normalmente en respuesta a un evento, sin necesidad de una máquina virtual dedicada en la que ejecutarse. Si un servicio es sin servidor, normalmente no hay que preocuparse por el servidor subyacente; los recursos se asignan a partir de un grupo mantenido por el proveedor de la nube.
Los servicios sin servidor, actualmente disponibles en todas las principales nubes públicas, suelen contar con escalado automático, alta disponibilidad integrada y un modelo de facturación de pago por valor. Si quiere una aplicación sin servidor sin estar atado a una nube pública específica, puede utilizar un marco sin servidor de proveedor neutral como Kubeless, que solo requiere un clúster Kubernetes (que está disponible como un servicio en la nube; ver más abajo).
Contenedores bajo demanda
Un contenedor es una unidad ejecutable ligera de software, mucho más ligera que una VM. Empaqueta el código de la aplicación y sus dependencias, como las bibliotecas, comparten el núcleo del sistema operativo de la máquina anfitriona y puede ejecutarse en Docker Engine o en un servicio Kubernetes. La ejecución de contenedores bajo demanda tiene todas las ventajas de la ejecución de máquinas virtuales bajo demanda, con las ventajas adicionales de requerir menos recursos y costar menos.
Imágenes de contenedores preconstruidas
Un contenedor Docker es una instancia ejecutable de una imagen Docker, que se especifica mediante un Dockerfile. Un Dockerfile contiene las instrucciones para construir una imagen, y a menudo se basa en otra imagen. Por ejemplo, una imagen que contenga Apache HTTP Server puede estar basada en una imagen de Ubuntu. Puede encontrar Dockerfiles predefinidos en el registro de Docker, y también puede construir los tuyos propios. Puede ejecutar imágenes Docker en su instalación local de Docker o en cualquier nube con soporte para contenedores. Al igual que con las imágenes de máquinas virtuales preconstruidas, un Dockerfile puede poner en marcha una aplicación completa rápidamente, pero a diferencia de las imágenes de VM, los Dockerfiles son independientes del proveedor.
Orquestación de contenedores Kubernetes
Kubernetes (K8s) es un sistema de código abierto para automatizar el despliegue, el escalado y la gestión de aplicaciones en contenedores. K8s se basa en la tecnología interna “Borg” de Google. Los clusters de K8s consisten en un conjunto de máquinas de trabajo, llamadas nodos, que ejecutan aplicaciones en contenedores. Los nodos trabajadores alojan pods, que contienen aplicaciones; un plano de control gestiona los nodos trabajadores y los pods. K8s se ejecuta en cualquier lugar y escala sin límites. Todas las principales nubes públicas tienen servicios K8s; también puede ejecutar K8s en su propia máquina de desarrollo.
Escalado automático de servidores
No tiene que contenerizar sus aplicaciones y ejecutarlas bajo Kubernetes para escalarlas automáticamente en la nube. La mayoría de las nubes públicas le permiten escalar automáticamente las máquinas virtuales y los servicios en función del uso, ya sea añadiendo (o quitando) instancias o aumentando (o disminuyendo) el tamaño de las mismas.
Bases de datos planetarias
Las principales nubes públicas y varios proveedores de bases de datos han implementado bases de datos distribuidas a escala planetaria con fundamentos como redes de datos, interconexiones redundantes y algoritmos de consenso distribuidos que les permiten trabajar de forma eficiente y con una fiabilidad de hasta cinco 9 (0,99999% de tiempo de actividad). Los ejemplos específicos de la nube incluyen Google Cloud Spanner (relacional), Azure Cosmos DB (multimodelo), Amazon DynamoDB (valor clave y documento) y Amazon Aurora (relacional). Los ejemplos de proveedores incluyen CockroachDB (relacional), PlanetScale (relacional), Fauna (relacional/sin servidor), Neo4j (gráfico), MongoDB Atlas (documento), DataStax Astra (columna ancha) y Couchbase Cloud (documento).
Servicios híbridos
Las empresas con grandes inversiones en centros de datos suelen querer ampliar sus aplicaciones y servicios existentes a la nube en lugar de sustituirlos por servicios en la nube. Todos los principales proveedores de la nube ofrecen ahora formas de lograrlo, tanto mediante el uso de servicios híbridos específicos (por ejemplo, bases de datos que pueden abarcar los centros de datos y las nubes) como de servidores locales y recursos de nube de borde que se conectan a la nube pública, a menudo llamados nubes híbridas.
Entrenamiento y predicción de aprendizaje automático escalable
El entrenamiento del aprendizaje automático (machine learning), especialmente el aprendizaje profundo (deep learning), suele requerir importantes recursos informáticos durante horas o semanas. La predicción del aprendizaje automático, por otro lado, necesita sus recursos informáticos durante segundos por predicción, a menos que esté haciendo predicciones por lotes. El uso de recursos en la nube es a menudo la forma más conveniente de lograr el entrenamiento y las predicciones del modelo.
GPU, TPU y FPGA en la nube
El aprendizaje profundo con modelos grandes y los conjuntos de datos muy grandes necesarios para un entrenamiento preciso a menudo pueden tomar mucho más de una semana en clusters de CPU. Las GPU, TPU y FPGA pueden reducir significativamente el tiempo de entrenamiento, y el hecho de tenerlas disponibles en la nube facilita su uso cuando sea necesario.
Servicios de IA preentrenados
Muchos servicios de IA se pueden realizar bien con modelos preentrenados, por ejemplo, la traducción de idiomas, la conversión de texto en voz y la identificación de imágenes. Todos los principales servicios en la nube ofrecen servicios de IA preformados basados en modelos robustos.
Servicios de IA personalizables
A veces, los servicios de IA predefinidos no hacen exactamente lo que usted necesita. El aprendizaje por transferencia, que entrena solo unas pocas capas de redes neuronales sobre un modelo existente, puede proporcionarle un servicio personalizado con relativa rapidez en comparación con el entrenamiento de un modelo desde cero. De nuevo, todos los principales proveedores de servicios en la nube ofrecen aprendizaje de transferencia, aunque no todos lo llaman por el mismo nombre.
Servicios de monitorización
Todas las nubes admiten al menos un servicio de monitorización y facilitan la configuración de los servicios en la nube para su monitorización. Los servicios de monitorización suelen mostrar un panel gráfico y pueden configurarse para notificar excepciones e indicadores de rendimiento inusuales.
Servicios distribuidos
Las bases de datos no son los únicos servicios que pueden beneficiarse de la ejecución distribuida. El problema es la latencia. Si los recursos informáticos están lejos de los datos o de los procesos gestionados, se tarda demasiado en enviar y recibir instrucciones e información. Si la latencia es demasiado alta en un bucle de retroalimentación, el bucle puede descontrolarse fácilmente. Si la latencia es demasiado alta entre el aprendizaje automático y los datos, el tiempo que se tarda en realizar el entrenamiento puede dispararse. Para resolver este problema, los proveedores de servicios en la nube ofrecen dispositivos conectados que pueden extender sus servicios a los centros de datos del cliente (nube híbrida) o cerca de las fábricas del cliente (computación en el edge).
‘Edge computing’
La necesidad de acercar geográficamente el análisis y el aprendizaje automático a la maquinaria y otros objetos del mundo real (el Internet de las cosas, o IoT) ha dado lugar a dispositivos especializados, como los dispositivos de computación en miniatura con GPU y sensores, y a arquitecturas para apoyarlos, como los servidores de edge, las plataformas de automatización y las redes de entrega de contenidos. En última instancia, todos ellos se conectan a la nube, pero la capacidad de realizar análisis en el extremo puede disminuir en gran medida el volumen de datos enviados a la nube, así como reducir la latencia.
La próxima vez que oiga hablar mal de su gasto en la nube, quizás pueda señalar una de estas 16 ventajas o una de las características de la nube que le han ayudado a usted o a su equipo. Cualquiera de las innovaciones de la nube que hemos comentado puede justificar su uso. En conjunto, las ventajas son realmente irresistibles.
–Martin Heller, idg.es