<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ludovic DEHON</title>
    <description>The latest articles on DEV Community by Ludovic DEHON (@tchiotludo).</description>
    <link>https://dev.to/tchiotludo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F559509%2Fd6e37240-54b3-4592-826e-95e84e3621e0.jpeg</url>
      <title>DEV Community: Ludovic DEHON</title>
      <link>https://dev.to/tchiotludo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tchiotludo"/>
    <language>en</language>
    <item>
      <title>Kestra Secures $8 Million to Simplify and Unify Orchestration for All Engineers</title>
      <dc:creator>Ludovic DEHON</dc:creator>
      <pubDate>Mon, 23 Sep 2024 14:35:05 +0000</pubDate>
      <link>https://dev.to/kestra/kestra-secures-8-million-to-simplify-and-unify-orchestration-for-all-engineers-hki</link>
      <guid>https://dev.to/kestra/kestra-secures-8-million-to-simplify-and-unify-orchestration-for-all-engineers-hki</guid>
      <description>&lt;p&gt;Orchestration is at the core of the modern business infrastructure, and today, we're taking a huge step toward transforming how it's done. &lt;strong&gt;We’re thrilled to announce Kestra's $8 million Seed round&lt;/strong&gt;, led by &lt;a href="https://alven.co/" rel="noopener noreferrer"&gt;Alven&lt;/a&gt; (Stripe, Dataiku, Qonto, Algolia) with participation from &lt;a href="https://www.isai.fr/" rel="noopener noreferrer"&gt;ISAI&lt;/a&gt;, &lt;a href="https://www.axc.vc/" rel="noopener noreferrer"&gt;Axeleo&lt;/a&gt;, and key tech leaders such as &lt;a href="https://www.linkedin.com/in/olivierpomel/" rel="noopener noreferrer"&gt;Olivier Pomel&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/tristanhandy" rel="noopener noreferrer"&gt;Tristan Handy&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/micheltricot/" rel="noopener noreferrer"&gt;Michel Tricot&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/clementdelangue" rel="noopener noreferrer"&gt;Clément Delangue&lt;/a&gt;. This funding marks the next chapter in our mission to redefine orchestration for enterprises worldwide, empowering engineers to simplify the most complex workflows at an unprecedented scale.&lt;/p&gt;

&lt;p&gt;This milestone wouldn’t have been possible without the trust of our growing community. Since raising $3 million in pre-seed funding last year, Kestra has surpassed every expectation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We’ve expanded our use cases far beyond what we initially envisioned.&lt;/li&gt;
&lt;li&gt;We’ve proven our platform’s resilience across large-scale, mission-critical workloads.&lt;/li&gt;
&lt;li&gt;We’ve heard from countless users who confirm that Kestra delivers on its simplicity, transparency, and reliability promise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Growing Trust in Kestra
&lt;/h2&gt;

&lt;p&gt;Today, Kestra’s adoption has &lt;strong&gt;skyrocketed by 10x&lt;/strong&gt;. Thousands of companies, from ambitious &lt;strong&gt;startups to Fortune 100&lt;/strong&gt;, use Kestra to orchestrate their most critical workflows. This drives us to keep pushing boundaries and simplifying orchestration in ways that were previously unimaginable.&lt;/p&gt;

&lt;p&gt;Our $8 million Seed round is a testament to the confidence our investors have in Kestra’s future. In addition to Alven, ISAI, and Axeleo, we’re proud to be supported by an impressive lineup of private investors, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/olivierpomel/" rel="noopener noreferrer"&gt;Olivier Pomel&lt;/a&gt; (Co-founder and CEO of Datadog),&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/tristanhandy" rel="noopener noreferrer"&gt;Tristan Handy&lt;/a&gt; (Founder and CEO of dbt Labs),&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/micheltricot/" rel="noopener noreferrer"&gt;Michel Tricot&lt;/a&gt; (Co-founder and CEO of Airbyte),&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/clementdelangue" rel="noopener noreferrer"&gt;Clément Delangue&lt;/a&gt; (Co-founder and CEO of Hugging Face),&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/bertranddiard" rel="noopener noreferrer"&gt;Bertrand Diard&lt;/a&gt; (Co-founder of Talend),&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/nicolasdessaigne/" rel="noopener noreferrer"&gt;Nicolas Dessaigne&lt;/a&gt; (Co-founder of Algolia &amp;amp; Group Partner at Y Combinator),&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/fplais/" rel="noopener noreferrer"&gt;Frédéric Plais&lt;/a&gt; (Co-founder and CEO of Platform.sh)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/david-perry-8ab707/" rel="noopener noreferrer"&gt;David Perry&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/johndbritton/" rel="noopener noreferrer"&gt;John Britton&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/antoineballiet/" rel="noopener noreferrer"&gt;Antoine Balliet&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/zsmith/" rel="noopener noreferrer"&gt;Zachary Smith&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/arnaudferreri/" rel="noopener noreferrer"&gt;Arnaud Ferreri&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This funding enables us to accelerate our growth, expand our team, and continue delivering exceptional value to engineers and enterprises alike.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/kf1kSEyjErA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Built Kestra: Bridging the Orchestration Gap
&lt;/h2&gt;

&lt;p&gt;Existing tools often solve specific needs—whether it's automating data pipelines, managing IT tasks, or coordinating business processes—but they &lt;strong&gt;tend to operate in silos&lt;/strong&gt;. These siloed solutions introduce complexity, demand specialized skills, and ultimately create unnecessary risks, where what’s needed is efficiency, transparency, and reliability.&lt;/p&gt;

&lt;p&gt;At Kestra, we recognized this gap and set out to build a &lt;strong&gt;unified orchestration platform&lt;/strong&gt; that simplifies workflows across any infrastructure, cloud, or application. Our vision was to create an orchestration tool that engineers love to use, &lt;strong&gt;one that breaks down barriers&lt;/strong&gt; and scales seamlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplifying Complexity, Elevating Workflows
&lt;/h2&gt;

&lt;p&gt;Kestra is designed to simplify complexity. With a &lt;strong&gt;declarative&lt;/strong&gt;, &lt;strong&gt;language-agnostic&lt;/strong&gt; framework, an &lt;strong&gt;API-first&lt;/strong&gt; approach, and our &lt;strong&gt;Everything as Code and from the UI or following GitOps&lt;/strong&gt; philosophy, Kestra is intuitive yet incredibly powerful. It’s a platform engineers can adopt quickly, customize extensively, and rely on for any workflow, no matter how complex.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Kestra has been essential in designing complex execution flows while enhancing our Infrastructure-as-Code best practices."&lt;/em&gt;, Gorgias.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A Platform Without Limits
&lt;/h2&gt;

&lt;p&gt;Kestra isn’t just another orchestration tool. It’s a platform built to handle workflows of &lt;strong&gt;any type, across any domain&lt;/strong&gt;. Whether it’s automating infrastructure, transforming and transporting data, coordinating microservices, or real-time network monitoring, Kestra’s flexibility and extensibility make it a trusted solution for a wide range of challenges.&lt;/p&gt;

&lt;p&gt;And we’re not stopping there. We continue to expand Kestra’s capabilities with new features and integrations, constantly &lt;strong&gt;pushing the boundaries&lt;/strong&gt; of what’s possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built on the Power of Open Source
&lt;/h2&gt;

&lt;p&gt;At the heart of Kestra’s success is our &lt;strong&gt;global open-source community&lt;/strong&gt;. We empower engineers to easily adopt and integrate Kestra into their workflows by embracing open-source principles. This openness accelerates innovation, fosters collaboration, and ensures that Kestra is continuously improving based on &lt;strong&gt;real-world needs&lt;/strong&gt;. It’s why thousands of production environments around the world depend on Kestra to power their &lt;strong&gt;most critical workflows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39h7ojlvyz31bqkxebjm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39h7ojlvyz31bqkxebjm.jpg" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling Beyond Limits: Orchestrating the Future
&lt;/h2&gt;

