El camino del Cloud generalmente se inicia en migraciones a plataformas de Infraestructura como Servicio (IaaS); en donde realizamos un espejo virtual de nuestra estructura física, sobre la que desplegamos nuestras aplicaciones.
El siguiente paso llega cuando reconocemos que el verdadero valor y productividad de la Nube está en la Plataforma como Servicio (PaaS); y nos enfrentamos a nuevos retos en forma de la transformación y reconstrucción del software, en la búsqueda de la óptima relación coste/beneficio.
Y una de las decisiones iniciales que más impacto tiene, es adoptar el almacenamiento de nuestra información en Bases de datos como Servicio, al seleccionar cual vamos a utilizar en nuestro software; siendo las soluciones NoSQL, un primer paso asequible, de notable sencillez, potente y de coste contenido.
¿Por qué transformar hacia la sencillez?
Lo primero que hay que tener claro es que la adopción de este tipo de servicio no es una “bala de plata” que valga para todos los casos de uso. Es más, las bases de datos relacionales de toda la vida, tiene ventajas y desventajas inherentes, estudiadas y reconocidas sobre este tipo de servicios de almacenamiento.
Sin embargo, para aplicaciones que requieran una forma especialmente económica de almacenar los datos, que se adapten a las características de estos servicios WCS y que permitan cambiar la lógica de persistencia – la capa de almacenamientos de datos – de forma sencilla para migrar a las API de conexión, pueden ser una solución con un ratio de eficiencia excelente.
La clave está en la complejidad de la estructura de datos y de las operaciones relacionales que tengamos que realizar sobre el conjunto de tablas.
Las tres que vamos a analizar en este artículo, son del tipo Wide Column Store (WCS), herederas de este paper de BigTable, que define un almacenamiento en tablas bidimensionales en donde las primeras columnas son los índices (entre una y tres columnas) que identifican de forma inequívoca las filas horizontales que almacenan los registros. A continuación, se define un número indeterminado de columnas en donde se construye la estructura de campos de los registros, de forma totalmente flexible, basado en un formato clave/valor.
Esta aproximación dinámica de la estructura de datos permite evolucionar y transformar la persistencia de la información, sin estar constreñida por las rígidas convenciones de los sistemas relacionales.
También son plataformas con un rendimiento especialmente bueno, tanto en operaciones de lectura como de escritura, al tener un motor de base de datos muy sencillo, orientado a realizar solo lo que se necesita (Listar, Insertar, Actualizar y Borrar), sin pesados lenguajes de explotación como es SQL, y evitando tener que dar soporte a comandos complejos como pueden ser JOIN, GROUP, ORDER, etc.
En resumen, son ligeras, sencillas y rápidas. Y, al ser un servicio Cloud, nos permiten olvidarnos de gestionar el escalado, la alta disponibilidad y la partición de datos; siendo la propia plataforma quien se encarga de asegurar unos acuerdos de servicios (SLA) de más del 99.99%.
Las más sencillas, que no las menos potentes
En estos momentos, se está consolidando un monopolio tricefálico en las tecnologías Cloud, estando Amazon en cabeza con una presencia en el mercado de casi el 47%, seguido desde muy de lejos por Microsoft Azure con el 10%, y Google cerrando el club al estar rozando el 4%. El grupo genérico perseguidor está encabezado por IBM y su SoftLayer, que obtiene cerca de un 3%; completándose el restante 36% con una miríada de pequeñas plataformas.
Apache Cassandra es la base de datos WCS que reina de forma indiscutible en este segmento del mercado; pero no la hemos incluido en el análisis al no existir un servicio cloud que nos permita consumirla en formato PaaS.
Sin embargo, SimpleDB de Amazon, Azure Tables de Microsoft y Cloud BigTable de Google, sí que son servicios cloud de base de datos NoSQL, que representan el primer eslabón a la persistencia de información más allá del almacenamiento binario.
En la siguiente tabla se puede observar la comparativa directa de los tres servicios:
Descripción | Microsoft Azure Table Storage | Amazon SimpleDB | Google Cloud Bigtable |
---|---|---|---|
Modelo de base de datos | Wide column store | Wide column store | Key-value store |
Desarrollador | Microsoft | Amazon | |
Publicación inicial | 2012 | 2007 | 2015 |
Esquema de datos | Libre | Libre | Libre |
Tipos predefinidos | Si | no | no |
Métodos de acceso | RESTfull API | RESTfull API | gRPC (using protocol buffers) API HBase compatible API (Java) |
Lenguajes soportados | .Net (todos), C++, Java, JavaScript, PHP, Python, Ruby | .Net (todos), C, C++, Erlang, Java, PHP, Python, Ruby, Scala | Go, Java |
Método de particionado | Sharding | Sharding | ninguno |
Consistencia | Immediate Consistency | Eventual Consistency Immediate Consistency | Immediate Consistency |
Transacciones | Bloqueo optimísitico | no | Operaciones atómicas en un registro |
Control de acceso | Derechos de acceso basados en permisos sobre le servicio, autenticación por clave privada y firmas compartidas | Derechos de acceso vía AWS Identity and Access Management (IAM) | no |
Popularidad | Puesto 66 | Puesto 91 | Puesto 159 |
Hay que señalar que SimpleDB no es realmente una BD de tipo WCS, sino Key-value Store. Su funcionamiento es prácticamente igual que las del resto de la comparativa, teniendo su principal diferencia en que no está diseñada para grandes volúmenes de información, como si lo están sus contrincantes.
Sin embargo, la hemos incluido en la comparativa porque Amazon no tiene un servicio WCS, y DynamoDB - que si se puede utilizar de esta forma - se clasifica dentro de un nivel superior de complejidad en donde estaría acompañada por CosmosDB o similares.
Las tres magníficas
Utilizando las propias páginas para de cálculo de precios de las tres plataformas Cloud, nos hemos encontrado que los costes son dispares para configuraciones similares: noviembre del 2017, 1Tb. de almacenamiento, en los CPD de Irlanda, con la réplica geográfica por defecto.
- Amazon SimpleDB: 281$/mes
- Google BigTable: 174$/mes
- Azure Tables: 75$/mes
Pero estos precios hay que cogerlos con cuidado, porque hay establecida una guerra sostenida que permite que haya una variación constante (a la baja) de los mismos; que cada calculadora solicita datos diferentes para realizar la previsión de costes; y que los tramos hasta el primer Gigabyte, son gratuitos en las tres Nubes.
Ciertamente no van a ser causas objetivas basadas en métricas de rendimiento o de volumetrías varias las que nos deberían hacer decantarnos por alguna de estas tres magníficas plataformas.
Son realmente rápidas tanto en operaciones de escritura como de lectura, tienen una capacidad de almacenamiento que solo tiene como límite nuestro presupuesto, y la disponibilidad, estabilidad y resiliencia están aseguradas por las Condiciones del Servicio.
Por lo cual cobran importancia factores menos obvios, como puede ser el conocimiento que tengamos del Cloud que lo soporta. Por ejemplo, si el equipo de desarrollo está habituado a entornos Microsoft, va a tender a utilizar Azure y las Tables Storage; en cambio, si la aplicación funciona sobre AWS, lo normal sería decantarse por SimpleDB de Amazon; y escogeríamos Google si nuestro lenguaje principal de trabajo fuese Go.
Si acaso señalar como ventaja o desventaja, según el caso, el que BigTable de Google utilice una Api de acceso propia, no tan conocida como la universal API RESTfull de Microsoft y Amazon.
La documentación en todos los casos es excelente y muy abundante en todas las Cloud, yendo un pasito por delante la de Microsoft – que está haciendo un esfuerzo hercúleo por solventar el que era su punto débil hace unos años.
Amazon ofrece, sin embargo, el servicio más longevo y – por ende – más maduro y conocido. Hay que reconocer que llevarle más de una década de ventaja a sus competidores proporciona una seguridad y estabilidad que no se deben olvidar.
Google, a su favor tiene que el servicio de Bigtable es utilizado de forma interna en plataformas tan exigentes como Analytics, Maps, Gmail, etc. confirmando que cumple con las características esperadas.
En resumen, para escoger entre Tables, SimpleDB o Bigtable, lo que hay que hacer es mirar alrededor: qué es lo que sabemos hacer, con qué se tiene que integrar y qué plataforma Cloud es la que mejor queremos trabajar.
Cualquiera de las tres es excelente.
Mas información | Comparativa en DB-Engines; Azure Tables Storage, Amazon SimpleDB, Google Bigtable