2011-03-26 4 views
4

Je suis un Erlang noob, et j'ai vérifié Faxien + Sinan et Rebar, et la philosophie de base d'Erlang OTP semble être, installer des applications et des versions sur une seule instance d'image Erlang. Quelles sont les meilleures pratiques pour garder les versions autonomes? Existe-t-il un moyen de regrouper les versions de sorte que vous n'ayez pas à modifier le site pour les machines sur lesquelles vous déployez? Que diriez-vous de rassembler toutes les dépendances dans la base de code pour la gestion? Peut-être que je vais à contre-courant ... Je viens d'un arrière-plan Java et la philosophie de «rien de pré-installé mais la JVM» semble très différente.Meilleures pratiques de publication d'Erlang?

Répondre

3

IMHO cela ne peut pas être répondu en quelques phrases. Vous devriez lire certaines parties de la documentation incluse, en particulier "Erlang/OTP System Documentation" (otp-system-documentation-XYZpdf, avec XYZ étant le numéro de version), ou jeter un oeil au livre "Erlang and OTP in Action" car tout au long de ce livre il y a "un" exemple d'un "service" avec différentes "parties" dès les premières étapes, en utilisant les concepts d'Erlang/OTP et finalement en construisant une "release". À mon humble avis c'est le meilleur livre actuellement, car il présente non seulement Erlang, mais montre aussi ce qu'est OTP et comment OTP est utilisé pour un projet. Et ce n'est pas seulement une collection d'échantillons en vrac, mais tout est construit autour d'un seul projet.

1

Je vais décrire l'approche qui travaille actuellement pour moi (souvent mises à jour régulières par jour) à un petit nombre de cas sur EC2:

  1. Je mis en place mon projet avec des barres d'armature et vérifier dans GitHub.
  2. Toutes mes dépendances sont listées dans mon fichier rebar.config (elles sont aussi sur github). Mon Makefile ressemble à ce que j'ai décrit here.
  3. Mon image EC2 a seulement une construction régulière d'erlang et aucune autre librairie n'est installée par défaut. Pour créer un nouveau nœud, je crée une instance, clone mon référentiel git et exécute make. Cela va chercher mes dépendances et tout construire. Pour mettre à jour mon code, je fais git pull et rebar update-deps. En fonction de ce qui a changé, je peux redémarrer le noeud ou, assez souvent, je vais attacher au noeud en cours d'exécution et recharger les modules mis à jour. Il est utile de commencer et d'attacher des scripts dans le cadre de votre projet.

Il peut être utile de regarder comment un projet comme webmachine est emballé.

Je ne sais pas grand-chose sur le système de gestion des versions OTP standard, à part le fait que cela demande beaucoup de travail. Parce que cela semble aller à l'encontre d'un déploiement rapide, je n'ai jamais essayé sérieusement - même si je suis certain que cela a du sens pour d'autres projets.