Comparativa de Proveedores Cloud: AWS vs Azure vs Digital Ocean

Una pregunta recurrente al empezar a trabajar con tecnologías Cloud, es qué proveedor de Cloud utilizar, cuál puede resultar más económico (y en qué medida), y cuál nos ofrece unos servicios más avanzados (comprendiendo también si realmente le vamos a sacar un buen provecho), para de este modo poder decidir la mejor opción para nuestras necesidades, con conocimiento de causa. En este Post vamos a hablar de los principales dos proveedores de Cloud (AWS y Azure) y de una de las alternativas (Digital Ocean) en base a una comparativa de montar una pequeña máquina en la nube.

Breve introducción a las tecnologías Cloud

Tradicionalmente las compañías han gestionado su propia infraestructura, eran propietarias de sus servidores, routers, firewalls, hasta de los sistemas de aire acondicionado, SAIs, las cintas de Backup, o de los contratos con las empresas de comunicaciones. Como mucho se apoyaban en una empresa de Housing tipo Interxion. Es lo que ahora llaman OnPrem.

Con la llegada del Cloud, todo esto se simplifica. En lugar de utilizar y mantener su infra, las empresas utilizan la de un tercero como si fuera un servicio. Te permite abstraerte de muchos detalles, perdiendo mucho control, pero simplificando mucho el esfuerzo de gestión (puedes hacer más cosas, con equipos de gente más pequeños). Esto da lugar principalmente a tres tipos de servicios:

  • Infraestructure as a Service (IaaS). Básicamente consiste en que puedas crear en el Cloud las Máquinas Virtuales que necesites, en lugar de hacerlo dentro de tu infraestructura. En esas máquinas tienes que instalar lo que necesites, configurarlas y tendrás que administrarlas (ej: parchear las máquinas), pero ya te quitas muchos problemas (SAIs, provisión de HW, networking, cableados, Storage, gestión de temperatura y aire acondicionado, y otras muchas cosas que el proveedor de Cloud hace por ti).
  • Platform as a Service (PaaS). Consiste en provisionar un Servicio, como por ejemplo sería una Base de Datos MySQL, pero en este caso no tienes que instalar y configurar las máquinas (ni parchearlas durante toda su vida), el proveedor de Cloud se encarga de ello, tú sólo necesitas saber qué versión quieres, que capacidad de memoria y CPU, qué nivel de disponibilidad, y poco más. Así, puedes tener una base de datos, pero con menos esfuerzo que montarla en IaaS, aunque hay tareas de las que tendrás que seguir encargándote (ej: escalar memoria y CPU cuando lo necesites, crear o eliminar réplicas, etc).
  • Software as a Service (SaaS). Consiste en tener una Aplicación como un Servicio. Un buen ejemplo sería Office 365, lo podemos utilizar sin tener que preocuparnos de todo lo que hay por detrás para que funcione, de eso se encarga el proveedor de Cloud, en este caso Microsoft.

En Internet hay una imagen que representa muy bien todo esto. Cuántas más tareas se encarga el proveedor de Cloud (en verde), nosotros nos encargamos de menos (en azul), perdemos control, pero simplificamos mucho-mucho su gestión, lo que suele implicar un precio algo mayor de Cloud, pero un menor coste de mantenimiento.

Dicho esto, vamos a entrar en harina.

¿Qué proveedor de Cloud es el más utilizado, según la última encuesta de Stack Overflow?

La encuesta anual de Stack Overflow, cada día tiene más repercusión en nuestro mundillo. Justo uno de los puntos de esta encuesta, trata los Proveedores Cloud utilizados por los encuestados, que arroja un resultado coherente con la realidad, donde AWS es lider indiscutible, seguido por Azure y Google Cloud. Digital Ocean está algo más abajo, pero aún así, por encima de competidores como VMware, Oracle, IBM, o la francesa OVH. A continuación puedes ver un pantallazo con estos datos, y si quieres este es el Link para acceder a la Encuesta de Stack Overflow 2022.

¿Y el cuadrante mágico de Gartner?

Otra referencia, bastante más formal, aunque sometida a un mundo más empresarial, es el cuadrante mágico de Gartner de infraestructura Cloud y plataformas de servicios. No incluye soluciones como Digital Ocean o Heroku, quedando limitado sólo a soluciones empresariales, pero arrojando resultados similares en el TOP3 de este ranking: AWS, Micrsoft Azure, y Google Cloud son los que mandan, y en este orden.

Introducción a AWS, Azure y Digital Ocean

