Really similar to the pipelines that I engineer/manage at my current company. Although we have our Airflow on kubernetes.
One optimization though is separating your loading tasks from compute tasks. This makes the pipeline more resilient and makes backfilling/reprocessing less of a headache.