I’m coming from a more software-engineering background.
So my view leans more towards how enterprises and bigger teams can use prefect on scale - but these are also well paying customers, aren’t they? :)
So I’ve written down of my feedback that you can share with the prefect team regarding using prefixing to make the distinction between test and production environments; I hope it can help you guys to understand the view of me/us a bit better. From our perspective, the challenges are:
1) One must now in advance what entities exist and what makes them unique.
For example, are tasks unique by their name or is it possible to have project-test/task1 and project-production/task1? Same for everything else (secrets, flows, tags, ...).
2) If you get it wrong or you start with a production environment only and want to add a test environment later, you are now in the situation that you have to refactor things after the fact, or you will have
flow1
and
flow1-test
. Even worse so if you have flows that already have
test
in their name but are production flows. They would be renamed to
flow1-test-test
which can be quite confusing.
3) Code quality is higher, because instead of just configuring in CICD “deploy this code to machine X or Y” I know have to do use prefixes everywhere in my code, such as
get_secret(f”{environment}-secretX”)
.
4) Testing anything that goes beyond things that can be prefixed is not possible. Imagine I want to give someone training of having administrative permissions on prefect, before I allow them to actually do that in the production environment. There is no way for me to do that, because I cannot give them administrative permissions for only things that are prefixed with “test”. Compliance policies might actually make it impossible to use prefect for these reasons.
5) Last but not least: standardization. The perception that people will have of Prefect will also depend on how easy it is to use it over time.
If every company has their own custom way of doing testing, then this will hurt people’s ability to switch companies/jobs and get started quickly, because each time they would have to learn the company’s specific way of doing things. To some degree this is expected, but something like “test environment” is a solved problem in the industry, so we can avoid a lot of friction/overhead here.
For that reason, when you look at most commercial software products, they almost always allow for a distinction between environments. I would love to see prefect adopt both permissions/role management as well as some more streamligned approach to testing (however it looks like). The potential is huge!