<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5" -->

---
title: Enhancing Flink Deployment with Shadow Testing | daily.dev
description: Grab's data streaming team (Coban) built a Shadow Testing stage into their Apache Flink deployment pipeline to eliminate production downtime caused by...
canonical: https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Enhancing Flink Deployment with Shadow Testing | daily.dev
og:description: Grab's data streaming team (Coban) built a Shadow Testing stage into their Apache Flink deployment pipeline to eliminate production downtime caused by...
og:url: https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5
og:image: https://api.daily.dev/og/posts/Lqg1IWfp5.png
og:image:alt: Enhancing Flink Deployment with Shadow Testing
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Enhancing Flink Deployment with Shadow Testing

**[Grab Tech Blog](https://daily.dev/sources/grab)** · 7 min read · 8 upvotes · 0 comments

## Summary

Grab's data streaming team (Coban) built a Shadow Testing stage into their Apache Flink deployment pipeline to eliminate production downtime caused by deployment failures. The approach deploys a new version of a Flink application (Shadow) in parallel with the current version (Main) in production, using isolated Kubernetes namespaces, distinct consumer group IDs, separate Kafka brokers, and dedicated S3 sinks controlled via an `isShadow` environment variable. The Shadow app runs for a default 1-hour observation window; if stable, the Main deployment proceeds. This reduces Change Failure Rate and increases deployment confidence by catching production-specific issues — such as checkpoint incompatibility or traffic volume problems — before they affect live traffic.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://engineering.grab.com/enchancing-flink-shadow-testing>

## Similar posts on daily.dev

- [Real-time data quality monitoring: Kafka stream contracts with syntactic and semantic test](https://daily.dev/posts/real-time-data-quality-monitoring-kafka-stream-contracts-with-syntactic-and-semantic-test-earws0e8d) · Grab Tech Blog · 1 upvotes · 0 comments
- [How Meta Rebuilt Data Ingestion for Petabyte-Scale Reliability](https://daily.dev/posts/how-meta-rebuilt-data-ingestion-for-petabyte-scale-reliability-hjqu3p98k) · InfoQ · 0 upvotes · 0 comments
- [From Homegrown to Flink: Migrating a Stateful Ad Event Join at Scale](https://daily.dev/posts/from-homegrown-to-flink-migrating-a-stateful-ad-event-join-at-scale-6lmjzq9eh) · Zalando · 7 upvotes · 0 comments
- [From 40 seconds to under 10: rebuilding incident detection on OpenTelemetry, Apache Kafka, and Apache Flink on Kubernetes](https://daily.dev/posts/from-40-seconds-to-under-10-rebuilding-incident-detection-on-opentelemetry-apache-kafka-and-apach-owhrwpfy6) · CNCF · 9 upvotes · 0 comments

---

Tags: [#kubernetes](https://daily.dev/tags/kubernetes), [#apache-kafka](https://daily.dev/tags/apache-kafka), [#apache-flink](https://daily.dev/tags/apache-flink)

[View this post on daily.dev](https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Enhancing Flink Deployment with Shadow Testing","url":"https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5"},"datePublished":"2026-05-07T01:19:42.077Z","dateModified":"2026-05-07T01:20:04.541Z","description":"Grab's data streaming team (Coban) built a Shadow Testing stage into their Apache Flink deployment pipeline to eliminate production downtime caused by...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/423b7748e80b75f8384e010a7a4ab260?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/423b7748e80b75f8384e010a7a4ab260?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Grab Tech Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Grab Tech Blog","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/c8b8850354ee4494a05777b62e42cc62","url":"https://daily.dev/sources/grab"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/enhancing-flink-deployment-with-shadow-testing-lqg1iwfp5","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":8},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"kubernetes,apache-kafka,apache-flink","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Grab Tech Blog","item":"https://daily.dev/sources/grab"},{"@type":"ListItem","position":3,"name":"Enhancing Flink Deployment with Shadow Testing"}]}
```

