I realize that with NiFi, as their doc defines it, "continuous improvement occurs in production". So this doesn’t lend itself to be used as a traditional development tool. However for the project I’m working on it’s been decided that this is the tool we’ll be using, so I'd rather not debate the merits of this as I realize there are going to be some issues.
For example if I push changes into an existing environment (from staging to production) and there were live edits in the destination, they are going to get overwritten. So I have questions on how to organize the development life cycle.
- Is it possible to merge changes which were done by multiple developers in parallel (merge exported xml template files)? I’m guessing merging any significant changes could be difficult but have not attempted it.
- How to manage versioning changes? I’m assuming you could export your entire configuration as a template and check that into version control?
- How to deploy a flow to a different server? Can you just deploy a stock NiFi deployment and then update it from your exported template (as mentioned above) using the NiFi REST API?
- How to mange deploying to different environment that might have different configuration? Would you have to update the template XML file? Or can I pull it in dynamically from something like Zookeeper?