Qual a melhor forma de criar e acessar dados em BD remoto?

Pessoal, sou novo nessa área de programação para Android e gostaria obter algumas dicas. Por exemplo, eu quero que o usuário possa se cadastrar criando uma conta no aplicativo ou por meio do facebook ou google. Para cadastrar adicionando entradas em um banco de dados remoto, eu li que preciso usar um web service. Se essa for a única forma mesmo, eu pergunto qual a melhor forma de criar um web service? Seria com Rest, SOAP, JSON…? Vi em alguns tutoriais, que criavam o web service em php e fiquei confuso. Alguém pode me dar uma luz?