AWS compra DuckLabs: qué cambia y qué no para quienes usamos DuckDB
5 min de lectura

AWS compra DuckLabs: qué cambia y qué no para quienes usamos DuckDB

984 palabras

El 26 de agosto, Mark Raasveldt y Hannes Mühleisen publicaron una nota muy breve en el blog de DuckDB: DuckLabs, la empresa detrás de DuckDB, pasa a ser una filial de Amazon Web Services. La operación se cierra a principios de septiembre.

Lo he leído con más atención de la habitual porque en CARTO llevamos relativamente poco tiempo usando DuckDB, y yo mismo he escrito aquí sobre formatos de archivo y rendimiento y sobre el lío de httpfs detrás de un proxy. Cuando adoptas una pieza en producción y meses después la compra un hiperescalador, lo mínimo es sentarse a mirar la letra pequeña.

Lo que dice el anuncio

Es corto, así que conviene separar bien las dos entidades que hay en juego, porque el titular las confunde con facilidad.

DuckLabs es la empresa. Es lo que compra AWS.

DuckDB es el proyecto de software libre. Lo custodia la DuckDB Foundation, una fundación sin ánimo de lucro, y no forma parte de la operación.

Sobre esa separación, el anuncio se moja en cuatro puntos concretos:

Compromiso
LicenciaMIT, sin cambios
GobernanzaSigue bajo la DuckDB Foundation
RoadmapSin cambios
AlcanceDuckDB, DuckLake, Quack y el resto de extensiones

Y dos novedades que no son solo continuidad: la Fundación creará un consejo asesor de stakeholders que podrá influir en la dirección de los proyectos, y se levantan las limitaciones del soporte comunitario.

Ese segundo punto es el que más me interesa, y volveré sobre él.

Por qué la estructura importa aquí

Que el proyecto viva en una fundación separada de la empresa no es un detalle burocrático. Es exactamente la diferencia entre esta noticia y otras que hemos vivido peor.

Cuando una empresa es dueña del copyright de su propio proyecto libre, puede relicenciarlo. Lo hemos visto varias veces en la última década: un cambio a una licencia no-OSI, la comunidad reacciona, aparece un fork, y quienes lo tenían en producción se pasan seis meses decidiendo qué rama seguir. Redis, Elasticsearch, Terraform, HashiCorp en general. El patrón se repite.

Aquí la propiedad ya estaba fuera de la empresa antes de la compra. AWS adquiere DuckLabs —el equipo, el negocio, el soporte comercial— pero no adquiere la capacidad de relicenciar DuckDB, porque esa capacidad no era de DuckLabs. La Fundación existe desde hace años precisamente para esto.

Dicho de otra forma: la protección no la da la promesa del anuncio, la da la estructura legal que ya existía. Y esa es una distinción importante, porque las promesas de continuidad tras una adquisición son baratas y todos hemos visto unas cuantas evaporarse.

Lo que sí cambia

Sería ingenuo leer esto como “no cambia nada”. Cambian cosas, solo que no son las que asustan en el titular.

El soporte deja de estar limitado. Esto es dinero de AWS financiando algo que hasta ahora tenía que racionarse. Para quien usa DuckDB en producción es probablemente la mejor noticia del anuncio, y es puramente positiva.

La integración con el ecosistema AWS va a acelerar. Es la razón económica evidente de la compra. Cabe esperar mejor soporte de S3, de Iceberg, del catálogo de Glue. Nada de eso perjudica a quien no usa AWS, pero sí marca dónde se va a concentrar el esfuerzo.

El sesgo del roadmap. Aquí es donde pondría yo la atención a medio plazo. El roadmap no cambia hoy, pero el equipo que lo decide ahora cobra de AWS. Cuando haya que priorizar entre una mejora que beneficia a S3 y otra que beneficia a Azure Blob, la presión no será explícita: será una cuestión de a quién tiene uno delante cada día. El consejo asesor de stakeholders parece pensado justamente para contrapesar eso, y su composición dirá bastante más que cualquier comunicado.

Cómo lo veo desde nuestro caso

En CARTO usamos DuckDB en una parte concreta —ingesta y procesamiento de datos—, no como el motor central de la plataforma. Esa posición hace que la noticia sea bastante más tranquila de lo que sería en otro escenario.

Y creo que ahí está la lección práctica que se puede sacar, más allá de esta adquisición concreta: lo que determina tu exposición no es quién compra a quién, sino cuánto has acoplado tu arquitectura a esa pieza.

Si DuckDB es una herramienta que usas para leer Parquet, transformar y escribir, tu coste de sustitución es real pero acotado. Si has construido encima suyo con extensiones propias, funciones específicas y dependencias de su comportamiento exacto, entonces cualquier cambio de rumbo del proyecto es un problema tuyo. La adquisición no altera esa ecuación, solo hace que valga la pena mirarla.

Es la misma reflexión que hacía hace unos días sobre conectar con data warehouses ajenos: la parte que controlas es pequeña, y conviene saber exactamente dónde termina.

Mi lectura

Soy moderadamente optimista, con una reserva.

