In this blog, I am going to share my views on DevOps and its implementation in any Dynamics 365 CE project. This should be an interest for those who want to implement DevOps in the new Dynamics 365 CE implementation as well as those who want to migrate to the DevOps way of working for ongoing implementation/support projects.
Being Agile and nimble in this digital era has become a necessity and it is no more fancy or nice to have a regime. DevOps adoption should not be looked at as an overhead to an organization as it will fuel multiple aspects in the progress and growth of an organization. Few of the major benefits that DevOps addresses are highlighted below table.
|Early Business Value Realization||– Organization/applications to adapt to new business models |
– Adopting fast-changing market, Measure of Progress
|Time to Market||– Enabling IT to match the speed of Business|
– Increase customer satisfaction by rapid, continuous delivery of business ideas
|Collaboration & Engagement||– Close Co-operation, Self-Organizing Agile Teams ensuring Ownership Transparency|
|Automation||– Automation enhances efficiency and enables the foundation for robust and qualitative delivery and fuel DevOps Engine|
The above benefits are in general to any organization, however, it also provides benefits to the Ways of Working (WoW) in general which are highlighted below
- Minimal Handoffs – By establishing new Ways of working (WoW) and with the change, AD/AM teams working together, the hand-offs between the teams for sharing of information & close collaboration, enables informed decision faster
- Lean Dynamic Prioritization – For applications operating in DevOps, one of the key success factors is to be able to balance between the critical needs and business demands. Lean dynamic prioritization process keeps stability of the applications intact while still delivering business value
- Lean Change Approval Process – In large enterprises Change Approval Board (CAB) is reactive and is invoked during the fag end of the change deployment into production systems. An intelligent CAB process called “Codified CAB or Greenlight APIs” that collects information about features/user stories and the progress of that story. Based on the progress and heuristics the Codified CAB determines dynamically whether should be “straight through” or should it be taken with manual CAB.
- Intelligent data Analytics – Collect & Analyze data intelligently based on the type of the seasonality, events etc. and provides data analytics helping teams to identify, resolve/pre-empt issues from a single source of truth.
Typical DevOps KPIs which are generally measured:
Based on the experience across multiple customer engagements, below are the KPIs that are generally measured in DevOps based delivery:
|Efficiency|| – Lead time to deploy: Time is taken from “Story Commit” to “release into production” |
– Deployment frequency
– Velocity improvement for each DevOps team
– # of releases per Sprint
– Daily Team Burndown: Committed v/s Actual
|Quality|| – No deployment failure till date. |
– Accepted Use Stories
– # of incidents arising out of change
– Test Coverage: Number of test cases / scenarios which are covered during testing
– Dev v/s Ops Ratio
|Cost|| – Cost spent in conducting various testing as well as the impacted indirect failure & correction costs |
– Improvement in effort to develop and deploy changes
|Customer Experience|| – New Product / Services Launched: Number of new products, services and/or features launched |
– Customer Base / User Growth Rate: Improvement in numbers of customers using software/services
|Others|| – DevOps team attrition rate |
– % of test cases automated
– # of innovations & continuous improvements delivered in DevOps mode
What are DevOps Practices?
The core practices are also the main steps performed for any DevOps implementation. Following are the main practices that form the DevOps
- Continuous Planning
- Continuous Build & Continuous Integration
- Continuous Testing
- Continuous Delivery
- Continuous Monitoring
Team structure in DevOps way of working
The right team structure is the important aspect to realize the right potential in the DevOps way of working. Following are the important criteria to be considered for DevOps team structure formation
- Number of DevOps teams
- Number of team members in each DevOps team
Here are some of the key team structures followed in the majority of the Dynamics 365 CE projects
- Single DevOps team for all business line
Teams can be organized in such a way that a single DevOps team can handle the entire backlog. Development Engineer and Operations Engineer has shared the responsibility of working on user stories from the backlog. Along with the user stories, the operation team will also focus on non-backlog work items such as bugs and issues in a production environment.
- Multiple DevOps Team per business line
DevOps teams can be organized separately based on the functionality to work in a more autonomous way. This is the preferred way when there are separate Apps designed for Sales, Service and other functions. This will give the flexibility to develop and deploy new functionality in each App without being dependent on other team development.
While comparing the above two team structures, both the options have pros and cons. Please see the below the table with a high-level comparison
|Single DevOps Team||Multiple DevOps Teams|
|Less Complex as to manage single team Maintenance efforts are less as there is only single backlog to manage Dynamics 365 solution deployment in the higher environment is technically easier with a single solution but can be challenging in some of the committed features are not developed on time and it may delay the entire release||More complex compares to single team per business lines Maintenance efforts are high as to manage multiple backlogs and track the dependencies of the development across teams Dynamics 365 solution deployment in the higher environment is technically difficult as to manage the solution component dependency across teams and solutions. But this approach gives the flexibility to ship only those features which are ready to be deployed in production.|
Separate DevOps team with the respective backlog for each team is the preferred way of working but no one size fits all, so team structure might vary but the thought process would remain the same.
Tools and Technologies for DevOps implementation
Tools play an important role in any DevOps implementation. With the right set of Tools, the DevOps process becomes efficient and autonomous. Below are few guiding principles which need to be considered while considering tools for DevOps.
- Leverage Native Tooling as much as possible – Use tools available out of the box for the applications rather than exploring alternative toolset from the market.
- Fit for Future – Future roadmap of the selected tool need to be considered into account while selecting them.
- Use tools with abundance in talent – Each tool deployment will come with the required skills to operate and hence skills/competency required to operate the tool also need to be considered while considering selection of the tool.
User Story logging and tracking
|Development – Custom Code||Visual Studio|
|Code & Configuration Quality Check|
|Continuous Testing||UI & Regression Testing|
|Continuous Deployment|| |
Deploy Configuration and Customization
| Power Platform Build Tools Tasks –|
|Continuous Monitoring||Application Monitoring|| |
How much can we Automate?
Automation is the key advantage of the DevOps way of working. With the right set of tools, major DevOps practices can be automated, which will ensure faster and reliable project execution.
- From the continuous Integration perspective,
- Power Platform Build Tools offers DevOps tasks Power Platform Checker to ensure the configuration and customizations are as per the Microsoft recommendation and following SDK guidelines.
- Unit Testing can also be automated for custom code using third party tools such as FakeXRMEasy.
- Continuous Delivery tasks can also be automated with Power Platform Build Tools such as
- Power Platform Export Solution – To export the solution with configuration and customization from Dynamics 365 CE source environment
- Power Platform Import Solution – To import the solution with configuration and customization to Dynamics 365 CE target environment
- Continuous Testing is also automated with EasyRepro which facilitate the automated UI testing specifically on the Dynamics 365 projects. EasyRepro can run in Azure DevOps pipeline to test the major functionalities after deployment to ensure good deployment quality.
- Dynamics 365 environment can be monitored with Power Apps CDS Analytics to view the performance as well as application usage. Detailed monitoring of each application page load performance can be done by feeding the logs to Azure Application Insights.
Apart from the above standard tasks and tools, many tasks can be automated with PowerShell scripts such as database backup before deployment, restore database etc.
We can achieve a lot of automation with DevOps implementation in Dynamics 365 projects. But in the case of parallel development with multiple teams/developers working in the same project, manual efforts would be required to merge the customization, especially for the common component changes.
How to become DevOps Organization for Dynamics 365 project?
As we understand the benefits of the DevOps implementation for Dynamics 365 projects, let us see how to move towards the DevOps way of working.
A non-disruptive, yet impactful way of adapting your team for DevOps methodology for the Dynamics 365 project is to follow the below maturity journey of application to DevOps.
Implementing DevOps is about optimizing and improving the project execution to build new features, maintain existing applications with the development and operation team working together with the right set of tools. For any Dynamics 365 CE project, DevOps implementation should be mandatory as it is not difficult to implement, also with the right set of tools and accelerators benefits can be realized quickly.