Bird
Raised Fist0
Apache Airflowdevops~5 mins

Multi-environment deployment (dev, staging, prod) in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of having multiple environments like dev, staging, and prod in Airflow deployment?
Multiple environments help separate development, testing, and production workflows. This prevents errors in development from affecting live data and allows safe testing before production deployment.
Click to reveal answer
intermediate
How can Airflow configurations differ between dev, staging, and prod environments?
Configurations like database connections, executor types, and logging levels can be set differently for each environment to match their needs, such as using a LocalExecutor in dev and a CeleryExecutor in prod.
Click to reveal answer
intermediate
What is the role of environment variables in managing Airflow multi-environment deployments?
Environment variables allow dynamic configuration of Airflow settings per environment without changing code. For example, setting AIRFLOW__CORE__SQL_ALCHEMY_CONN differently for dev, staging, and prod.
Click to reveal answer
intermediate
Why is it important to use separate Airflow metadata databases for each environment?
Using separate metadata databases keeps workflow states isolated. This avoids conflicts and data mix-ups between dev, staging, and prod, ensuring accurate monitoring and execution.
Click to reveal answer
advanced
Name a common strategy to deploy Airflow DAGs differently across environments.
A common strategy is to use separate DAG folders or branches in version control for each environment, or to use conditional logic in DAG code to behave differently based on environment variables.
Click to reveal answer
Which Airflow component should be isolated between dev, staging, and prod environments?
AMetadata database
BScheduler UI theme
CTask retry count
DPython version
What is a recommended way to change Airflow configurations per environment?
AUse environment variables
BRestart Airflow without changes
CChange Airflow source code
DHardcode values in DAG files
In a multi-environment setup, which executor might be used in production for scalability?
ALocalExecutor
BCeleryExecutor
CSequentialExecutor
DDebugExecutor
Why use a staging environment in Airflow deployment?
ATo run production workflows directly
BTo develop new Airflow features
CTo store logs permanently
DTo test workflows before production
How can DAGs be managed differently across environments?
ABy changing Airflow core code
BBy disabling the scheduler
CUsing separate DAG folders or branches
DBy using the same DAGs everywhere without change
Explain how environment variables help manage Airflow configurations in dev, staging, and prod.
Think about how you can change settings without editing DAG files.
You got /4 concepts.
    Describe the benefits of having separate metadata databases for each Airflow environment.
    Consider what would happen if dev and prod shared the same database.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main reason to use separate environments like dev, staging, and prod in Airflow deployment?
      easy
      A. To run all tasks faster by using multiple servers
      B. To reduce the number of DAGs needed
      C. To keep development, testing, and production work isolated and safe
      D. To share the same database for all environments

      Solution

      1. Step 1: Understand environment separation purpose

        Separate environments prevent changes in development or testing from affecting production stability.
      2. Step 2: Identify the correct purpose in options

        Only To keep development, testing, and production work isolated and safe mentions isolation and safety, which matches the main reason.
      3. Final Answer:

        To keep development, testing, and production work isolated and safe -> Option C
      4. Quick Check:

        Environment isolation = Safety [OK]
      Hint: Remember: separate environments protect production [OK]
      Common Mistakes:
      • Thinking all environments share the same database
      • Believing environments speed up task execution
      • Assuming fewer DAGs are needed with multiple environments
      2. Which of the following is the correct way to specify different Airflow configurations for dev and prod environments?
      easy
      A. Set environment variables like AIRFLOW__CORE__SQL_ALCHEMY_CONN differently per environment
      B. Run Airflow without any configuration files
      C. Use the same airflow.cfg file for all environments
      D. Use a single database for all environments

      Solution

      1. Step 1: Understand configuration methods in Airflow

        Airflow supports environment variables to override settings per environment.
      2. Step 2: Identify the correct method for environment-specific configs

        Set environment variables like AIRFLOW__CORE__SQL_ALCHEMY_CONN differently per environment correctly uses environment variables to set different database connections per environment.
      3. Final Answer:

        Set environment variables like AIRFLOW__CORE__SQL_ALCHEMY_CONN differently per environment -> Option A
      4. Quick Check:

        Env vars = environment-specific config [OK]
      Hint: Use env vars to separate configs per environment [OK]
      Common Mistakes:
      • Using the same config file for all environments
      • Not setting database connections separately
      • Ignoring environment variables for configs
      3. Given this command to start Airflow in the staging environment:
      export AIRFLOW_HOME=/opt/airflow_staging
      export AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://user:pass@staging-db:5432/airflow
      airflow webserver

      What will happen when you run this command?
      medium
      A. Airflow will start using the staging database and configs in /opt/airflow_staging
      B. Airflow will start using the production database and default configs
      C. Airflow will fail because environment variables cannot be set this way
      D. Airflow will start but ignore the SQL connection string

      Solution

      1. Step 1: Analyze environment variables set before starting Airflow

        Setting AIRFLOW_HOME changes the config directory; setting AIRFLOW__CORE__SQL_ALCHEMY_CONN changes the database connection.
      2. Step 2: Understand Airflow behavior on startup

        Airflow uses these environment variables to load configs and connect to the specified database.
      3. Final Answer:

        Airflow will start using the staging database and configs in /opt/airflow_staging -> Option A
      4. Quick Check:

        Env vars control config and DB connection [OK]
      Hint: Env vars before airflow start set environment [OK]
      Common Mistakes:
      • Assuming Airflow ignores env vars
      • Thinking Airflow uses production DB by default
      • Believing env vars cannot be set inline
      4. You deployed Airflow for prod but accidentally used the dev database connection string in the config. What is the best way to fix this?
      medium
      A. Change the airflow.cfg file in the dev environment
      B. Delete all DAGs and restart Airflow
      C. Run Airflow without any environment variables
      D. Change the AIRFLOW__CORE__SQL_ALCHEMY_CONN environment variable to the production database and restart Airflow

      Solution

      1. Step 1: Identify the incorrect database connection setting

        The problem is the wrong database connection string used in production.
      2. Step 2: Correct the environment variable and restart Airflow

        Updating AIRFLOW__CORE__SQL_ALCHEMY_CONN to the correct production DB and restarting applies the fix.
      3. Final Answer:

        Change the AIRFLOW__CORE__SQL_ALCHEMY_CONN environment variable to the production database and restart Airflow -> Option D
      4. Quick Check:

        Fix DB connection env var and restart [OK]
      Hint: Fix DB env var, then restart Airflow [OK]
      Common Mistakes:
      • Deleting DAGs unnecessarily
      • Ignoring environment variables
      • Changing dev configs instead of prod
      5. You want to deploy Airflow for dev, staging, and prod on the same server. Which approach ensures proper isolation and avoids conflicts?
      hard
      A. Run one Airflow instance and switch configs manually before each run
      B. Run three separate Airflow instances with different AIRFLOW_HOME and database connections
      C. Use the same database but different DAG folders for each environment
      D. Run Airflow only in production mode and test DAGs there

      Solution

      1. Step 1: Understand isolation needs for multiple environments on one server

        Each environment needs its own config directory and database to avoid conflicts.
      2. Step 2: Identify the correct deployment approach

        Running separate Airflow instances with distinct AIRFLOW_HOME and DB connections ensures isolation.
      3. Final Answer:

        Run three separate Airflow instances with different AIRFLOW_HOME and database connections -> Option B
      4. Quick Check:

        Separate instances + configs = isolation [OK]
      Hint: Use separate AIRFLOW_HOME and DB per instance [OK]
      Common Mistakes:
      • Switching configs manually risks errors
      • Sharing one database causes conflicts
      • Running only production ignores testing needs
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard