Ich bin ziemlich neu im gesamten Netflix OSS-Stack und den Bereitstellungen im Allgemeinen. Als Hintergrund für meinen aktuellen Wissensstand bin ich hauptsächlich als Front-End-Anwendungsingenieur tätig. Ich mag jedoch die betriebliche Seite der Dinge und versuche, eine neue Bereitstellungsstrategie und die Werkzeuge für ein neues Projekt einzurichten.
Unsere Ziele
- Super einfache Bereitstellung (wir möchten einen Knopf drücken, um die Produktion zu aktualisieren)
- Automatisierte Bereitstellung in Testumgebungen (mit Jenkins)
- Einfache Wartung (wir haben eine App zum Schreiben, wir möchten uns nicht mit Produktionsproblemen befassen)
- Fähigkeit, mit einer serviceorientierten Architektur umzugehen (viele kleine Apps, verschiedene Sprachen und Datenspeicher)
- Genug Flexibilität, um sicherzustellen, dass wir die Strategien nicht bald ändern müssen (wir versuchen bereits, RightScale zu umgehen).
Wir sind in Ordnung mit etwas mehr anfänglicher Einrichtungszeit, wenn dies uns in Zukunft einige Kopfschmerzen erspart.
In diesem Sinne habe ich mir Podcasts angehört, Ops-Talks angesehen und Unmengen von Blog-Posts gelesen. Auf der Grundlage unserer Ziele und meiner Meinung nach bewährter Vorgehensweisen haben wir begonnen, einen Plan zu erstellen Asgard, wir rollen unser Paket in ein Glas und das in einen AMI.
Wir hatten dies alles geplant und mochten die Vorteile des Prozesses gegenüber der Verwendung eines Chef-Servers und der sofortigen Konvergenz von Instanzen (wir waren der Meinung, dass dies aufgrund unserer begrenzten Zeitleiste und des Mangels an Verständnis für einen Chef-Server-Workflow fehleranfällig war). Ein Kollege hat sich jedoch ein wenig selbst umgesehen und hatte das Gefühl, dass Elastic Beanstalk unsere Anforderungen erfüllt.
Ich habe es mir angesehen und eine Testumgebung mit einer WAR-Datei und einer angehängten RDS-Datenbank gestartet. Die Dinge scheinen zu funktionieren, und ich glaube, dass wir mithilfe von Jenkins über die AWS-API Bereitstellungen in einer Testumgebung automatisieren können. Scheint einfach genug ... vielleicht zu einfach.
Was ich mich frage ist, was ist der Haken? Wenn Elastic Beanstalk so einfach und effektiv ist, warum wird dann nicht mehr darüber gesprochen? Es fällt mir schwer, genug objektive Meinungen und Fakten zu den beiden verschiedenen Bereitstellungsstrategien zu finden.
Verwenden Sie elastische Bohnenstange? Wenn ja, warum und welche Faktoren haben zu dieser Entscheidung geführt? Was magst du und was nicht?
Wenn Sie Elastic Beanstalk nicht verwenden, es aber in Betracht ziehen, was verwenden Sie und warum haben Sie Elastic Beanstalk nicht verwendet?
Was sind die Vor- und Nachteile einer auf Elastic Beanstalk basierenden Bereitstellungsstrategie für eine SOA? Funktioniert Elastic Beanstalk also gut mit vielen kleinen Anwendungen, die aufeinander angewiesen sind?
quelle
Ich sehe den Punkt des Kontrollverlustes, aber ich sehe nicht unbedingt die vorgeschriebene Staatenlosigkeit. Alles, was eb wirklich tut, ist die Bereitstellung von Automatisierung, was übrigens fantastisch ist. Ich sehe den Sinn eines großen Repository. Ich denke im Allgemeinen, dass es wirklich nett ist, logische App-Funktionen in separate Beans-Apps zu unterteilen und dann Umgebungen mit "Staging" und "Prod" darunter zu haben. Wir haben Modulumgebungen wie Uploader, die nicht viel bewirken und theoretisch eine Menge Kosten verursachen, aber dann verwenden Sie kleinere Instanzen, nur mehr davon. Wir haben einen zentralisierten Nginx ausgeführt und mussten viele benutzerdefinierte SNS-Nachrichtenhandles schreiben, um Ngnix über Änderungen in der automatischen Skalierungsrichtlinie zu benachrichtigen. Ein weiteres großes Problem bei Eb ist die Unfähigkeit, Lastausgleiche auszuschalten, da wir ngnix verwenden. Warum? elb unterstützt kein websocket.
quelle