El optimismo viene de la estructura. La Fundación, la licencia MIT y el hecho de que la propiedad ya estuviera separada del negocio son garantías reales, no declaraciones de intenciones. Añade a eso que los fundadores siguen dirigiendo la parte técnica y que el proyecto tiene una comunidad grande —pasó los 40.000 estrellas en GitHub este mismo mes— y el escenario catastrófico es poco probable.

La reserva es más difusa y no tiene que ver con las cláusulas. Un proyecto financiado por un hiperescalador tiende, con el tiempo, a parecerse a lo que ese hiperescalador necesita. No por mala fe, sino por gravedad: es donde están los usuarios que pagan, los casos que se reportan y las prioridades que llegan cada mañana. DuckDB nació como una base de datos analítica embebida que corre en cualquier sitio, y ese “cualquier sitio” es buena parte de su gracia.

Por ahora, nada que hacer más allá de seguir usándolo. La adopción en CARTO continúa igual, y estos dos anuncios —el consejo asesor y quién acaba sentándose en él— son lo que merece la pena vigilar en los próximos meses.

Últimas Entradas

5 min

947 palabras

On August 26th, Mark Raasveldt and Hannes Mühleisen published a very short note on the DuckDB blog: DuckLabs, the company behind DuckDB, is becoming a subsidiary of Amazon Web Services. The deal closes in early September.

I read it more carefully than usual because at CARTO we’ve been using DuckDB for a relatively short time, and I’ve written here about file formats and performance and about the httpfs proxy mess. When you adopt a piece of software in production and months later a hyperscaler buys it, the least you can do is sit down and read the fine print.

7 min

1431 palabras

En abril de 2021 hice mi primer commit en el monorepo de la plataforma cloud-native de CARTO. Era el PR número 9, un docker-compose. Cinco años después he mirado hacia atrás con calma y me he encontrado con unos 450 commits, unos 447 pull requests y presencia en prácticamente todos los servicios del repositorio.

Lo interesante no son las cifras. Lo interesante es que, revisando ese historial, aparece un hilo conductor que yo mismo no había identificado del todo: he pasado media década conectando la plataforma a data warehouses ajenos. Seis proveedores distintos —BigQuery, Snowflake, Redshift, Databricks, Oracle y PostgreSQL—, cada uno con su propio modelo de credenciales, su pooling, sus timeouts y sus mensajes de error.

4 min

796 palabras

El problema: httpfs ignora tus variables de entorno

Si trabajas con DuckDB y la extensión httpfs para leer Parquet remotos, CSVs desde S3 o cualquier recurso HTTP, probablemente asumes que las variables de entorno HTTP_PROXY y HTTPS_PROXY funcionan igual que en cualquier otra herramienta. Curl las respeta. wget las respeta. Python requests las respeta. Node.js las respeta.

DuckDB no.

Me he encontrado con esto trabajando en un entorno corporativo con proxy obligatorio. Tenía un script que leía ficheros Parquet desde Google Cloud Storage usando httpfs, y simplemente no funcionaba. Sin error claro, sin timeout descriptivo, solo silencio. Mientras tanto, un curl al mismo recurso con las mismas variables de entorno devolvía los datos sin problema.

3 min

583 palabras

Amazon ha dado un paso importante en el mundo de la inteligencia artificial con el lanzamiento de S3 Vectors, el primer servicio de almacenamiento en la nube con soporte nativo para vectores a gran escala. Esta novedad promete reducir hasta un 90% los costes de subida, almacenamiento y consulta de datos vectoriales.

¿Qué son los vectores y por qué nos importan?

Los vectores son representaciones numéricas de datos no estructurados (texto, imágenes, audio, video) generados por modelos de embedding. Son la base de las aplicaciones de IA generativa que necesitan encontrar similitudes entre datos usando métricas de distancia.

7 min

1393 palabras

In April 2021 I made my first commit to the monorepo behind CARTO’s cloud-native platform. It was PR number 9, a docker-compose. Five years later I’ve looked back with some calm and found around 450 commits, around 447 pull requests, and a presence in virtually every service in the repository.

The numbers aren’t the interesting part. What’s interesting is that, going through that history, a thread shows up that I hadn’t fully identified myself: I’ve spent half a decade connecting the platform to other people’s data warehouses. Six different providers — BigQuery, Snowflake, Redshift, Databricks, Oracle and PostgreSQL — each with its own credential model, its pooling, its timeouts and its error messages.

4 min

767 palabras

The problem: httpfs ignores your environment variables

If you work with DuckDB and the httpfs extension to read remote Parquet files, CSVs from S3, or any HTTP resource, you probably assume that the HTTP_PROXY and HTTPS_PROXY environment variables work just like every other tool. Curl respects them. wget respects them. Python requests respects them. Node.js respects them.

DuckDB does not.

I ran into this while working in a corporate environment with a mandatory proxy. I had a script reading Parquet files from Google Cloud Storage using httpfs, and it simply would not work. No clear error, no descriptive timeout, just silence. Meanwhile, a curl to the same resource with the same environment variables returned data without issue.