Я могу комментировать только технические аспекты (не стоимость, удобство обслуживания и т. Д.)
Не упоминается, является ли выделенный экземпляр физическим блоком или просто большой виртуальной машиной. Если приложение генерирует много обращений к MongoDB или Redis, тогда разница будет весьма значительной.
В случае виртуальной машины стоимость операций ввода-вывода, планирования ОС и системных вызовов выше. Эти элементы, как правило, представляют собой важную часть затрат на производительность эффективных удаленных хранилищ данных, таких как MongoDB или Redis, и плата за виртуализацию для них выше.
С системной точки зрения я бы не стал размещать MongoDB и Redis / Play в одном окне, если ожидается, что база данных MongoDB будет больше доступной памяти. MongoDB отображает файлы данных в памяти и полагается на ОС для выполнения обмена памяти. Он предназначен для этого. Других процессов нет. Обмен, вызванный MongoDB, будет иметь катастрофические последствия для времени отклика Redis и Play, если они все находятся на одной коробке. Так что я бы хотя бы отделил MongoDB от Redis / Play.
Если вы планируете использовать Redis для кэширования, имеет смысл хранить его в том же окне, что и сервер Play. Redis будет использовать память, но низкий процессор. Play будет использовать процессор, но не так много памяти. Так что, похоже, хорошо подходит. Кроме того, я не уверен, что это возможно из Play, но если вы используете сокет домена unix для подключения к Redis вместо обратной петли TCP, вы можете увеличить пропускную способность примерно на 50% бесплатно.