<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Workflow-Orchestration on Ryan Orban</title><link>https://ryanorban.com/categories/workflow-orchestration/</link><description>Recent content in Workflow-Orchestration on Ryan Orban</description><generator>Hugo</generator><language>en-us</language><managingEditor>me@ryanorban.com (Ryan Orban)</managingEditor><webMaster>me@ryanorban.com (Ryan Orban)</webMaster><copyright>Ryan Orban</copyright><lastBuildDate>Tue, 15 Feb 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://ryanorban.com/categories/workflow-orchestration/index.xml" rel="self" type="application/rss+xml"/><item><title>The Unbundling of Airflow</title><link>https://ryanorban.com/notes/unbundling-of-airflow/</link><pubDate>Tue, 15 Feb 2022 00:00:00 +0000</pubDate><author>me@ryanorban.com (Ryan Orban)</author><guid>https://ryanorban.com/notes/unbundling-of-airflow/</guid><description>&lt;h3 id="summary" class="scroll-mt-8 group"&gt;
 Summary
 
 &lt;a href="#summary"
 class="no-underline hidden opacity-50 hover:opacity-100 !text-inherit group-hover:inline-block"
 aria-hidden="true" title="Link to this heading" tabindex="-1"&gt;
 &lt;svg
 xmlns="http://www.w3.org/2000/svg"
 width="16"
 height="16"
 fill="none"
 stroke="currentColor"
 stroke-linecap="round"
 stroke-linejoin="round"
 stroke-width="2"
 class="lucide lucide-link w-4 h-4 block"
 viewBox="0 0 24 24"
&gt;
 &lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /&gt;
 &lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" /&gt;
&lt;/svg&gt;

 &lt;/a&gt;
 
&lt;/h3&gt;
&lt;p&gt;Apache Airflow became the dominant workflow orchestration platform for data engineering over the 2017–2021 period — the default choice for scheduling ETL pipelines, ML training jobs, and data processing DAGs. But by 2022, fal.ai was diagnosing its unbundling: specialized tools were taking over specific parts of what Airflow does, often doing them better.&lt;/p&gt;</description></item><item><title>Airflow and XCom: Inter-Task Communication Use Cases</title><link>https://ryanorban.com/notes/airflow-xcom-inter-task-communication/</link><pubDate>Wed, 05 Aug 2020 00:00:00 +0000</pubDate><author>me@ryanorban.com (Ryan Orban)</author><guid>https://ryanorban.com/notes/airflow-xcom-inter-task-communication/</guid><description>&lt;h3 id="summary" class="scroll-mt-8 group"&gt;
 Summary
 
 &lt;a href="#summary"
 class="no-underline hidden opacity-50 hover:opacity-100 !text-inherit group-hover:inline-block"
 aria-hidden="true" title="Link to this heading" tabindex="-1"&gt;
 &lt;svg
 xmlns="http://www.w3.org/2000/svg"
 width="16"
 height="16"
 fill="none"
 stroke="currentColor"
 stroke-linecap="round"
 stroke-linejoin="round"
 stroke-width="2"
 class="lucide lucide-link w-4 h-4 block"
 viewBox="0 0 24 24"
&gt;
 &lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /&gt;
 &lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" /&gt;
&lt;/svg&gt;

 &lt;/a&gt;
 
&lt;/h3&gt;
&lt;p&gt;Apache Airflow tasks in a DAG are designed to be independent — they run in separate processes, often on different machines. XCom (cross-communication) is the mechanism for passing small amounts of data between tasks. A task can &amp;ldquo;push&amp;rdquo; an XCom value to Airflow&amp;rsquo;s metadata database, and a downstream task can &amp;ldquo;pull&amp;rdquo; that value using the task ID and key. This enables passing results like file paths, record counts, or status codes between tasks in the same DAG run.&lt;/p&gt;</description></item><item><title>We're All Using Airflow Wrong and How to Fix It</title><link>https://ryanorban.com/notes/airflow-wrong-how-to-fix-bluecore/</link><pubDate>Fri, 24 Jul 2020 00:00:00 +0000</pubDate><author>me@ryanorban.com (Ryan Orban)</author><guid>https://ryanorban.com/notes/airflow-wrong-how-to-fix-bluecore/</guid><description>&lt;h3 id="summary" class="scroll-mt-8 group"&gt;
 Summary
 
 &lt;a href="#summary"
 class="no-underline hidden opacity-50 hover:opacity-100 !text-inherit group-hover:inline-block"
 aria-hidden="true" title="Link to this heading" tabindex="-1"&gt;
 &lt;svg
 xmlns="http://www.w3.org/2000/svg"
 width="16"
 height="16"
 fill="none"
 stroke="currentColor"
 stroke-linecap="round"
 stroke-linejoin="round"
 stroke-width="2"
 class="lucide lucide-link w-4 h-4 block"
 viewBox="0 0 24 24"
&gt;
 &lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" /&gt;
 &lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" /&gt;
&lt;/svg&gt;

 &lt;/a&gt;
 
&lt;/h3&gt;
&lt;p&gt;Bluecore Engineering makes a pointed argument in this post: the standard way most teams use Apache Airflow — with PythonOperator, BashOperator, and other operators that run code directly in the Airflow worker processes — is architecturally wrong. The reason: these operators mix the execution environment of your task code with the Airflow worker infrastructure. This creates dependency conflicts (task A needs library version X, task B needs version Y), resource contention (a memory-heavy task starves the Airflow scheduler), and fragile deployments (task code must be deployed to every Airflow worker).&lt;/p&gt;</description></item></channel></rss>