September 2015

Band 30, Nummer 9

Dieser Artikel wurde maschinell übersetzt.

Azure-Insider – Erstellen einheitlicher Workflows im Heroku-Stil auf mehreren Cloudplattformen

Durch Bruno Terkaly | September 2015

Vor einigen Jahren Microsoft Azure wurde nur erste Schritte und gab es kaum Medien über die Verbreitung. In den letzten Jahren erheblich geändert hat. Die Entwicklungsteams bei Microsoft und der Community haben wesentlich beigetragen. Mit dieser Ausgabe von Azure-Insider verschiebt die Reihe mit mehr kundenorientierte, Fallstudie Ansicht der ganzen Welt.

Für diese erste Azure-Fallstudie habe ich Gabriel Monroy gesprochen. Er gesehen haben die Gelegenheit, und ihn schnell in eine Technologie entwickelt haben und ein Start-up-Unternehmen namens Deis. Seines Unternehmens schnell eingerichtet wurde, und Monroy wurde, CTO des Mandanten. Wenn ich zunächst Monroy erfüllt und Schritte zum Arbeiten mit seiner Technologie auf eine Hackathon, mitgeteilt ich ihm "es lange wird nicht, bevor Sie erworben haben." Dies wurde im Januar 2015. Nicht mehr als ein paar Monate später wurde seines Unternehmens notwendig durch EngineYard eingerichtet.

NOT erfinderisch

Es ist weiterhin eine Explosion distributed computing-Plattformen, die lokale und öffentliche Clouds umfassen. Diese Plattformen werden unterstützt, von Container-fähigen Betriebssysteme wie z. B. Linux und Windows Docker Container und Cluster-fähigen Versionen von Linux, wie z. B. CoreOS.

Erfolgreichsten open Source-Projekte sind erforderlich, geboren. Angenommen Sie, Sie sind ein Architekt, hilft die finanzielle Community großen Clustern von virtuellen Computern einrichten versuchen, Entwicklung, Tests und Produktentwicklung zu unterstützen. Lange bemerken Sie, dass Sie immer wieder das gleiche Problem lösen zu halten.

Das ist einfach zu Monroy, wo, die Linux-Entwicklung für die finanziellen Community wieder in 2005 und 2006 machte. Er wurde einige der frühesten Technologien um Containerization, wahrscheinlich gleichzeitig Solomon Hykes Schritte zum Erstellen von Docker Hacker nutzen. Ein Großteil Monroys arbeiten, in der Tat jetzt in Docker.

Zu jener Zeit wurden viele Unternehmen mit derselben müssen die Pipeline-Entwicklung/Tests/Produktionsserver optimieren Problemen zu kämpfen. Das Ideal zum Abrufen der Phase der fortlaufenden Integration wurde –, mit erhöhten Rechten Status, die Ihre Software für die Benutzer in einer Weise automatisiert und rechtzeitig abruft.

Unternehmen möchten einen wiederholbaren Prozess, aber es gab nur wenig oder gar keine Tools. Unternehmen sollte auch Entwickler Self-service. Sie haben möchten, dass Entwickler durch das Fehlen der Hardware oder der Herrschaft der IT-Betrieb zurückgehalten. Ziehen Sie einfach so auf eine neue Idee oder ein Projekt durchlaufen haben Entwickler möchten.

Damit stattdessen Entwickler arbeiten in einer böswilligen Schatten IT-Welt begonnen, insgeheim Infrastruktur bereitstellen und Freigeben von sich selbst über die Abhängigkeit von anderen. Zudem wollte Entwickler in der Lage, einen Vorgang auf alle öffentlichen Cloud, ob Amazon Web Services, digitale Icean, Google oder Azure. Außerdem sollte auf bare-Metal-in ihren eigenen Rechenzentren ausgeführt werden bei Bedarf.

Attraktive Perspektiven

Im Ende 2007 und Anfang 2008 angeboten Heroku einen neuen Ansatz für die verteilte Datenverarbeitung, Ruby eine einzige Umgebung zu entwickeln, testen und Bereitstellen der Anwendung mussten Entwickler konzentrieren. Entwickler möchten auf ihre Anwendung, nicht auf die zugrunde liegenden Infrastrukturen zu konzentrieren. Eine einzelne Befehlszeilenschnittstelle mit der zugrunde liegenden Plattform, die ermöglichen würden sollte Konzentration auf nur die app und seine Daten. Sie möchten nicht Verfügbarkeit, Ausfallzeiten, Wiederherstellung im Notfall, Bereitstellung, Produktion, nach oben und unten nach Bedarf skalieren, Versionskontrolle und alle Probleme, die diese Regel kümmern. Zur gleichen Zeit wollte sie nicht außerhalb der IT-Administratoren zur Unterstützung ihrer Auslastung abhängig. Das geschieht, wenn Monroy zunächst sah Gelegenheit.

