Skip to content

Canva

Canva Engineering blog (https://www.canva.dev/blog/engineering/). Not yet in raw/_feeds.yaml's core tier list as of 2026-04-21; single-article ingests so far. Posts skew toward product/design content but include occasional substantive architecture retrospectives (Creators-payment counting pipeline, Print Routing engine, search/serving-infra posts, data-platform work).

Key systems

  • systems/canva-ci — CI system (Bazel + Buildkite + EC2 + bazel-remote + TestContainers); 80 min → <30 min PR-to-merge over 2 years; 900K-node Bazel graph; >1000 check-merge builds/workday.
  • systems/canva-usage-counting — Creators-payment counting pipeline: DynamoDB raw events → Snowflake + DBT dedup/aggregation → S3 + SQS + rate-limited RDS ingester for serving.
  • systems/canva-print-routing — Print order routing engine: three-subsystem split (Build+Retrieve / Decision / Traversal); relational source of truth → async-rebuilt per-region graphs in ElastiCache/Redis; modified successive-shortest-path min-cost-flow with rule-ordered Decision engine; per-order routing log for explainability. p99 50 ms peak, 99.999% availability.

Key patterns / concepts

Recent articles

  • 2024-12-16 — sources/2024-12-16-canva-faster-ci-builds (Faster CI builds: 80 min → <30 min PR-to-merge; Bazel migration pain points; build-without-the-bytes; hermetic TestContainers; pipeline step consolidation; static pipeline generation; instance-shape right-sizing; EBS-snapshot agent warm-up; shaping-vs-building discipline; per-test runtime caps).
  • 2024-12-10 — sources/2024-12-10-canva-routing-print-orders (Print order routing engine: three-subsystem architecture; relational ops DB → async-rebuilt per-region graphs in Redis; min-cost-flow traversal with pairwise path ranking + "regrets" backtracking; deterministic rule-ordered Decision engine with distance tie-breaker; per-order routing logs for explainability; p50 ~30 ms, p99 ~50 ms peak, 99.999% availability).
  • 2024-04-29 — sources/2024-04-29-canva-scaling-to-count-billions (Creators-payment counting: MySQL → DynamoDB raw events → OLAP+ELT on Snowflake + DBT; billions/month aggregated in minutes; pipeline latency >1 day → <1 hour; >50% storage reduction; incident rate dropped from ≥1/month to ~1 every few months).

Ingest posture

Apply Tier 3 filter: skip pure product/design posts, marketing, and feature announcements; ingest when an article covers distributed systems internals, scaling trade-offs, data-platform or search infrastructure architecture, or production-incident retrospectives.

Last updated · 200 distilled / 1,178 read