← All case studies
Internal operational-resilience systemNinthroot · Business continuity

Chestnut Emergency Hosting

A low-cost continuity layer that keeps essential client pages and contact paths available during a primary-host outage.

During the outage, I created an emergency static-site process, documented deployment steps, and helped coordinate temporary pages and DNS changes. Afterward, I designed a more sustainable backup that preserves only the capabilities clients need during an outage.

  • Node.js
  • EJS
  • AWS Step Functions
  • Lambda
  • EventBridge
  • SNS

Case study at a glance

The problem, my role, and the result.

problem
A major provider outage left client sites without an independent continuity path.
stakes
Clients still needed a public landing page, current location information, and a working contact route, but a full production replica would add ongoing cost and maintenance.
My ownership
I moved from rapid incident response to designing the application flow, AWS orchestration, synchronization behavior, activation process, and team documentation.
outcome
Chestnut maintains a viable backup for all clients for a few dollars per month. Operators can start the standby server, update client DNS records, and make essential pages available through a documented process.

Portfolio-safe architecture

A focused continuity layer, not a full replica.

Chestnut provides a cost-conscious business-continuity layer that is independent of the primary CMS host. Scheduled AWS orchestration refreshes approved site data while the standby server remains powered off outside the synchronization window.

01

Scheduled infrastructure and synchronization

  1. Amazon EventBridgeWeekly synchronization
  2. AWS Step FunctionsChestnut workflow
  3. Lambda + Kamatera APIInspect server power state
  4. Server already running?Branch by current state
  5. Start only when neededPower on, wait for startup, verify, then trigger the protected synchronization endpoint
  6. Synchronize and return to standbyWait for the refresh window, then power the server off

Task failures route to Amazon SNS and the development support email.

02

Application-layer data flow

  1. Protected synchronization endpointStarts the Node.js and EJS application flow
  2. Iterate configured sitesCheck whether the franchise module is enabled
  3. Fetch approved Oak API dataLocations, variables, and territories
  4. Filter and normalizeKeep live locations, add territory and alias data, and flatten site variables
  5. Write per-site JSONPreserve existing fallback data when a non-empty response is unavailable
  6. Render emergency pagesEJS brand and location pages consume the stored snapshots

Per-site request or processing errors are logged before continuing to the next configured site.

Architecture

The boundaries that made the work useful.

01

Scheduled orchestration

EventBridge starts a Step Functions workflow that checks the backup server, starts it when needed, runs synchronization, and returns it to standby.

02

Application snapshots

A Node.js and EJS application retrieves approved Oak CMS data, filters live locations, and writes per-site JSON used by emergency pages.

03

Cost control

The server normally remains powered off. Scheduled refresh windows keep data current without paying for a complete always-on replica.

04

Focused continuity

The fallback preserves landing pages, location pages, branding flexibility, and SMTP contact capability rather than recreating the full CMS.

Key decisions

What I chose and why.

  1. 01

    Preserved only the minimum customer-facing capabilities required during an outage instead of duplicating the complete production platform.

  2. 02

    Used Step Functions and scheduled server power control to balance recovery readiness against monthly infrastructure cost.

  3. 03

    Stored normalized per-site snapshots so emergency rendering did not depend on the primary CMS remaining available.

  4. 04

    Documented setup, maintenance, and activation so response did not depend on one person.

Outcome & evidence

What the repository and delivered work support.

  • 01

    The initial incident lasted approximately 24 hours.

  • 02

    The current continuity layer supports essential landing pages, location pages, and an SMTP contact form.

  • 03

    Automated synchronization makes onboarding a new backup site a repeatable process while preserving room for brand customization.

  • 04

    The operating cost is only a few dollars per month for all client backup sites.

  • 05

    Activation is reduced to starting the Chestnut server and updating client DNS records through two intentional operator actions.

Reflection

What I learned and what I would do next.

What I learned

The outage made the tradeoff concrete: useful resilience is not the same as an expensive full replica. The right system protects the customer path that matters and makes recovery understandable to the team.

What I would do next

I would keep testing activation and recovery procedures regularly so the operational process stays as dependable as the architecture.

Senior full-stack engineering · Hands-on technical leadership

Looking for someone who can own the system around the feature?

View Résumé ↗