Between 2017-06-10 and 2017-06-24, Gerard Toonstra ran a survey on the Apache Airflow developer mailing list to gain a better understanding how organizations are deploying Apache Airflow, how they are using it, the scale they are using it and some qualitative questions on problems they encounter. There were 29 respondents in total (1 duplicate) and this page documents the results of that survey.
The raw results of the survey (CSV) are available at the bottom of this page.
Half of the respondents only use 1-5 worker cores, so very small setups. There are no respondents with a setup that has more than 500 cores, although there are 3 out of 29 that are between 50-500 worker nodes. This is not terribly surprising, because many organizations would choose Airflow to "orchestrate" the work by starting jobs on other services like EMR, Spark, etc. and not process all of that data on the airflow workers themselves. What we see is that from this sample of respondents, 75% are (probably) running this on a single beefy server with up to 50 cores or running it in a cluster of cooperating smaller VM's.
![Airflow > Apache Airflow survey 2017-06-24 [ARCHIVED] > scale.jpg](/confluence/download/attachments/71012592/scale.jpg?version=2&modificationDate=1498310137000&api=v2)
This was an interesting question and something I was personally very interested in. The answers are quite diverse in nature, we see deployments made from CI tools like jenkins, teamcity or travis, git deployments with webhooks, driven by cron (the irony! ), NFS shares, instances of S3 synchronization and deployment tools like Ansible. One response was more of a question "how to do this right", because it involved a lot of manual steps to stop workers and restart everything.
The majority of respondents have some way of interfacing with git for this. There were some responses that just state "docker", others looking at kubernetes to make the whole process more predictable through better control of container start/stop times.
It's clear that there's no definite communicated "best practice" when it comes to this and it may be interesting for someone to dig deep into this topic and write an extended article about this some time how to do this in a way that minimizes scheduler + processes downtime, but allows for testing of new dags during the day. There are definitely some trade-offs in every method that was mentioned and it's good to understand each of them and figure out the optimal method.
There are three main patterns here:
The majority are data engineers and working in cooperation with data scientists. There are interesting cases where business analysts are contributing to this mix by writing the SQL views for the data with collaboration from data engineers.
![Airflow > Apache Airflow survey 2017-06-24 [ARCHIVED] > developers.jpg](/confluence/download/attachments/71012592/developers.jpg?version=1&modificationDate=1498310137000&api=v2)
Almost no one uses data lineage / metadata tools with airflow. There are people looking into tools and know that this is a topic that at some point in the future will come up. For European organizations, this topic will become incredibly important in the next couple of months due to GDPR legislation.
The wikipedia article about data lineage: https://en.wikipedia.org/wiki/Data_lineage
Products mentioned are:
The responses here are very diverse. There are three topics that seem to bubble up from here:
The majority of organizations do not use multi-tenancy and are just using airflow within a single team. 7 out of 29 respondents use "n" deployments and 3 out of 29 use multi-tenancy options.
![Airflow > Apache Airflow survey 2017-06-24 [ARCHIVED] > teams.jpg](/confluence/download/attachments/71012592/teams.jpg?version=1&modificationDate=1498310136000&api=v2)
![Airflow > Apache Airflow survey 2017-06-24 [ARCHIVED] > training.jpg](/confluence/download/attachments/71012592/training.jpg?version=1&modificationDate=1498310136000&api=v2)
Here are some cool responses that demonstrate the value of airflow:
This is a grasp out of things that bug users the most: