Lukka

Lukka Builds a Predictable Data Layer for Unpredictable Analytics

Overlay of various financial graphs and charts with numerical data displayed over a blurred office desk, keyboard, and pen, suggesting financial analysis or stock market trends.
Use Cases
Industry
Integrations
No items found.
Features

With B2, we cut storage retrieval volume and object count out of the financial equation. We can focus purely on how we process data, not how we move it between vendors, regions, and components.

Jakub Fijolek, Head of Infrastructure, Lukka

3PB

active data

9PB+

monthly reads

200+

ingestion processes

Situation

Lukka continuously ingests data from more than 50 blockchains, preserving every block and keeping complete transaction histories available at low latency. Its compute runs across AWS and two on-premises data centers, but storing data in AWS made cross-environment access costly and unpredictable, especially with billions of small objects and irregular retrieval patterns.

Solution

Lukka moved nearly 3PB of active blockchain data to B2, using it as shared object storage for AWS Frankfurt and on-premises clusters. S3 compatibility allowed 200+ Java ingestion processes, Spark, Hive-style partitioning, and AWS SDKs to keep working. During migration, two-way event notifications synchronized writes between S3 and B2 so live ingestion could continue while producers and consumers moved in stages.

Result

B2 provides comparable access latency and throughput with simpler, more predictable economics. Jobs can run both on prem and in the cloud wherever compute is available without being forced into AWS to avoid egress charges. More than nine petabytes of monthly off-AWS reads fits within B2’s included free egress, helping engineers run analytics and power agentic workflows without adding storage-cost approvals to every decision.

How It Works

Lukka’s blockchain nodes continually surface new blocks, which extractors capture and preserve as raw JSON or binary objects in B2. Transformers then normalize those records into Lukka’s canonical format, identifying transactions, addresses, assets, and values. Inserter services route the normalized data through AWS MSK into application-specific datasets and tables. Apache Spark workers running in AWS Frankfurt and Lukka’s Warsaw and Katowice data centers share the workload, accessing the same B2 data layer. Hive-compatible paths and partitioning help Spark target only the relevant objects instead of scanning entire datasets.

‍

Flowchart showing data processing from blockchain nodes ingesting blocks as raw JSON or binary objects, through extractors, transformers normalizing records, inserter services routing data, AWS MSK streaming data, to datasets and tables as application-specific destinations. Data is stored in a shared Backblaze B2 data layer accessible by Apache Spark workers distributed in AWS Frankfurt, Warsaw, and Katowice data centers, with partition pruning for efficient reading.

Share This Case Study

Download Case Study

Lukka is an enterprise data company serving institutions that need normalized, auditable digital asset data for compliance, investigations, pricing, valuation, accounting, tax, and portfolio management.

  • Founded 2014
  • Global, remote-first
Company bio image

Every block, always available

For Lukka’s blockchain analytics products, old data is not cold data. A customer may ask about a highly active exchange address or one that last moved funds years ago—and either request can require the address’s complete transaction history. Meanwhile, networks such as Solana can add a new block roughly every 250 milliseconds. Lukka must preserve every block, ingest new data continuously, and make the full history available at low latency. That combination rules out traditional archival tiers and creates billions of small, frequently accessed objects.

‍

We have a blend of archival and fast-retrieval needs. With Backblaze, we know roughly how much data and traffic we have, without having to decide which partitions or files belong on which tier.

Jakub Fijolek, Head of Infrastructure, Lukka

Cloud gravity becomes a cost

AWS worked well when compute and storage stayed inside its ecosystem. Lukka, however, operates a distributed model: Spark workloads can run in AWS Frankfurt or in its Warsaw and Katowice data centers. Pulling large datasets from S3 to on-premises compute created substantial and hard-to-predict egress charges. Tiered storage did not solve the problem. Standard storage was expensive at Lukka’s scale, while infrequent-access tiers added retrieval charges to workloads whose access patterns could change with every customer request.

No items found.

Keeping production in sync

Lukka’s migration could not pause continuous blockchain ingestion. After the initial bulk load, the team:

  • Used event notifications and AWS Lambda functions to maintain a temporary two-way synchronization layer. 
  • New objects written to S3 were copied to B2
  • As writers moved to B2, notifications triggered the reverse flow for readers that had not yet switched. 

This let Lukka migrate producers and consumers in stages while the live pipeline kept moving. Today, B2 supports active ingestion and processing—not simply backup or archive storage.

‍

For us, S3 compatibility was a prerequisite. We are still using the AWS SDK almost everywhere. In Spark, we changed the connection classes, endpoints, paths, and region—and Backblaze just worked.

Jakub Fijolek, Head of Infrastructure, Lukka

One data layer, flexible compute 

B2 now gives Lukka’s three compute locations a shared data layer. Services are replicated across the environment, and queued work is picked up wherever capacity is available. Because jobs no longer need to be forced into AWS to avoid egress, Lukka can use its on-premises infrastructure as a stable baseline and burst in the cloud when needed. More than nine petabytes of monthly reads outside AWS remains within B2’s 3x free-egress allowance.

‍

It’s hard to stress how important pricing predictability is for a data company. We can simplify workflows and let people process data independently without worrying that a job will cause an unexpected bill spike.

Jakub Fijolek, Head of Infrastructure, Lukka

Predictability for Agentic Analytics

That flexibility matters even more as Lukka expands agentic analytics. Agents make data access less predictable than analyst-authored queries: one request may retrieve megabytes, another terabytes. With retrieval volume and object counts largely removed from the cost equation, Lukka can measure and manage compute—the variable Spark exposes precisely—without making every data job carry a cloud-storage pricing model.

Related Case Studies

A Publicly Traded Company (BLZE)
Backblaze © 2024

Staging secure is temporarily unavailable. Please check for any ongoing deploys. If none are in progress, contact the fullstack team for assistance. Click me to dismiss.