Skip to main content

Posts

Technical Advisor & Fractional Chief Architect

I help organisations design, build, stabilize, and scale mission critical distributed data systems, including data platforms, Data Lake and Lakehouse architectures, streaming systems, IoT ingestion, and AI infrastructure.

I work with engineering and platform teams to drive clear architecture decisions, reduce systemic risk, and restore delivery momentum without adding full time leadership overhead.

See consulting services

Recent articles:

Data Processing Does Not Belong in the Message Broker

Apache Kafka made event streaming practical at scale. Pushing data processing into the streaming platform creates recovery, scaling, and isolation problems in production. Vendor documentation, Kafka improvement proposals, and migration case studies point to the same architectural boundary: streaming platforms handle durable transport, processing engines handle state and checkpoints. Separating them leads to systems that scale and recover cleanly. Kafka changed the industry by making event streaming practical at scale. Durable logs, ordering, fan-out, and backpressure turned event-driven systems from fragile prototypes into mainstream infrastructure. Where things get messy is when teams push data processing into the streaming platform itself: Kafka Streams, ksqlDB, broker-side transforms. It starts as convenience and ends as operational coupling. Not because engineers are doing it wrong, but because the streaming layer and the processing layer solve different problems. T...

Kafka on Object Storage Was Inevitable. The Next Step Is Open.

Kafka on object storage is not a trend. It is a correction. WarpStream proved that the Kafka protocol can run without stateful brokers by pushing durability into object storage. The next logical evolution is taking that architecture out of vendor-controlled control planes and making it open and self-hosted. KafScale is built for teams that want Kafka client compatibility, object storage durability, and Kubernetes-native operations without depending on a managed metadata service. The problem was never Kafka clients The Kafka protocol is one of the most successful infrastructure interfaces ever shipped. It is stable, widely implemented, and deeply integrated into tooling and teams. The part that aged poorly is not the protocol. It is the original broker-centric storage model. Stateful brokers made sense in a disk-centric era where durability lived on the same machines that ran compute. That coupling forces partition rebalancing, replica movement, disk hot spots, slow recovery, an...

Apache Kafka Did Not Win as a Messaging System. It Won as an ETL Backbone.

Apache Kafka is marketed as a messaging system, but most teams run it as an ETL backbone and central data hub. That is why Kafka clusters store tens of terabytes, sit between every database and engine, and show up in platform cost and reliability discussions instead of messaging design reviews. This article explains how Kafka actually gets used in modern stacks, what problems that creates for integration, execution and governance, and concrete steps leaders can take to simplify architectures, control Kafka related costs and prepare for a federated execution layer on top. Kafka solved integration, not messaging On paper Kafka sits next to message brokers. In practice it earned adoption because it fixed an integration problem. As organisations added more systems that needed to exchange data, point to point ETL pipelines multiplied beyond control. With ten source systems and ten destinations you quickly end up with something close to one hundred individual jobs. Each pipeline ca...

AI Agents On Kafka Are Only As Smart As Your Architecture

Most vendor demos present Kafka as a perfect nervous system for AI agents. However, practitioners operating Kafka in production report a different reality. Partitioning mistakes, offset mismanagement, schema drift, and consumer lag break streams long before agents arrive. When autonomous systems consume these flawed event logs, they amplify issues instead of creating intelligence. This article uses real community evidence to show why most Kafka estates are not ready for AI agents and introduces the specific tooling required to fix the backbone first. Kafka's vendor ecosystem is loudly promoting AI agents that communicate through event streams. The narrative is polished: Kafka becomes the nervous system; agents act as distributed reasoning components; events become the fabric of autonomous behavior. In practice, this picture collapses when measured against what engineering teams face daily in production. A realistic assessment of Kafka readiness does not come from confe...

Building Reliable Flink-to-Iceberg Pipelines for Unity Catalog and Snowflake

Apache Flink ®, Apache Iceberg ® and governed catalogs such as Databricks Unity Catalog or Snowflake are often pitched as a simple path from Apache Kafka ® JSON to managed tables. In reality Flink is a stream processor, Iceberg is an open table format and the catalog handles governance. None of them infers schemas or models messy payloads for you. You still design schemas, mappings and operations under real Java, DevOps and cost constraints. Many architectural diagrams show a clean pipeline: Kafka into Flink, Flink into Iceberg, Iceberg governed by Unity Catalog or queried from Snowflake. In practice this stack has real friction. Flink is not a neutral glue layer. It is a JVM-centric stream processor with non-trivial operational cost. Iceberg is not a storage engine but a table format that imposes structure. Unity Catalog and Snowflake add their own expectations around governance and schema. Apache Flink is a distributed stream processor for stateful event pipelines. Apache Iceberg i...

What are the performance implications of cross-platform execution within Wayang?

Apache Wayang ® enables cross-platform execution across multiple data processing platforms such as Spark, Flink, Java Streams, PostgreSQL or GraphChi. This capability fundamentally changes the performance behavior of distributed data pipelines. Wayang reduces manual data movement by selecting where each operator should run, but crossing platform boundaries still introduces serialization cost, shifts in locality, different memory strategies and new tuning constraints. Understanding these dynamics is essential before adopting Wayang for multi-platform pipelines at scale. Apache Wayang is a cross-platform data processing framework that lets developers run a single logical pipeline across engines such as Apache Spark, Apache Flink or a native Java backend. It provides an abstraction layer and a cost-based optimizer that selects the execution platform for each operator. This flexibility introduces new performance variables that do not exist in single-engine systems. Engine boundaries ...