Cloud Cost Optimization

AWS Graviton Migration Playbook: 40% Compute Savings, Zero Downtime

6 min read

AWS Graviton (ARM-based EC2) routinely delivers 30–40% better price/performance vs. x86 for typical web/API workloads. Yet most enterprises we audit have less than 10% of their fleet on Graviton.

This is the playbook we use to migrate without downtime.

The 6-Step Migration Playbook

  1. 01Inventory current x86 workloads

    Pull instance types from describe-instances and AMIs in use.

  2. 02Categorize by complexity

    Easy: containers on standard runtimes. Medium: native binaries with JIT. Hard: vendor binaries or legacy compiled code.

  3. 03Pilot on stateless workloads first

    Stateless app servers behind ALB. Add Graviton AMIs to the launch template, deploy at 10% weight.

  4. 04Build multi-arch container images

    docker buildx build --platform linux/amd64,linux/arm64 across CI.

  5. 05Validate with realistic load

    Run k6/Gatling at 1.5x peak production load against the Graviton fleet for 48 hours.

  6. 06Roll forward, keep x86 fallback

    Increase Graviton weight in 25% steps. Keep an x86 ASG warm for 30 days as rollback insurance.

5-Lever FinOps FrameworkFrom audit to optimization — week-by-week01RightsizingEC2 + RDSnWeek 1–202CommitmentsSavings PlansnWeek 303Idle AuditEBS, EIPs, NATnWeek 3–404Data TransferVPC EndpointsnWeek 5–705Cost AllocationPer-customernWeek 8–10Result: 38% cost reduction · $420K annualized savings · 99.97% uptimeReal engagement · B2B SaaS · 90 days
The 5-lever framework Ohveda used to cut a B2B SaaS client’s AWS bill by 38% in 90 days.

Multi-arch Dockerfile Pattern

# syntax=docker/dockerfile:1.7
FROM --platform=$BUILDPLATFORM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
RUN npm run build

FROM node:20-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/server.js"]

Terraform — Mixed-instance ASG

resource "aws_autoscaling_group" "web" {
  name             = "web-asg"
  vpc_zone_identifier = var.private_subnets
  min_size            = 4
  max_size            = 40
  desired_capacity    = 8

  mixed_instances_policy {
    instances_distribution {
      on_demand_base_capacity                  = 2
      on_demand_percentage_above_base_capacity = 0
      spot_allocation_strategy                 = "price-capacity-optimized"
    }
    launch_template {
      launch_template_specification {
        launch_template_id = aws_launch_template.web_arm.id
        version            = "$Latest"
      }
      override { instance_type = "m7g.large" }
      override { instance_type = "m6g.large" }
      override { instance_type = "c7g.large" }
    }
  }
}

Ready to optimize your cloud or AI footprint?

Book a free 30-minute architecture review. We will deliver a written cost-and-architecture audit within 48 hours.

Book a free architecture review · sales@ohveda.com

Need help with AWS Graviton migration?

Ohveda runs free 30-minute architecture reviews. We will identify your top opportunities in writing within 48 hours — at no cost.

Book a Free Architecture Review →