What are lessons-learned and best-practices for version control of modules and use with production shiny apps?
It seems to me that the "most proper" method would be to use packages for everything: combine closely-related modules into one package, then reference that package within the shiny app; perhaps even follow Mango's (Mark Sellors') discussion on Packaging Shiny applications: A deep dive for the app itself.
But this is not without difficulty, as non-CRAN package management can be non-intuitive or non-trivial for some enterprise installations (perhaps remedied by RStudio's Package Manager, I have no experience with it). I tend to use a local repo for my RSC server, but because of needing to pierce two firewalls to get to it, copying files there takes extra steps that are not easily generalized.
Compromises/alternatives include much simpler directory/repo structures, perhaps just an app.R and my_module.R in individual repos. However, module dependency then needs to discuss git submodules or git subtree (comparison at Git subtree: the alternative to Git submodule at Atlassian).
For those who have tried extensive use of packages (the app and/or the modules), what are your lessons learned? Is using packages (with larger less-trivial apps) beneficial enough? Is there anything that is prohibitively difficult in using packages? ... in not using packages?