how to choose backend architecture