&lt;p&gt;In just one year, Kestra has grown by 10x, and today, hundreds of millions of workflows are powered by our platform. We’ve become the &lt;strong&gt;orchestration layer of choice&lt;/strong&gt; for software engineers, DevOps experts, and IT leaders across the tech landscape.&lt;/p&gt;

&lt;p&gt;Kestra enables users to &lt;strong&gt;orchestrate workflows in under 5 minutes&lt;/strong&gt; through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seamless workflow design&lt;/strong&gt;: Easily build workflows through our intuitive UI or directly within your favorite IDE.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;500+ integrations&lt;/strong&gt;: Connect with major technologies incl. AWS, GCP, Azure, Terraform, Docker, GitHub, Kafka, Postgres, Redis, MongoDB, SQL Server, Databricks, Snowflake, dbt, Airbyte, and many more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy anywhere&lt;/strong&gt;: Run Kestra on any cloud (AWS, Azure, GCP), on-premises, or even on your laptop using Docker.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Kestra is the unifying layer for our data and workflows. You can start small, but scale without limits."&lt;/em&gt;, Leroy Merlin.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Resilient Orchestration at Scale for Critical Workflows
&lt;/h1&gt;

&lt;p&gt;As organizations grow, so do their orchestration needs. For businesses managing mission-critical workflows, Kestra elevates its capabilities to meet these demands.&lt;/p&gt;

&lt;p&gt;Building on Kestra’s core strengths, we offer enhanced &lt;strong&gt;security&lt;/strong&gt;, &lt;strong&gt;governance&lt;/strong&gt;, and &lt;strong&gt;monitoring&lt;/strong&gt; to support &lt;strong&gt;large-scale&lt;/strong&gt;, &lt;strong&gt;business-critical&lt;/strong&gt; operations. It also ensures real-time performance and seamless integration with features like SSO, CI/CD pipelines, and secret managers.&lt;/p&gt;

&lt;p&gt;With Kestra, organizations gain the &lt;strong&gt;reliability&lt;/strong&gt; required to scale their workflows confidently, no matter the complexity or size of their operations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10gxjcvkuiilatv2qe97.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10gxjcvkuiilatv2qe97.jpg" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Orchestrating with Kestra Enterprise: Trusted by Industry Leaders for Mission-Critical Workflows.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Ahead: Innovating and Expanding
&lt;/h2&gt;

&lt;p&gt;With this second $8 million funding round, we’re excited to enter &lt;strong&gt;the next phase of Kestra's growth&lt;/strong&gt;. Our commitment to continuous improvement drives us to expand the platform’s capabilities — enhancing our ecosystem with more third-party integrations, simplifying plugin management, and improving the orchestration experience for all engineers.&lt;/p&gt;

&lt;p&gt;We’re planning to &lt;strong&gt;expand into the U.S.&lt;/strong&gt; to better support our North American clients, bringing us closer to them for improved collaboration and service. Meanwhile, &lt;strong&gt;we’re growing our team across Europe and North America&lt;/strong&gt;, hiring key roles such as Software Engineers, DevOps, Architects, Solution Engineers, GTMs, and Marketing professionals.&lt;/p&gt;

&lt;p&gt;Most importantly, we know that &lt;strong&gt;Kestra’s success is driven by the talented and dedicated people&lt;/strong&gt; behind the platform. &lt;strong&gt;Thank you Team ❤️&lt;/strong&gt;, your commitment to &lt;strong&gt;pushing the boundaries of orchestration&lt;/strong&gt; is what sets us apart, and we look forward to growing this exceptional group to take on the challenges ahead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thank you to our users, customers, and investors&lt;/strong&gt; for driving Kestra forward in our mission to transform orchestration. &lt;strong&gt;Help us build the leading platform for Unified Orchestration&lt;/strong&gt; by &lt;a href="https://go.kestra.io/github-fundraise" rel="noopener noreferrer"&gt;starring us on GitHub&lt;/a&gt; and joining this exciting journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Orchestrate Everything, Everywhere, All at Once&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>data</category>
      <category>opensource</category>
      <category>tooling</category>
    </item>
    <item>
      <title>End-to-End Data Ingestion, Transformation and Orchestration with Airbyte, dbt and Kestra</title>
      <dc:creator>Ludovic DEHON</dc:creator>
      <pubDate>Sat, 24 Jun 2023 21:35:35 +0000</pubDate>
      <link>https://dev.to/kestra/end-to-end-data-ingestion-transformation-and-orchestration-with-airbyte-dbt-and-kestra-1lmo</link>
      <guid>https://dev.to/kestra/end-to-end-data-ingestion-transformation-and-orchestration-with-airbyte-dbt-and-kestra-1lmo</guid>
      <description>&lt;p&gt;The key benefit of the Modern Data Stack is that you can avoid vendor lock-in by selecting best-of-breed tools rather than paying expensive license fees for one inflexible solution. However, assembling your modular stack based on multiple SaaS solutions will only marginally improve that situation. It’s undoubtedly easier to swap only one component by, e.g., migrating between two SaaS BI solutions than migrating an entire all-in-one stack. However, the vendor lock-in issue remains unresolved — all you’ll achieve is multiple vendor lock-ins at a smaller scale rather than one giant lock-in. Open-core technologies and SaaS offerings built on top of them can help avoid these issues and future-proof your data stack.&lt;/p&gt;

&lt;p&gt;This post will discuss a selection of open-core tools that you can use to build your data stack in a modular way. Specifically, we'll leverage &lt;strong&gt;Airbyte&lt;/strong&gt;, &lt;strong&gt;dbt&lt;/strong&gt;, and &lt;strong&gt;Kestra&lt;/strong&gt; — all of them are either &lt;strong&gt;source-available&lt;/strong&gt; (&lt;em&gt;Airbyte&lt;/em&gt;) or entirely &lt;strong&gt;open-source&lt;/strong&gt; (&lt;em&gt;dbt and Kestra&lt;/em&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  Airbyte
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://airbyte.com/" rel="noopener noreferrer"&gt;Airbyte&lt;/a&gt; is a data integration platform that simplifies and standardizes replicating data from source systems to desired destinations, such as a data warehouse or a data lake. It provides many pre-built connectors to various databases, APIs, storage systems, and a &lt;a href="https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview/" rel="noopener noreferrer"&gt;low-code CDK&lt;/a&gt; for creating new custom connectors.&lt;/p&gt;

