Thanks Vikram.

>
> I think I understand your concept of team very clearly and the concept of
> "team configuration".
> I did find two "per-team configuration principles" somewhat at conflict
> though:
> 1. *Each team configuration SHOULD be a separate configuration file or
> separate set of environment variables, holding team-specific configuration
> needed by DAG file processor, Workers and Triggerer*
> 2. In multi-team deployment, Connections and Variables have (nullable)
> team_id field - which makes them either belonging to a specific team or
> "globally available".
>
> Yes. That one will need a bit of clarification, It's been changed from the
original design where connections and variables were totally separated -
and point 1) is a bit of left-over. I will rephrase it slightly to add
(with exception of common configuration defined at "global level" - that
was a result of other comments where common connections and variables
shared between teams were seen as an important feature, also original
design assumed no connection and variables in database, which has been
changed after we moved to Airlfow 3- only, because now the database
structure modification is all but "given" by other changes.


> Personally, I would have thought that you would want to standardize on
> either explicit configuration required or implicit allowed throughout
> rather than mixing. But, you probably have reasons for why a mixed approach
> is suitable here.
>

Yes. Those comments made me think this is a pretty valid case for the
"mult-team" case. If we did multi-tenant, clear separation would be indeed
better. But with multi-team, I can easily imagine some shared connections
and variables that are "organisation" standard and shared between teams
(Say SMTP connection that is used by all teams to send messages and
notifications).

>
>
> I assume that the DAG Parsing per-team environment is where you see the
> need to integrate with AIP-66 (DAG Bundles ...)
> Is that correct?
>
>
Correct. Also as discussed with AIP-66 initial proposal from Jed - "per
bundle" environment based exclusively on `pip install --target` zipped
archive has many technical traps and does not define the "management" part
of it and "security scope". So here the difference is that both -
separation of dag parsing per team (separate DAG file processor) and common
environment (dependencies) for DAG parsing for team can be still defined
and maintained by the "Team Deployment Manager". And the environment
separation can be done in various ways - same as today (separate image,
separate virtualenv) and it can be done in a completely separated security
perimeter from other teams. Basically - it makes it easy to make sure that
parsing and execution of DAGs belonging to the same team can have the same
dependencies and environment (potentially different from dependencies and
environment of the other teams).

In a way it is very similar to what has been already proposed (but is
abandoned now) in AIP-46 (Runtime isolation for airlfow tasks and dag
parsing) -
https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-46+Runtime+isolation+for+airflow+tasks+and+dag+parsing
that has been proposed by Ping Zhang, but unlike AIP-46 it does not make
any assumptions on technology used (virtualenv, images) how the environment
is prepared. The only assumption is that each team has it's own, separate
environment managed by the Team Deployment Manager.

J.

Reply via email to