Serverless Six Years Later: Architecture, Testing and Tradeoffs

Erwin van der Koogh reflects on event-driven systems and debates production testing with the audience.

EVErwin van der KooghIntervenant
Chaîne
GOTO Conferences
Publié
22 janv. 2023
Vidéo
48:03
Lecture
4 min
Original
anglais
Ouvrir sur YouTube
En faisant défiler, la vidéo se réduit en bas à droite et continue. Les sous-titres suivent votre langue de lecture.
Langue de lectureDisponible en 2 langues
Cet article n’est pas encore disponible en français ; il s’affiche dans l’original en anglais.
RÉSUMÉ

En 30 secondes

At YOW! 2022, Erwin van der Koogh describes his serverless-first startup, event-driven development and usage-based costs. Audience members challenge his testing practices, and he distinguishes the small startup from larger systems with additional safeguards.

  1. 1A serverless definitionThe speaker defines serverless around events, usage-based billing and managed scaling.
  2. 2Event-driven designSmall event handlers can add behavior through subscriptions, with integration risks.
  3. 3Testing in productionHis startup used local tests, isolated production accounts and feature flags rather than staging.
  4. 4Context and scaleAudience questions expose risks and he distinguishes larger systems that use more safeguards.
  5. 5Costs and business modelsUsage-based costs can aid pricing but do not guarantee linear costs or revenue.

À retenir

  1. The speaker defines serverless around events, usage-based billing and managed scaling.
  2. Small event handlers can add behavior through subscriptions, with integration risks.
  3. His startup used local tests, isolated production accounts and feature flags rather than staging.
  4. Audience questions expose risks and he distinguishes larger systems that use more safeguards.
  5. Usage-based costs can aid pricing but do not guarantee linear costs or revenue.
TEXTE INTÉGRAL

Lire le texte remanié, chapitre par chapitre

Transcription seule
01

Defining serverless

The speaker explains events, functions and connections.

At YOW! 2022, Erwin van der Koogh looks back on six years of serverless development, including his startup and his work on Cloudflare’s developer platform. He invites the audience to challenge his conclusions.

His personal definition of serverless emphasizes running code in response to events, usage-based billing and scaling without managing servers. He acknowledges that others may draw the boundaries differently and that real services have limits and billing details.

A typical execution receives and validates an event, may fetch additional data, makes a decision and saves or sends the result. He says the value is often in how this step connects to the rest of a system.

He calls a function a business step rather than treating it as a generic reusable function. Shared logic can still live in libraries; events, configuration and destinations define how a deployed step participates in a workflow.

An audience member asks about loose coupling. Van der Koogh clarifies that a function need not directly call every consumer: publishing to a bus can let other services subscribe independently.

02

Building around events

Small handlers support incremental features.

For a serverless-first application, he first considers existing managed services, then serverless code, and uses a container where necessary. HTTP requests and other events naturally lead toward an event-driven design.

He describes small modules that each process a narrow event and estimates that many of his functions are roughly 50–150 lines. The small size is an observation about his codebase, not a universal design rule.

He says his acquired startup continued operating without his daily attention. This is an anecdote about a specific system and does not mean serverless applications require no monitoring or maintenance.

His preferred way to add a feature is often to subscribe a new handler to an existing event rather than modify the producer. For example, a signup event can trigger a new email workflow.

An audience member challenges the assumption that adding code cannot disrupt an ecosystem. New subscribers can still introduce shared-resource, ordering, security or downstream effects; the speaker’s reduced-blast-radius claim depends on the design.

When replacing behavior, he prefers adding and verifying the replacement before switching over. The aim is to make change incremental and reduce the risk of altering an existing path all at once.

03

Testing and audience challenges

Production testing, isolation and safeguards are debated.

On testing, he says he wrote unit tests for reusable logic but generally tested serverless functions through events and their integrations. His provocative “no unit tests” phrasing describes his practice, not a general testing standard.