&lt;p&gt;To start using Airbyte, you only need a workstation with Docker and a terminal. You can follow &lt;a href="https://docs.airbyte.com/quickstart/deploy-airbyte/" rel="noopener noreferrer"&gt;the quickstart guide&lt;/a&gt; to launch Airbyte on your local machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/airbytehq/airbyte.git
&lt;span class="nb"&gt;cd &lt;/span&gt;airbyte
./run-ab-platform.sh 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, you can begin creating your sources, destinations, and connections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sources&lt;/strong&gt; describe source systems, such as your applications and databases. This is usually the raw data that serves as a basis for analytics.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;destination&lt;/strong&gt; is typically your data warehouse or a data lake platform (&lt;em&gt;such as BigQuery, Snowflake, Redshift, Databricks, Dremio, Starburst, Azure Synapse, and more&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Finally, &lt;strong&gt;connections&lt;/strong&gt; tie sources and destinations together by specifying how and when to load data from a specific source to a specific destination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkestra.io%2Fblogs%2F2023-06-26-end-to-end-data-orchestration%2Fairbyte1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkestra.io%2Fblogs%2F2023-06-26-end-to-end-data-orchestration%2Fairbyte1.png" alt="airbyte1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  dbt
&lt;/h2&gt;

&lt;p&gt;dbt is a &lt;strong&gt;data build tool&lt;/strong&gt; that enables data analysts and engineers to &lt;strong&gt;transform&lt;/strong&gt; data in a cloud analytics warehouse using templated SQL and a Command Line Interface (CLI). After you've ingested raw data with Airbyte, dbt can query it and transform it into analytics-ready datasets by executing SQL (&lt;em&gt;or Python&lt;/em&gt;) code within your warehouse.  Thanks to dbt, you can organize your business logic into modular components (models) and document and test those models. Finally, you can version control your dbt transformations to allow other people in your team to collaborate on the same project and improve the auditability and rollback of your cloud analytics warehouse.&lt;/p&gt;

&lt;p&gt;The easiest way to get started with dbt is to leverage the &lt;a href="https://github.com/jwills/dbt-duckdb" rel="noopener noreferrer"&gt;dbt-duckdb&lt;/a&gt; package, allowing you to use an in-memory DuckDB database and run everything locally. However, you can also start using dbt for free with &lt;a href="https://docs.getdbt.com/docs/core/connect-data-platform/bigquery-setup" rel="noopener noreferrer"&gt;Google BigQuery&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kestra
&lt;/h2&gt;

&lt;p&gt;Orchestration is a critical aspect of end-to-end data management, as it helps you coordinate all steps, control and monitor their execution, and respond to failure scenarios. For instance, you can ensure that transformation steps run only after your data has been successfully ingested. If something fails, you can retry it and get notified about that failure.&lt;/p&gt;

&lt;p&gt;Kestra is a simple, event-driven orchestrator that helps to maintain orchestration logic as code while bridging the gap between engineers and domain experts. The declarative YAML syntax opens the process of building data workflows to domain experts who are not programmers, as well as programmers working on a different stack (&lt;em&gt;a language-agnostic interface rather than only Python&lt;/em&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  Hands-on demo
&lt;/h2&gt;

&lt;p&gt;Let's look at how you can combine Airbyte, dbt, and Kestra to build an end-to-end workflow.&lt;/p&gt;

&lt;p&gt;First, download Kestra's &lt;a href="https://raw.githubusercontent.com/kestra-io/kestra/develop/docker-compose.yml" rel="noopener noreferrer"&gt;Docker Compose file&lt;/a&gt;, for example, using &lt;code&gt;curl&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-o&lt;/span&gt; docker-compose.yml https://raw.githubusercontent.com/kestra-io/kestra/develop/docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, run &lt;code&gt;docker compose up -d&lt;/code&gt; and &lt;a href="http://localhost:8080/" rel="noopener noreferrer"&gt;navigate to the UI&lt;/a&gt;. You can start &lt;a href="https://kestra.io/docs/getting-started" rel="noopener noreferrer"&gt;building your first flows&lt;/a&gt; using the integrated code editor in the UI.&lt;/p&gt;

&lt;p&gt;The UI ships with Blueprints, which provide ready-to-use flow examples. For instance, you can use &lt;a href="https://demo.kestra.io/ui/blueprints/community/30" rel="noopener noreferrer"&gt;the following Blueprint&lt;/a&gt; that combines all steps needed to orchestrate Airbyte, dbt, and Kestra:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkestra.io%2Fblogs%2F2023-06-26-end-to-end-data-orchestration%2Fairbyte2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkestra.io%2Fblogs%2F2023-06-26-end-to-end-data-orchestration%2Fairbyte2.png" alt="airbyte2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a copy of that Blueprint. Make sure that you copy the ID of each connection from the Airbyte UI and paste those into the Airbyte task:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;airbyteDbtCore&lt;/span&gt;
&lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dev&lt;/span&gt;

&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;data-ingestion&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.core.tasks.flows.Parallel&lt;/span&gt;
    &lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;psyduck&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.airbyte.connections.Sync&lt;/span&gt;
        &lt;span class="na"&gt;connectionId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;4de8ab1e-50ef-4df0-aa01-7f21491081f1&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sample-data&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.airbyte.connections.Sync&lt;/span&gt;
        &lt;span class="na"&gt;connectionId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;71291950-ccc1-4875-91b7-e801376c549e&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;charizard&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.airbyte.connections.Sync&lt;/span&gt;
        &lt;span class="na"&gt;connectionId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;9bb96539-73e7-4b9a-9937-6ce861b49cb9&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pikachu&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.airbyte.connections.Sync&lt;/span&gt;
        &lt;span class="na"&gt;connectionId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;39c38950-b0b9-4fce-a303-06ced3dbfa75&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dbt&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.core.tasks.flows.WorkingDirectory&lt;/span&gt;
    &lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cloneRepository&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.git.Clone&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/jwills/jaffle_shop_duckdb&lt;/span&gt;
        &lt;span class="na"&gt;branch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;duckdb&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dbt-build&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.dbt.cli.Build&lt;/span&gt;
        &lt;span class="na"&gt;debug&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
        &lt;span class="na"&gt;runner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DOCKER&lt;/span&gt;
        &lt;span class="na"&gt;dockerOptions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io/kestra-io/dbt-duckdb:latest&lt;/span&gt;
        &lt;span class="na"&gt;dbtPath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/usr/local/bin/dbt&lt;/span&gt;
        &lt;span class="na"&gt;inputFiles&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;.profile/profiles.yml&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;jaffle_shop:&lt;/span&gt;
              &lt;span class="s"&gt;outputs:&lt;/span&gt;
                &lt;span class="s"&gt;dev:&lt;/span&gt;
                  &lt;span class="s"&gt;type: duckdb&lt;/span&gt;
                  &lt;span class="s"&gt;path: ':memory:'&lt;/span&gt;
                  &lt;span class="s"&gt;extensions:&lt;/span&gt;
                    &lt;span class="s"&gt;- parquet&lt;/span&gt;
              &lt;span class="s"&gt;target: dev&lt;/span&gt;
&lt;span class="na"&gt;taskDefaults&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.airbyte.connections.Sync&lt;/span&gt;
    &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://host.docker.internal:8000/&lt;/span&gt;
      &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{envs.airbyte_username}}"&lt;/span&gt;
      &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{envs.airbyte_password}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you execute that workflow, you should see a similar output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkestra.io%2Fblogs%2F2023-06-26-end-to-end-data-orchestration%2Fairbyte3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fkestra.io%2Fblogs%2F2023-06-26-end-to-end-data-orchestration%2Fairbyte3.png" alt="airbyte3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The flow runs four Airbyte data ingestion processes in parallel. Once raw data is successfully ingested, the flow clones a Git repository and runs dbt CLI commands that build models committed to that Git repository.&lt;/p&gt;

&lt;p&gt;The topology view shows the duration of each task. The entire flow, executing four Airbyte syncs and &lt;code&gt;dbt build&lt;/code&gt;, took just one minute to run — all that without having to manually install any dependencies or build a CI/CD. To schedule that flow, you can add a simple CRON-based trigger:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;triggers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;everyMinute&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.core.models.triggers.types.Schedule&lt;/span&gt;
    &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;*/1&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;This post covered how combining Airbyte, dbt, and Kestra can simplify data management. Using these open-core technologies, you can avoid vendor lock-in and get the most out of the Modern Data Stack. If you encounter anything unexpected while reproducing this demo, you can open &lt;a href="https://github.com/kestra-io/kestra" rel="noopener noreferrer"&gt;a GitHub issue&lt;/a&gt; or &lt;a href="https://kestra.io/slack" rel="noopener noreferrer"&gt;ask via Kestra Community Slack&lt;/a&gt;. Lastly, give us &lt;a href="https://github.com/kestra-io/kestra" rel="noopener noreferrer"&gt;a GitHub star&lt;/a&gt; if you like the project.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>data</category>
      <category>dbt</category>
      <category>airbyte</category>
    </item>
    <item>
      <title>Snowflake data pipeline with Kestra</title>
      <dc:creator>Ludovic DEHON</dc:creator>
      <pubDate>Wed, 05 Oct 2022 19:48:02 +0000</pubDate>
      <link>https://dev.to/kestra/snowflake-data-pipeline-with-kestra-4kbm</link>
      <guid>https://dev.to/kestra/snowflake-data-pipeline-with-kestra-4kbm</guid>
      <description>&lt;p&gt;The 21st century is the golden age of data. Today, modern data stacks offer numerous tools and workloads for data warehousing, data lakes, data analytics, and data engineering to manage massive amounts of data inflow. One such platform is Snowflake, a robust data cloud tool that streamlines many operations in a modern data stack.&lt;/p&gt;

&lt;p&gt;In this article, we'll discuss how Snowflake integrates with &lt;a href="https://github.com/kestra-io/kestra" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt; (an &lt;strong&gt;open-source, scalable orchestration and scheduling platform&lt;/strong&gt;) using Snowflake plugin to create a seamless and scalable data pipeline.&lt;/p&gt;

&lt;p&gt;First, let's discuss Snowflake briefly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Snowflake?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sjz58zff2ivn9sfpc6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sjz58zff2ivn9sfpc6e.png" alt="Photo by Lidia Estaban on Unsplash"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Leveraged by thousands of organizations worldwide, &lt;a href="https://www.snowflake.com/" rel="noopener noreferrer"&gt;Snowflake&lt;/a&gt; is a top-of-the-line SaaS cloud data warehousing and data lake platform offering reliable data pipelines with high performance, concurrency, and scale across multiple cloud providers like AWS, Azure, and GCP.&lt;/p&gt;

&lt;p&gt;Snowflake is a unified cloud-native platform that enables teams to avoid data silos by sharing and collaborating on data pipelines securely. It offers a flexible &lt;a href="https://docs.snowflake.com/en/user-guide/intro-key-concepts.html" rel="noopener noreferrer"&gt;architecture&lt;/a&gt; with three components, i.e., robust cloud storage, query processing engine, and a layer of cloud services with numerous third-party integrations.&lt;/p&gt;

&lt;p&gt;Snowflake is a &lt;strong&gt;multi-cloud, multi-cluster warehouse platform&lt;/strong&gt; that can &lt;em&gt;auto-scale&lt;/em&gt; to manage virtual warehouses dynamically. In the &lt;a href="https://docs.snowflake.com/en/user-guide/warehouses-multicluster.html#maximized-vs-auto-scale" rel="noopener noreferrer"&gt;&lt;em&gt;auto-scale&lt;/em&gt; mode&lt;/a&gt;, it starts and stops warehouses to govern cloud resource usage and their corresponding cost credits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is Snowflake Popular?
&lt;/h3&gt;

&lt;p&gt;In the last few years, Snowflake has had huge traction. Today more than 5900+ companies (as of March 2022) are running their critical data pipelines on Snowflake.&lt;/p&gt;

&lt;p&gt;With Snowflake, companies don't have to pay for huge and expensive licenses for using data warehousing tools. Unlike conventional data warehousing tools, Snowflake charges on a &lt;strong&gt;pay-as-you-basis for storage and compute&lt;/strong&gt;, enabling small and medium-scale companies to leverage cloud data pipelines for improved data management.&lt;/p&gt;

&lt;p&gt;Now, companies can build &lt;strong&gt;scalable data workloads&lt;/strong&gt; that can perform strong data analysis on structured, unstructured, and semi-structured data to derive valuable business insights and make data-driven decisions. Additionally, &lt;a href="https://www.snowflake.com/data-marketplace/" rel="noopener noreferrer"&gt;Snowflake Data Marketplace&lt;/a&gt; allows customers to access numerous ready-to-query datasets, further reducing integration costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where does kestra fit in?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4ud26o5hqgtce0dhr8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4ud26o5hqgtce0dhr8k.png" alt="Photo by rodrigomullercwb on Pixabay"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Typically, data warehouse workloads are part of a bigger technology stack within an organization or across organizations. To streamlines various operations, data pipelines should be orchestrated and scheduled. Data orchestration unifies data from disparate sources and transforms it to enable analytics. This is where &lt;a href="https://kestra.io/" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt; jumps in.&lt;/p&gt;

&lt;p&gt;Kestra is a state-of-the-art, open-source, cloud-native platform built to orchestrate &amp;amp; schedule scalable data workflows, aiming to improve the productivity of DataOps teams. Kestra's orchestration platform can build, run, manage, and monitor all &lt;a href="https://kestra.io/docs/developer-guide/flowable/" rel="noopener noreferrer"&gt;kinds of complex workflows&lt;/a&gt; sequentially and in parallel. It offers numerous &lt;a href="https://kestra.io/plugins/" rel="noopener noreferrer"&gt;plugin integrations&lt;/a&gt; to build advanced data workflows, including our &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/" rel="noopener noreferrer"&gt;Snowflake plugin&lt;/a&gt;, discussed below.&lt;/p&gt;

&lt;p&gt;Moreover, Kestra can execute workflows based on event-based, time-based, and API-based scheduling, giving complete control to the data teams. With a unified end-to-end platform, companies save time and money on storage, compute, and development costs.&lt;/p&gt;

&lt;p&gt;Snowflake already offers many cost optimization processes like data compression and auto-scaling. However, Kestra makes it simpler to &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/tasks/io.kestra.plugin.jdbc.snowflake.Download.html" rel="noopener noreferrer"&gt;download&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/tasks/io.kestra.plugin.jdbc.snowflake.Upload.html" rel="noopener noreferrer"&gt;upload&lt;/a&gt;, and &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/tasks/io.kestra.plugin.jdbc.snowflake.Query.html" rel="noopener noreferrer"&gt;query&lt;/a&gt; data by integrating with Snowflake's storage and compute resources. Let's discuss Kestra's Snowflake plugin in detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dissecting Kestra's Snowflake Plugin.
&lt;/h3&gt;

&lt;p&gt;Kestra's Snowflake plugin can create complex data pipelines, whether Snowflake is a target or simply storing data as a part of a larger workflow for downstream applications.&lt;/p&gt;

&lt;p&gt;Besides the Snowflake plugin, Kestra offers numerous JDBC plugin integrations, including &lt;a href="https://kestra.io/plugins/plugin-jdbc-clickhouse/" rel="noopener noreferrer"&gt;ClickHouse&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-duckdb/" rel="noopener noreferrer"&gt;DuckDb&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-mysql/" rel="noopener noreferrer"&gt;MySQL&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-oracle/" rel="noopener noreferrer"&gt;Oracle&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-pinot/" rel="noopener noreferrer"&gt;Apache Pinot&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-postgres/" rel="noopener noreferrer"&gt;PostgreSQL&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-redshift/" rel="noopener noreferrer"&gt;Redshift&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-rockset/" rel="noopener noreferrer"&gt;Rockset&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-sqlserver/" rel="noopener noreferrer"&gt;SQL Server&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-trino/" rel="noopener noreferrer"&gt;Trino&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-jdbc-vectorwise/" rel="noopener noreferrer"&gt;Vectorwise&lt;/a&gt;, and &lt;a href="https://kestra.io/plugins/plugin-jdbc-vertica/" rel="noopener noreferrer"&gt;Vertica&lt;/a&gt;. These plugins can effectively process and transform tabular data within relational databases, reducing the processing cost of platforms like Snowflake.&lt;/p&gt;

&lt;p&gt;Using Kestra, the data teams are at liberty to decide where certain data, plugins, and connectors would fit. As mentioned above, the Snowflake plugin can perform the download, upload, and query tasks. Let's discuss each of them below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Query Snowflake table
&lt;/h3&gt;

&lt;p&gt;Kestra can query the Snowflake server using this task to insert, update, and delete data. The &lt;em&gt;Query&lt;/em&gt; task offers numerous properties, including auto-committing SQL statements, different fetching operations, specifying access-control roles, and storing fetch results. When the &lt;code&gt;store&lt;/code&gt;value is &lt;code&gt;true&lt;/code&gt;, Kestra allows storage of large results as an output of the &lt;em&gt;Query&lt;/em&gt; task.&lt;/p&gt;

&lt;p&gt;The plugin allows the usage of multi-SQL statements in the same transaction as a full SQL script with isolation support. It allows simple queries and fetches results with &lt;code&gt;fetch&lt;/code&gt; or &lt;code&gt;fetchOne&lt;/code&gt; properties, enabling teams to reuse the output on the next tasks from tools like &lt;a href="https://kestra.io/plugins/plugin-kafka/tasks/io.kestra.plugin.kafka.Consume.html" rel="noopener noreferrer"&gt;Kafka Consume&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-elasticsearch/tasks/io.kestra.plugin.elasticsearch.Search.html" rel="noopener noreferrer"&gt;Elastic Search&lt;/a&gt;, &lt;a href="https://kestra.io/plugins/plugin-mongodb/tasks/io.kestra.plugin.mongodb.Find.html" rel="noopener noreferrer"&gt;Mongo Find&lt;/a&gt;, and more. Some &lt;em&gt;Query&lt;/em&gt; task instances are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Fetch a row from the database, and define multiple flows depending on the output&lt;/li&gt;
&lt;li&gt;  Fetch the count of a store and iterate through the list. If an item doesn't exist, perform a particular task.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following code snippet executes a query to fetch results from one table into Kestra internal storage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;select&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.jdbc.snowflake.Query&lt;/span&gt;
&lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;jdbc:snowflake://&amp;lt;account_identifier&amp;gt;.snowflakecomputing.com&lt;/span&gt;
&lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;snowflake&lt;/span&gt;
&lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;snowflake_passwd&lt;/span&gt;
&lt;span class="na"&gt;sql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;select * from source&lt;/span&gt;
&lt;span class="na"&gt;fetch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Download from Snowflake stage
&lt;/h3&gt;

&lt;p&gt;As the name suggests, this task downloads data from the Snowflake server to an internal Kestra stage, which is based on &lt;a href="https://amzn.github.io/ion-docs/" rel="noopener noreferrer"&gt;Amazon ION&lt;/a&gt;. The &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/tasks/io.kestra.plugin.jdbc.snowflake.Download.html" rel="noopener noreferrer"&gt;Download&lt;/a&gt; task offers properties such as data compression and access control role to streamline the download process of the connected database. The &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/tasks/io.kestra.plugin.jdbc.snowflake.Download.html" rel="noopener noreferrer"&gt;Download&lt;/a&gt; task outputs the URL of the downloaded file available on the Kestra storage server.&lt;/p&gt;

&lt;p&gt;The following code snippet downloads default database to specified &lt;code&gt;fileName&lt;/code&gt; location on internal Kestra server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;download"&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;io.kestra.plugin.jdbc.snowflake.Download"&lt;/span&gt;
&lt;span class="na"&gt;stageName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;MYSTAGE&lt;/span&gt;
&lt;span class="na"&gt;fileName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prefix/destFile.csv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Upload to Snowflake stage
&lt;/h3&gt;

&lt;p&gt;This task uploads data to an internal &lt;a href="https://docs.snowflake.com/en/user-guide/data-load-considerations-stage.html" rel="noopener noreferrer"&gt;Snowflake stage&lt;/a&gt;. Similar to &lt;em&gt;Download&lt;/em&gt; task, &lt;a href="https://kestra.io/plugins/plugin-jdbc-snowflake/tasks/io.kestra.plugin.jdbc.snowflake.Upload.html" rel="noopener noreferrer"&gt;Upload&lt;/a&gt; can perform data compression and set access control role. Snowflake also support &lt;a href="https://docs.snowflake.com/en/user-guide/data-load-transform.html" rel="noopener noreferrer"&gt;data transformation&lt;/a&gt; while loading data, which simplifies the ETL process.&lt;/p&gt;

&lt;p&gt;The following code snippet uploads data to the specified &lt;code&gt;fileName&lt;/code&gt; location.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;upload"&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;io.kestra.plugin.jdbc.snowflake.Upload"&lt;/span&gt;
&lt;span class="na"&gt;stageName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;MYSTAGE&lt;/span&gt;
&lt;span class="na"&gt;prefix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;testUploadStream&lt;/span&gt;
&lt;span class="na"&gt;fileName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;destFile.csv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Building Dynamic Data Workflows With Kestra
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9ya7sg9hp5q8zk5j7kr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9ya7sg9hp5q8zk5j7kr.png" alt="Kestra user interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kestra.io/" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt; has quickly become an essential piece of the modern data stack. Kestra provides unprecedented flexibility and control to data teams. It can orchestrate any kind of workflow with ease using a rich UI that monitors all flows.&lt;/p&gt;

&lt;p&gt;Kestra's Snowflake plugin makes data warehousing simple. Even non-developers can write relevant flows using descriptive YAML. Your Snowflake storage pipeline accommodates raw data from multiple sources and transforms it using ETL operations. Additionally, you can skip the transformation and directly load data into the warehouse using the &lt;a href="https://kestra.io/blogs/2022-04-27-etl-vs-elt.html" rel="noopener noreferrer"&gt;ELT pipeline&lt;/a&gt;. Kestra can manage both workflows simultaneously. In any case, Kestra ensures that the data is readily available to perform analysis and learn valuable patterns.&lt;/p&gt;

&lt;p&gt;If you need any guidance with your Snowflake deployment, our experts at Kestra would love to hear from you. &lt;a href="https://api.kestra.io/v1/communities/slack/redirect" rel="noopener noreferrer"&gt;Let us know&lt;/a&gt; if you would like us to add more plugins to the &lt;a href="https://kestra.io/plugins" rel="noopener noreferrer"&gt;list&lt;/a&gt;. Or start building your &lt;a href="https://kestra.io/docs/plugin-developer-guide/" rel="noopener noreferrer"&gt;custom Kestra plugin&lt;/a&gt; today and send it our way. We always welcome &lt;a href="https://github.com/kestra-io/kestra" rel="noopener noreferrer"&gt;contributions&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>sql</category>
      <category>cloud</category>
      <category>news</category>
    </item>
    <item>
      <title>Debezium Change Data Capture without Kafka Connect</title>
      <dc:creator>Ludovic DEHON</dc:creator>
      <pubDate>Tue, 05 Apr 2022 11:12:21 +0000</pubDate>
      <link>https://dev.to/kestra/debezium-change-data-capture-without-kafka-connect-4i48</link>
      <guid>https://dev.to/kestra/debezium-change-data-capture-without-kafka-connect-4i48</guid>
      <description>&lt;p&gt;There are several products on the market to help you with your data pipeline management and data orchestration. Each handles data differently, and it can be difficult to determine the differences because many perform the same tasks, but with different methods. In this article, we will be discussing the differences between Debezium with Kafka Connect and our own product, &lt;a href="https://github.com/kestra-io/kestra" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt; (an &lt;strong&gt;open-source orchestration and scheduling platform&lt;/strong&gt; with a robust set of plugins) and how they can integrate to provide a &lt;strong&gt;more efficient and cost-effective&lt;/strong&gt; hybrid solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmg3k30tbahw33w0cxxig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmg3k30tbahw33w0cxxig.png" alt="Debezium architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, let’s discuss Debezium. &lt;a href="https://debezium.io/" rel="noopener noreferrer"&gt;Debezium&lt;/a&gt; is an open-source change data capture platform from Red Hat, offering a set of distributed services that captures row-level changes in your databases so that connected applications can see and respond to those changes in real-time. All changes (row-level) are recorded in a transaction log, and each application simply reads the transaction logs that are pertinent to them.&lt;/p&gt;

&lt;p&gt;Debezium ensures &lt;strong&gt;exactly-once delivery&lt;/strong&gt; of all changes and ensures that changes arrive in the order they were sent.&lt;/p&gt;

&lt;p&gt;In other words, Debezium is essentially a modernized method of &lt;a href="https://en.wikipedia.org/wiki/Change_data_capture" rel="noopener noreferrer"&gt;Change Data Capture (CDC)&lt;/a&gt;.  CDC is the process of identifying and capturing changes made to data in a database, and then delivering those changes in real-time to a downstream process or system. Debezium allows the monitoring of changes in data from multiple sources and can monitor multiple databases of different types.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-Time Delivery
&lt;/h2&gt;

&lt;p&gt;The key selling point of Debezium is the &lt;strong&gt;real-time delivery of data changes&lt;/strong&gt; whether from streaming sources or databases with heavy workloads. To support modern high-volume workloads, particularly streaming workloads, sources require constant monitoring, which means that connectors for Debezium must operate continuously. Debezium leverages &lt;a href="https://docs.confluent.io/platform/current/connect/index.html" rel="noopener noreferrer"&gt;Kafka Connect&lt;/a&gt; to establish this always-on connection, capturing data changes whenever they occur. This can consume a fair bit of bandwidth, as well as resources (CPU, memory) to process the events pushed through the pipeline.&lt;/p&gt;

&lt;p&gt;Debezium &lt;strong&gt;continuously monitors upstream databases&lt;/strong&gt;, and for each row-level change, produces a corresponding event that completely describes those changes. Because the Kafka Connect connectors operate continuously, and because events have to make sense even if the structure of the tables change over time, events can grow quite large. The larger and more complex an event, the more resources it requires.&lt;/p&gt;

&lt;p&gt;Add to this that even in the simplest Debezium deployment, there are &lt;strong&gt;at least two Kafka Connect connectors&lt;/strong&gt; running at any given time. One pulls data from the upstream source, whatever that may be, and the second pushes data changes out to various destinations data warehouses, databases, applications, etc). These connectors operate continuously, at a steady bandwidth, with &lt;strong&gt;dedicated processing and memory power&lt;/strong&gt; to ensure that data is both received and delivered as close to instantaneously as possible. When this capacity is warranted, Debezium is an efficient and performance-oriented machine, perfect for real-time CDC use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trouble in Paradise
&lt;/h2&gt;