AWS y Azure son soluciones Cloud orientadas al mundo empresarial y grandes proyectos. Ambos ofrecen una gran cantidad de servicios, no sólo servicios IaaS o PaaS más tradicionales como el Storage o las bases de datos, o servicios SaaS como Office365, sino también servicios más específicos orientados a Inteligencia Artificial, Big Data, servicios de identidad, CDN, servicios de CI/CD, etc. Su catálogo es muy completo, y el nivel de madurez de sus servicios también. El líder indiscutible es AWS, que en general ofrece un producto más evolucionado y un coste más competitivo, aunque es dificil hacer la comparación, porque son muchos servicios , y son muchos los detalles que van marcando la diferencia en cada servicio (además de que van evolucionando y cambiando con el tiempo, y el detalle de cómo se facturan, que también es diferente entre ambos). De hecho, si bien AWS es el ganador en la comparativa, hay detalles concretos en los que Azure iguala o mejora a AWS.

Digital Ocean es una solución Cloud orientada a pequeños proyectos. Su catálogo de servicios es muy modesto (en la imagen de abajo se puede apreciar), proporciona servicios IaaS y algunos servicios PaaS (muy pocos: Bases de Datos, Storage, Kubernetes, Apps, Functions, y poco más). Destaca por tener un precio muy competitivo (y con un modelo de billing muy sencillo, en AWS y Azure es mucho más complejo estimar costes, además de ser más caros) y por su sencillez, que repercute en un bajo coste de apredizaje (la gran cantidad de servicios y opciones que proporciona Azure y AWS, abruman, su coste de apredizaje y curva de entrada es mucho mayor).

Todos ellos proporcionan una página pública de estado de salud, donde podemos accede para conocer si hay algún servicio impactado por alguna incidencia, si es local a una o varias regiones (y cuales) o es global, y otros detalles de interés. En el caso de Digital Ocean sería: DigitalOcean – Status Page

Importante también, todos proporcionan una API para poder automatizar acciones, incluso interfaces de línea de comando como Azure CLI ó AWS CLI. En el caso de DigitalOcean se proporciona una sencilla API a la que accederemos mediante un token. No tiene tantas opciones como AWS y Azure para dar permisos granulares o asignar identidades a los recursos para darles permisos entre ellos, pero por contra, es muy sencillo y en proyectos pequeños más que suficiente: DigitalOcean – API Reference

Comparando AWS, Azure, y Digital Ocean con un ejemplo: hospedar una máquina pequeña en la nube (1 CPU + 1 GB RAM)

Vamos a hacer una comparación entre AWS, Azure y Digital Ocean, en base a una máquina pequeña con 1 CPU y 1 GB de RAM, para tener una primera impresión de la diferencia de rendimiento y coste en un escenario de igualdad. Es algo relativo porque no son productos exactamente iguales, no tenemos control de qué Hardware hay detrás ni del nivel de carga al que está sometido, o de otros muchos factores, pero si podemos comparar máquinas con misma cantidad de CPU, Memoria, y Disco, hacer alguna prueba, y ver qué coste puede tener. Para esta comparativa:

  • En Digital Ocean vamos a utilizar una máquina tipo Basic, que se ejecuta compartiendo HW (es decir, compartiendo hilos de CPI) con otros clientes, no siendo un HW dedicado para nosotros.
  • En AWS y Azure utilizaremos unas familias de máquinas similares, aunque en este caso utilizan un sistema de créditos, de tal modo que se acumulan créditos en los momentos en que la máquina hace un uso bajo de CPU que permiten utilizarlos temporalmente en momentos que la máquina necesita un consumo intenso de CPU (gastando dichos créditos). Es ideal para máquinas que sólo necesitan toda su CPU en ciertos momentos, y no de forma sostenida y alargada.

Sobre estas máquinas, hemos hecho un par de pruebas:

  • Acceso a disco secuencial ejecutando un comando similar al siguiente: dd if=/dev/root bs=8192 of=/dev/null
  • Uso de CPU ejecutando un comando similar al siguiente: stress-ng --cpu 1 --timeout 10s --metrics-brief

La siguiente tabla muestra el resultado de ambas pruebas, junto con otros detalles (tipo de máquina, pricing, etc) para poder comparar.

Digital OceanAWSAzure
Tipo de máquinaBasic: 1 CPU, 1 GB RAM, 25 GB SSD diskt2.micro: 1 CPU, 1 GB RAM, 8 GB SSD diskStandard B1s: 1 CPU, 1 GB RAM, 30 GB SSD disk
Precio base (sólo máquina)$6/mes$9/mes$8/mes
Storagegratis 25GB (si se necesita más disco, ampliar a una máquina o contratar Storage)Se paga por separadoSe paga por separado (mínimo $1 para 30GB más otros costes variables como operaciones de disco)
Transferencia de datosgratis 1 TB/mesSe paga por separadoSe paga por separado
IP Pública dinámicagratisgratisSe paga por separado (mínimo $2)
Zona DNS PúblicagratisSe paga por separado (mínimo $0.5 por zona más otros costes, como el número de consultas al DNS)Se paga por separado (mínimo $0.35 por zona más otros costes, como el número de consultas al DNS)
Precio total:$6 + exceso de Storage y exceso de Transferencia$9.5 + Storage + Transferencia$10.35 + Storage + Transferencia
Rendimiento lectura secuencial disco350 MB/s66 MB/s30 MB/s
Rendimiento CPU (Bogo Ops)722188869671

