Programando infraestructura en la nube

IV Jornadas de Informática de la UAL

Alberto Molina Coballes y José Domingo Muñoz Rodríguez

Theme by: reveal.js

El cloud computing o computacion en la nube ofrece servicios de forma ágil y sencilla a través de la red.

¿Qué servicios podemos obtener?

La nube

  • Software as a Service (SaaS)
  • Para todo el mundo
  • Principalmente en nube pública
  • Programable: APIs, APIs, APIs
  • Los datos ... ¡ay los datos!

Infraestructura en la nube

  • Infrastructure as a Service (IaaS)
  • Máquinas, redes y almacenamiento
  • Y además ... recursos adicionales:

    DNSaaS, LBaaS, DBaaS, ...

  • ¿Programable?

DevOps

  • Conflicto:Tradicionalmente desarrollo y sistemas con objetivos y responsabilidades diferentes
  • El objetivo debería ser común
  • ¿Cómo solucionarlo?
    • Mismas herramientas
    • Extender buenas prácticas de desarrollo a sistemas: De integración continua a entrega continua o a despliegue continuo
  • Escenarios replicables, automatización de la configuración

Recursos elásticos

  • Demanda variable: web
  • Munin web
  • Solución: Elasticidad y escalado horizontal
  • Automatización en la creación y destrucción de nodos

Microservicios

  • Normalmente a través de contenedores
  • ¿Qué infraestructura para las máquinas físicas/virtuales, redes y volúmenes?
  • ¿Vamos a gestionar esta infraestructura a mano?

Infraestructura como código

  • La configuración es nuestro código
  • Entornos de desarrollo, prueba y producción
  • Metodologías ágiles
  • Entrega continua/Despliegue continuo

Big Data

  • Necesidad de grandes recursos
  • Cargas variables e impredecibles
  • 1 maquina 100 horas o 100 máquinas 1 hora
  • Creación automática de escenarios

Función como servicio

  • "Serverless"
  • Ejecutamos código directamente en la nube
  • ¿Infraestructura?

Aplicación nativa cloud

  • Habitualmente la aplicación ignora la infraestructura
  • ¿Qué podría cambiarse?:
    • Aplicaciones resilientes
    • Infraestructura dinámica autogestionada

¿Qué programamos?

  • Escenarios: MV, redes o almacenamiento
  • Configuración de sistemas o aplicaciones
  • Recursos de alto nivel: DNSaaS, LBaaS, DBaaS, ...
  • Respuestas ante eventos

¿No hablamos de lo mismo?

¿Hay diferencias entre crear un escenario y configurar el software de la infaestrucura creada?

Herramientas

  • Lenguajes de programación
  • Software de orquestación
  • Software de gestión de la configuración

... y de software libre ;)

Orquestación

  • Vagrant (escenarios simples)
  • Cloudformation (AWS)
  • Heat (OpenStack)
  • Terraform
  • Juju

Gestión de la configuración

  • Puppet
  • Chef
  • Ansible
  • Salt (SaltStack)

Demo