Possível duplicação:
Gravando aplicativos da Web "sem servidor"
Então, digamos que eu vou construir um clone do Stack Exchange e decido usar algo como o CouchDB como minha loja de back-end. Se eu usar a autenticação interna e a autorização no nível do banco de dados, existe algum motivo para não permitir que o Javascript do lado do cliente grave diretamente no servidor CouchDB disponível ao público? Como esse é basicamente um aplicativo CRUD e a lógica de negócios consiste em "Somente o autor pode editar sua postagem", não vejo muita necessidade de uma camada entre o material do lado do cliente e o banco de dados. Eu simplesmente usaria a validação no lado do CouchDB para garantir que alguém não esteja inserindo dados de lixo e para garantir que as permissões sejam definidas corretamente, para que os usuários possam ler apenas seus próprios dados _user. A renderização seria feita no lado do cliente por algo como AngularJS. Em essência, você pode apenas ter um servidor CouchDB e um monte de páginas "estáticas" e pronto. Você não precisaria de nenhum tipo de processamento no servidor, apenas algo que pudesse servir as páginas HTML.
Abrir meu banco de dados para o mundo parece errado, mas nesse cenário não consigo pensar no porquê, desde que as permissões sejam definidas corretamente. Isso vai contra o meu instinto como desenvolvedor web, mas não consigo pensar em uma boa razão. Então, por que isso é uma má ideia?
EDIT: Parece que há uma discussão semelhante aqui: Gravando aplicativos Web "sem servidor"
EDIT: Discussão impressionante até agora, e agradeço o feedback de todos! Sinto que devo adicionar algumas suposições genéricas em vez de chamar especificamente o CouchDB e o AngularJS. Então, vamos supor que:
- O banco de dados pode autenticar usuários diretamente de seu armazenamento oculto
- Toda a comunicação com o banco de dados aconteceria por SSL
- A validação de dados pode (mas talvez não deva?) Ser tratada pelo banco de dados
- A única autorização com a qual nos preocupamos, além das funções de administrador, é que alguém só pode editar sua própria postagem
- Estamos perfeitamente bem com todos que conseguem ler todos os dados (EXCETO registros de usuário que podem conter hashes de senha)
- As funções administrativas seriam restringidas pela autorização do banco de dados
- Ninguém pode se adicionar a uma função de administrador
- O banco de dados é relativamente fácil de dimensionar
- Há pouca ou nenhuma lógica de negócios verdadeira; este é um aplicativo CRUD básico
DELETE FROM ImportantData;