I will try to cover my understanding of CI/CD and ALM, and explain what they mean to me. I know I don’t follow every single best practice, but what I do can be done in small SMB scale. This means that anyone can do this no mater what skill level👌
I have copied most of my information from 2 different blogs:
https://develop1.net/public/post/2021/04/01/connection-references-with-alm-mind-the-gap <- Scott Durrow
https://benediktbergmann.eu/2020/02/10/cds-basic-alm-process/ <- Benedikt Bergmann
These 2 consultants are far more experienced in CI/CD ALM than I am, but I needed to put my own words to the topic for my own understanding to become better.
ALM – Application Lifecycle Management
The basics of ALM, is that the product is never complete. There will always be changes needed/requested. Especially when choosing an online product like Dynamics/Power Platform you have to acknowledge that the platform is in constant change, and you need to change with it. The following diagram would describe this process.
It doesn’t matter if you are Enterprise or SMB, you will always have some type of lifecycle like this. The difference is how many of the “hats” single people have in the smaller organizations.
Continuous Integration – Continuous Deployment
The term CI/CD is not new in terms of general product development, but gaining access to a piece of software like DevOps really helps a normal user like myself follow some of the rules set for CI/CD.
So the main point of the term(s) is being able to develop the application continuously while trying to maintain 100% uptime. Ideally you deploy new settings to the system without ever planning downtime for the users typically during the weekend etc.
Advanced setup (not covered)⛔
The dev environment is the environment where everything happens. All the pushes of different code/config etc etc, and all types of extensions. Once everything is done, you move it over to other environments (Test/QA/Prod) or whatever you want to name them.
All depending on the size of your implementation/organization, you might consider having the following setup.
Simple setup (covered) 👌
I will be writing about the simple process, and covering what I do for the smaller implementations. Implementations that should in many ways be considered a bare minimum. I will only be using 2 environments for this purpose (Dev, Prod). There is no need to include a test environment if the organization doesn’t have people to test.