&lt;p&gt;While Debezium offers clear advantages for real-time CDC use cases, it may not be efficient if the &lt;strong&gt;requirements are not strictly real-time&lt;/strong&gt;. Depending on the complexity of your deployment, the &lt;strong&gt;number of persistent connectors&lt;/strong&gt; (all Kafka Connect) required can become a drain on system resources. This is because for each process that consumes a Debezium event, a corresponding process consumes the same event from Kafka to the data warehouse. Each additional source requires two Kafka Connect connectors. Each process consumes a set minimum resource amount, regardless of the traffic.&lt;/p&gt;

&lt;p&gt;For example, from &lt;a href="https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-connectors.html" rel="noopener noreferrer"&gt;Amazon MSK connect&lt;/a&gt; documentation :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Each MCU represents 1 vCPU of compute and 4 GiB of memory.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5oqpo8wxhdhus9s3krl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5oqpo8wxhdhus9s3krl5.png" alt="MSK connect pricing on aws"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This lead to $160 for 1 source and 1 destination per month.&lt;/p&gt;

&lt;p&gt;Chances are, in a complex deployment, a fair number of sources may &lt;strong&gt;not generate much traffic&lt;/strong&gt;. It might only be a few rows per hour. For such a source, having a persistent, always-on process does not make much sense.&lt;/p&gt;