Con Digital Ocean, si no necesitamos exceder los 25 GB de disco ni 1 TB de transferencia de datos al mes, tendríamos un coste fijo de $6/mes, mientras que con AWS y Azure, nos vamos prácticamente al doble de precio considerando todos los costes como el Storage, la Transferencia de Datos, el DNS, o la IP Pública. A nivel de rendimiento:

  • Azure y AWS han ofrecido un rendimiento de CPU mayor que Digital Ocean, pero recordemos que son máquinas cuyo rendimiento y coste está gobernado por un sistema de créditos orientado a obtener el máximo rendimiento sólo de forma temporal.
  • Digital Ocean ha ofrecido un rendimiento en el acceso secuencial al disco, mucho mayor que AWS o Azure. Hay que tener en cuenta que el rendimiento del disco en AWS y Azure depende del tamaño del disco y del tier. Podemos obtener un rendimiento mayor, pero lo vamos a pagar.

Algunos detalles a tener en cuenta, para interpretar mejor la anterior tabla:

  • El precio de cualquier recurso en AWS y en Azure, depende de la Región o Zona Geográfrica. Por ejemplo, en Azure, North Europe es más económico que West Europe.
  • AWS y Azure permite comprar Reservas de Máquinas para obtener un precio más competitivo, con la contraprestación de comprar máquinas por 1 o 3 años (implica un compromiso a largo plazo, asociado a una Región o Zona Geográfica y a un tipo de máquina en particular).
  • AWS y Azure permiten tener máquinas Spot, que consiste en una especie de subasta: te ofrecen las máquinas que no necesita ningún cliente, a un precio más bajo, pero que si un cliente las necesita más tarde y las paga a precio normal de mercado, te pararían tu máquina para ofrecerle sus recursos al cliente que lo necesita y está dispuesto a pagarlo. Con esto, los proveedores de Cloud pueden optimizar el uso de su infraestructura, y los clientes conseguir precios más económicos para recursos que no son críticos, con una menor garantía.
  • AWS y Azure al parar una máquina se suspende la facturación de la misma, aunque se seguirá facturando por recursos, como el Storage. Sin embargo en Digital Ocean esto no es posible, sería necesario destruir o eliminar la máquina (cuando se para, se continúa facturando) y recrearla de nuevo cuando la volvamos a necesitar (esto se puede automatizar y utilizar un Storage externo, adicional al disco del sistema).
  • Ninguna de las opciones anteriores incluye el coste del Backup, que sería en todos los casos un coste adicional.

Conclusiones

En términos generales, y en base al caso de uso que hemos visto (hospedar una máquina pequeña en la nube), podríamos decir que Digital Ocean es más sencillo (menor coste de aprendizaje) y más económico (menor coste de nube) que Azure ó AWS, ofreciendo un rendimiento de CPU aceptable y destacando sobretodo el rendimiento en el acceso a disco, aunque como hemos comentado, esto es algo relativo y depende del uso que le vayamos a dar. También tiene un catálogo de servicios mucho más reducido, y es más limitado (ej: si paras una máquina, te siguen cobrando, tendrías que destruirla).

Por el otro lado destacan AWS y Azure como soluciones de nube empresarial muchos más completas y avanzadas, donde AWS está mejor posicionada, aunque Azure también destaca en casos concretos frente a AWS.

Yo en mi caso utilizo Digital Ocean para proyectos personales (y estoy contento), por ser la solución más económica (estuve a punto de utilizar AWS, pero pagar el doble por proyectos personales por diversión sin expectativas de monetizarlos, no anima) y también por conocerlo y poder comparar. Mientras que en mi carrera profesional trabajo con Azure y AWS (y algo de Google Cloud), que son las elecciones que suelen tomar la mayoría de las empresas.

¿Quieres probar DigitalOcean? Consigue un crédito de $200 gratis

Si quieres probar DigitalOcean, es posible buscar por Internet para conseguir un Código Promocional de $200, con el que podrías darte de alta y hacer uso de DigitalOcean, sin tener que soportar ningún coste mientras haces uso de dicho crédito.

Si te ha gustado este Post y quieres ayudarme, puedes utilizar el siguiente enlace, con el que también conseguirás $200 al registrarte en DigitalOcean (es un Referral Link): Regístrate en DigitalOcean y consigue un crédito de $200 gratis

Si finalmente acabas utilizando DigitalOcean, cuando hayas gastado tus primeros $25, DigitalOcean me concederá un crédito de $25, en cualquier otro caso no me concederá ningún crédito. Si lo pruebas y no te acaba de convencer, si no consumes el crédito de $200, no te cobrarán nada y tampoco no recibiré ningún crédito. Si estás interesado en probar DigitalOcean, esta es una opción. Tu decides.