Konrad Kowalski (rootsher)Principal Platform & Reliability Architect000011010010011000011000011011011001101111010110

Blog - Konrad Kowalski (rootsher)

posts (112)

  1. The Layers of HTTP in the Browser: From fetch() to QUIC1/9

    Request and Response: What Does the Browser Actually Send?

    A request is not a URL, and an HTTP response is not always JSON. Headers and body have separate lifecycles, and an HTTP error is not a network failure.

  2. Testing Through Layers: From Code to Infrastructure5/9

    E2E Tests and Visual Regression Tests: The Full User Path

    An E2E test walks through the system the way a user does, while a visual regression test protects appearance. They are powerful but expensive, so they should…

  3. Deployment Strategies: Why They Exist3/6

    Canary Deployment: The New Version Gets Part of the Traffic

    Canary limits blast radius by using a small percentage of real traffic. Without metrics, it is only a slower rollout.

  4. series · 9 parts

    The Layers of HTTP in the Browser: From fetch() to QUIC

    Two lines of fetch() cover several layers: the browser API, HTTP semantics, the wire protocol and the transport. This series separates them so the Network…

  5. Frontend Rendering: from server-side pages to hybrid rendering16/17

    Server Components: moving the execution boundary

    The rendering boundary stops running through the page and starts running through the module graph. Some components never have a client-side implementation.

  6. Deployment Strategies: Why They Exist2/6

    Blue-Green Deployment: Two Versions, One Traffic Path

    Blue-green separates deploying from switching traffic. Rollback can be fast, but data does not move back with routing.

  7. Testing Through Layers: From Code to Infrastructure4/9

    Contract Tests and API Tests: The Public System Agreement

    A contract test protects the agreement between systems, while an API test checks the behavior of a public interface. Both matter where a change stops being…

  8. Realtime in the Browser: From Polling to WebTransport7/7

    Polling, Streaming, SSE, WebSocket, or WebTransport?

    The choice follows from the traffic model: freshness, direction, frequency, ordering and reliability. The simplest correct mechanism usually wins.

  9. Recovery from the Ground Up: Rollback, PITR, and Returning After Failure2/5

    Rolling Back a Release: Code Is the Easy Part

    Release rollback often looks like returning to the previous application image. In practice, the hard parts are data, migrations, and side effects that already…

  10. Deployment Strategies: Why They Exist1/6

    Rolling Update: Replacing Pieces Gradually

    Rolling update removes downtime during version replacement, but it only works safely when old and new versions can live together for a while.