Loading…
Browse by type
Problem & solution reads
Problem & solution posts on Yomu, summarised newest first.
- 916 posts
- 20 companies
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
Problem & solution posts
Zero downtime Upgrade: Yelp’s Cassandra 4.x Upgrade Story
Yelp's Database Reliability Engineering team upgraded over a thousand Cassandra nodes from version 3.11 to 4.1 without downtime. The upgrade delivered reliability, observability, and performance improvements, including Java 11 support, configurable guardrails, and fixed incremental repairs. To avoid the high costs, consistency compromises, and data streaming delays of standing up separate datacenters, the team selected an in-place rolling upgrade strategy. The rollout orchestrated staged node updates alongside compatible versions of the Stargate proxy and custom data pipeline connectors without requiring client code modifications. Although Stargate 2.x introduced regressions on range and multi-partition queries that required downgrading to 1.x, the finished migration achieved up to a 58% reduction in p99 latency across key clusters.
How Respan is scaling LLM observability with ClickHouse Cloud
Respan scaled its LLM gateway and observability platform from hundreds of daily requests to 50 million daily events, causing its original Django and Postgres architecture to stall under transaction contention at 50 to 100 requests per second. To overcome Postgres write-ahead logging bottlenecks, the team migrated the ingestion and analytics pipelines to ClickHouse Cloud. Engineers minimized row sizes by truncating large prompt text and writing structured metrics to MergeTree tables, then built incremental minute- and hour-level materialized views alongside scheduled refreshable views for user metadata. Distributed tracing spans are ingested asynchronously with analytical parent-child resolution, utilizing functions like argMax rather than the FINAL modifier to prevent costly table merges. This architectural shift allows Respan to achieve sub-second search across tens of millions of records and support customer dashboards with predictable query performance.
How Notion catches breaking schema changes before they reach production
Schema drift in typed API requests and queue tasks can cause incidents when contracts change without detecting whether old payloads remain valid. Notion's CI guardrail extracts schema types from the base branch and compares them with PR types using TypeScript's compiler API, checking whether the old type is assignable to the new one. The check auto-discovers registered API endpoints and queue task types, uses git archive for base files, and currently covers approximately 1,300 endpoints and 296 task types. Backward compatibility blocks changes that reject old data, while queue schemas also receive an advisory forward check for rollout ordering. The rollout began with warnings, then made backward checks blocking and added a GitHub label for intentional exceptions; type checking still cannot catch extra runtime validation or semantic behavior changes.
Rill and ClickHouse: real-time operational BI for a metered world
Granular operations across cloud computing, payment platforms, and artificial intelligence workloads produce high-volume event streams that traditional business intelligence tools struggle to unify and aggregate. Operational BI platform Rill addresses this challenge by combining declarative data loading through the dlt framework with ClickHouse's high-performance analytical aggregation engine. Data transformations, SQL-based measure expressions, and dashboard configurations are defined entirely as code using SQL and YAML. This declarative, metrics-first architecture allows developers to validate analytics locally, track changes in Git, and eliminate intermediate caching layers when querying live data. By querying ClickHouse directly and linking AI-generated insights back to underlying queries, the system provides traceable, real-time operational analytics for enterprise environments.
Headless Screenshot Testing in Thumbtack’s Android Apps
Thumbtack required a faster, emulator-free method to execute over 1,500 Android screenshot tests during continuous integration. Previously, running UI tests on physical devices or emulators proved too slow for code review verification jobs, causing tests to run post-merge and allowing regressions to persist. After evaluating Paparazzi and Google's experimental Compose Preview Testing, the team selected Roborazzi, which runs on top of Robolectric's native graphics engine within a standard JVM. This headless setup accommodates custom Activities, Dagger field injection, and legacy View systems while executing alongside standard unit tests. Moving screenshot tests to the unit test level enabled gating merges on passing tests, colocating tests inside feature modules, and increasing total CI job runtime by only twenty percent.
From Custom to Open: Scalable Network Probing and HTTP/3 Readiness with Prometheus
Slack encountered a lack of client-side observability when introducing HTTP/3 at its edge. Because HTTP/3 runs over QUIC on UDP instead of TCP, neither existing commercial SaaS tools nor the internal Prometheus Blackbox Exporter could probe the new endpoints. To address this gap, an engineering intern integrated the open-source quic-go library into Prometheus Blackbox Exporter to build a native, configurable HTTP/3 probe. Slack deployed an internal implementation using the upstream functionality while waiting for pull request reviews, ultimately landing the contribution upstream. The resulting setup provides a unified view of HTTP/1.1, HTTP/2, and HTTP/3 metrics within Grafana, enabling reliable alerting and faster correlation with other telemetry.
Predicting Rider Conversion in Sparse Data Environments with Bayesian Trees
Lyft requires real-time predictions of whether a rider will request a ride after viewing price and ETA details to balance supply and demand and personalize user experiences. Traditional machine learning models overfit on high-cardinality, sparse context intersections, whereas deep neural networks introduce unacceptable inference latency during live user sessions. To address this, engineers created a hierarchical Bayesian tree framework that organizes session data into increasingly granular context partitions. Each node houses a parametric model trained top-down, applying Gaussian Bayesian priors and L2 penalties relative to parent parameters to smooth predictions in data-rare child segments. Using simple parametric models at each node also permits monotonic constraints, guaranteeing logically consistent predictions aligned with domain expectations.
How Padlet uses ClickHouse Cloud to power real-time classroom analytics
Padlet needed a real-time analytics system to provide teachers with immediate insights into student engagement across 40 million monthly unique users. To avoid the operational overhead of managing database clusters with a small engineering team, the company adopted ClickHouse Cloud and ClickPipes for managed data ingestion. Active user sessions emit 30-second heartbeat events that stream alongside page views into ClickHouse. Materialized views pre-aggregate engagement duration and view counts by date, while native HyperLogLog sketches process unique visitor calculations efficiently across arbitrary time ranges. In production, this architecture ingested roughly eight billion events in a single month and delivered analytical query results with a 45-millisecond median latency.
Building Biz Ask Anything: From Prototype to Product
Yelp expanded Yelp Assistant to business pages by developing a question-answering architecture that extracts concise, evidence-backed answers from reviews, photos, and structured facts. The production system replaces static snapshots with near-real-time streaming pipelines for reviews and structured properties alongside weekly batch ingestion for menus and website data. For each incoming query, the system evaluates intent, retrieves relevant context through keyword and embedding searches, and constructs targeted prompts with dynamically selected few-shot examples. Synthesized answers are augmented with supporting visuals and citations before being streamed token-by-token to users. Generating suggested questions directly from specific business content rather than generic categories improved user engagement by roughly fifty percent and reduced unanswerable queries by twenty-six percent.
Intelligent security at ClickHouse speed: How Cogent Security built an AI-native vulnerability management platform
Enterprise security defenders face shrinking exploitation windows alongside massive volumes of vulnerability findings across disconnected tools. To overcome query bottlenecks from traditional relational databases, Cogent Security designed a lakehouse serving architecture using Apache Iceberg and per-customer ClickHouse instances. The architecture relies on query-driven denormalized tables, custom compression codecs, and pre-computed projections to serve hundreds of millions of rows with sub-second latency. On top of this data layer, Cogent implemented an agentic text-to-SQL system that iteratively queries live data, references an in-house Ontology Service for semantic context, and applies majority-voted evaluations. This combination improved text-to-SQL accuracy from 40% to 94% while providing sub-three-second response times across 98.7% of queries at 100 million rows.
Smarter Auto-Scaling for ClickHouse: The Two-Window Approach
ClickHouse Cloud required a vertical auto-scaling mechanism that preserves rapid scale-ups while avoiding prolonged over-provisioning after traffic drops. Operating on a single 30-hour lookback window forced scale-downs to take up to 30 hours, whereas an earlier fixed-factor CPU algorithm caused severe oscillations. The engineering team deployed a dual-window recommender pairing a 3-hour window for responsive scale-downs with a 30-hour window for single-step scale-ups. Alongside a trend-based hunting check to resolve conflicting window recommendations, the team introduced target-tracking CPU scaling using geometric mean watermarks and 10-minute median smoothing. This dual-window architecture reduced scale-down latency to 3 hours, prevented scaling oscillations, and significantly reduced infrastructure costs for variable database workloads.
Building high-performance full-text search for object storage
ClickHouse redesigned its native full-text index to address latency bottlenecks caused by random read patterns on remote object storage. Instead of using a Finite State Transducer dictionary, the new architecture organizes indexed tokens into fixed-size sorted blocks compressed with front-coding. Each data part separates index data across a small in-memory sparse index file, a sequential dictionary file, and a posting list file. This layout allows the query engine to pinpoint token locations with minimal random I/O and resolve multiple full-text functions directly from index files. Consequently, ClickHouse Cloud maintains predictable search latency across shared object storage while matching local disk performance and scaling through parallel query execution.
Migrating Etsy’s database sharding to Vitess
Etsy migrated its long-running MySQL shard management to Vitess vindexes after an architecture spanning about 1,000 tables and shards, 425 TB of data, and roughly 1.7 million requests per second. The legacy ORM used a single index database to map records to shards, creating a scaling bottleneck and single point of failure. To avoid moving existing data, engineers built custom SQLite lookup and hybrid vindexes, changed new shard assignments to match Vitess’s hash algorithm, and introduced routing incrementally table by table with traffic ramps, rollback, and query compatibility testing. After five years, about 2,500 pull requests, and 6,000 queries, the migration removed the index database dependency, made scaling operations take days rather than months, simplified developer access, and kept database performance largely unchanged without a mass data migration.
How Slack Rebuilt Notifications 📣
Slack redesigned its legacy notification architecture to address user confusion, conflicting desktop and mobile preference systems, and tight coupling between notification content and push delivery. The engineering team unified four separate preference models into a single framework with three channel options: All new posts, Mentions, and Mute. To ensure safe rollback and backwards compatibility without direct database mutations, Slack implemented a read-time translation strategy alongside a new desktop_push_enabled preference and auto-saving cross-platform React UI components. This decoupling of activity from push delivery resulted in a fivefold sustained increase in settings engagement, reduced reliance on per-channel overrides, and eliminated synchronization mismatches across mobile and desktop clients.
From firefighting to building: How AI agents restored our team’s core productivity
Grab’s Analytics Data Warehouse team supports more than 1,000 monthly users and 15,000 tables, but repetitive questions about definitions, lineage, quality, and basic enhancements consumed about 40% of engineering time. It deployed a multi-agent AI system that routes Slack requests into enhancement or investigation pathways, using FastAPI and LangGraph for stateful, cyclical collaboration, Redis for caching and sessions, and PostgreSQL for persistent memory. Specialized agents query Trino, Hive, or Delta Lake, inspect GitLab code, check incidents and pipeline health, or prepare semi-automated code changes, while human reviewers approve production modifications. The system autonomously resolves most standard inquiries and some common enhancements, reducing resolution time by an order of magnitude and bringing simple answers to users within minutes. The resulting capacity shift reclaimed several FTEs worth of engineering bandwidth and moved hundreds of hours from reactive support to roadmap work.
How ClickStack makes ClickHouse faster for observability
ClickHouse delivers high performance for telemetry data, but unoptimized queries on high-cardinality observability workloads can bypass pruning, inflate intermediate state, and exhaust cluster resources. ClickStack addresses this challenge by embedding engine-specific optimization best practices directly into how queries are generated, structured, and executed. For search workflows, the platform executes progressive queries across bounded time windows using optimize_read_in_order to return initial rows rapidly without scanning entire historical ranges. ClickStack also segments large chart aggregations into parallel bucket-aligned queries, automatically redirects map attribute filters to pre-materialized columns, and extends lazy materialization thresholds to minimize runtime input-output overhead. These query formulation strategies are being packaged into specialized analytical endpoints to power notebooks and external tools without requiring manual SQL tuning or exposing raw database interfaces.
How Socialpruf built a faster, more reliable data stack by replacing Neon with Postgres managed by ClickHouse
Socialpruf, a social media performance tracking platform ingesting hundreds of posts per second, experienced analytics latency, connection dropouts, and high network transfer costs while running Postgres on Neon alongside ClickHouse Cloud. To resolve these issues, the team migrated their transactional system of record to NVMe-backed Postgres managed by ClickHouse, colocating transactional and analytical workloads. Although standard Postgres logical replication failed on their 0.5 TB dataset, they achieved continuous synchronization using PeerDB before conducting a production cutover. The migration eliminated connection dropouts, reduced network transfer fees, and improved overall Postgres query performance by approximately 30 percent. To manage thousands of concurrent connections generated by ingestion workers, Socialpruf implemented ClickHouse's bundled, horizontally scalable PgBouncer instances.
Designing the new async-native ClickHouse Python client
The official ClickHouse Python client, clickhouse-connect, originally addressed asynchronous execution by wrapping its synchronous HTTP client in a thread pool executor. However, this executor model experienced thread exhaustion, GIL contention, and severe tail latency variance under heavy concurrent workloads. To resolve these scalability bottlenecks, the developers redesigned the client around a half-sync/half-async pattern utilizing aiohttp for async network I/O. A custom bounded queue bridges streaming socket reads on the event loop with synchronous, CPU-intensive binary parsing running inside background threads. Benchmarks demonstrate that this architecture stabilizes tail latencies, delivering an average P95 latency of 556 milliseconds compared to 869 milliseconds for the legacy executor client.
Transformation in action: What it takes to automate 81% of your customer service while improving CX
Intercom describes how its Customer Support team adopted an AI-first strategy after a 2022 review exposed rising demand, weak service-level commitments, and plans to broaden support access. The team began with high-volume informational queries, then expanded Fin through deeper documentation, internal procedures, customer-action capabilities, knowledge management, conversation design, skills-based routing, and organizational changes including a dedicated AI Support team. Fin now resolves over 81% of support volume and helped absorb a 300%+ demand increase without proportional headcount growth, while over 90% of customers receive improved first response performance, 24/7 coverage, and outbound phone support. The remaining human work has shifted toward consultative engagements, while Insights, Guidance, Tasks, and Procedures support ongoing optimization. Next, the team plans to use a four-stage Fin Flywheel—Train, Test, Deploy, and Analyze—and continue developing its Agent Blueprint.
Enabling R8 optimization at scale with AI-assisted debugging
Grab enabled R8 optimization for its Android app after repeated attempts were blocked by debugging difficulty, organization-wide testing demands, and slow build feedback. The effort targeted a roughly 10-year-old codebase exceeding 9 million lines and combined AI-assisted debugging, a pragmatic testing strategy, and infrastructure investment. Its QA build was configured to match production R8 processing. Beyond existing shrinking, optimization added techniques such as method inlining, class merging, constant folding, dead-code elimination, and devirtualization. After about 10 weeks with one engineer coordinating across teams, the project reported around 25% lower ANR rates, a 16% reduction in reference-device download size, and nearly 27% faster startup; the startup result combined R8 with corrected Baseline and Startup Profiles.
Top topics
- Architecture834
- Performance815
- LLMs659
- Machine Learning621
- Open Source563
- AI Agents553
- AI469
- Developer Experience448
Weekly digest
The best engineering reads, once a week.