RESTful web services vs Socket Programming para um aplicativo intensivo de dados

Estou construindo um aplicativo Web com Ruby on Rails, que precisa ser altamente escalável. Nesta aplicação, os dados são produzidos por um cliente móvel (aproximadamente 20 bytes) a cada segundo. Todos esses dados devem ser transferidos para um servidor em algum momento, de preferência o mais rápido possíve

Para realizar esta tarefa, desejo que o servidor atue como um serviço RESTful. O cliente pode armazenar em buffer locais (digamos a cada 5 a 30 segundos) e dispará-los como uma solicitação de venda HTTP, onde o servidor pode armazená-los. Acredito que esse modelo é mais simples de implementar e lida melhor com tráfego de alto volume, pois os clientes podem continuar armazenando dados em buffer até ouvir uma resposta do servido

Meu chefe, por outro lado, quer implementar o servidor usando a programação de soquete. Ele acredita que a programação do soquete resultará na transferência de menos dados, o que aumentará a eficiência total do sistema. Não posso discordar nesse ponto, mas acho que, dada a largura de banda moderna, a sobrecarga extra com o HTTP vale a pena. Além disso, acho que tentar manter milhares (ou milhões) de conexões simultâneas com os usuários causará seus próprios problemas e aumentará bastante a complexidade do servido

Honestamente, não sei a abordagem correta para esse problema, então pensei em publicá-lo aqui e obter as opiniões de pessoas muito mais inteligentes do que eu. Eu apreciaria se alguma resposta incluísse os prós e contras da solução propost

Obrigado

Atualiza

Temos agora alguns requisitos adicionais liberados. Primeiro, o cliente móvel não pode carregar mais de 5 GB de dados por mês. Nesse caso, estamos falando de uma mensagem por segundo durante oito horas por dia por mês. Segundo, queremos combinar as mensagens o mínimo possível. Isso é para garantir que, se algo acontecer com o cliente móvel (por exemplo, um acidente de carro), perderemos o mínimo de dados possível.

questionAnswers(4)

yourAnswerToTheQuestion