El Erlang External Term Format (ETF) es un formato de serialización binaria diseñado para representar cualquier tipo de dato nativo de Erlang (átomos, tuplas, listas, PIDs, referencias, funciones, etc.) de una manera compacta y eficiente. Es un formato auto-descriptivo, lo que significa que el flujo de bytes contiene suficiente información para reconstruir el término Erlang original sin necesidad de un esquema externo. Esto lo hace particularmente robusto para la comunicación entre nodos Erlang que pueden estar ejecutando diferentes versiones de código o incluso para la persistencia de datos. Su diseño prioriza la eficiencia en el parseo y la serialización, siendo fundamental para la comunicación inter-proceso y entre nodos en el ecosistema Erlang/OTP.
ETF es la base de la comunicación en tiempo real en sistemas construidos con Erlang y Elixir. Es el formato estándar utilizado por el protocolo de distribución de Erlang (Erlang Distribution Protocol) para la comunicación entre nodos de un clúster Erlang, permitiendo la transparencia de ubicación y la tolerancia a fallos. Además, se ha adoptado en otros lenguajes y herramientas para interactuar con sistemas Erlang. Por ejemplo, bibliotecas como 'erlport' (Python), 'erlang_term' (Ruby) o 'go-erlang' (Go) permiten a aplicaciones escritas en estos lenguajes serializar y deserializar términos ETF, facilitando la integración con servicios Erlang existentes o la construcción de clientes para bases de datos como Mnesia o Riak (aunque Riak ha evolucionado hacia Protocol Buffers para su API externa).
Para un arquitecto, comprender ETF es crucial al diseñar sistemas distribuidos que interactúan con el ecosistema Erlang/OTP. Su naturaleza auto-descriptiva reduce la fricción en la evolución del esquema de datos, pero puede llevar a payloads más grandes en comparación con formatos con esquemas fijos como Protocol Buffers o Avro si los datos son muy repetitivos. La elección de ETF es estratégica cuando la interoperabilidad con Erlang es una prioridad, la robustez ante cambios de esquema es vital y la eficiencia de serialización/deserialización es más importante que la compresión extrema del tamaño del mensaje. Los arquitectos deben considerar los trade-offs entre la flexibilidad de ETF y la compacidad de otros formatos, especialmente en escenarios de alto volumen de datos o ancho de banda limitado, sopesando la facilidad de desarrollo y la robustez del sistema frente a la optimización del tamaño del mensaje.