Eine Reihe von verwandten Technologien wurden zusammen zur Verfügung stehen, die eine geschäftliche Spark Bedenken der Monroy ausgelöst. Er könnte Heroku-Stil Entwickler Workflows auf mehrere Cloud-Plattformen ermöglichen. Zunächst alle Technologien, die Idee des Monroy aktiviert, wird hier erläutert, Welt, in denen Entwickler nutzen können, Heroku-Stil Workflows auf praktisch jedem öffentlichen Cloud mit, Deis.

Im folgenden Codebeispiel wird die Deis-Plattform. Dabei wird vorausgesetzt, es ist ein Cluster CoreOS Linux-Computer, mit denen Sie arbeiten (lokal gehostet oder in der Cloud):

# Install Deis tooling
$ deisctl install platform
# Deis platform is running on a cluster
$ deisctl start platform
$ deis register http://deis.example.com

Mit Ausnahme von ein paar Befehle, die im Zusammenhang mit Anmeldungen und SSH-Zertifikate, kann das Entwicklungsteam nutzen Deis und starten Sie die Anwendung bereitstellen. Einmal Deis ist installiert, Entwickler Bereitstellen von Clientanwendungen für die Entwicklung, testen und können zur Produktion mit nur wenigen Befehlen zu verschieben.

Enabling Technologies

Andere Technologien stammten verwirklicht zur gleichen Zeit, dem geholfen, Flourish, Deis, siehe Abbildung 1.

Konvergenzkonzept Technologien, die Unterstützung Deis
Abbildung 1 Konvergenzkonzept Technologien, die Unterstützung Deis

Containerization ist eine entscheidende Technologie in modernen Betriebssysteme für serverseitige vorhanden. Es wurde seit einiger Zeit in Linux. Obwohl nicht derzeit in Windows Server vorhanden ist, sollte es bald sein. Das Konzept der Containerization ist, Sie nehmen einen Host-Betriebssystem und in mehreren Dimensionen zu partitionieren, Arbeitsspeicher, CPU und Festplatte. Sie können auf einem physischen Computer mit einem physischen BS in mehrere Container aufheben. Jeder Container wird getrennt, damit Clientanwendungen voneinander isoliert ausgeführt werden kann, beim Freigeben des grundlegenden Hostbetriebssystem.

Dies erhöht die effiziente Hardware-Auslastung, da Container parallel ausführen können, ohne miteinander. Linux-Container (LXC) isolieren, CPU, Arbeitsspeicher, e/a- und Netzwerkressourcen. LXC enthält die Namespaces, die die Anwendung vom Betriebssystem isoliert, und trennen Sie die Prozessstrukturen, die Zugriff auf das Netzwerk, die Benutzer-IDs und die Dateisysteme.

Monroy hatte genutzt wurden LXC in den frühen Tagen, noch bevor es ein grundlegender Bestandteil der Docker war. Anschließend Docker gekauft und Containerization durch die Standardisierung von es über Linux-Distributionen stärker demokratisiert wird. Der wirkliche Durchbruch kam, wenn Solomon ein zentrales Repository Docker Abbilder erstellt. Dies zur Verfügung gestellt wird ein Ökosystem der öffentlich verfügbaren Container, denen andere Entwickler am wiederverwenden können. Stehen mehr als 14.000 verfügbaren Abbilder auf registry.hub.docker.com.

Sie können fast jeden denkbaren Anwendungsmuster beschleunigen Sie Ihr nächste Projekt suchen. Sie können auch eigene Images über diese Registrierung zur Verfügung stellen. Wenn Sie Nginx oder Kafka in Ihrer Anwendung verwenden möchten, müssen Sie also nicht herunterladen und Installieren von Clientanwendungen, Konfigurieren von Systemeinstellungen und im Allgemeinen müssen die Besonderheiten der einzelnen Softwareprogramme kümmern. Deis Curates einer Anwendung als Docker Bilder und als Docker-Container in Ihrem Cluster verteilt. Es ist einfach, Ihre eigene Anwendung innerhalb eines Containers durch Nutzung einer Docker-Datei zu erstellen:

