• build-in-public
  • product
  • aws

Why we built a validation engine instead of another drag-and-drop canvas

Generic diagramming tools let you draw any connection, valid or not. Here's why Design Beaver checks your architecture as you draw it instead.

Every AWS diagramming tool we tried would happily let us draw something broken. Drag a box, drag another box, connect them with a line — the canvas doesn’t care whether that connection makes sense. It just draws the line.

That’s the gap Design Beaver exists to close: it validates as you draw, instead of leaving you to find out an architecture was broken after you’ve already built it.

The blank canvas problem

A blank canvas treats every AWS service as interchangeable shapes with labels on them. Draw a line from Lambda straight to RDS, and Lucidchart or draw.io will render it exactly like any other connection, because to them, a connection is just a line. Neither one knows that Lambda’s concurrency model can quietly overwhelm a database connection limit.

Same starting point, same intent — a blank canvas draws both edges identically, Design Beaver flags the one that runs out of database connections.

Cloudcraft gets closer — it at least knows AWS’s shapes — but it’s built for cost estimation, not correctness. It’ll happily price out an architecture that doesn’t actually work.

What “validates as you draw” looks like in practice

Take the edge above: Lambda talking directly to RDS, no proxy in between. It looks fine on a canvas. It isn’t, once real traffic hits it.

Lambda scales by spinning up a new execution environment for every concurrent invocation — and each one can open its own database connection. RDS has a hard cap on simultaneous connections. Lambda’s bursty concurrency can scale past that cap far faster than a database was ever designed to absorb, and the result is connection errors right when your API is under the most load.

Every concurrent Lambda invocation opens its own connection — past a point, RDS just runs out.

Route the same call through RDS Proxy instead, and it pools and reuses connections across every concurrent invocation, so a burst of Lambdas doesn’t mean a burst of fresh connections. Design Beaver flags a direct Lambda-to-RDS edge the moment you draw it, not the moment it breaks in production. That’s the whole premise: catch the missing proxy, the invalid connection — while you’re still deciding the architecture, not after you’ve deployed it.

Why we didn’t build another all-purpose tool

We could have built a general-purpose diagramming app and bolted AWS shapes onto it. We didn’t, on purpose. Every feature that isn’t “draw an AWS architecture correctly” is a feature we’d have to maintain instead of getting validation right. We’d rather do one thing extremely well — AWS diagramming with real validation — than be a mediocre version of Lucidchart with an AWS icon pack bolted on.

That also means we’d rather slow you down with a warning than let you ship a diagram that looks right and isn’t. Convenience loses to correctness here, every time. If that trade-off sounds annoying, we get it — but it’s the same trade-off you’re already making when you review a PR instead of merging straight to main.

What’s next

This is the first real post on this blog, not the last. We’re building this content pipeline the same way we’re building the product: correctness first, opinions stated plainly, and nothing published we haven’t checked. If you’re designing AWS architectures and want a tool that checks your work as you go, open Design Beaver — it’s live in beta, free, no account required.

Milin Paul

@milinpaul

Lead Software Engineer at EverestEngineering. I write about practical AI systems, engineering architecture, and what actually works in production.

Try Design Beaver on your own architecture

It’s live in beta — free, in your browser, no account required.

Open the app →

Prefer email? Get new features in your inbox:

← Back to all posts