Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis sur Heroku est-il possible sans addon ?

Exécuter redis sur un dyno est une idée intéressante. Vous devrez probablement créer un buildpack redis pour que vos dynos puissent télécharger et exécuter redis. Comme "redis n'a pas de dépendances autres qu'un compilateur GCC et une libc fonctionnels", cela devrait être techniquement possible.

Cependant, voici quelques problèmes que vous pourriez rencontrer :

  1. Les dynos Heroku n'ont pas d'adresse IP statique

    "les dynos n'ont pas d'adresses IP statiques .. vous ne pouvez jamais accéder directement à un dyno par IP"

    Même si vous configurez et exécutez Redis sur un dyno, je ne connais pas de moyen de localiser cette instance de dyno et de lui envoyer des demandes redis. Cela signifie que votre serveur Redis devra probablement fonctionner sur le même dyno que votre serveur Web/application principale.

    Cela aussi signifie que si vous essayez de faire évoluer votre application en créant plus de dynos Web, vous créerez également plus d'instances redis locales. Les données ne seront pas partagées entre eux. Cela ne me semble pas être une conception particulièrement évolutive, mais si votre application est suffisamment petite pour ne nécessiter qu'un seul dyno Web, cela peut fonctionner.

  2. Les dynos Heroku ont un système de fichiers éphémère

    "aucun fichier écrit n'est visible pour les processus d'un autre dyno et tous les fichiers écrits seront supprimés au moment où le dyno est arrêté ou redémarré"

    Par défaut, Redis écrit son fichier RDB et son journal AOF sur le disque. Vous devrez les sauvegarder régulièrement quelque part afin de pouvoir les récupérer et les restaurer après le redémarrage de votre dyno. Voir la documentation sur la persistance Redis.

  3. Les dynos Heroku sont souvent redémarrés

    "Dynos sont cyclés au moins une fois par jour, ou chaque fois que le collecteur dyno détecte un défaut dans le matériel sous-jacent"

    Vous devrez pouvoir démarrer votre serveur Redis à chaque démarrage du dyno et restaurer les données.

  4. Les dynos Heroku ont 512 Mo de RAM

    "Chaque dyno se voit allouer 512 Mo de mémoire pour fonctionner à l'intérieur"

    Si votre serveur Redis s'exécute sur le même dyno que votre serveur Web, soustrayez la RAM nécessaire à votre application principale. De combien de mémoire Redis avez-vous besoin ?

    Voici quelques questions visant à estimer et suivre l'utilisation de la mémoire Redis :

    • Redis :ratio taille de la base de données/mémoire ?
    • Profiler l'utilisation de la mémoire Redis

--

Global : Je suggère de lire 12 Factor Apps pour en savoir un peu plus sur le modèle d'application prévu par Heroku.

La version courte est que les dynos sont destinés à être des travailleurs indépendants qui peuvent être facilement créés et supprimés pour répondre à la demande, et que les dynos accèdent à diverses ressources pour lire ou écrire des données et servir votre application. Une instance Redis est un exemple de ressource. Comme vous pouvez le voir dans les éléments ci-dessus, en utilisant un module complémentaire Redis, vous obtenez quelque chose qui est garanti statique, stable et accessible.

Matériel de lecture :

  1. http://www.12factor.net/ - en particulier les processus et les services
  2. Le modèle de processus Heroku
  3. Blog Heroku – Le modèle de processus