&lt;p&gt;This situation can be &lt;strong&gt;exacerbated by your company ACLS&lt;/strong&gt;. Because you do not want every user in your organization consuming the entirety of your dataset, you may need to define fine-grained role-based access control, and these rules, once applied, can necessitate numerous additional connectors (Kafka Connect), each requiring and competing for the same system resources.&lt;/p&gt;

&lt;p&gt;In short, the same features that make Debezium’s performance in streaming / high volume scenarios can quickly become inefficient if the &lt;strong&gt;requirements are less stringent&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kestra and Micro-Batch to the Rescue
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://kestra.io" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt; is an orchestration and scheduling platform that is designed to simplify the building, running, scheduling, and monitoring of complex data pipelines. Data pipelines can be built in real-time, no matter how complex the workflow, and can connect to &lt;strong&gt;multiple resources&lt;/strong&gt; as needed (including Debezium).&lt;/p&gt;

&lt;p&gt;Real-time change data capture is an &lt;strong&gt;amazing accomplishment, and a valuable tool&lt;/strong&gt; to have in your toolbox, to be sure. But a racecar is not very useful on a highway, or in a school zone, and in the same way, real-time delivery of data changes is not required for every use case. A dashboard or KPI might only need to be &lt;strong&gt;refreshed once a day&lt;/strong&gt;, or every few hours, for example. Whether it is cloud services or on-premises, resources cost money, and the challenge is to make the &lt;strong&gt;most efficient use of resources&lt;/strong&gt; based on your requirements. Bandwidth, compute resources, or services based on throughput (such as BigQuery) are all expensive commodities, especially if they are always running.  If real-time performance is not necessary, then why waste money on resources you do not need?&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9hapab2ij2lajwpqpb2c.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9hapab2ij2lajwpqpb2c.gif" alt="waste money"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Kestra is perfect for such situations and can scale performance up or down as needed from periodic updates to &lt;strong&gt;near-real-time scenarios&lt;/strong&gt;. This functionality is possible due to the use of batch or micro-batch processing. Batch processing sends data at intervals, rather than in real-time. It is typically used when data freshness &lt;strong&gt;is not a mission-critical issue&lt;/strong&gt;, and when you are working with large datasets and running complex algorithms that require a full dataset (sorting for example). &lt;strong&gt;Micro-batch processing&lt;/strong&gt; is a similar process but on much smaller data sets, typically about a minute or so’s worth of data. This allows for near-real-time processing of datasets and is perfect for low-flow situations where a few minutes of delay is acceptable. In many cases, micro-batch processing and stream processing are used interchangeably in data architecture descriptions, because, depending on configuration, they can offer nearly the same performance.&lt;/p&gt;

&lt;p&gt;A complex use case involving multiple data sources might have varying requirements, some real-time, some more forgiving. For these, a &lt;strong&gt;hybrid solution&lt;/strong&gt; might be advisable. Debezium can be used (with the Kafka Connect service) for those streams that require real-time CDC. For near-real-time or batch processing, you can leverage Kestra. Kestra can consume events directly (without configuring a Kafka Connect service) by leveraging &lt;a href="https://debezium.io/documentation/reference/stable/development/engine.html" rel="noopener noreferrer"&gt;Debezium Engine&lt;/a&gt; and forward to &lt;strong&gt;any destination supported&lt;/strong&gt; by Kestra (BigQuery, JDBC, Cloud Storage, and more), without a streaming pipeline. Changes/transfers can be scheduled for any interval, every  5 minutes, every hour, every day, whatever is required. &lt;a href="///plugins/plugin-debezium-mysql/triggers/io.kestra.plugin.debezium.mysql.Trigger.html"&gt;Triggers&lt;/a&gt; can also be used to create an execution whenever there is data available. Kestra can also be leveraged to transform data before sending it to the destination.&lt;/p&gt;

&lt;p&gt;Debezium leverages Kafka and Kafka Connect to deliver streaming performance, and the larger and more complex the deployment, the more challenging it can be to deliver enterprise-grade 99.9% availability while &lt;strong&gt;still managing resources and costs&lt;/strong&gt;. Managing it in the cloud can be even more challenging. This involves picking the appropriate compute instance for the brokers, sizing the non-ephemeral storage accordingly, applying end-to-end security, ensuring high availability across availability zones, and more. These same challenges apply when Kafka is a component of another service as well - there is a reason that many organizations turn to managed services rather than deploying their own instance on-premise. There are challenges to visibility as well - users must be familiar with Kafka eccentricities to troubleshoot issues via logs and dashboards.&lt;/p&gt;

