deployment

  • Two deployables that were never deployed separately

    Forty-four releases over three years, of which forty-one changed both services in the same window. Counting releases is a five-minute query against the git history and it answers…

  • Composer 2.7 and the bump command

    composer bump raises the constraints in composer.json to match what is installed, which is either exactly what you want or exactly what you do not. The distinction between…

  • terraform test, on a module with no tests

    A module used by four environments and verified by applying it and looking at the console. The tagging assertion is the one that earns its place immediately, because…

  • The registry we ran ourselves for three weeks

    A rate limit hit at 09:00 every weekday, a pipeline failing intermittently for two months, and the wrong one of three options tried first.

  • A consumer group rebalance during a deploy

    Every deploy restarting six consumers at once, triggering a rebalance that stops consumption for forty seconds. Rolling the restarts is the obvious answer and it is slower, which…

  • Pulling through a cache instead of authenticating

    A registry rate limit hit every weekday at nine, and three options of which the cheapest was not the one we tried first. A mirror is transparent —…

  • A framework upgrade that was mostly deleting

    Laravel 11 in March, a skeleton with four fewer directories, and an application still carrying 2019’s structure.

  • A runbook written by the person who does not know the answer

    Runbooks written by the expert were unusable by anybody else, so the second person wrote them and the expert reviewed. The expert’s version of step one was “check…

  • removed blocks, and forgetting a resource on purpose

    Taking a resource out of management used to mean state rm, which is a command run against state and invisible in review. The default being destroy is the…

  • A systemd timer instead of a cron entry, at last

    A cron entry that had been failing silently for six weeks, and a timer that would have said so. Persistent=true runs a missed occurrence after a reboot, which…