VeUP
← All case studies
Machine Learning · WAF for the inference API
GoBubble logo

GoBubble migrates 21 workloads from GCP to Amazon EKS with zero downtime

Cloud-to-cloud migrationZero-downtime migrationPhased cutover with parity validationGPU capacity & inference economicsContainer platform modernizationEvent-driven architectureInfrastructure observabilityCentralized workforce identityPreventive controlsPrivate connectivity & network isolationCross-region & multi-AZ replicationWeb application firewall & bot mitigationInfrastructure-as-code foundationCI/CD delivery pipeline automationCDN & edge delivery architectureGitHub ActionsSecrets management & credential elimination
Zero
downtime — the whole estate cut over live
21
workloads migrated GCP → AWS in sequenced waves
AWS WAFAmazon CloudFrontAmazon EKS (GPU)AWS Security Hub

GoBubble’s public inference API fronts GPU-served moderation models — Triton multimedia moderation, spam detection, and the EmoAI dispatcher on Amazon EKS. VeUP protected that surface as a delivered control of the GCP-to-AWS build: an AWS WAF web ACL on the inference API, fronted by Amazon CloudFront with Lambda@Edge for EMEA/MENA delivery, operated inside a multi-account landing zone with GuardDuty, Security Hub, and AWS Config watching the whole estate.

The challenge

An ML inference API is a uniquely attractive target: every request an attacker sends costs the platform real GPU time, making unfiltered abuse a denial-of-wallet attack even when it never breaches anything. GoBubble’s moderation endpoints are public by design — customers integrate them directly — and the migration’s fixed 12-week window meant edge protection had to ship with the platform, not follow it. The inference plane needed a filtered, observable front door that could tell legitimate integration traffic from floods, probes, and malformed abuse before any of it reached a GPU.

The solution

VeUP implemented AWS WAF as a delivered control in the production build. The web ACL sits on the public inference API path — Amazon CloudFront at the edge (with Lambda@Edge handling EMEA/MENA delivery logic), AWS WAF filtering behind it, and the EKS-served GPU inference plane only ever seeing traffic that passed both. The control operates inside the platform’s multi-account AWS Organizations landing zone with IAM Identity Center for workforce access, and its context is continuously verified: AWS Config conformance packs hold the estate’s baseline, GuardDuty watches for threat activity, and Security Hub aggregates findings — including the edge’s — into one queue. Amazon CloudWatch custom metrics and composite alarms tie the WAF’s behavior to the inference plane’s health, so a spike in blocked traffic and a spike in GPU latency are read together.

Production outcomes

KPIResult
Edge control deliveredAWS WAF web ACL live on the public ML inference API from the production cutover — shipped as part of the migration build itself, not deferred to a hardening phase.
GPU economics protectedCloudFront + WAF filtering ahead of the GPU node groups — abusive and malformed traffic stopped at the edge, so paid inference capacity serves customers, not attackers.
Operated, not installedThe control runs inside a governed landing zone with GuardDuty + Security Hub + Config continuously evaluating posture, and composite CloudWatch alarms correlating edge behavior with inference-plane health.
Lessons & continuationFor AI platforms, WAF is cost control as much as security — every blocked request is GPU time recovered; and edge protection belongs in the migration’s definition of done, because the public API is public from minute one.
AWS services in production
AWS WAF (web ACL on the inference API)Amazon CloudFront + Lambda@EdgeAmazon EKS (GPU node groups)AWS Organizations + IAM Identity CenterAmazon GuardDutyAWS Security HubAWS Config (conformance packs)AWS KMSAmazon CloudWatch