← All work
Client name withheld under NDA

Cloud & Infrastructure

Backend Migration & System Cleanup

Client name withheld under NDA · B2B SaaS backend

Overview

The engagement improved a production Node.js backend that lacked structured logging, reliable staging parity, and automated deployment with rollback.

System Architecture

architecture — infrastructure

GitHub

Push to main

CI Pipeline

Build + test + scan

Container Registry

ECR · Versioned images

Staging

Parity with prod

Production

ECS · Auto-scaling

CloudWatch

Structured logs

Alerts

Threshold-based

Health Checks

Every 30s

The Problem

Production deploys depended on manual SSH sessions, which made release and recovery slow and error-prone.

Logging was unstructured, which made incident investigation harder than it needed to be.

Staging did not match production closely enough to catch environment-specific failures.

On-call work lacked clear runbooks and fast rollback paths.

Technical Approach

01

Replaced unstructured logging with structured output

Log entries were standardized with severity, request context, and searchable fields.

02

Set up centralized aggregation and alerting

Logs and alerts were wired so on-call engineers receive actionable context rather than opaque failure pings.

03

Containerized the application

The same image path was used across environments to reduce parity drift.

04

Built a deployment pipeline with rollback

CI/CD covered build, test, staged promotion, and fast rollback for bad releases.

05

Added health checks and an incident runbook

Service health endpoints and written response procedures reduced dependence on tribal knowledge.

Tech Stack

runtime

Node.jsTypeScript

containers

DockerAWS ECR

infrastructure

AWS ECSTerraformALB

observability

CloudWatchStructured JSON loggingHealth checks

cicd

GitHub ActionsStaged rollout pipeline

Engagement Details

Timeline

Approximately 6 weeks (subject to verification)

Team

Senior Axionvex Tech engineer with client engineering counterparts

Outcomes

Design and control changes are listed below. Numeric claims stay unpublished until measurement is verified.

Release control

Design change
Before

Manual SSH deploy and recovery

After

Automated pipeline with staged promotion and rollback

Observability

Design change
Before

Unstructured console logs

After

Structured logging, aggregation, and alert context

Measured production results

Pending verification
Before

Baseline metrics not yet published

After

Numeric outcomes withheld pending verification

Architecture and operating controls are documented. MTTR, deploy-time, and morale claims remain pending verification.

Have a similar workflow?