GoBubble migrates 21 workloads from GCP to Amazon EKS with zero downtime
VeUP moved GoBubble’s Emotional-AI and content-moderation SaaS off GCP onto a production GPU-optimized ML inference plane on Amazon EKS — dedicated GPU node groups scaling independently of the general-purpose Graviton compute — and translated its Airflow data pipelines to Snowpark and AWS Step Functions, with a zero-downtime cutover for the live moderation workload.
The challenge
GoBubble ran its Emotional-AI moderation SaaS on GCP and needed to move to AWS without disrupting production ML inference — landing a GPU-optimized inference plane whose capacity could grow independently of the rest of the platform, and a modern feature/training-data pipeline to replace GCP-coupled Airflow orchestration. Scaling AI workloads cost-effectively gated the product economics, and the company’s EMEA and MENA growth plans needed a platform with the right regional footprint.
The solution
A GCP-to-AWS migration and modernization landing a production ML inference plane on Amazon EKS in eu-central-1: the Triton multimedia-moderation server, spam detector, and EmoAI dispatcher run on a dedicated fleet of GPU node groups scaled independently by the Horizontal Pod Autoscaler and Cluster Autoscaler, while general-purpose services run on Graviton compute for price-performance — so inference capacity grows without inflating the rest of the estate. Feature and training data land in an Amazon S3 data lake (SSE-KMS) feeding Snowflake on AWS, with the Airflow data pipelines translated to Snowpark Python, Snowflake Tasks, and AWS Step Functions via an operator-translation matrix, and a data-parity test harness used at validation. The application and data tier runs on Amazon RDS for PostgreSQL (Multi-AZ, KMS) with CloudFront at the edge. Security: root MFA, all-region CloudTrail, AWS Config and Security Hub, KMS encryption at rest. Observability: CloudWatch dashboards and alarms tied to inference-plane health KPIs, including error rates and latency against SLA.

Production outcomes
| KPI | Result |
|---|---|
| Production outcomes | Zero-downtime cutover of the live ML moderation workload from GCP to AWS, across all 21 workloads; production ML inference serving on dedicated EKS GPU node groups scaled independently of general-purpose Graviton compute; Airflow data pipelines translated to Snowpark + Snowflake Tasks + AWS Step Functions, with a data-parity test harness proving the cutover. GoBubble’s inference-plane metrics stay private to GoBubble. |
| Engagement window | A 12-week migration from kickoff in February 2025, plus two weeks of extended support; ML inference has run live on EKS GPU node groups since June 2025, with the data-pipeline modernization delivered inside the extended-support window and the relationship ongoing. |
| Cost / TCO posture | $381,248/yr projected run-rate for the target environment (projected, AWS Pricing Calculator). Levers: independently scaling GPU node groups so inference capacity is bought only where needed, Graviton general-purpose compute, S3 data-lake tiering, and pay-as-you-go economics aligned to a startup’s funding profile. |
| Lessons & continuation | GPU inference economics are the load-bearing concern for an AI SaaS — separate the GPU fleet from general-purpose compute so each scales on its own signal; a data-parity test harness is what makes a zero-downtime ML cutover provable; translating GCP-coupled Airflow operators to Snowpark and Step Functions removes brittle Composer DAG dependencies. |