こんにちは、Habr!私の名前はセルゲイです。EPAMのリードソフトウェアエンジニア/ Sream Leadであり、GoogleCloudの認定エンジニア兼アーキテクトです。私は10年以上にわたり、主にバックエンドを中心に、さまざまなグローバル企業の商業開発を行ってきました。私も自分の知識を共有するのが大好きです。今日は、パイプラインを構築するための優れたツールであるApacheAirflowについて説明したいと思います。
どんな計画ですか?
一言で言えば、Airflowをまだ使用していない人のためにAirflowについて説明します。これらはすべてインターネットでより詳細に見つけることができるので、基本的な概念のみを説明します。
Google Cloud Composerとは何か、Airflowをどのように使用し、実際のプロジェクトでの開発を簡素化するかを見てみましょう 。
Google Cloud Composer内での 開発とデプロイの方法、およびCloudComposerでAirflowを起動するときに発生する可能性のある問題と制限を見てみましょう。
そしてもちろん、私はあなたがあなたの仕事で使うことができる便利なツールを共有 します。
複数の段落の気流
つまり、これはPythonで記述されたパイプラインを計画、構築、監視するためのツールです。Luigiなど、他にもすぐに使用できるプロセスオーケストレーションソリューションがあります。しかし、Airflowの利点について説明しましょう。
パイプラインの構築に本当に適しています。彼が持っているすべての中心にあるのは、有向非巡回グラフです。これにより、タスクの順次実行または並列実行を実装し、タスクの順序と依存関係を管理できます。
. open-sourse , .
-: , .
REST API, API.
ETL-pipeline “” . , GCS . , , , . , , .
Airflow. DAG (Directed Acyclic Graph) — , Airflow. , . , .
Tasks DAG . , , . Operators , , . , — DAG-. — DataLoadOperator, GoogleCloudStorageListOperator UpdateStatusOperator — , . , , DAG-, . .
E DAGs Run Tasks Instances. DAGs Run — DAG, . Tasks Instance — , DAG Run. DAG Run Tasks Instances — execution date.
DAG , , pipeline-.
, Airflow:
(Scheduler) DAG-, .
( Executor) — , . : SequentialExecutor, CeleryExecutor . . , CeleryExecutor Queue Broker.
(Workers) ( Celery).
- , , , HTTP-, DAG- . , , Airflow, DAG-, . .
Logs. , Airflow. , - loud-. , Stackdriver GCS bucket .
Admin Panel / DAG-, , , (, “”).
?
Airflow , DAG-. , . - , . , task execution , Admin Panel. , . , deployment-.
Google Cloud Composer
Google Cloud Composer Composer — fully managed , , cloud.
, . , , storage A storage B. Airflow DAG, Composer . , . - , retry, . , . , cron jobs, 100 , — Airflow Composer , .
Composer:
-, . Composer Airflow Google Console UI “ ”, , DAG- . , DAG-, , , Composer bucket GCS. .
-, Composer , UI. Airflow, .
-, Composer security- , Google Cloud. , Private IPs, Authorization . .
-, Composer Console .
Composer. “, fully managed “”?” , , . , :
( , Composer ). Tenant Project — , Identity Access Management. . AppEngine Flexible -, Cloud SQL — Airflow. Cloud SQL , , -, . Cloud Storage Composer bucket, , / DAG-, . , Kubernetes . Core-, , worker- , , Redis, CeleryExecutor, Google Kubernetes Engine. : Kubernetes , , Redis. , Redis Airflow, Kubernetes Engine. , Composer Stackdriver — . , 100 , .
, , “ ”. , , , , DevOps-, , , , . .
, :
-, Tenant Project, Cloud SQL . — . , , .
Deployment development,
— , . :
, . Airflow DAGS_FOLDER PLUGINS_FOLDER sys.path , . : DAGS_FOLDER DAG-, PLUGINS_FOLDER — Airflow.
, , libs utils. , . plugins Airflow PLUGINS, Airflow. operators, hooks, macros — , Airflow “ ”.
. pip requirements.txt . Composer, UI, . , CI/CD , gcloud. pip Composer.
Airflow DAGS_FOLDER PLUGINS_FOLDER sys.path, , , DAGS_FOLDER, PLUGINS_FOLDER. , Airflow, , . , Airflow , , DAG-. PLUGINS_FOLDER . plugins — . . , , .
Airflow: . Composer read-only. .
.airflowignore . .gitignore , , Airflow . , . , PLUGINS_FOLDER , . .airflowignore Python , .
Airflow. Airflow , UI-, View. operators, hooks . , Airflow PLUGINS_FOLDER sys.path, , , from vnd.operators.my_operator. , , Airflow. , :
from vnd.operators.my_operator import MyOperator
from vnd.sensors.my_sensor import MySensor
, . , , Airflow plugins AirflowPlugin .
: , , callable- , lazy . , DAG-. , c , . , . , , , - , . : DAG- .
CI/D — . linters, isorts Gitlab CI/CD . CI/D , : Jenkins, Gitlab pipeline, Spinnaker.
, linters, unit , — . Composer, gcloud rsync.
Composer , rsync, Airflow. , gcloud composer, DAG-, - . , , - . rsync, , /.
, Airflow . , , . , , Airflow. . afctl — CLI-, Airflow . , , DAG- . , afctl , , ( ).
, , Airflow. , Google Cloud Platform, AWS, Azure, . providers Airflow.
Airflow Plugins — , CRM , . . GitHub: Airflow , , .
:
, Airflow self-service, Cloud Composer.
Cloud Composer, , “” (scaling to zero). , , . Composer : , A/B-, . , GKE , .
Composer, , Prod/Dev/Staging. . Composer Airflow, , Google Airflow. Composer : , image, Airflow.
DAG — , . , pip.
, , . , .
AirflowPlugin — UI , Airflow. .
.airflowignore , Airflow. , .airflowignore DAG- , Airflow DAG- DAG-. , DAG- , , , .
DAG- Cloud Composer. DAG- . — “”.
Airflow. , GoogleCloudStorageListOperator , , . - , .
KubernetesPodOperator , Python. Kubernetes, Airflow Pod-. , Composer-.
Composer, read-only Airflow. .
, , Airflow Composer :)