&lt;p&gt;By leveraging Kestra for &lt;strong&gt;near-real-time or batch workloads&lt;/strong&gt;, and Debezium for streaming, some of the advantages are obvious. This allows for a solution that leverages &lt;strong&gt;only the resources required&lt;/strong&gt; for the use case in question, rather than applying resource-intensive streaming resources to every process. For workflows that are not real-time, CPU and memory resources are limited or shut down when not in use. Services that charge based on the throughput, such as BigQuery, are &lt;strong&gt;only charged when in use&lt;/strong&gt;. All of this combines to create an efficient solution that wastes no resources and &lt;strong&gt;saves money&lt;/strong&gt;. All row-level changes are still captured, and with Debezium, a built-in feature snapshots the database on the first start.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj4m2lbj8eri07i3acnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj4m2lbj8eri07i3acnd.png" alt="Kestra Topology"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But there are less obvious advantages to adding Kestra to the mix. Pipelines &lt;strong&gt;are visibly presented&lt;/strong&gt;, ensuring that dependencies are &lt;strong&gt;continuously monitored&lt;/strong&gt;, and you can see exactly where in a data pipeline the problem lies. This monitoring capacity provides a great deal of peace of mind when managing different data flow requirements, and mitigates the complexity of clustered Kafka deployments (such as those that make part of more complex Debezium deployments).&lt;/p&gt;

&lt;p&gt;Changes to pipelines can be iterative as well with Kestra. A working data pipeline can be modified on the fly with a few lines of yaml code, adding new components and integrations without disrupting a working flow. A new pipeline of data can be &lt;strong&gt;applied in minutes&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;debezium-mysql&lt;/span&gt;
&lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;com.kestra.lde&lt;/span&gt;

&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;capture&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.debezium.mysql.Capture&lt;/span&gt;
    &lt;span class="na"&gt;hostname&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;192.168.0.1&lt;/span&gt;
    &lt;span class="na"&gt;maxDuration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;PT1M"&lt;/span&gt;
    &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql_passwd&lt;/span&gt;
    &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fileTransform&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.scripts.nashorn.FileTransform&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;outputs.capture.uris.users&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;}}"&lt;/span&gt;
    &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
      &lt;span class="s"&gt;if (row['contactName']) {&lt;/span&gt;
        &lt;span class="s"&gt;row['contactName'] = "*".repeat(row['contactName'].length);&lt;/span&gt;
      &lt;span class="s"&gt;}&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;jsonWriter&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.serdes.json.JsonWriter&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;outputs.fileTransform.uri&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;}}"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;load&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.gcp.bigquery.Load&lt;/span&gt;
    &lt;span class="na"&gt;destinationTable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-project.demo.users&lt;/span&gt;
    &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;JSON&lt;/span&gt;
    &lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{outputs.jsonWriter.uri&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;}}"&lt;/span&gt;
    &lt;span class="na"&gt;writeDisposition&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;WRITE_APPEND&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kestra’s flexibility is key to this potential solution and many others. With &lt;a href="https://dev.to/plugins/"&gt;numerous plugins&lt;/a&gt;, Kestra offers deep integrations with &lt;strong&gt;multiple systems&lt;/strong&gt; to create complex workflows. Systems without existing plugins can be integrated with simple-to-create containers such as Docker and Kubernetes. The only limit is your imagination. We hope to highlight many such possibilities in the coming weeks.&lt;/p&gt;

&lt;p&gt;Our newly created Debezium plugins include connectors for &lt;a href="https://kestra.io/plugins/plugin-debezium-postgres/" rel="noopener noreferrer"&gt;Postgres&lt;/a&gt; and &lt;a href="https://kestra.io/plugins/plugin-debezium-mysql/" rel="noopener noreferrer"&gt;MySQL&lt;/a&gt;, and we are steadily working to include additional connectors to improve our product. Our current roadmap includes connectors for MongoDB, PostgresSQL, Oracle, SQL Server, Cassandra, and more. What connectors do you think we should work on first? We’d love to hear from you!&lt;/p&gt;

&lt;p&gt;Give us your opinion on this Twitter poll&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1511296199025991680-388" src="https://platform.twitter.com/embed/Tweet.html?id=1511296199025991680"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1511296199025991680-388');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1511296199025991680&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>database</category>
      <category>dataengineering</category>
      <category>opensource</category>
      <category>etl</category>
    </item>
    <item>
      <title>Kestra, infinitely scalable open source orchestration and scheduling platform.</title>
      <dc:creator>Ludovic DEHON</dc:creator>
      <pubDate>Wed, 02 Feb 2022 12:57:29 +0000</pubDate>
      <link>https://dev.to/kestra/kestra-infinitely-scalable-open-source-orchestration-and-scheduling-platform-6p2</link>
      <guid>https://dev.to/kestra/kestra-infinitely-scalable-open-source-orchestration-and-scheduling-platform-6p2</guid>
      <description>&lt;p&gt;Today, our team is proud to announce a first public release of Kestra, an open-source platform to orchestrate &amp;amp; schedule any kinds of workflow at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Kestra?
&lt;/h2&gt;

&lt;p&gt;Kestra is :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;an orchestrator&lt;/strong&gt;: Build a complex pipeline in couple of minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a scheduler&lt;/strong&gt;: Launch your flows whatever your need!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a rich ui&lt;/strong&gt;: Create, run, and monitor all your flows with a real-time user interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a data orchestrator&lt;/strong&gt;: With its many plugins, build your data orchestration directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cloud native &amp;amp; scalable&lt;/strong&gt;: Scale to millions of executions without stress or hassle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;an all-in-one platform&lt;/strong&gt;: No need to use multiple tools to deliver a complete pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;a pluggable platform&lt;/strong&gt; with the option to choose from several plugins or to build your own.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can see, Kestra will handle &lt;strong&gt;all your pipelines&lt;/strong&gt; !&lt;/p&gt;

&lt;h2&gt;
  
  
  The History of Kestra!
&lt;/h2&gt;

&lt;p&gt;Kestra started in 2019 with this &lt;a href="https://github.com/kestra-io/kestra/commit/d57e30c0c0d450590a1eaac5df0e82e1ea94e562"&gt;initial commit&lt;/a&gt;. At this time, Kestra was at the proof-of-concept stage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1w6FHqH1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owxa3qcb970c99u42ih4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1w6FHqH1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owxa3qcb970c99u42ih4.jpg" alt="Initial commit" width="779" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To provide a bit of a background: I was working for Leroy Merlin as a consultant. We needed to build a new cloud-based data platform from scratch (destination: mostly Google Cloud Platform). We tried a &lt;a href="https://kestra.io/blogs/2022-02-01-leroy-merlin-usage-kestra"&gt;lot of things&lt;/a&gt; and failed with some of our attempts. The &lt;strong&gt;biggest setback was the orchestration&lt;/strong&gt; software that we tried to deliver with Apache Airflow: a lot of instability (tasks that failed simply due to the Airflow scheduler), performance issues (unable to handle a light workload), and a lack of features (scaling, data processing). After many tests (Google Composer, Open source Airflow on Kubernetes), the decision was final: &lt;strong&gt;Airflow was rejected by Leroy Merlin&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I did some research on the orchestrator ecosystem; most are &lt;strong&gt;proprietary and license based&lt;/strong&gt; (far from my mindset), some are open source (at this time, only Apache Airflow seemed to be active — and it was rejected). I was really surprised by this discovery and faced this challenge from a co-worker:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you think Airflow is bad, do better!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It was decided: I set myself the task of producing a proof of concept for our own open-source workflow management system. It took a lot of time to build this software, and the task seemed to be never ending; but I continued to work on it for several months by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choosing &lt;a href="https://github.com/kestra-io/kestra/commit/b4d026574c2fb141a3c7dd5b7f1481a31063acb2"&gt;Kafka as database and queue&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Implementing &lt;a href="https://github.com/kestra-io/kestra/commit/bcc5798d7fdcbe3afe95c019c41ddc546b24f62d"&gt;storage&lt;/a&gt; for task processing&lt;/li&gt;
&lt;li&gt;Choosing &lt;a href="https://github.com/kestra-io/kestra/commit/2ede1e692be50999bc16f011f6a4796ffbbb9e1a"&gt;ElasticSearch as a repository for UI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Adding some dynamic templating with &lt;a href="https://github.com/kestra-io/kestra/commit/05f1e20a3cb1e9a623024f5674144b3934cd5874"&gt;HandleBar&lt;/a&gt; and changing it later to Peeble&lt;/li&gt;
&lt;li&gt;Starting some &lt;a href="https://github.com/kestra-io/kestra/commit/14e3384be2144a2bf6698439b5ae22106ac83914"&gt;Google Cloud&lt;/a&gt; plugins&lt;/li&gt;
&lt;li&gt;Introducing &lt;a href="https://github.com/kestra-io/kestra/commit/1fef7509bb2d04b24bf66fce19b35dd01411a1db"&gt;the UI&lt;/a&gt; — built with &lt;a href="https://vuejs.org/"&gt;Vue.js&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And so on !&lt;/p&gt;

