Olá, Habr! Meu nome Ă© Sergey, sou engenheiro lĂder de software / lĂder de sream na EPAM, engenheiro e arquiteto certificado do Google Cloud. Há mais de 10 anos realizo desenvolvimento comercial para diversas empresas globais, principalmente com foco em backend. Eu tambĂ©m adoro compartilhar meu conhecimento. Hoje quero falar sobre o Apache Airflow, que, na minha opiniĂŁo, Ă© uma boa ferramenta para construir seus pipelines.
Qual Ă© o plano?
Em poucas palavras, vou falar sobre o Airflow para aqueles que ainda não trabalharam com ele. Tudo isso pode ser encontrado com mais detalhes na Internet, portanto, irei abordar apenas os conceitos básicos.
Vamos ver o que Ă© o Google Cloud Composer , como ele usa o Airflow e simplifica o desenvolvimento em projetos reais.
Vamos dar uma olhada nas práticas de desenvolvimento e implantação no Google Cloud Composer, bem como nas dificuldades e limitações que podem ser encontradas ao iniciar o Airflow no Cloud Composer.
E, Ă© claro, compartilharei ferramentas Ăşteis que vocĂŞ pode usar em seu trabalho.
Fluxo de ar em vários parágrafos
Portanto, esta é uma ferramenta para planejar, construir e monitorar pipelines escritos em Python. Existem outras soluções de orquestração de processos prontas para usar, como o Luigi. Mas agora vamos falar sobre as vantagens do Airflow:
Muito bom para construir pipelines. No centro de tudo o que ele possui está um gráfico acĂclico direcionado, que permite implementar a execução sequencial ou paralela de tarefas, bem como gerenciar sua ordem e dependĂŞncias.
. 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 :)