web-dev-qa-db-fra.com

Redis: Amazon EC2 vs Elasticache

Je veux héberger un serveur Redis par moi-même. J'ai comparé EC2 à Elasticache. Et je voudrais savoir quel est l’inconvénient de EC2.

Une minuscule instance EC2 coûte autant que la minuscule instance ELasticache mais a 400 Mo de bélier supplémentaire Pourquoi devrait-on utiliser Elasticache et ne pas configurer son propre serveur Redis sur l’ec2 tiny isntance?

46
nohayeye

Étant donné que je suis paresseux, je choisirais Elasticcache plutôt que EC2 afin d’éviter certains aspects opérationnels de la gestion d’une instance Redis. Avec Redis sur EC2, vous êtes responsable de la mise à l'échelle, de la mise à jour, de la surveillance et de la maintenance de l'hôte et de l'instance Redis. Si vous vous en tenez aux aspects opérationnels de Redis, cela ne devrait pas poser de problème. Beaucoup de gens examinent les coûts des aspects opérationnels de l’exécution d’une instance Redis. À moins que vous ne connaissiez bien Redis, je considérerais Elasticache. Je l'utilise et j'en suis assez content jusqu'à présent.

Maintenant, EC2 est logique lorsque vous avez besoin de configurations personnalisées de Redis qui ne sont pas prises en charge par Elasticache. 

En outre, ̶ si vous avez besoin de se connecter au REDIS exemple de l'extérieur du AWS environnement, ̶ ElastiCache sera un problème que vous ne pouvez pas utiliser le REDIS-cli se connecter à une instance REDIS qui fonctionne en ElastiCache De ̶o̶u̶t̶s̶i̶d̶e̶.̶ 

Update: Accès aux ressources ElastiCache de l'extérieur d'AWS

Enfin, si vous envisagez d’être à la limite de Redis, il est plus logique de gérer le vôtre. Mais encore une fois, vous possédez les bits opérationnels, la surveillance, les correctifs, etc. 

37
Ryan J. McDonough

tl; dr: Elasticache vous oblige à utiliser une seule instance de redis, qui est sous-optimale.

La version longue:

Je me rends compte qu’il s’agit d’un ancien billet (2 ans au moment de la rédaction de cet article), mais j’estime important de noter un point que je ne vois pas ici.

Sur élastique, votre déploiement de Redis est géré par Amazon. Cela signifie que vous êtes coincé avec la façon dont ils choisissent d'exécuter votre redis.

Redis utilise un seul thread d'exécution pour les lectures/écritures. Cela garantit la cohérence sans verrouillage. Ne pas gérer les verrous est un atout majeur en termes de performances. La conséquence fâcheuse, cependant, est que si votre EC2 a plus de 1 vCPU, ils resteront inutilisés . C'est le cas pour toutes les instances élastique avec plus d'une vCPU.

La taille d'occurrence d'élasticache par défaut est cache.r3.large, qui a deux cœurs.

 Amazon's Elasticache setup menu with defaults populated.

En fait, il existe plusieurs tailles d'instances avec plusieurs vCPU. Beaucoup d’opportunités pour que cette question se manifeste.

 enter image description here

Il semble qu'Amazon soit déjà au courant de ce problème, mais ils semblent un peu dédaigneux.

 enter image description here

La partie qui rend cela particulièrement pertinent pour cette question est que sur votre EC2 (puisque vous gérez votre propre déploiement), vous pouvez implémenter multi-tenancy . Cela signifie que vous avez de nombreuses instances du processus redis en cours d’écoute sur différents ports. En choisissant le port sur lequel lire/écrire dans/à partir de l'application en fonction d'un hachage de la clé de l'enregistrement, vous pouvez exploiter tous vos vCPU.

Comme note de côté; un déploiement de redis elasticache sur une machine multicœur doit toujours être moins performant que le déploiement de memcache elasticache sur la taille de l'instance. Avec la multi-location, Redis a tendance à être le gagnant.

Mettre à jour:

Amazon fournit maintenant des métriques distinctes pour votre CPU d'instance Redis, EngineCPUUtilization. Vous n'avez plus besoin de calculer votre processeur avec la multiplication de mauvaise qualité, mais la multi-location n'est toujours pas implémentée.

33
KeatsKelleher

Elasticache est un autre point dynamique, vous pouvez diminuer/augmenter dynamiquement la mémoire que vous utilisez, ou même fermer le cache (et enregistrer $$) si vos index de performance sont dans le vert.

5
Shachaf.Gortler

Elasticache Avantages et inconvénients:

Avantages
- service géré AWS; il suffit donc d'utiliser Redis dans l'application sans surcharge de la gestion (laissez le soin à AWS)
- Types d'instances flexibles adaptés aux bases de données en mémoire.
- En cas de problème avec le nœud, AWS s'en charge (basculement, remplacement du nœud, maintenance, etc.).
- Service conforme HIPAA.
- Redis uniquement -> ils ont leur propre implémentation de sauvegarde s'il existe un problème de mémoire qui ne peut pas autoriser BGSAVE.
- Peut permettre la création d'instantanés sur une base régulière.
- Facilement évolutif horizontalement et verticalement (le mode cluster activé peut comporter jusqu'à 250 fragments).
- Le point de terminaison de la configuration ne change jamais. Il n'est donc pas nécessaire de modifier quoi que ce soit dans l'application en cas de basculement (sauf si vous utilisez des points de terminaison de noeud) 

Les inconvénients:
- Le service étant géré par AWS, les possibilités d'optimisation des performances (via les groupes de paramètres) sont très limitées, car vous ne disposez pas d'un accès au niveau du système d'exploitation.
- Pas beaucoup de types d'instances tels que x1, etc.
- Pas beaucoup de personnalisation disponible Par exemple: vous ne pouvez pas changer le mot de passe (Redis AUTH) une fois créé.
- Un entretien régulier peut être nécessaire, ce qui peut coïncider avec le temps critique de la production, donc il faut s'inquiéter davantage.
- Tous les événements de maintenance ne sont pas notifiés, ce qui crée des perturbations indésirables.
- Il faut beaucoup de temps pour être lancé (dépend du type de nœud et du nombre de nœuds).
- Peut s'avérer coûteux.

Avantages et inconvénients de l'installation EC2 personnalisée:

Avantages
- Plus de liberté pour optimiser et personnaliser
- Maintenance à votre rythme
- Utilisez n'importe quelle ressource

Les inconvénients
- Besoin d'une logique personnalisée pour la maintenance, la mise à l'échelle, la reprise après incident et les sauvegardes, etc.
- Augmentation des frais généraux opérationnels.

La liste est longue mais elles devraient couvrir des différences significatives.

0
S Square