He also describes testing in production with versions and feature flags, limiting unfinished changes to the developer or selected internal test accounts. He distinguishes this from exposing untested changes to all customers.

The startup had no staging environment; he says the team tried to make production testing safe through isolation, monitoring and observability. An audience member asks how to avoid contaminating production data, and he explains the use of disposable internal accounts.

He clarifies that developers tested locally before production. Another question identifies a real failure mode: a bug in a feature flag can expose a change to unintended customers. He says his team kept its routing rules simple but does not eliminate that risk.

Asked about peer review, he says the small startup did not require it for every change and explicitly does not recommend that choice for everyone. Team size, consequences and organizational context matter.

A participant questions whether these practices scale. Van der Koogh distinguishes his small startup from Cloudflare, where he says teams use unit tests, production testing and staging environments for larger systems.

The audience asks whether delaying safeguards can create a difficult retrofit. He says teams should respond as complexity grows and preserve reversibility, citing infrastructure templates that could have helped his startup add staging.

For safety-critical systems, he argues that controlled production rollout can detect issues that staging misses. That does not replace the validation, isolation and independent safeguards required by a particular safety-critical context.

04

Operations, costs and outlook

Managed infrastructure changes operational and business tradeoffs.

Managed platforms move some operational responsibility to the provider, but an outage can leave the application team dependent on the provider’s recovery. Operational simplicity therefore comes with a dependency tradeoff.

He argues that the largest financial benefit may be freeing people to work on product differentiation rather than maintaining infrastructure. Lower cloud bills are possible but are not his main point.

Usage-based billing can make individual operations easier to cost and support pricing decisions. Actual spend need not grow linearly with revenue: traffic, retries, storage, egress and pricing can vary independently.

Looking ahead, he predicts closer integration of serverless and software-as-a-service platforms, with configurable business workflows exposed through APIs and webhooks. He gives Shopify as an example of a higher-level business platform.

Sur la même chaîne

3 diapositives39:12EN
GOTO Conferences· 28 oct. 2026Cate Huston: How Rigour Supports AI-Assisted Development VelocityCate Huston · TwillA two-person team’s experience with release gates, automated checks, prioritization and the cost of shipping faster.Leadership en ingénierie IASoftware engineeringAI agents
4 diapositives22:33EN
GOTO Conferences· 26 oct. 2026William Schor: From Unit Tests to Synthetic Canaries at NetflixWilliam Schor · NetflixHow generated workloads and production-like infrastructure help test a distributed key-value service.Software engineering
5 diapositives34:11EN
GOTO Conferences· 23 oct. 2026Anatoliy Bilenko and Alberto Carretero: Making Database Protocols Reliable with Formal Methods and AIAnatoliy Bilenko, Alberto Carretero · CanonicalCanonical’s database engineers connect executable specifications, model-based tests, failure exploration, and reconstructed execution histories—and explain why none of these techniques proves a real system correct on its own.Workflows de développement et testsCode review & verificationObservabilité et fiabilité+2
28:15EN
GOTO Conferences· 22 oct. 2026Steve Poole on Open-Source Security and AI’s Maintenance ChallengeOlimpiu Pop, Steve PooleWhy faster vulnerability discovery increases pressure on maintainers, dependency users and upgrade processes.Software engineeringAI security
5 diapositives46:36EN
GOTO Conferences· 21 oct. 2026Don Syme: Building Agentic Automation Around Human CollaborationDon Syme · GitHubContinuous AI, repository workflows and the guardrails needed for unattended software maintenance.Agent orchestrationSoftware engineeringAgents de code
28:23EN
GOTO Conferences· 19 oct. 2026Learning Ash: Declarative Elixir Apps, Testing and ExtensibilityChristian Alexander, Rebecca Le, Zach DanielRebecca Le and Zach Daniel explain how their book and the framework evolved together.Software engineering