Arquitetura apropriada para iOS conectando-se ao banco de dados?

Eu sou um desenvolvedor web que está se movendo para a criação de aplicativos móveis (iOS / Android).

Como tal, o que estou tentando entender é como arquitetar o aplicativo móvel para acessar (postar / atualizar / excluir) dados armazenados em um servidor central.

Para fins de ilustração, digamos que estou criando um aplicativo Receita móvel (chamado "MyRecipeApp"). Algumas receitas que quero compartilhar com outros usuários de receitas do MyRecipeApp e algumas receitas que quero manter privadas para mim.

Para compartilhar receitas, todas as receitas (privadas e compartilháveis) são armazenadas em um banco de dados centralizado (servidor) e o MyRecipeApp acessa esse banco de dados para buscar essas informações.

Como tal, tenho algumas perguntas:

Com MyRecipeApp, como eu acesso o banco de dados? Eu disponibilizo meu banco de dados publicamente para que o MyRecipeApp possa conversar com o banco de dados? Se assim for, isso parece inseguro.

Eu codifico SQL em MyRecipeApp (por exemplo, SELECT * FROM RECEITAS WHERE USER = "John Smith") para acessar o banco de dados para buscar receitas? Se assim for, isso parece inseguro no sentido de que alguém poderia apenas hackear meu aplicativo móvel e alterar o SQL para buscar qualquer informação.

Você envia o nome de usuário / senha do usuário com cada busca para o banco de dados? Em caso afirmativo, como você está criptografando o tráfego entre o banco de dados e o MyRecipeApp.

O que mais eu não estou pensando em como eu deveria estar arquitetando um aplicativo móvel?

questionAnswers(1)

yourAnswerToTheQuestion