web-dev-qa-db-fra.com

Quels sont les avantages et les inconvénients d'AWS Elastic Beanstalk par rapport aux autres stratégies de déploiement?

Je suis assez nouveau dans toute la pile et les déploiements de Netflix Oss en général. En tant qu'appount pour mon niveau actuel de connaissances OPS-WISE, mon rôle principal est d'un ingénieur d'applications frontal. Cependant, j'apprécie le côté des opérations des choses, alors j'essaie de configurer une nouvelle stratégie de déploiement et l'outil d'outil pour un nouveau projet.

nos objectifs

  • Super facile de déploiement (nous voulons appuyer sur un bouton pour mettre à jour la production)
  • Déploiements automatisés pour tester des environnements (en utilisant Jenkins)
  • Facilité d'entretien (nous avons une application à écrire, vous ne voulez pas dépenser notre temps avec des problèmes de production)
  • Capacité à gérer une architecture orientée de services (de nombreuses petites applications, différentes langues et magasins de données)
  • Suffisamment de flexibilité pour que nous n'ayons pas à modifier les stratégies à tout moment (nous essayons déjà de vous échapper de la doutologie)

Nous sommes d'accord avec un peu plus de temps de configuration si cela me sauvera des maux de tête à l'avenir.

Donc, dans ces lignes, j'ai écouté des podcasts, en regardant des pourparlers des OPS et de lire des tonnes de poteaux de blogs et sur la base de nos objectifs et de ce que j'ai pris pour former des meilleures pratiques, nous avons commencé à former un plan en utilisant Asgard, rouler notre colis dans un pot et rouler cela dans un Ami.

Nous avions tout cela planifié et comme les avantages du processus par rapport à un serveur de chefs et des instances convergentes à la volée (nous avons estimé que cela a été sujette d'erreur compte tenu de notre calendrier limité et de notre manque de compréhension autour d'un flux de travail du serveur Chef). Cependant, un collègue a fait un peu la sienne et ressemblait à un beanstal élastique répondant à nos besoins.

Je l'ai examiné et remonté un environnement de test avec un fichier de guerre et une base de données RDS jointe. Les choses semblent travailler et je crois que nous pouvons automatiser les déployés dans un environnement de test utilisant Jenkins via l'API AWS. Semble assez simple ... peut-être trop simple.

Ce que je me demande, c'est quoi que ce soit la prise? Si élastique beanstalk est si simple et efficace, pourquoi n'est-il pas parlé de plus? J'ai du mal à trouver suffisamment d'opinions et de faits objectifs sur les deux stratégies de déploiement différentes, alors je pensais que je me demanderais.

Utilisez-vous élastiques beanstalk? Si oui, pourquoi et quels facteurs conduisent à cette décision? Qu'aimez-vous et n'aimez-vous pas?

Si vous n'utilisez pas de haricots d'élasticité, mais que vous l'avez considéré, qu'est-ce que vous utilisez et pourquoi n'avez-vous pas utilisé de beanstal élastique?

Quels sont les avantages et les inconvénients d'une stratégie de déploiement basée sur des beanstals élastiques pour une SOA? C'est-à-dire que l'élastique va-t-il bien travailler avec de nombreuses petites applications qui s'appuient sur l'autre pour travailler?

18
James van Dyke

J'ai évalué des beanstals élastiques en plus d'autres offres AWS tout en essayant d'améliorer nos instances AWS roulées à la main. Les raisons que j'ai choisi de ne pas utiliser cela étaient dues à des complications qui organiseraient la migration de ma demande existante et non avec l'offre elle-même. La capture est que vous n'avez pas autant de contrôle sur le déploiement/la configuration des applications des serveurs. Si vous démarrez une nouvelle application, il peut être utile de ne pas traiter ces choses en ce moment, si vous avez une application existante, il s'agit plutôt d'un défi de votre modèle de haricotsk.

Beantstalk offre une offre similaire à Heroku et à d'autres vendeurs PAA, mais pas beaucoup d'avantages pour ceux qui veulent simplement se concentrer sur la création de leur demande. Vous faites au moins pour déterminer les ressources virtualisées à une plus grande mesure que d'autres fournisseurs PAA.

Problèmes que je rencontrais avec mes demandes (s):

  • Déploiements à base de git - je les aime mais notre repo est de 1+ gb. Assez gros pour pousser régulièrement. Ce repo contient également environ 40 applications (qui devraient vraiment être divisées) mais cela prendrait du temps. Le téléchargement de tout type de paquet pourrait fonctionner, mais la plupart de nos applications prendraient une grande quantité de travail pour en faire un paquet.

  • Intégration avec d'autres services - à partir de ce que j'ai vu un type de haricots de haricots suppose que tout ce que vous vous connectez est un seul service. Cela fonctionne bien si vos services sont en retard et de l'ELB, mais nos nœuds séparés étaient des nœuds distincts que nous avons frappé par Haprexy en cours d'exécution sur chaque serveur d'applications. Si vous exécutez vos données de données et d'autres services en tant que point final unique, cela vous convient d'aller bien.

Dans mon évaluation, j'ai également inclus Opsworks et Cloudformation. Opsworks a des problèmes d'intégration similaires avec la manière dont l'automatisation existante travaillait pour ces applications. Cloudformation n'a pas fait beaucoup plus que ce que certains Python Scripts et Chef prenaient déjà soin de nous pour nous.

J'ai choisi de choisir d'utiliser des groupes AWS Autoscaling à la place de l'automatisation fournie par Asgard . C'était la plus petite modification du code de configuration/d'application existante et nous a fourni les avantages que nous recherchions, une simple gestion de plusieurs serveurs disponibles via l'API AWS.

Les restrictions mises en place par élastique beanstalk sur votre application sont très utiles. Vous devrez vous assurer que votre demande est principalement apatride, fournit un point de terminaison pour un service et s'appuie sur d'autres services pour l'État. Si vous essayez de créer des services autonomes réutilisables que plusieurs applications de BeanStalk sont un bon départ.

Si/lorsque vous arrivez au point de vouloir plus de configuration, opsworks est une excellente étape suivante. Les rôles prédéfinis doivent rendre la transition facile à démarrer et fournit un cadre d'automatisation autour du chef pour aider à coordonner le provisionnement de plusieurs serveurs.

11
Philip Cristiano

Je vois le point de perte de contrôle, mais je ne vois pas nécessairement l'apatridie mandatée. Tout cela est vraiment déployé une automatisation, ce qui est génial. Je vois le point d'un grand référentiel. Je pense en général que la séparation de l'application logique fonctionne dans des applications de haricots distinctes, puis des environnements "de stadification" et "prod" en dessous, c'est vraiment sympa. Nous avons des milieux de modules tels que le téléchargeur, il ne fait pas beaucoup et en théorie, il ajoute beaucoup de coûts, mais vous utilisez ensuite des instances plus petites. Nous gérons un nginx centralisé et devons écrire beaucoup de poignées de messages SNS personnalisées pour notifier Ngnix des modifications de la stratégie d'échelle automatique. Un autre problème de Big EB est l'incapacité d'échéance de la charge de la TAVI, car nous utilisons Ngnix, pourquoi? ELB ne prend pas en charge les standards.

0
Zeev's Glozman