In his Coding Gnomes video course, “Elixir for Programmers”, Dave Thomas contends that it makes sense to have a separate Phoenix app for each type of connection (eg, HTTP, Channel). This appeals to me, from the point of view of cohesion, modularity, simplicity, etc.
However, I’m a bit concerned about the impact of having multiple copies of the Phoenix support code. One issue has to do with file storage: each copy will take up thousands of directories and files. Assuming that all of the copies are stored in the same Git repo, their blobs will be shared. So, that’s a minimum of three copies of the support code, adding a lot of bulk and complexity.
I also wonder whether this approach would affect the memory footprint. How much of the Phoenix support code would be shared in the running image? In summary, what issues are involved in running multiple copies of Phoenix?