CI CD Challenges - RussSmi/IntegrationServices GitHub Wiki
Having spoken to varous customers regarding the CI/CD process using some of the integration services it became apparent that some guidance would be beneficial. There were a couple of key lessons to be learned:
- Customers were confused about the logic app build and deployment process and perceived that its not possible to do CI/CD
- ARM template deployments were challenging across different environments, particularly if these environments were in different subscriptions or AD's
After doing a deployment project for a customer that touched many Azure techonologies including: Logic Apps, Functions, Storage, Automation etc I though it best to share the findings and update the Integration Services demo so that it also demos CI/CD best practices.
A summary of the key learnings are as follows:
- Think about DevOps & CI/CD from project kick off.
- Think Microserevices in all technologies. A monolithic logic app/function is just as difficult to maintain as a monolithic legacy application.
- Do Logic App deveopment in Visual Studio. No exceptions. Visual Studio Code is not there yet but will be soon. The key reason for this is that no other process generates completely standalone ARM with all the required parameters. Visual Studio does.
- With logic apps avoid having multiple developers working on the same logic app at the same time. GIT style merging does not work well and causes pain. Although the logic code is basically just JSON, it can get reordered each time it is saved.
- Use Terraform, set up the shared state right from the start.
- Do as much in terraform as possible, it is under source control, easy to read, part of the CI/CD process.
- But somethings do not work well, so call the Terraform from Azure DevOps pipelines and mix and match when you need to.