I wanted to get people's input on the best practices for setting up a project in terms of application structure, deployment, IIS setup, etc.
Currently, I am using CMS, Commerce, and Find in a solution. I have the deployment happening with VSTS (Visual Studio Team Services) and deploying automatically to our on-prem environment. CMS is installed as a root application, and commerce is installed as a subapplication within the CMS. One issue I have had with this setup is that the config files are inheriting from each other, which has caused me to add a throughout my CMS web.config, which has also caused issues with updating packages or running the Update-EpiDatabase.
Also, what type of database setup do you have for development for a team environment? We are using a unique database per developer stored on a separate location, but this has become difficult to maintain as it requires having an admin do changes for us versus being able to change things locally.
I would appreciate any helpful ideas to make things better.
Just some input on how we do things with developement and setup for db:s.
For configs we most of the time use transformations. Either we use transformations directly in the solution, standard .net stuff. If we have octopus as deploytool we use that instead for diffrent environment.
Regarding the setup of commerce I would suggest you to have a look on how epi has done their installation in the demo package like the QuickSilver Template, https://github.com/episerver/Quicksilver
Regarding db for development we most of the time have a local db for developers. This force the developers to know about db and also we do not have to waste time getting help from someone responsible for the db servers. This is how we do it when we have a new project.
When working with maintenence we have a copy of the production db and assets on a shared server. This is cause of the fact that sometimes there is issues that is needed to be fixed asap and getting copys of db and such take time. This db server is administrated by developers though.
I would say there is not best practice since it depends on the project and the customer. Some customers is easy to work with others do not allow deploy tools like octopus and therefore it is more complicated to handle configs.
When working with the local db's, did you set up separate dbs for both commerce and CMS projets, or did you point the commerce db to the CMS app_data folder?
As a follow up question, how would the setup for commerce and CMS for IIS work locally if I were to make a new branch within source control. I would want them to be easily accessible so I didn't have to change any config settings each time I created a new branch. Basically, I am looking for a solution where you can just get the latest code and run it without having to do any other setup (or at least minimal setup) to get the project to work.
Using git so branching has never been any problem. For the db we use one for commerce and one for the cms.
Found this blog regarding setup of commerce and cms that might help: http://www.smith.co/blog/2016/December/Episerver-commerce-setup