Best practices for an Umbrella app with many payment api apps

I would create a single app for payments in the “umbrella” project structure, and then one app for the web interface. I wouldn’t separate the payment into several apps, since I don’t see any reason to …

I only separate an app if one of the following are “true”:

  • the app needs to be deployed in several separate releases, for example, “metrics” app which exposes prometheus metrics might be deployed both with a “database” app, and with a “web” app
  • the app is being depended on by several other apps, for example a “repo” (as in ecto repo) app which is used to connect to the same database from a “crawler” and from a “web” apps (which is quite similar to the previous point now that I think about it)
  • the app is being worked on independently by someone else

Separating code into several apps for any other reason I consider a bit superfluous … Modules can do just as good but with less ceremony.