¡Hola, Habr! Mi nombre es Sergey, soy ingeniero de software principal / Sream Lead en EPAM, un ingeniero y arquitecto certificado de Google Cloud. Durante más de 10 años he estado haciendo desarrollo comercial para varias empresas globales, principalmente con un enfoque en backend. También me encanta compartir mis conocimientos. Hoy quiero hablar sobre Apache Airflow, que, en mi opinión, es una buena herramienta para construir sus pipelines.
¿Cuál es el plan?
En pocas palabras, les contaré sobre Airflow para aquellos que aún no han trabajado con él. Todo esto se puede encontrar con más detalle en Internet, por lo que solo repasaré los conceptos básicos.
Veamos qué es Google Cloud Composer , cómo usa Airflow y simplifica el desarrollo en proyectos reales.
Echemos un vistazo a las prácticas de desarrollo e implementación dentro de Google Cloud Composer, así como a las dificultades y limitaciones que se pueden encontrar al iniciar Airflow en Cloud Composer.
Y, por supuesto, compartiré herramientas útiles que puede utilizar en su trabajo.
Flujo de aire en varios párrafos
Entonces, esta es una herramienta para planificar, construir y monitorear pipelines escrita en Python. Hay otras soluciones de orquestación de procesos listas para usar, como Luigi. Pero ahora hablemos de las ventajas de Airflow:
Muy bueno para la construcción de tuberías. En el corazón de todo lo que tiene está un gráfico acíclico dirigido, que le permite implementar la ejecución secuencial o paralela de tareas, así como administrar su orden y dependencias.
. 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 :)