aws - Redis: Amazon EC2 vs Elasticache
cache amazon (4)
Como soy perezoso, elegiría Elasticcache sobre EC2 para poder evitar algunos de los aspectos operativos de administrar una instancia de Redis. Con Redis en EC2, usted es responsable de escalar, actualizar, supervisar y mantener el host y la instancia de Redis. Si está tratando bien con los aspectos operativos de Redis, entonces no debería ser un problema. Mucha gente ve los costos de los aspectos operativos de ejecutar una instancia de Redis. A menos que estés bien condimentado con Redis, consideraría Elasticache. Lo he estado usando y he estado muy contento con él hasta ahora.
Ahora, EC2 tiene sentido cuando necesitas configuraciones personalizadas de Redis que no son compatibles con Elasticache.
Además, ̶ Si necesita conectarse a su REDIS ejemplo desde el exterior del AWS medio ambiente, ̶ ElastiCache será un problema, ya que no puede utilizar los REDIS-CLI para conectarse a un REDIS ejemplo que se ejecuta en ElastiCache de ̶o̶u̶t̶s̶i̶d̶e̶.̶
Actualización : acceso a los recursos de ElastiCache desde fuera de AWS
Por último, si planea estar al borde de Redis, tiene más sentido ejecutar el suyo. Pero, una vez más, usted posee los bits operacionales, monitoreo, parcheo, etc.
Deseo alojar un Servidor Redis solo. Comparé EC2 con Elasticache. Y me gustaría saber cuál es la desventaja de EC2.
Una pequeña instancia EC2 cuesta tanto como la minúscula instancia ELasticache pero tiene 400 mb de ram más. ¿Por qué debería usar Elasticache y no configurar un servidor Redis propio en el ec2 tiny isntance?
Otro punto es Elasticache es dinámico, puede disminuir / aumentar la memoria que utiliza dinámicamente, o incluso cerrar la caché (y guardar $$) si sus índices de rendimiento están en el verde.
tl; dr: Elasticache te obliga a usar una sola instancia de redis, que es subóptima.
La versión larga
Me doy cuenta de que esta es una publicación antigua (2 años en el momento de escribir esto), pero creo que es importante señalar un punto que no veo aquí.
En elasticache Amazon distribuye su despliegue de redis. Esto significa que estás atrapado sin importar cómo elijan ejecutar tu redis.
Redis usa un solo hilo de ejecución para lecturas / escrituras. Esto garantiza la consistencia sin bloqueo. Es un activo importante en términos de rendimiento para no administrar bloqueos y cierres. La desafortunada consecuencia, sin embargo, es que si su EC2 tiene más de 1 vCPU, no se utilizarán . Este es el caso para todas las instancias elasticache con más de una vCPU.
El tamaño predeterminado de la instancia elasticache es cache.r3.large
, que tiene dos núcleos.
De hecho, hay varios tamaños de instancia con múltiples vCPU. Mucha oportunidad para que este problema se manifieste.
Parece que Amazon ya es consciente de este problema, pero parecen un poco desdeñoso.
La parte que hace que esto sea especialmente relevante para esta pregunta es que en su EC2 (ya que está administrando su propia implementación) puede implementar multi-tenancy . Esto significa que tiene muchas instancias del proceso redis escuchando en diferentes puertos. Al elegir qué puerto leer / escribir a / desde la aplicación en función de un hash de la clave del registro, puede aprovechar todas sus vCPU.
Como nota al margen; una implementación de redis elasticache en una máquina multinúcleo siempre debe ser inferior a la implementación de elasticache con memcached en el tamaño de la instancia. Con multi-tenancy redis tiende a ser el ganador.
Actualizar:
Amazon ahora proporciona métricas separadas para su CPU de instancia redis, EngineCPUUtilization. Ya no es necesario calcular su CPU con la multiplicación de mala calidad, pero el multi-arrendamiento aún no está implementado.
t2.micro vs cache.t2.micro
t2.micro - 1GiB cache.t2.micro - 0.555GiB
Pero en t2.micro necesitas OS !. La mayoría de ellos necesitan aproximadamente 512Mib.
t2.micro puede ganar tal vez solo en el rendimiento de la red. Puede intentar ejecutar benchmarks y comparar.