TL; DR — должен ли простой кеш-кластер для хранения сеансов (с использованием memcache или redis) жить на серверах приложения (то есть вместе с nginx и php) или в своем собственном отдельном экземпляре ec2 (например, elasticache или настроенный экземпляр ec2)?
Я использую Amazon OpsWorks для настройки инфраструктуры своего веб-приложения. Я склоняюсь к реализации кэша сеанса через экземпляры memcache, установленные на самом уровне приложения, а не как собственный экземпляр ec2. Например:
[ Load Balancer ]
/ | \
[ App Layer 1 ] – [ App Layer 2 ] – [ App Layer 3 ] * /w memcache or redis
vs.
[ Load Balancer ]
/ | \
[ App Layer 1 ] [ App Layer 2 ] [ App Layer 3 ]
\ | /
[ Cache Server(s) ] * ElastiCache or custom ec2 /w memcache or redis
Какие плюсы и минусы здесь? Мне последнее решение кажется ненужным, хотя я понимаю, как это может понадобиться веб-сайту с высокой посещаемостью и действительно большим кэшем сеансов.
Есть ли причина, по которой я не хочу запускать Redis или Elasticache вместе с моим стеком сервера приложений nginx/php? Возможно, это затрудняет автоматическое масштабирование или мониторинг производительности?