Halo, Habr! Nama saya Sergey, saya Pimpinan Insinyur Perangkat Lunak / Pimpinan Sream di EPAM, seorang insinyur dan arsitek Google Cloud bersertifikat. Selama lebih dari 10 tahun saya telah melakukan pengembangan komersial untuk berbagai perusahaan global, terutama dengan fokus pada backend. Saya juga suka berbagi pengetahuan saya. Hari ini saya ingin berbicara tentang Apache Airflow, yang menurut saya adalah alat yang baik untuk membangun jaringan pipa Anda.
Apa rencananya?
Singkatnya, saya akan memberi tahu Anda tentang Airflow untuk mereka yang belum pernah bekerja dengannya. Semua ini dapat ditemukan lebih detail di Internet, jadi saya hanya akan membahas konsep dasar.
Mari kita lihat apa itu Google Cloud Composer , bagaimana ia menggunakan Airflow, dan menyederhanakan pengembangan pada proyek nyata.
Mari kita lihat praktik pengembangan dan penerapan dalam Google Cloud Composer, serta kesulitan dan batasan yang dapat ditemui saat meluncurkan Airflow di Cloud Composer.
Dan, tentu saja, saya akan membagikan alat berguna yang dapat Anda gunakan dalam pekerjaan Anda.
Aliran udara dalam beberapa paragraf
Jadi, ini adalah alat untuk merencanakan, membangun, dan memantau pipeline yang ditulis dengan Python. Ada solusi orkestrasi proses out-of-the-box lainnya, seperti Luigi. Tapi sekarang mari kita bicara tentang kelebihan Airflow:
Sangat bagus untuk membangun jaringan pipa. Inti dari semua yang dia miliki adalah grafik asiklik terarah, yang memungkinkan Anda menerapkan eksekusi tugas secara berurutan atau paralel, serta mengelola urutan dan dependensinya.
. 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 :)