I am very sceptic with those roles you add here. I'm afraid that, over time, we will either add a lot of roles with the same implementation, or use those roles for things that do not completely fit their name. 

For example: the advanced search currently has 2 implementations, one with PostgreSQL and one with elasticsearch. The ``Search`` service _should_ fall into the ``search`` role. However, what if we want to use the psql implementation of that ``Search`` service instead of the ES one? (That happened in the recent past. ) If we say the ``search`` role is using psql, then we break ``SuperSearch``, that only has an elasticsearch implementation, and that would also fall into the ``search`` role. 

Thus, should we have a ``search`` role (for advanced search) and a ``supersearch`` role (for all things supersearch-related)? Or should we say, in the ``service_overrides`` option, that ``Search`` uses the ``database`` role? None of those options are terrible as such, but I am afraid that over time this will become a huge mess, compared to the simplicity of naming our external resources.