Ваш начальник и вы оба правы, и правильный выбор зависит от требований бизнеса: как скоро вам придется масштабироваться.
Если вы начинаете запускать новую услугу и боитесь, что не сможете управлять миллионами новых пользователей, которые у вас появятся в течение 3 месяцев, тогда @ Brian-Kelly прав - это преждевременная оптимизация. OTOH, если вы Twitter и создаете новый сервис на основе определения местоположения, то масштаб - это основная проблема, с которой вам следует иметь дело. Если вы где-то посередине, тогда это ваше дело - сделайте выбор.
Создание веб-службы RESTful с Rails является быстрым и простым, и вызов его с мобильного клиента также прост (хотя буферизация на стороне мобильного клиента требует большего количества кода). Это главное (и единственное имхо) преимущество этого подхода в вашем случае - и это огромное преимущество.
Однако HTTP добавляет много накладных расходов. Если ваши сообщения имеют длину 20 байт, на самом деле издержки в несколько раз превышают полезную нагрузку на сообщение. Это означает большую пропускную способность сети и больше процессорного времени. Да, вы можете добавить больше серверов, чтобы справиться с этим, но это будет стоить вам - потребуется несколько серверов для выполнения работы, достижимой одним.
Если ваша служба просто получает очень короткие сообщения от мобильных клиентов, и , если все в порядке для потери случайного сообщения, то я бы подумал об использовании UDP. Ваши 20 байтов должны поместиться в одном пакете. Это значительно экономит по сравнению с несколькими обходами TCP для установления соединения, а затем для отправки данных.
Еще одна вещь, о которой следует помнить, когда вы рассматриваете вопрос о том, является ли оптимизация преждевременной в вашем случае, это мобильные клиенты: вносить изменения в ваш сервер несложно, но выдвигать новую версию, которая использует более оптимизированный протокол обмена сообщениями, на миллионы устройств. в поле "не тривиально.
Обновление , после обновления вопроса:
5 ГБ в месяц вполне достаточно. Сообщение каждую секунду в течение месяца означает 86 400 * 30 = ~ 2,6 млн сообщений.
Это позволяет вам тратить почти 2 КБ за сообщение. Не проблема, если ваша полезная нагрузка составляет ~ 20 байт ...
Что касается вашего предпочтения не объединять сообщения, чтобы не потерять какую-либо информацию, вы должны спросить себя, сколько сообщений можно потерять. Может быть, целая минута - это слишком много, но 10 секунд - это не проблема? клиент, движущийся со скоростью 60 миль в час, будет двигаться только 0,16 миль за 10 секунд.
В любом случае, если это система реального времени, которая должна спасти жизни, подумайте о проведении некоторого тестирования в реальных условиях (мобильный клиент в дороге). Это единственный способ определить, как ведет себя мобильная сеть (ы) - какие задержки вы можете ожидать, как часто пакеты теряются, поступают вне последовательности и т. Д.