&lt;p&gt;During a thirty-month period I built a variety of features, numerous plugins, and countless bug fixes — mostly during the night as I was still working as a full-time consultant for Leroy Merlin. It took a lot of effort, investment, and time that I could have spent with my family.&lt;/p&gt;

&lt;p&gt;But now we are really proud of what we’ve achieved!&lt;/p&gt;

&lt;h2&gt;
  
  
  Kestra is Open Source!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zarW33Gm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmdn3zykqtl7unoduwj5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zarW33Gm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmdn3zykqtl7unoduwj5.gif" alt="Kestra user interface" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm a real open-source enthusiast. As an architect, I’ve been interested in open source solutions in IT for twenty years. I started as an open source consumer (using it without adding contributions, as is the case with most users). I then decided that the time was right to start out with the permissive &lt;a href="https://github.com/kestra-io/kestra/blob/develop/LICENSE"&gt;Apache License&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Three years ago, I started another open source project, &lt;a href="https://github.com/tchiotludo/akhq"&gt;AKHQ&lt;/a&gt;, with the same license. Working with a successful project was an invaluable experience for me as I was able to learn how to build a community around a project. I've also learnt that an open source system won't pay the bills on its own. AKHQ required a lot of personal investment; Kestra has required a lot more and will continue to do so in the future! This means you will have to ensure that you have the financial resources in place to enable your project to be viable and sustainable — we decided to create a company alongside Kestra in order to raise the required funds to support the development of the open source software.&lt;/p&gt;

&lt;p&gt;The open source license is not limited and allows you to install and run it as you want on your server on premise or your cloud. We have also built our &lt;strong&gt;Enterprise Edition&lt;/strong&gt; , bringing added security and productivity to your Kestra clusters. In addition, we plan to deliver Kestra in the form of software as a service in the near future (don't hesitate to &lt;a href="https://kestra.io/company/contact"&gt;contact us&lt;/a&gt; for more information).&lt;/p&gt;

&lt;h2&gt;
  
  
  Kestra Plugins are also Open Source!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--M0PCKt2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/msf5hsko62kins3t8rg9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M0PCKt2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/msf5hsko62kins3t8rg9.png" alt="Some plugins" width="800" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When implementing the deep integration of the tools and databases you are using, the connectors (what we call “plugins”) can present the biggest challenge. Most orchestrators (even proprietary and licensed based) only talk bash or cmd. You have to manage all of your needs with simple commands, often requiring you to use another tool in order to have access to the underlying resource (such as Talend). With Kestra, we want to have a deep integration with your tools and let &lt;a href="https://kestra.io/plugins/core/tasks/scripts/io.kestra.core.tasks.scripts.Bash"&gt;bash&lt;/a&gt; deal solely with edge cases a plugin can't cover.&lt;/p&gt;

&lt;p&gt;An example for a query to Google BigQuery:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;with Bash&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="nt"&gt;--iso-8601&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;seconds&lt;span class="si"&gt;)&lt;/span&gt;
bq &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json query &lt;span class="s1"&gt;'SELECT name FROM \`project.dataset.table\` WHERE shippedDate=${DATE} AND shippedCountry = \'&lt;/span&gt;FR&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s1"&gt;' &amp;gt; /tmp/query.json
jq -r '&lt;/span&gt;.name&lt;span class="s1"&gt;' /tmp/query.json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;with Kestra&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;query&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;io.kestra.plugin.gcp.bigquery.Query&lt;/span&gt;
  &lt;span class="na"&gt;fetchOne&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;sql&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;SELECT name&lt;/span&gt;
    &lt;span class="s"&gt;FROM `kestra-prd.demo.salesOrder` AS s&lt;/span&gt;
    &lt;span class="s"&gt;WHERE shippedDate = '{{ now() }}'&lt;/span&gt;
    &lt;span class="s"&gt;AND shippedCountry = 'FR'&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;return"&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;io.kestra.core.tasks.debugs.Return"&lt;/span&gt;
  &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;outputs.query.row.name&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;}}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kestra avoids the rigmarole of installing the software on the system, handling dependencies and conflicts, dealing with Python, etc. — just install a plugin (a simple jar) and speak directly with your database.&lt;/p&gt;

&lt;p&gt;We have a &lt;a href="https://kestra.io/plugins/"&gt;number of plugins&lt;/a&gt; and the process of &lt;a href="https://kestra.io/docs/plugin-developer-guide/"&gt;developing your own&lt;/a&gt; is very simple. We also hope that a community will help us to maintain new plugins/connectors (&lt;a href="https://kestra.io/company/contact"&gt;contact us&lt;/a&gt; if you require help or support).&lt;/p&gt;

&lt;h2&gt;
  
  
  First Public Release &lt;em&gt;and&lt;/em&gt; Production Ready!
&lt;/h2&gt;

&lt;p&gt;First public release doesn't mean that Kestra is not production ready. In fact, it has been &lt;strong&gt;used in production since August 2020 at Leroy Merlin&lt;/strong&gt; — take a deeper look at the &lt;a href="https://kestra.io/blogs/2022-02-01-leroy-merlin-usage-kestra"&gt;case study&lt;/a&gt; if you want more detail. Here are some figures to give a picture of Kestra’s credentials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;4 clusters&lt;/strong&gt; one for every environment&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;200+ users/developers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2000+ flows&lt;/strong&gt; in production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;350,000 executions&lt;/strong&gt; every month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3,000,000 tasks&lt;/strong&gt; every month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Equivalent of 1,500 days of task processing time&lt;/strong&gt; every month (yeah, that’s the equivalent of fifty days of task processing every single day)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, your next question is: &lt;strong&gt;why are you waiting so long for the first public release?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The answer is simple: we want to deliver the first impression as best as possible and this led to a lot of work: missing features, missing plugins, new UI design, polish of documentation and website. Now we are proud and confident enough in our product to display the result of our labor.&lt;/p&gt;

&lt;p&gt;The road is not finished; we still have a lot to do. Stay tuned for the journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  You want keep in touch, or have more informations?
&lt;/h2&gt;

&lt;p&gt;⭐️ star us on github: &lt;a href="https://github.com/kestra-io/kestra"&gt;https://github.com/kestra-io/kestra&lt;/a&gt;&lt;br&gt;
⏩ retweet us: &lt;a href="https://twitter.com/kestra_io"&gt;https://twitter.com/kestra_io&lt;/a&gt;&lt;br&gt;
🗣️ chat with us slack: &lt;a href="https://api.kestra.io/v1/communities/slack/redirect"&gt;https://api.kestra.io/v1/communities/slack/redirect&lt;/a&gt;&lt;br&gt;
🧑‍🤝‍🧑 follow on linkedin: &lt;a href="https://www.linkedin.com/company/kestra"&gt;https://www.linkedin.com/company/kestra&lt;/a&gt;&lt;br&gt;
📧 contact us by email: &lt;a href="https://kestra.io/company/contact.html"&gt;https://kestra.io/company/contact.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>data</category>
      <category>etl</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
