{"id":14786,"date":"2025-04-03T17:23:23","date_gmt":"2025-04-03T13:53:23","guid":{"rendered":"https:\/\/chabokan.net\/blog\/?p=14786"},"modified":"2025-04-06T23:16:13","modified_gmt":"2025-04-06T19:46:13","slug":"apache-airflow-%da%86%db%8c%d8%b3%d8%aa%d8%9f-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a8%d8%b1%d8%a7%db%8c-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ac%d8%b1%db%8c%d8%a7","status":"publish","type":"post","link":"https:\/\/chabokan.net\/blog\/apache-airflow-%da%86%db%8c%d8%b3%d8%aa%d8%9f-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c-%d8%ac%d8%a7%d9%85%d8%b9-%d8%a8%d8%b1%d8%a7%db%8c-%d9%85%d8%af%db%8c%d8%b1%db%8c%d8%aa-%d8%ac%d8%b1%db%8c%d8%a7\/","title":{"rendered":"Apache Airflow \u0686\u06cc\u0633\u062a\u061f \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0631\u06cc\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc"},"content":{"rendered":"<p>90 \u062f\u0631\u0635\u062f \u0627\u0632 \u062f\u06cc\u062a\u0627\u0647\u0627\u06cc \u06a9\u0644 \u062f\u0646\u06cc\u0627 \u062f\u0631 \u062f\u0648 \u0633\u0627\u0644 \u0627\u062e\u06cc\u0631 \u06cc\u0639\u0646\u06cc 2023 \u062a\u0627 2025 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a! \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u062d\u062c\u0645 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0639\u0638\u06cc\u0645 \u0634\u0631\u06a9\u062a\u200c\u0647\u0627 \u062f\u0627\u0626\u0645\u0627\u064b \u062f\u0631 \u062a\u0644\u0627\u0634\u0646\u062f \u062a\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0634\u06a9\u0644\u06cc \u0628\u0647\u06cc\u0646\u0647 \u067e\u0631\u062f\u0627\u0632\u0634\u060c \u0630\u062e\u06cc\u0631\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0633\u0627\u0644 2025 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0631\u06cc\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc (Data Workflows) \u0628\u0647 \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u0645\u0647\u0645 \u062f\u0631 \u0635\u0646\u0627\u06cc\u0639 \u0645\u062e\u062a\u0644\u0641 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647. \u062d\u0627\u0644\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0631\u0648\u0632\u0627\u0646\u0647 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f\u0647\u0627 \u0631\u06a9\u0648\u0631\u062f \u062f\u0627\u062f\u0647 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06af\u0631 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc\u0627\u0641\u062a\u0647 \u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u0628\u0627\u0634\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u06cc\u06a9 \u06a9\u0627\u0628\u0648\u0633 \u062a\u0628\u062f\u06cc\u0644 \u0634\u0648\u062f.<\/p>\n<p>\u0634\u0631\u06a9\u062a\u200c\u0647\u0627 \u0648 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u062f\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u06a9\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0631\u0648\u0634\u0645\u0646\u062f\u060c \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc\u200c\u0634\u062f\u0647 \u0648 \u0628\u062f\u0648\u0646 \u062e\u0637\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0628\u0647 \u0633\u0631\u0627\u063a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Apache Airflow \u0645\u06cc\u200c\u0631\u0648\u0646\u062f.<\/p>\n<h2>\u0686\u0631\u0627 \u0628\u0647 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Airflow \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<\/h2>\n<p>\u0627\u06af\u0631 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc ETL (Extract, Transform, Load)\u060c \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627\u06cc \u0628\u06cc\u06af \u062f\u06cc\u062a\u0627 \u06cc\u0627 \u062d\u062a\u06cc \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0634\u062a\u0647\u200c\u0627\u06cc\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u06cc \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u0646\u0647\u200c\u062a\u0646\u0647\u0627 \u0648\u0642\u062a\u200c\u06af\u06cc\u0631 \u0627\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0647\u0645 \u0647\u0633\u062a.<\/p>\n<p>\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc ETL (Extract, Transform, Load) \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062a\u0646\u200c\u0628\u0627\u0632 (Open-Source)\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0645\u0646\u0639\u0637\u0641\u060c Apache Airflow \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0647 \u06a9\u0645\u06a9 Apache Airflow \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f:<\/p>\n<p>\u2705 \u0648\u0631\u06a9\u200c\u0641\u0644\u0648\u0647\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u06a9\u062f \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u2705 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u06cc\u0646 \u062a\u0633\u06a9\u200c\u0647\u0627 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0646\u0645\u0627\u06cc\u06cc\u062f.<\/p>\n<p>\u2705 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0627\u062c\u0631\u0627\u06cc \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u060c \u0622\u0646 \u0631\u0627 \u062f\u06cc\u0628\u0627\u06af \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u2705 \u0628\u0627 \u0633\u0627\u06cc\u0631 \u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0645\u0627\u0646\u0646\u062f AWS\u060c Google Cloud\u060c Apache Spark \u0648&#8230; \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 Apache Airflow \u0686\u06cc\u0633\u062a \u0648 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f. \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0627\u0633\u062e \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f:<\/p>\n<ul>\n<li>\u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0686\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u0647\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f\u061f<\/li>\n<li>\u0627\u062c\u0632\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc Airflow \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u0686\u0637\u0648\u0631 \u0628\u0627 \u0647\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0627\u0631\u0646\u062f\u061f<\/li>\n<li>\u0686\u0647 \u0645\u0632\u0627\u06cc\u0627 \u0648 \u0645\u0639\u0627\u06cc\u0628\u06cc \u062f\u0627\u0631\u062f \u0648 \u0622\u06cc\u0627 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647\u200c\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a\u061f<\/li>\n<li>\u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u06cc\u0627 \u0633\u0631\u0648\u0631 \u0646\u0635\u0628 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u061f<\/li>\n<li>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Airflow \u0686\u06cc\u0633\u062a\u061f<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"483\" class=\"wp-image-14788 aligncenter\" src=\"https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-2.png\" alt=\"\" title=\"\" srcset=\"https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-2.png 800w, https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-2-300x181.png 300w, https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-2-768x464.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2>\u0622\u0634\u0646\u0627\u06cc\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0627 \u0645\u0639\u0645\u0627\u0631\u06cc Apache Airflow<\/h2>\n<p>Airflow \u0628\u0631 \u067e\u0627\u06cc\u0647\u200c\u06cc \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627\u0698\u0648\u0644\u0627\u0631 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u06a9\u0647 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0627\u0635\u0644\u06cc \u062a\u0634\u06a9\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a<\/strong><\/td>\n<td><strong>\u062a\u0648\u0636\u06cc\u062d\u0627\u062a<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>Scheduler<\/strong><\/td>\n<td>\u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong>Executor<\/strong><\/td>\n<td>\u0645\u0633\u0626\u0648\u0644 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u0627\u0633\u062a (\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f CeleryExecutor \u0648 KubernetesExecutor).<\/td>\n<\/tr>\n<tr>\n<td><strong>Worker<\/strong><\/td>\n<td>\u0648\u0638\u0627\u06cc\u0641 \u067e\u0631\u062f\u0627\u0632\u0634\u06cc \u0631\u0627 \u062f\u0631 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong>Metastore Database<\/strong><\/td>\n<td>\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 DAG\u0647\u0627\u060c \u062a\u0633\u06a9\u200c\u0647\u0627 \u0648 \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<\/tr>\n<tr>\n<td><strong>Web Server<\/strong><\/td>\n<td>\u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0648\u0636\u0639\u06cc\u062a \u0648\u0631\u06a9\u200c\u0641\u0644\u0648\u0647\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u0646\u062d\u0648\u0647\u200c\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 DAG \u062f\u0631 Apache Airflow<\/h2>\n<p>\u062f\u0631 Airflow\u060c DAG (Directed Acyclic Graph) \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u0631\u0627 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0631 DAG \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0633\u0631\u06cc \u062a\u0633\u06a9 (Task) \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u06cc\u0646 \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u06cc\u06a9 DAG \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<p>from airflow import DAG<\/p>\n<p>from airflow.operators.bash import BashOperator<\/p>\n<p>from airflow.operators.python import PythonOperator<\/p>\n<p>from datetime import datetime<\/p>\n<p>def my_function():<\/p>\n<p>print(&#8220;Apache Airflow \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u0633\u062a!&#8221;)<\/p>\n<p>with DAG(dag_id=&#8221;demo_dag&#8221;, schedule_interval=&#8221;0 0 * * *&#8221;, start_date=datetime(2024, 3, 1)) as dag:<\/p>\n<p>task1 = BashOperator(task_id=&#8221;print_hello&#8221;, bash_command=&#8221;echo Hello Airflow!&#8221;)<\/p>\n<p>task2 = PythonOperator(task_id=&#8221;run_python_task&#8221;, python_callable=my_function)<\/p>\n<p>&nbsp;<\/p>\n<p>task1 &gt;&gt; task2 # \u062a\u0639\u06cc\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0627\u062c\u0631\u0627<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u062f \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 DAG \u062c\u062f\u06cc\u062f \u0628\u0627 \u0646\u0627\u0645 demo_dag \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645. \u0633\u067e\u0633 \u06cc\u06a9 BashOperator \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u067e\u06cc\u063a\u0627\u0645 &#8220;Hello Airflow!&#8221; \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0633 \u0627\u0632 \u0622\u0646 \u06cc\u06a9 PythonOperator \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u067e\u0627\u06cc\u062a\u0648\u0646\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. <strong>\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645<\/strong>: task1 &gt;&gt; task2 \u06cc\u0639\u0646\u06cc \u0627\u0628\u062a\u062f\u0627 task1 \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0648 \u0633\u067e\u0633 task2.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"399\" class=\"wp-image-14789 aligncenter\" src=\"https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-3.png\" alt=\"\" title=\"\" srcset=\"https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-3.png 800w, https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-3-300x150.png 300w, https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-3-768x383.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2>\u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u0648 \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u062f\u0631 Airflow \u0686\u06af\u0648\u0646\u0647 \u0627\u0633\u062a\u061f<\/h2>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc Airflow \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u0633\u06a9\u200c\u0647\u0627 \u0627\u0633\u062a. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u0635\u0644\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u062c\u0631\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 schedule_interval \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\u0645\u0642\u062f\u0627\u0631<\/strong><\/td>\n<td><strong>\u062a\u0648\u0636\u06cc\u062d<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>@daily<\/strong><\/td>\n<td>\u0627\u062c\u0631\u0627\u06cc DAG \u06cc\u06a9\u200c\u0628\u0627\u0631 \u062f\u0631 \u0631\u0648\u0632<\/td>\n<\/tr>\n<tr>\n<td><strong>@hourly<\/strong><\/td>\n<td>\u0627\u062c\u0631\u0627\u06cc DAG \u0647\u0631 \u0633\u0627\u0639\u062a<\/td>\n<\/tr>\n<tr>\n<td><strong>0 0 * * *<\/strong><\/td>\n<td>\u0627\u062c\u0631\u0627\u06cc DAG \u062f\u0631 \u0633\u0627\u0639\u062a \u06f0\u06f0:\u06f0\u06f0 \u0647\u0631 \u0631\u0648\u0632<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 Airflow \u0627\u0632 Backfilling \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06cc\u0639\u0646\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 DAG\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f \u062a\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062a\u0627\u0631\u06cc\u062e\u06cc \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f.<\/p>\n<h2>\u0622\u0645\u0648\u0632\u0634 \u0646\u0635\u0628 Apache Airflow \u0628\u0627 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641!<\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Apache Airflow \u062f\u0648 \u0631\u0648\u0634 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645.<\/p>\n<h3>\u0631\u0648\u0634 \u06f1: \u0646\u0635\u0628 \u0628\u0627 pip<\/h3>\n<p>\u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f Airflow \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062f\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 pip \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>pip install &#8220;apache-airflow==2.9.2&#8221; &#8211;constraint &#8220;https:\/\/raw.githubusercontent.com\/apache\/airflow\/constraints-2.9.2\/constraints.txt&#8221;<\/p>\n<p>\u0633\u067e\u0633\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 Airflow \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>airflow db migrate<\/p>\n<p>\u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0648\u0628\u200c\u0633\u0631\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>airflow webserver &#8211;port 8080<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 Airflow UI \u0631\u0648\u06cc localhost:8080 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<h3>\u0631\u0648\u0634 \u06f2: \u0627\u062c\u0631\u0627 \u062f\u0631 Docker<\/h3>\n<p>\u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u062f Airflow \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 Docker \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>docker-compose -f airflow-docker-compose.yml up -d<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648 \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h2>\u0645\u0632\u0627\u06cc\u0627 \u0648 \u0645\u0639\u0627\u06cc\u0628 Apache Airflow \u0686\u06cc\u0633\u062a\u061f<\/h2>\n<p>Apache Airflow \u0645\u0632\u0627\u06cc\u0627\u06cc \u0645\u062a\u0639\u062f\u062f\u06cc \u062f\u0627\u0631\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0632\u06cc\u062a\u200c\u0647\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u062a\u0646\u200c\u0628\u0627\u0632 (Open-Source) \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0628\u0648\u062f\u0646\u200c\u0627\u0634 \u0627\u0633\u062a. \u0628\u062f\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u06cc\u06a9 \u062c\u0627\u0645\u0639\u0647\u200c\u06cc \u0628\u0632\u0631\u06af \u0627\u0632 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0648 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u062f\u0646\u06cc\u0627 \u0631\u0648\u06cc \u0628\u0647\u0628\u0648\u062f \u0622\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0628\u0627\u06af\u200c\u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0631\u0637\u0631\u0641 \u0646\u0645\u0627\u06cc\u0646\u062f \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0628\u0627\u0642\u06cc \u0645\u0632\u0627\u06cc\u0627\u06cc Apache Airflow \u0647\u0645 \u062f\u0631 \u0644\u06cc\u0633\u062a \u0632\u06cc\u0631 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0628\u0627\u0644\u0627 \u0628\u0627 \u0627\u0645\u06a9\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0648\u0631\u06a9\u200c\u0641\u0644\u0648\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06a9\u062f<\/li>\n<li>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647<\/li>\n<li>\u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0642\u0648\u06cc \u0628\u0631\u0627\u06cc \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u0648 \u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc<\/li>\n<li>\u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u200c\u0633\u0627\u0632\u06cc \u0622\u0633\u0627\u0646 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0645\u0627\u0646\u0646\u062f AWS \u0648 Google Cloud<\/li>\n<\/ul>\n<p>\u0645\u0639\u0627\u06cc\u0628\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u067e\u06cc\u0634 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Apache Airflow \u0628\u062f\u0627\u0646\u06cc\u062f \u0646\u06cc\u0632 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0622\u0648\u0631\u062f\u0647\u200c\u0627\u06cc\u0645:<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u0646\u0642\u0627\u0637 \u0636\u0639\u0641 Airflow \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc Real-Time \u0637\u0631\u0627\u062d\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627\u06cc Batch \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a\u060c \u06cc\u0639\u0646\u06cc \u062c\u0631\u06cc\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u062f\u0631 \u0641\u0648\u0627\u0635\u0644 \u0632\u0645\u0627\u0646\u06cc \u0645\u0634\u062e\u0635 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u06cc\u0627<\/p>\n<ul>\n<li>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 (\u0627\u0641\u0631\u0627\u062f\u06cc \u06a9\u0647 \u062a\u062c\u0631\u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0646\u062f\u0627\u0631\u0646\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0627\u0631 \u0628\u0627 \u0622\u0646 \u0631\u0627 \u0633\u062e\u062a \u0628\u062f\u0627\u0646\u0646\u062f): \u0627\u0644\u0628\u062a\u0647 \u0628\u0631\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u062f\u0627\u062f\u0647 \u0648 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u067e\u0627\u06cc\u062a\u0648\u0646 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u06cc\u06a9 \u0645\u0632\u06cc\u062a \u0628\u0647 \u0634\u0645\u0627\u0631 \u0645\u06cc\u200c\u0631\u0648\u062f!<\/li>\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0646\u0633\u0628\u062a\u0627\u064b \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0628\u0632\u0631\u06af<\/li>\n<\/ul>\n<h2>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 Apache Airflow<\/h2>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 Apache Airflow \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 Variables \u0648 Jinja \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>from airflow.models import Variable<\/p>\n<p>data_path = Variable.get(&#8220;data_path&#8221;) # \u0645\u0642\u062f\u0627\u0631 \u0627\u0632 UI \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a<\/p>\n<p>\u0627\u0632 \u062f\u06cc\u06af\u0631 \u0631\u0648\u0634\u200c\u0647\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062a\u0633\u06a9\u200c\u0647\u0627\u06cc \u0633\u0646\u06af\u06cc\u0646 \u0631\u0627 \u0645\u0648\u0627\u0632\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>task1.set_downstream([task2, task3]) # task2 \u0648 task3 \u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f<\/p>\n<p>\u0628\u0647\u062a\u0631 \u0627\u0633\u062a SLA \u0628\u0631\u0627\u06cc \u062a\u0633\u06a9\u200c\u0647\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>task1.sla = timedelta(minutes=30) # \u062d\u062f\u0627\u06a9\u062b\u0631 \u06f3\u06f0 \u062f\u0642\u06cc\u0642\u0647 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062a\u0633\u06a9<\/p>\n<p>\u062d\u062a\u0645\u0627 \u0648\u0631\u06a9\u200c\u0641\u0644\u0648\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 Git \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"491\" class=\"wp-image-14790 aligncenter\" src=\"https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-4.png\" alt=\"\" title=\"\" srcset=\"https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-4.png 800w, https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-4-300x184.png 300w, https:\/\/chabokan.net\/blog\/wp-content\/uploads\/2025\/03\/word-image-14786-4-768x471.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2>\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h2>\n<p>Apache Airflow \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06af\u0631\u062f\u0634\u200c\u06a9\u0627\u0631\u0647\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0628\u0647 \u06a9\u0645\u06a9 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 ETL\u0647\u0627\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0627\u062f\u0647\u060c \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u06cc\u0646\u0647 \u06a9\u0631\u062f. \u0627\u06af\u0631 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc Big Data\u060c \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0645\u0627\u0634\u06cc\u0646 \u06cc\u0627 Cloud Computing \u0641\u0639\u0627\u0644\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc Airflow \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0647\u0627\u0631\u062a \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u06cc \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0622\u06cc\u0627 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0628\u0627 Apache Airflow \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f\u061f \u062a\u062c\u0631\u0628\u0647\u200c\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0645\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>90 \u062f\u0631\u0635\u062f \u0627\u0632 \u062f\u06cc\u062a\u0627\u0647\u0627\u06cc \u06a9\u0644 \u062f\u0646\u06cc\u0627 \u062f\u0631 \u062f\u0648 \u0633\u0627\u0644 \u0627\u062e\u06cc\u0631 \u06cc\u0639\u0646\u06cc 2023 \u062a\u0627 2025 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a! \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u062d\u062c\u0645 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0639\u0638\u06cc\u0645 \u0634\u0631\u06a9\u062a\u200c\u0647\u0627 \u062f\u0627\u0626\u0645\u0627\u064b \u062f\u0631 \u062a\u0644\u0627\u0634\u0646\u062f \u062a\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0634\u06a9\u0644\u06cc \u0628\u0647\u06cc\u0646\u0647 \u067e\u0631\u062f\u0627\u0632\u0634\u060c \u0630\u062e\u06cc\u0631\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0633\u0627\u0644 2025 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062c\u0631\u06cc\u0627\u0646\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc (Data Workflows) \u0628\u0647 \u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u0645\u0647\u0645 \u062f\u0631 \u0635\u0646\u0627\u06cc\u0639 \u0645\u062e\u062a\u0644\u0641 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647. \u062d\u0627\u0644\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0631\u0648\u0632\u0627\u0646\u0647 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f\u0647\u0627 \u0631\u06a9\u0648\u0631\u062f \u062f\u0627\u062f\u0647 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0645\u062e\u062a\u0644\u0641 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06af\u0631 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc\u0627\u0641\u062a\u0647 \u0648 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u0628\u0627\u0634\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u06cc\u06a9 \u06a9\u0627\u0628\u0648\u0633 \u062a\u0628\u062f\u06cc\u0644 \u0634\u0648\u062f. \u0634\u0631\u06a9\u062a\u200c\u0647\u0627 \u0648 \u0645\u0647\u0646\u062f\u0633\u0627\u0646 \u062f\u0627\u062f\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f \u06a9\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0631\u0648\u0634\u0645\u0646\u062f\u060c \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc\u200c\u0634\u062f\u0647 \u0648 \u0628\u062f\u0648\u0646 \u062e\u0637\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0628\u0647 \u0633\u0631\u0627\u063a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Apache Airflow \u0645\u06cc\u200c\u0631\u0648\u0646\u062f. \u0686\u0631\u0627 \u0628\u0647 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Airflow \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f \u0627\u06af\u0631 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc ETL (Extract, Transform, Load)\u060c \u067e\u0631\u062f\u0627\u0632\u0634\u200c\u0647\u0627\u06cc \u0628\u06cc\u06af \u062f\u06cc\u062a\u0627 \u06cc\u0627 \u062d\u062a\u06cc \u0632\u0645\u0627\u0646\u200c\u0628\u0646\u062f\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0634\u062a\u0647\u200c\u0627\u06cc\u062f\u060c \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc \u062f\u0633\u062a\u06cc \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u0646\u0647\u200c\u062a\u0646\u0647\u0627 \u0648\u0642\u062a\u200c\u06af\u06cc\u0631 \u0627\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0647\u0645 \u0647\u0633\u062a. \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc ETL (Extract, Transform, Load) \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u06a9\u0627\u0631\u0647\u0627\u06cc \u0645\u062a\u0646\u200c\u0628\u0627\u0632 (Open-Source)\u060c \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631 \u0648 \u0645\u0646\u0639\u0637\u0641\u060c Apache Airflow \u0627\u0633\u062a. \u0628\u0647 \u06a9\u0645\u06a9 Apache Airflow \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f: \u2705 \u0648\u0631\u06a9\u200c\u0641\u0644\u0648\u0647\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0627\u06cc \u0631\u0627 \u0645\u0627\u0646\u0646\u062f \u06a9\u062f \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f. \u2705 \u0622\u0646\u200c\u0647\u0627 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":14787,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[],"class_list":["post-14786","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/posts\/14786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/comments?post=14786"}],"version-history":[{"count":0,"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/posts\/14786\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/media\/14787"}],"wp:attachment":[{"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/media?parent=14786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/categories?post=14786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chabokan.net\/blog\/wp-json\/wp\/v2\/tags?post=14786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}