Microservices: 147 APIs, zero documentation
Tiny Acorn Acorns in cache: 69

Squirrel Stack Microservices: 147 Services, Zero Docs

The full Squirrel Stack microservices architecture, as drawn on a napkin during a coffee break in 2021 and never revisited. 147 services. 4 of them are doing anything. 12 of them call each other in a perfect circle. The remaining 131 are owned by an engineer who left the company in 2023.

We call this pattern distributed monolith. Other teams call it the same thing. The difference is we say it with confidence on stage at conferences.

The Architecture (As Drawn From Memory)

                    [API Gateway]
                         |
        +----------------+----------------+
        |                |                |
   [auth-svc]      [user-svc]      [notification-svc]
        |                |                |
        +------+---------+------+---------+
               |                |
        [acorn-allocator]  [nut-billing]
               |                |
        [tail-twitch-tracker]   |
               |                |
               +-------+--------+
                       |
                [chitter-bus (RabbitMQ)]
                       |
        +--------------+--------------+
        |                             |
   [128 other services]      [legacy-monolith-2009]
        |                             |
        +-------------+---------------+
                      |
              [shared Postgres]
                      |
              (single point of failure,
               we know, it's on the roadmap)

Diagram accurate as of last Tuesday at 3pm. The notification-svc has since been rewritten in Rust and forgotten.

Service Inventory (Selected Highlights)

The AI Services (Bolted On In Q3)

How A Single Request Actually Travels

  1. User clicks "Buy Acorn" on the homepage.
  2. Request hits the API Gateway, gets rate-limited because someone forgot to whitelist the production frontend.
  3. auth-svc validates the JWT, then calls user-svc to validate the user, which calls auth-svc again to validate the JWT.
  4. auth-svc also calls the new vibe-check-agent, which asks Squirrel-GPT 5 whether the user "feels like they should be allowed in."
  5. 11 more services are pinged for "feature flags" and "telemetry" and "the vibes."
  6. Request reaches acorn-allocator, which is down.
  7. chitter-bus picks up the failure and broadcasts it to 47 listeners, 46 of whom ignore it.
  8. The 47th listener is a Slack bot that pings the on-call engineer.
  9. On-call engineer (Hazel) restarts the service. Request finally succeeds. Latency: 18 seconds. Status code: 200.
  10. The request succeeds, but the AI agent that handled billing has invented a new currency called "NutCreds" and charged the user 3,400 of them.
  11. User goes elsewhere. We track this in Acornlytics as "engagement."

Ownership Matrix

Incident Response

Incident Timeline: The Great Snack Outage of 2025

A single shared incident. Referenced everywhere. Postmortem was scheduled. Postmortem never happened. See also: the full archive.

Slack Thread Archive

@nutterz          prod is down
@hazel            yes
@nutterz          is it bad
@hazel            yes
@acornelius       this is a great learning moment
@hazel            restarting acorn-allocator
[reaction]        :squirrel: x 47
@bjorn-the-hawk   just glided through the data center, FYI
@hazel            ...

Confluence Page (Stylized)

Owner: Steve (no longer with the company)

Last edited: 2018-03-22

Tags: TODO, draft, do-not-delete, important, also-todo

Body: "see Steve"

Generate a Jira Ticket

For the backlog. Will not be groomed. Status: WONT-FIX (Vibes).

Click the button. Pretend it's groomed.