rest api удобнее:
- api скрывает детали реализации. Хранилище может быть подменено другим, более производительным, архитектура приложения может сильно меняться по кускам
- как следствие, отдельные части приложения могут быть написаны с применением совершенно разных технологи в зависимости от требований к производительности например. Узкие места можно реализовать на go/c++ и т.д.
Если же части приложения крайне интенсивно общаются между собой, бинарные протоколы будут эффективнее за счет большей пропускной способности и меньших накладных расходов (маршализация вместо сериализации в текстовые форматы).
Опять же узкие места можно попросить общаться через бинарные протоколы (очереди сообщений например, кеши и прочее) а что-то - через rest. сильно от задачи зависит и от целей которые преследуют разработчики.