No dejamos de leer todos los días las ventajas de llevar nuestros servicios y sistemas a la nube, al cloud. Términos como cloud privada, cloud pública o cloud híbrida ya forman parte del lenguaje de cualquier directivo de empresa y parece que si no estamos en la nube es que nosotros o nuestra empresa no es “guay” o “innovadora”.
Más allá de la moda, las
ventajas son claras, pero varían en función de la aplicación, pero podemos resaltar varias:
- Facilidad de escalado y crecimiento en caso de necesidad. De hecho, esta es una de las características claves de la nube: el poder aumentar y reducir recursos de manera rápida y sencilla, programática e incluso automática. Esto es lo que diferencia proveedores cloud de verdad de aquellos hostings que han cambiado el nombre de sus VPS por “cloud”.
- Disponer de servicios sin importar la infraestructura que los sustenta: bases de datos, computación serverless, etc. Si entramos en la oferta de Amazon Web Services o Google Cloud veréis que hay más tipos de servicios y nombres disponibles de los que podáis imaginar, muchos de ellos con aplicaciones específicas sobre infraestructuras optimizadas como machine learning, etc.
- Algunas ventajas que ya teníamos si externalizábamos nuestra infraestructura en un hosting: seguridad, alta disponibilidad, no tener que mantener un CPD propio, etc.
- En general y gracias a tecnologías como Docker, hoy en día es fácil migrar de una nube o a otra, e incluso trabajar con varias a la vez, según lo que nos convenga. Igualmente, el poder ofrecer un servicio en varias zonas geográficas a golpe de clic es increíble.
- Pago por uso. ¿Quiero probar algo? Lo lanzo, lo pruebo y luego lo desecho. Y pago solo por esos minuto u horas. ¿Tengo un pico y necesito más recursos? Lo mismo
Aunque también tienen ciertas
desventajas:
- Pago por uso y escalabilidad, esto se traduce normalmente en que las empresas no tienen ni idea de lo que van a pagar a fin de mes. Ni siquiera es sencillo establecer un coste variable del estilo “si aumentan mis usuarios en un tanto por ciento X, mi cloud va a escalar automáticamente en un tanto por ciento Y” si no que intervienen tantas variables (consumos de ancho de banda, subastas de CPU, horarios, etc.) que casi se convierte un algo aleatorio y habitualmente caro. Esto es, en opinión del que escribe, la gran ventaja del cloud pero a la vez la gran barrera para la adopción del cloud, la dificultad del control de costes. Afortunadamente, la monitorización puede echar una mano en esto.
- La curva de aprendizaje de los diferentes servicios que se tienen, aparte de computación y almacenamiento es alta, conocerlos bien, saber sus ventajas, cuando usarlos, etc es complicado.
- Comparar los precios y rendimiento entre distintos proveedores es tarea prácticamente imposible, ya que no tarifican por lo mismo, y muchas veces no sabes lo que hay detrás de un “vCPU” o un “disco SSD”.
- Trabajar con diferentes nubes puede suponer un problema equivalente a trabajar con varios fabricantes en tu datacenter, solo que aquí ya habíamos llegado a protocolos comunes (SNMP, IPMI, etc.): volvemos a tener diferentes APIs, diferentes datos accesibles, diferentes formas de acceder, etc. Por ejemplo, para monitorización Amazon tiene su CloudWatch y Microsoft Azure su Monitor.
La monitorización nos permite romper varias de estas dificultades y puede ayudarnos de modo que:
- Podamos ver, analizar, comparar y agregar el coste de nuestros clouds en tiempo real. Podemos establecer alarmas que nos ayuden a controlar los costes, así como relacionar estos costes con otros datos como, número de usuarios en la plataforma, etc que nos ayuden a ser capaces de predecir costes. Incluso automatizar el apagar una máquina si el coste se dispara por un “bug” o por alguien usando nuestros servidores para minar bitcoins…
- Podamos comparar rendimientos entre la “misma” máquina en diferentes clouds o zonas geográficas.
- Pero, sobre todo, tener una herramienta centralizada que nos ayude a estandarizar los parámetros monitorizados evitando tener que aprender como llegar a ellos a través de Cloudwatch, Monitor o lo que sea. Y por supuesto, poder incluir las máquinas de nuestro datacenter.
Para mostraros las capacidades cloud de nuestra
herramienta basada en Zabbix, Minerva, hemos creado un ejemplo con varias máquinas en Amazon Web Services (AWS) y Microsoft Azure. Si ya estáis usando Zabbix podéis hacerlo sin ningún problema.
Una ventaja de usar una herramienta que trabaja con agente es que podemos obtener muchas métricas de forma gratuita. Amazon, por ejemplo, cobra por usar Cloudwatch con una frecuencia inferior a 5 minutos, incluso te cobran por preguntar cuanto te están cobrando. Si usamos un agente hay muchas métricas (CPU, memoria, etc) que se pueden obtener sin coste (más allá de la transferencia claro que aquí se cobra todo, pero en cualquier caso a un coste muy inferior). Otras, como el coste o las configuraciones del firewall o el arrancar una máquina, no nos queda más remedio que atacar vía API, pero el poder combinar ambas vías fácilmente es muy versátil.
En el ejemplo, nuestros agentes se registran automáticamente en la plataforma al ser creados y podemos ver un sencillo mapa dónde se muestran los
datos agregados para cada uno de los proveedores: memoria, almacenamiento, etc. de modo que
de un vistazo vemos el porcentaje global de uso de cada una de las plataformas.