I am having a difficult time in deciding the best approach for organizing the Solutions and deployment approach.
I need to manage the source control and have rollback options if something goes wrong in Prodcution environment.
I read lot of microsoft documentation with respect to this.
My takeway points from the documentation are as below
1. Best approach to deploy a solution is through Upgrade option. Deploying via patches is not recommended.
But I have 2 bottlenecks in this approach. How do we rollback the changes to the previous version of solution if something goes wrong after deployment? I have to deploy all the components of a solution to production even for minor update to a single component within the solution, which can bring some new bugs.
2. Solutions can be created based functional( like one solution for sales and one solution for service) or component type wise (one solution for tables, one solution for flows, one solution for apps)
What would be best approach if some tables are being shared by multiple apps?
I would higly appreciate somelight on the best practices.
For the rollback I recomend you to export and unpackage the solution into Devops Repository. With that you can have you controll version and in case that you need to do a rollback you can Package and Import to the environment.
I think the 2 approachs are good but I prefere to create a solution by components.