From e0cc3eae66f2acb8dab795b170afd97fd969db3a Mon Sep 17 00:00:00 2001 From: John Thomas <49878111+TohnJhomas@users.noreply.github.com> Date: Tue, 12 Jul 2022 07:00:28 -0600 Subject: [PATCH] Add survey data to website, update blog posts to match (#636) --- .../en/blog/airflow-survey-2020/index.md | 480 +++++++++--------- .../en/blog/airflow-survey-2022/index.md | 4 + ...airflow-user-survey-responses-2020.csv.zip | Bin 0 -> 28457 bytes ...airflow-user-survey-responses-2022.csv.zip | Bin 0 -> 25899 bytes 4 files changed, 245 insertions(+), 239 deletions(-) create mode 100644 landing-pages/site/static/data/survey-responses/airflow-user-survey-responses-2020.csv.zip create mode 100644 landing-pages/site/static/data/survey-responses/airflow-user-survey-responses-2022.csv.zip diff --git a/landing-pages/site/content/en/blog/airflow-survey-2020/index.md b/landing-pages/site/content/en/blog/airflow-survey-2020/index.md index aaed88b49bb..62a9f296750 100644 --- a/landing-pages/site/content/en/blog/airflow-survey-2020/index.md +++ b/landing-pages/site/content/en/blog/airflow-survey-2020/index.md @@ -9,6 +9,7 @@ description: "We observe steady growth in number of users as well as in an amoun tags: ["community", "survey", "users"] date: "2021-03-09" --- + # Apache Airflow Survey 2020 World of data processing tools is growing steadily. Apache Airflow seems to be already considered as @@ -25,16 +26,16 @@ is true, we will learn next year! **What best describes your current occupation? (single choice)** -| | No. | % | -|---------------------|-------|-------| -| Data Engineer | 115 | 56.65 | -| Developer | 28 | 13.79 | -| DevOps | 17 | 8.37 | -| Solutions Architect | 14 | 6.9 | -| Data Scientist | 12 | 5.91 | -| Other | 10 | 4.93 | -| Data Analyst | 4 | 1.97 | -| Support Engineer | 3 | 1.48 | +| | No. | % | +| ------------------- | --- | ----- | +| Data Engineer | 115 | 56.65 | +| Developer | 28 | 13.79 | +| DevOps | 17 | 8.37 | +| Solutions Architect | 14 | 6.9 | +| Data Scientist | 12 | 5.91 | +| Other | 10 | 4.93 | +| Data Analyst | 4 | 1.97 | +| Support Engineer | 3 | 1.48 | Those results are not a surprise as Airflow is a tool dedicated to data-related tasks. The majority of our users are data engineers, scientists or analysts. The 2020 results are similar to [those from 2019](https://airflow.apache.org/blog/airflow-survey/) with @@ -44,32 +45,31 @@ Additionally, 79% of users uses Airflow on daily basis and 16% interacts with it **How many people work in your company? (single choice)** -| | No. | % | -|--------|-------|-------| -| 200+ | 107 | 52.71 | -| 51-200 | 44 | 21.67 | -| 11-50 | 37 | 18.23 | -| 1-10 | 15 | 7.39 | +| | No. | % | +| ------ | --- | ----- | +| 200+ | 107 | 52.71 | +| 51-200 | 44 | 21.67 | +| 11-50 | 37 | 18.23 | +| 1-10 | 15 | 7.39 | **How many people in your company use Airflow? (single choice)** -| | No. | % | -|-------|-------|-------| -| 1-5 | 84 | 41.38 | -| 6-20 | 75 | 36.95 | -| 21-50 | 23 | 11.33 | -| 50+ | 21 | 10.34 | +| | No. | % | +| ----- | --- | ----- | +| 1-5 | 84 | 41.38 | +| 6-20 | 75 | 36.95 | +| 21-50 | 23 | 11.33 | +| 50+ | 21 | 10.34 | Airflow is a software that is used and trusted by big companies. We can also see that Airflow can work fine for teams of different sizes. However, in some cases users may use multiple Airflow instances. - **Are you considering moving to other workflow engines? (single choice)** -| | No. | % | -|-------------------------------|-------|-------| -| No, we are happy with Airflow | 174 | 85.71 | -| Yes | 29 | 14.29 | +| | No. | % | +| ----------------------------- | --- | ----- | +| No, we are happy with Airflow | 174 | 85.71 | +| Yes | 29 | 14.29 | Nearly 1 out of 7 users is considering migrating to other workflow engines. Their decision is usually justified by need of **easier workflow writing experience** (12.32%), **better UI/UX** and **faster scheduler** @@ -81,14 +81,13 @@ in the new major version. And the early feedback from 2.0 users seems to be conf The alternative engines considered by users are mainly Prefect and Argo. Some participants also mentioned Luigi, Kubeflow or custom solutions. - **Are you or your team actively participating in Airflow development - contributing? (single choice)** -| | No. | % | -|-----------------|-------|-------| -| I wish we could | 99 | 48.77 | -| No | 59 | 29.06 | -| Yes | 45 | 22.17 | +| | No. | % | +| --------------- | --- | ----- | +| I wish we could | 99 | 48.77 | +| No | 59 | 29.06 | +| Yes | 45 | 22.17 | This is really heart-warming result. It means that 1 out of 5 users contributes actively to our project! But it would be good to learn if there's something else than time that is stopping people who wish to contribute @@ -98,29 +97,29 @@ discussions. **How likely are you to recommend Apache Airflow? (single choice)** -| | No. | 2020 % | 2019 % | -|---------------|-------|--------|--------| -| Very Likely | 125 | 61.58 | 45.45% | -| Likely | 62 | 30.54 | 40.26% | -| Neutral | 11 | 5.42 | 10.71% | -| Unlikely | 3 | 1.48 | 2.60% | -| Very unlikely | 2 | 0.99 | 0.97% | +| | No. | 2020 % | 2019 % | +| ------------- | --- | ------ | ------ | +| Very Likely | 125 | 61.58 | 45.45% | +| Likely | 62 | 30.54 | 40.26% | +| Neutral | 11 | 5.42 | 10.71% | +| Unlikely | 3 | 1.48 | 2.60% | +| Very unlikely | 2 | 0.99 | 0.97% | Here is good news! It seems that people are more willing to recommend Apache Airflow than year before. **What is your source of information about Airflow? (multiple choice)** -| | No. | % | -|-----------------------------------|-------|-------| -| Documentation | 154 | 75.86 | -| Airflow website | 139 | 68.47 | -| Slack | 128 | 63.05 | -| Github | 127 | 62.56 | -| Stack Overflow | 72 | 35.47 | -| Airflow Summit Videos | 44 | 21.67 | -| The dev mailing list | 33 | 16.26 | -| Awesome Apache Airflow repository | 21 | 10.34 | -| Other | 15 | 7.39 | +| | No. | % | +| --------------------------------- | --- | ----- | +| Documentation | 154 | 75.86 | +| Airflow website | 139 | 68.47 | +| Slack | 128 | 63.05 | +| Github | 127 | 62.56 | +| Stack Overflow | 72 | 35.47 | +| Airflow Summit Videos | 44 | 21.67 | +| The dev mailing list | 33 | 16.26 | +| Awesome Apache Airflow repository | 21 | 10.34 | +| Other | 15 | 7.39 | Here we see that Airflow documentation is the crucial source of information. What's interesting is that more than 60% of users are getting information from Github and Slack channels. @@ -131,87 +130,87 @@ than 60% of users are getting information from Github and Slack channels. **Do you have any customisation of Airflow? (single choice)** -| | No. | % | -|--------------------------------------|-------|-------| -| No, we use vanilla Airflow | 154 | 75.86 | -| Yes, we have small patches (no fork) | 34 | 16.75 | -| Yes, we have separate fork | 15 | 7.39 | +| | No. | % | +| ------------------------------------ | --- | ----- | +| No, we use vanilla Airflow | 154 | 75.86 | +| Yes, we have small patches (no fork) | 34 | 16.75 | +| Yes, we have separate fork | 15 | 7.39 | **When onboarding new members to airflow, what is the biggest problem? (multiple choice)** -| | No. | % | -|-----------------------------------------------------------------|-------|-------| -| No guide on best practises on developing DAGs | 102 | 50.25 | -| There is no easy option to launch Airflow | 64 | 31.53 | -| Small number of tutorials on different aspects of using Airflow | 57 | 28.08 | -| Documentation is not clear enough | 53 | 26.11 | -| There is no easy option to deploy DAGs to an Airflow instance | 52 | 25.62 | -| No problems | 34 | 16.75 | -| Small number of blogs regarding Airflow | 30 | 14.78 | +| | No. | % | +| --------------------------------------------------------------- | --- | ----- | +| No guide on best practises on developing DAGs | 102 | 50.25 | +| There is no easy option to launch Airflow | 64 | 31.53 | +| Small number of tutorials on different aspects of using Airflow | 57 | 28.08 | +| Documentation is not clear enough | 53 | 26.11 | +| There is no easy option to deploy DAGs to an Airflow instance | 52 | 25.62 | +| No problems | 34 | 16.75 | +| Small number of blogs regarding Airflow | 30 | 14.78 | **Which interface(s) of Airflow do you use as part of your current role? (multiple choice)** -| | No. | % | -|-------------------------------------------------------|-------|-------| -| Original Airflow Graphical User Interface | 199 | 98.03 | -| CLI | 88 | 43.35 | -| API | 48 | 23.65 | -| Custom (own created) Airflow Graphical User Interface | 12 | 5.91 | -| Other | 3 | 1.48 | +| | No. | % | +| ----------------------------------------------------- | --- | ----- | +| Original Airflow Graphical User Interface | 199 | 98.03 | +| CLI | 88 | 43.35 | +| API | 48 | 23.65 | +| Custom (own created) Airflow Graphical User Interface | 12 | 5.91 | +| Other | 3 | 1.48 | **Do you combine multiple DAGs? (multiple choice)** -| | No. | % | -|------------------------------------|-------|-------| -| Yes, by triggering another DAG | 87 | 42.86 | -| No, I don't combine multiple DAGs | 79 | 38.92 | -| Yes, through SubDAG | 40 | 19.7 | -| Other | 18 | 8.87 | - +| | No. | % | +| --------------------------------- | --- | ----- | +| Yes, by triggering another DAG | 87 | 42.86 | +| No, I don't combine multiple DAGs | 79 | 38.92 | +| Yes, through SubDAG | 40 | 19.7 | +| Other | 18 | 8.87 | **How do you integrate with external services? (multiple choice)** -| | No. | % | -|---------------------------------------------|-------|-------| -| Using existing dedicated operators / hooks | 147 | 72.41 | -| Using Bash / Python operator | 140 | 68.97 | -| Using own custom operators / hooks | 138 | 67.98 | -| Other | 12 | 5.91 | +| | No. | % | +| ------------------------------------------ | --- | ----- | +| Using existing dedicated operators / hooks | 147 | 72.41 | +| Using Bash / Python operator | 140 | 68.97 | +| Using own custom operators / hooks | 138 | 67.98 | +| Other | 12 | 5.91 | **What external services do you use in your Airflow DAGs? (multiple choice)** -| | No. | % | -|---------------------------------------------------|-------|-------| -| Amazon Web Services | 121 | 59.61 | -| Internal company systems | 113 | 55.67 | -| Google Cloud Platform / Google APIs | 97 | 47.78 | -| Hadoop / Spark / Flink / Other Apache software | 72 | 35.47 | -| Microsoft Azure | 21 | 10.34 | -| Other | 19 | 9.36 | -| I do not use external services in my Airflow DAGs | 5 | 2.46 | +| | No. | % | +| ------------------------------------------------- | --- | ----- | +| Amazon Web Services | 121 | 59.61 | +| Internal company systems | 113 | 55.67 | +| Google Cloud Platform / Google APIs | 97 | 47.78 | +| Hadoop / Spark / Flink / Other Apache software | 72 | 35.47 | +| Microsoft Azure | 21 | 10.34 | +| Other | 19 | 9.36 | +| I do not use external services in my Airflow DAGs | 5 | 2.46 | ![](What_external_services_do_you_use_in_your_Airflow_DAGs.png) **Do you use Airflow Plugins? If yes, what do you use them for? (multiple choice)** -| | No. | % | -|----------------------------------------|-------|-------| -| Adding new operators/sensors and hooks | 119 | 58.62 | -| I don't use Airflow plugins | 69 | 33.99 | -| Adding AppBuilder views & menu items | 27 | 13.3 | -| Adding new executors | 17 | 8.37 | -| Adding OperatorExtraLinks | 13 | 6.4 | +| | No. | % | +| -------------------------------------- | --- | ----- | +| Adding new operators/sensors and hooks | 119 | 58.62 | +| I don't use Airflow plugins | 69 | 33.99 | +| Adding AppBuilder views & menu items | 27 | 13.3 | +| Adding new executors | 17 | 8.37 | +| Adding OperatorExtraLinks | 13 | 6.4 | + | Other **Do you use Airflow's data lineage feature? (single choice)** -| | No. | % | -|------------------------------------------------------------|-------|-------| -| No, I will use such feature if fully supported in Airflow | 105 | 51.72 | -| No, data lineage isn’t a concern for my usage. | 68 | 33.5 | -| Yes, I use another data lineage product | 24 | 11.82 | -| Yes, I use custom implementation | 5 | 2.46 | -| Yes, I use Airflow's experimental data lineage feature | 1 | 0.49 | +| | No. | % | +| --------------------------------------------------------- | --- | ----- | +| No, I will use such feature if fully supported in Airflow | 105 | 51.72 | +| No, data lineage isn’t a concern for my usage. | 68 | 33.5 | +| Yes, I use another data lineage product | 24 | 11.82 | +| Yes, I use custom implementation | 5 | 2.46 | +| Yes, I use Airflow's experimental data lineage feature | 1 | 0.49 | When asked what lineage product users use, the answers were varying from custom tools to known product like Amundsen, Atlas or dbt. @@ -220,46 +219,46 @@ to known product like Amundsen, Atlas or dbt. **How many active DAGs do you have in your largest Airflow instance? (open question)** -| Number of DAGs | No. | % | -|-------------------|-------|-----| -| < 20 | 64 | 32 | -| 21-40 | 33 | 16 | -| 41-60 | 13 | 6 | -| 61-100 | 32 | 16 | -| 101-200 | 31 | 15 | -| 201-300 | 8 | 4 | -| 301-999 | 12 | 6 | -| 1000+ | 10 | 5 | +| Number of DAGs | No. | % | +| -------------- | --- | --- | +| < 20 | 64 | 32 | +| 21-40 | 33 | 16 | +| 41-60 | 13 | 6 | +| 61-100 | 32 | 16 | +| 101-200 | 31 | 15 | +| 201-300 | 8 | 4 | +| 301-999 | 12 | 6 | +| 1000+ | 10 | 5 | **What is the maximum number of tasks that you have used in one DAG? (open question)** -| Number of DAGs | No. | % | -|------------------|-------|-----| -| < 10 | 42 | 21 | -| 11-20 | 31 | 15 | -| 21-30 | 15 | 7 | -| 31-40 | 11 | 5 | -| 41-50 | 22 | 11 | -| 51-100 | 39 | 19 | -| 101-200 | 16 | 8 | -| 201-500 | 16 | 8 | -| 501+ | 11 | 5 | +| Number of DAGs | No. | % | +| -------------- | --- | --- | +| < 10 | 42 | 21 | +| 11-20 | 31 | 15 | +| 21-30 | 15 | 7 | +| 31-40 | 11 | 5 | +| 41-50 | 22 | 11 | +| 51-100 | 39 | 19 | +| 101-200 | 16 | 8 | +| 201-500 | 16 | 8 | +| 501+ | 11 | 5 | **Which version of Airflow do you use currently? (single choice)** -| | No. | % | -|-----------------|-------|-------| -| 1.10.14 | 55 | 27.09 | -| 2.0.0+ | 45 | 22.17 | -| 1.10.12 | 27 | 13.3 | -| 1.10.10 | 26 | 12.81 | -| 1.10.11 | 14 | 6.9 | -| 1.10.5 or older | 10 | 4.93 | -| 1.10.9 | 8 | 3.94 | -| 1.10.13 | 7 | 3.45 | -| 1.10.6 | 4 | 1.97 | -| 1.10.7 | 4 | 1.97 | -| 1.10.8 | 3 | 1.48 | +| | No. | % | +| --------------- | --- | ----- | +| 1.10.14 | 55 | 27.09 | +| 2.0.0+ | 45 | 22.17 | +| 1.10.12 | 27 | 13.3 | +| 1.10.10 | 26 | 12.81 | +| 1.10.11 | 14 | 6.9 | +| 1.10.5 or older | 10 | 4.93 | +| 1.10.9 | 8 | 3.94 | +| 1.10.13 | 7 | 3.45 | +| 1.10.6 | 4 | 1.97 | +| 1.10.7 | 4 | 1.97 | +| 1.10.8 | 3 | 1.48 | This was probably one of the most important questions in the survey. While it's good to see that more than 60% of users use one of three latest Airflow versions, it's worrying that the rest @@ -269,16 +268,16 @@ Additionally, more than 20% of users are already using 2.0.0+ versions which is **What meta-database do you use? (single choice)** -| | No. | % | -|--------------|-------|-------| -| Postgres 12 | 36 | 17.73 | -| Postgres 9.6 | 33 | 16.26 | -| Postgres 11 | 31 | 15.27 | -| MySQL 5.7 | 27 | 13.3 | -| MySQL 8.0 | 20 | 9.85 | -| Postgres 10 | 20 | 9.85 | -| Other | 19 | 9.36 | -| Postgres 13 | 18 | 8.87 | +| | No. | % | +| ------------ | --- | ----- | +| Postgres 12 | 36 | 17.73 | +| Postgres 9.6 | 33 | 16.26 | +| Postgres 11 | 31 | 15.27 | +| MySQL 5.7 | 27 | 13.3 | +| MySQL 8.0 | 20 | 9.85 | +| Postgres 10 | 20 | 9.85 | +| Other | 19 | 9.36 | +| Postgres 13 | 18 | 8.87 | This means that more about 69% of users decide to use Postgres as their meta-database. MySQL is the choice of nearly 24% users. The other responses included some MySQL versions @@ -290,13 +289,13 @@ It's good to know that users rather avoid using SQLite in production deployments ![](What_executor_type_do_you_use.png) -| | No. | 2020 | 2019 | -|------------|-------|--------|--------| -| Celery | 100 | 49.26% | 44.81% | -| Kubernetes | 48 | 23.65% | 16.88% | -| Local | 40 | 19.7% | 27.60% | -| Sequential | 10 | 4.93% | 7.14% | -| Other | 5 | 2.46% | 3.57 | +| | No. | 2020 | 2019 | +| ---------- | --- | ------ | ------ | +| Celery | 100 | 49.26% | 44.81% | +| Kubernetes | 48 | 23.65% | 16.88% | +| Local | 40 | 19.7% | 27.60% | +| Sequential | 10 | 4.93% | 7.14% | +| Other | 5 | 2.46% | 3.57 | In comparison to previous year it seems that more users use currently Celery and Kubernetes executors and LocalExecutor usage dropped by nearly 8 points. This may @@ -305,31 +304,30 @@ suggest that users' deployments are growing, and they need more scalable solutio Among CeleryExecutor users 78% use Redis as a broker, 19% use RabbitMQ and the rest is using other brokers or is not sure what is used in their deployments. - **What metrics do you use to monitor Airflow? (multiple choice)** -| | No. | % | -|-------------------------------|-------|-------| -| I do not use monitoring | 65 | 32.02 | -| External monitoring service | 60 | 29.56 | -| Information from metadatabase | 51 | 25.12 | -| Statsd | 49 | 24.14 | -| Other | 31 | 15.27 | +| | No. | % | +| ----------------------------- | --- | ----- | +| I do not use monitoring | 65 | 32.02 | +| External monitoring service | 60 | 29.56 | +| Information from metadatabase | 51 | 25.12 | +| Statsd | 49 | 24.14 | +| Other | 31 | 15.27 | The other responses included mostly information about tools used by users including DataDog and Prometheus exporter. **How do you deploy Airflow? (single choice)** -| | No. | % | -|----------------------------------------------------------------------|-------|-------| -| On virtual machines (for example using AWS EC2) | 64 | 31.53 | -| Using a managed service like Astronomer, Google Composer or AWS MWAA | 35 | 17.24 | -| On Kubernetes (using custom deployments) | 29 | 14.29 | -| On premises | 28 | 13.79 | -| On Kubernetes (using another helm chart) | 20 | 9.85 | -| On Kubernetes (using Apache Airflow's helm chart) | 17 | 8.37 | -| Other | 12 | 5.91 | +| | No. | % | +| -------------------------------------------------------------------- | --- | ----- | +| On virtual machines (for example using AWS EC2) | 64 | 31.53 | +| Using a managed service like Astronomer, Google Composer or AWS MWAA | 35 | 17.24 | +| On Kubernetes (using custom deployments) | 29 | 14.29 | +| On premises | 28 | 13.79 | +| On Kubernetes (using another helm chart) | 20 | 9.85 | +| On Kubernetes (using Apache Airflow's helm chart) | 17 | 8.37 | +| Other | 12 | 5.91 | Nearly 33% of users deploys Airflow using some kind of Kubernetes deployment. This is about 10 percent more than in 2019. There's slightly increase in usage of Airflow via @@ -337,25 +335,25 @@ managed services (14.61% in 2019). **Do you use containerisation for deployment? (single choice)** -| | No. | % | -|------------------------------------|-------|-------| -| Yes, using helm chart / kubernetes | 58 | 28.57 | -| No, I don’t use containerisation | 57 | 28.08 | -| Yes, single docker image | 49 | 24.14 | -| Yes, using docker compose | 39 | 19.21 | +| | No. | % | +| ---------------------------------- | --- | ----- | +| Yes, using helm chart / kubernetes | 58 | 28.57 | +| No, I don’t use containerisation | 57 | 28.08 | +| Yes, single docker image | 49 | 24.14 | +| Yes, using docker compose | 39 | 19.21 | Among users who do not use Kubernetes based deployments 58% of them use containerisation. About 42% of those users use docker-compose for deployments. **How do you distribute your DAGs? (single choice)** -| | No. | % | -|---------------------------------------------------------|-------|-------| -| Using a synchronizing process (Git sync, GCS fuse, etc) | 79 | 38.92 | -| Bake them into the docker image | 56 | 27.59 | -| Shared files system | 34 | 16.75 | -| Other | 20 | 9.85 | -| I don’t know | 14 | 6.9 | +| | No. | % | +| ------------------------------------------------------- | --- | ----- | +| Using a synchronizing process (Git sync, GCS fuse, etc) | 79 | 38.92 | +| Bake them into the docker image | 56 | 27.59 | +| Shared files system | 34 | 16.75 | +| Other | 20 | 9.85 | +| I don’t know | 14 | 6.9 | The most popular way of distributing DAGs seems to be using a synchronizing process. About 40% of users use this process together with Kubernetes deployments. @@ -364,65 +362,65 @@ The most popular way of distributing DAGs seems to be using a synchronizing proc **In your opinion, what could be improved in Airflow? (multiple choice)** -| | No. | % | -|-----------------------------------------------------------|-------|-------| -| Web UI | 100 | 49.26 | -| Examples, how-to, onboarding documentation | 90 | 44.33 | -| Logging, monitoring and alerting | 90 | 44.33 | -| Technical documentation | 90 | 44.33 | -| Scheduler performance | 83 | 40.89 | -| DAG authoring | 64 | 31.53 | -| Authentication and authorization | 58 | 28.57 | -| REST API | 51 | 25.12 | -| Other | 44 | 21.67 | -| Reliability | 41 | 20.2 | -| External integration e.g. AWS, GCP, Apache products | 36 | 17.73 | -| Security | 28 | 13.79 | -| CLI | 20 | 9.85 | -| Everything work fine for me | 14 | 6.9 | -| I don’t know | 4 | 1.97 | +| | No. | % | +| --------------------------------------------------- | --- | ----- | +| Web UI | 100 | 49.26 | +| Examples, how-to, onboarding documentation | 90 | 44.33 | +| Logging, monitoring and alerting | 90 | 44.33 | +| Technical documentation | 90 | 44.33 | +| Scheduler performance | 83 | 40.89 | +| DAG authoring | 64 | 31.53 | +| Authentication and authorization | 58 | 28.57 | +| REST API | 51 | 25.12 | +| Other | 44 | 21.67 | +| Reliability | 41 | 20.2 | +| External integration e.g. AWS, GCP, Apache products | 36 | 17.73 | +| Security | 28 | 13.79 | +| CLI | 20 | 9.85 | +| Everything work fine for me | 14 | 6.9 | +| I don’t know | 4 | 1.97 | **Which features would most interest you? (multiple choice)** -| | No. | % | -|-------------------------------------------------------------|-------|-------| -| DAG versioning | 109 | 53.69 | -| Builtin statistics | 71 | 34.98 | -| Improved data lineage | 65 | 32.02 | -| Scheduling at the start of the interval | 63 | 31.03 | -| Stateless workers | 59 | 29.06 | -| More option to configure schedules (time units, increments) | 57 | 28.08 | -| Multi-tenant deployment | 49 | 24.14 | -| DAG fetcher (AIP-5) | 39 | 19.21 | -| Generic transfer operator | 34 | 16.75 | -| Other | 33 | 16.26 | -| I have everything I need | 11 | 5.42 | -| Nothing | 11 | 5.42 | +| | No. | % | +| ----------------------------------------------------------- | --- | ----- | +| DAG versioning | 109 | 53.69 | +| Builtin statistics | 71 | 34.98 | +| Improved data lineage | 65 | 32.02 | +| Scheduling at the start of the interval | 63 | 31.03 | +| Stateless workers | 59 | 29.06 | +| More option to configure schedules (time units, increments) | 57 | 28.08 | +| Multi-tenant deployment | 49 | 24.14 | +| DAG fetcher (AIP-5) | 39 | 19.21 | +| Generic transfer operator | 34 | 16.75 | +| Other | 33 | 16.26 | +| I have everything I need | 11 | 5.42 | +| Nothing | 11 | 5.42 | **Will you consider migrating to Airflow 2.0? (single choice)** -| | No. | % | -|-----------------------------------------------|-------|-------| -| Yes, as soon as possible | 81 | 39.9 | -| Yes, once it’s mature (for example after 2.1) | 72 | 35.47 | -| I am already using Airflow 2.0+ | 39 | 19.21 | -| I don't know yet | 8 | 3.94 | -| No, I do not plan to migrate | 3 | 1.48 | +| | No. | % | +| --------------------------------------------- | --- | ----- | +| Yes, as soon as possible | 81 | 39.9 | +| Yes, once it’s mature (for example after 2.1) | 72 | 35.47 | +| I am already using Airflow 2.0+ | 39 | 19.21 | +| I don't know yet | 8 | 3.94 | +| No, I do not plan to migrate | 3 | 1.48 | **What are the features of Airflow 2.0 you are most excited about? (multiple choice)** -| | No. | % | -|----------------------------------|-------|-------| -| General performance improvements | 133 | 65.52 | -| Refreshed WebUI | 102 | 50.25 | -| Scheduler HA | 99 | 48.77 | -| Official docker image | 84 | 41.38 | -| @task decorator | 56 | 27.59 | -| Official helm chart | 51 | 25.12 | -| Providers packages | 41 | 20.2 | -| Configurable XCom backends | 33 | 16.26 | -| CeleryKubernetesExecutor | 31 | 15.27 | -| Other | 12 | 5.91 | +| | No. | % | +| -------------------------------- | --- | ----- | +| General performance improvements | 133 | 65.52 | +| Refreshed WebUI | 102 | 50.25 | +| Scheduler HA | 99 | 48.77 | +| Official docker image | 84 | 41.38 | +| @task decorator | 56 | 27.59 | +| Official helm chart | 51 | 25.12 | +| Providers packages | 41 | 20.2 | +| Configurable XCom backends | 33 | 16.26 | +| CeleryKubernetesExecutor | 31 | 15.27 | +| Other | 12 | 5.91 | ## Summary @@ -433,3 +431,7 @@ are willing to upgrade to new ones. Finally, there are still some things to improve - documentation, onboarding guides and plug-and-play airflow deployments. However, we hope that with the increase of adoption there will be an increase in people willing to share their experience and tools. + +## Data + +If you think I missed something or you simply want to look for insights on your own, the data is available for you here: (Airflow User Survey 2020.csv)[/data/survey-responses/airflow-user-survey-responses-2020.csv.zip] diff --git a/landing-pages/site/content/en/blog/airflow-survey-2022/index.md b/landing-pages/site/content/en/blog/airflow-survey-2022/index.md index 401cf74d296..0cc169b17fc 100644 --- a/landing-pages/site/content/en/blog/airflow-survey-2022/index.md +++ b/landing-pages/site/content/en/blog/airflow-survey-2022/index.md @@ -558,3 +558,7 @@ The results are quite self-explanatory. According to the survey results, the top | Support for hybrid executors | 22 | 11.3% | According to the survey results, DAG Versioning is a winner for new features in Airflow, and it’s not a surprise as this feature may positively impact daily work of Airflow users. It is followed by three other ideas: Dependency management and Data-driven scheduling (42.6%), More dynamic task structure (42.1%) and Multi-Tenancy (37.9%). Another interesting point from that question is that only 11.3% think that support for hybrid executors is needed in Airflow. + +## Data + +If you're interested in taking a look at the raw data yourself, it's available here: (Airflow User Survey 2022.csv)[/data/survey-responses/airflow-user-survey-responses-2022.csv.zip] diff --git a/landing-pages/site/static/data/survey-responses/airflow-user-survey-responses-2020.csv.zip b/landing-pages/site/static/data/survey-responses/airflow-user-survey-responses-2020.csv.zip new file mode 100644 index 0000000000000000000000000000000000000000..ae3bd8ce3ac794076c1902be74e991b3c4dfece0 GIT binary patch literal 28457 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 literal 0 HcmV?d00001 diff --git a/landing-pages/site/static/data/survey-responses/airflow-user-survey-responses-2022.csv.zip b/landing-pages/site/static/data/survey-responses/airflow-user-survey-responses-2022.csv.zip new file mode 100644 index 0000000000000000000000000000000000000000..cf88131d0f7cdf295e873d1ff45fd32e213156b2 GIT binary patch literal 25899 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 literal 0 HcmV?d00001