FROM centos:latest
COPY . /app
WORKDIR /app
CMD python -m SimpleHTTPServer 5000
EXPOSE 5000

Sobald Sie Ihre Dateien Docker definiert und bereitgestellt haben Deis im Cluster enthalten sind, wird die Bereitstellung und Verwaltung noch einfacher und leistungsfähiger. Wenn Sie dies mit der Git Quellcoderepository kombinieren, ist es das beste aus beiden Welten. Können Sie Versionskontrolle für sowohl Quellcode der Anwendung als auch die Infrastruktur (Docker Container) selbst.

Diese Art der Anwendungsentwicklung und-Bereitstellung ist wiederholbaren und vorhersagbaren. Es beschleunigt erheblich zwischen Entwicklung, Test und Produktion verschoben. Eine Datei Docker bringt einen einfachen Agent Server Entwicklung, Test oder Produktion:

# Assume the current folder contains Docker files
$ git add .
$ git commit -m "notes by a developer"
$ git push deis master

Zurück zum Heroku

Monroy bemerkt Heroku wurde in der Entwicklercommunity große unüberschaubar vornehmen, da Bereitstellung, Ausführung und Verwaltung, erheblich vereinfacht größtenteils Ruby und Node.js-apps.

Entwickler befinden sich in der Regel auf einer gehosteten Befehlszeile, mit der sie praktisch alle Aspekte der Entwicklung, Bereitstellung und Skalierung von Tasks ausführen können. Monroy gefunden, die brillanten – eine einzelne Entwickler alle seine Arbeit platzieren, und Minimieren der Fülle an Tools für die Anwendungsentwicklung.

Ein Großteil der Verwaltungsaufwand Ausführen eines Clusters wurden automatisiert – Sicherung und Wiederherstellung, Konfiguration von DNS, definieren einen Lastenausgleich Nutzung, Verwalten von Benutzern, Plattform-Protokollierung und Überwachung und usw. Datenträger überwachen. Hinzufügen von Knoten ist ein einfacher Fall ändern eine URL in einer Cloud-Config-Datei über eine Befehlszeilenschnittstelle. Vielleicht ist der wichtigste Aspekt bei der Ausführung eines Clusters zu sich selbst reparierende vereinfachen, Failover- und Disaster Recovery sind automatisch enthalten.

CoreOS

Heroku Finanzierung und die Zeit zum Erstellen dieses benutzerdefinierten Plattform haben, benötigt Monroy eine einsatzbereite Lösung zur Verwaltung von Clustern, die Teile z. B. den Lastenausgleich, Überwachung und Beleuchtung, Failover und usw. enthalten. Bei wurde zur gleichen Zeit, eines Linux-Distributionen, die als CoreOS bezeichnet auch Entwickler Akzeptanz erlangen.

CoreOS versetzt die perfekte Mischung aus Technologien auf die ganzen Welt zu vereinfachen, die Monroy stellten uns vor. CoreOS ist ein open Source-Linux-Betriebssystem für Clusterbereitstellungen entwickelt. Er konzentriert sich auf die Automatisierung, Bereitstellung, Sicherheit, Zuverlässigkeit und Skalierbarkeit. Dabei handelte es sich um genau die Merkmale, die mit denen Heroku Entwickler angezogen.

CoreOS wurden in der Tat das Allheilmittel bereitgestellt, für das Monroy suchte. CoreOS ist eine normale Linux-Betriebssystem nicht. Interessanterweise versucht es, eine eigene Version der Docker Behälter die Container-Laufzeit Rocket pioneer.

Die Innovationen, die coreos aufwartet, ist von Bedeutung. Monroy und sein Team waren Etcd, Flotte und jene am meisten interessiert. Etcd ist ein verteilter Schlüssel-Wert-Speicher, der bietet eine zuverlässige Möglichkeit zum Speichern von Daten in einem Cluster von Computern durch das Behandeln von master Wahlen ordnungsgemäß während der Netzwerk-Partitionen, die auftritt, einschließlich des Masters toleriert werden. Der Etcd-Schlüssel-Wert-Speicher, der Cluster-Konfigurationsinformationen gespeichert wird auch auf intelligente Weise im gesamten Cluster verteilt.

Eine leicht zu bedienende-API können Sie die Werte in dieser Konfigurationsdatei ändern, die dann automatisch auf andere Knoten im Cluster repliziert wird. Jene stellt ein virtuelles Netzwerk, der einem Subnetz auf jeden Beitrag, die mit jeder Container-Laufzeit verwendet werden. Dadurch wird jeder Container eine eindeutige, routbare IP-Adresse innerhalb des Clusters. Dadurch wird die Komplexität der Port-Zuordnung erheblich reduziert.

Flotte hilft Ihnen, stellen Sie sich Ihren Cluster als einzelne Init System benötigt, aufwendige einzelne Computer, auf dem der Container ausgeführt werden. Flotte wird automatisch garantiert, dass der Container irgendwo auf dem Cluster ausgeführt wird. Wenn der Computer ausfällt oder aktualisieren, wird also Ihre Arbeitslast von Flotte Software automatisch an einen qualifizierten Computer im Cluster verschoben.

Beachten Sie in Abbildung 2 können Sie eine put-Anforderung an den Cluster Flotte mitteilen, den gewünschten Status eines bestimmten Dienstes senden. Das ist die zugrunde liegende Infrastruktur, die Flotte Services bilden. Diese put-Anforderung in Ihrem Auftrag brauchen Sie keine Gedanken über die Einzelheiten des Clusters.

Konzeptuelles Diagramm eines CoreOS
Abbildung 2: konzeptionelle Darstellung des CoreOS

Monroy jetzt alles, was er benötigt erstellen mussten Deis – eine standardisierte Containerization Modell von Docker und eine clusterfähige Version/Implementierung von Linux namens CoreOS. Er konnte jetzt bieten die Entwicklung von Heroku-Stil für alle, nicht nur die erforderlichen Supportdateien Gebühren leisten könnten Salesforce.com, das Unternehmen, das jetzt bietet Heroku als Dienst.

Drei grundlegende Komponenten sind Kontrollebene, ein Docker-Register und einen Plan für die Daten. Diese funktionieren alle zusammen. Er beginnt mit der Entwickler mit der Git Push in einer neuen Version u. u. sowohl Quellcode für die Anwendung und eine Docker-Build-Datei enthalten.

Dieser neue Build, zusammen mit der vorhandenen Konfiguration führt zu einer neuen Version. Dies wird in der Registrierung Docker abgelegt einrichten. Der Planer im Daten-Plan ausgeführt wird, dann zieht die veröffentlichten Abbilder in Entwicklung, Tests oder Produktion.

In dieser Phase die Container sind beide CoreOS verwaltet und durch Deis, Fehlertoleranz, Skalierbarkeit und die anderen Platform-as-a-Service-Funktionen bereitstellen. In den Daten ist Plan auch dem Router die Ablehnung von der Verwendung der Anwendung übermittelt und "leitet" Benutzer auf den entsprechenden Container zum Erfüllen der Anforderung. Abbildung 3 stellt diese Technologien zusammenarbeiten.

Deis-Architektur
Abbildung 3 Deis Architektur

Nachbereitung

Einige der erfolgreichsten open Source-Projekten gibt es keine neu zu erfinden des Rads. Diese bereits vorhandenen Komponenten, unter einem einzelnen Dach zusammenzubringen und beziehen sich Technologie auf einzigartige Weise. Monroy und das Team am Deis genau das hat. Sie verwaltet die Leistungsfähigkeit von Docker Container, CoreOS und Heroku-Style-Workflows. Kann das Team implementiert Deis nicht nur in Azure, sondern auch in anderen öffentlichen Clouds, lokal, auch ganz zu schweigen.

In der nächsten Folge von Azure-Insider-Fallstudien werde ich Docker untersuchen. Was ist Docker? Wie werden es ein Milliarden Dollar-Unternehmen in wenigen Jahren und wie ändert es sich die Methode Applikationen entwickelt, getestet und in die Produktion zurückgesetzt?


Bruno Terkaly ist leitender Softwareentwickler bei Microsoft mit dem Ziel, die Entwicklung von Programmen und Diensten branchenführender auf Geräten aktivieren. Er ist unter Technologiegesichtspunkten für die wichtigsten Cloud-basierten und mobilen Geschäftsmodelle in den gesamten USA und darüber hinaus zuständig. Er hilft Partnern, die Marktreife ihrer Anwendungen zu erreichen, indem er bei der Beurteilung, Entwicklung und Bereitstellung von ISVs architektonische Führung und sein tief greifendes technisches Engagement aufbietet. Terkaly arbeitet auch eng mit der Cloud und mobile engineering Gruppen von Feedback und die Roadmap beeinflussen.

Dank den folgenden technischen Experten für die Überprüfung dieses Artikels: Gabriel Monroy (EngineYard)