<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Patterns on Wouter in 't Veld</title><link>https://wouter.sh/categories/patterns/</link><description>Recent content in Patterns on Wouter in 't Veld</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 20 Oct 2026 12:22:49 +0200</lastBuildDate><atom:link href="https://wouter.sh/categories/patterns/index.xml" rel="self" type="application/rss+xml"/><item><title>Server-Sent Events behind a shared gateway, without sticky sessions</title><link>https://wouter.sh/posts/sse-behind-a-shared-gateway/</link><pubDate>Tue, 20 Oct 2026 12:22:49 +0200</pubDate><guid>https://wouter.sh/posts/sse-behind-a-shared-gateway/</guid><description>At work several teams push live updates to browsers: an order changes state, a label is ready, a list should refresh. Each team built its own WebSocket API for that. Meanwhile the rest of their traffic moved behind a shared Envoy gateway (the one from an earlier post), and the WebSocket APIs could not follow. The managed WebSocket APIs we used only come with a public, regional endpoint (AWS whitepaper), and our gateway only forwards to private ones.</description></item><item><title>Self-service routes on a shared Envoy gateway</title><link>https://wouter.sh/posts/self-service-routes-shared-envoy-gateway/</link><pubDate>Sun, 11 Oct 2026 09:43:45 +0200</pubDate><guid>https://wouter.sh/posts/self-service-routes-shared-envoy-gateway/</guid><description>At work we run one Envoy gateway in front of many teams&amp;rsquo; private APIs. Requests reach it through a CDN and a load balancer, and Envoy matches the Host header to one virtual host per team before forwarding to that team&amp;rsquo;s API. It started the way shared gateways usually start: one config file in the gateway repository, and a pull request to it every time a team needed a route. That works for three routes.</description></item></channel></rss>