In unserem letzten Post legten wir unseren architektonischen Ansatz hinsichtlich einer skalierbaren Website dar. In diesem Post zeigen wir, wie eine solche Website erstellt wird. Unser Lösungsansatz in einem Wort: Automation.
Von Dorian Selz, Nektoon
Vor ungefähr hundert Jahren war die industrielle Güterherstellung, beispielsweise von Autos, eine Sache des Handwerks. Ford führte das bewegte Montageband und Massenfertigung industrieller Güter ein. Dank der Standardisierung der Produktion konnte die Produktivität um ein Zehnfaches erhöht werden. Die Preise für ein Modell T konnten von 760 $ auf 360 $ reduziert werden. Weniger bekannt ist, dass Ford seine Standardisierung auf Taylor abstützte.
Standardisierte Werkzeuge, exakte Aufgabenzuteilung im Betrieb, Zeitmessungen (z.B. „Aufwand, um einen Achsbolzen zu verschrauben: 15.2 Sekunden“), leistungsabhängige Entlöhnung und Automatisierung durch Repetition von Arbeitsabläufen sind Kernelemente des Taylorschen Quasi-Evangeliums, bekannt als Taylorismus oder Wissenschaftliche Betriebsführung.
Unser Ansatz: Zeitgemässe Automatisierung
Einen Server manuell aufzusetzen, kostet viel Zeit und nur allzu leicht unterlaufen einem Fehler dabei. Um Debian, das Betriebssystem unserer Wahl, aufzusetzen, verlassen wir uns auf eine vollautomatische Installation FAI (Fully Automated Installation). FAI benutzt dabei eine Reihe von Perl und Shell Scripts, um den Server Setup automatisiert vorzunehmen.
Um Aufgaben der Systemadministration zu automatisieren, benutzen wir Puppet. Puppet benutzt eine erklärende Sprache, um Beziehungen zwischen Servern, den Dienstleistungen, die darauf laufen, und den diesen Prozessen zugrunde liegenden Objekten transparent zu machen. Zwar braucht es eine gewissen Zeit, um dieser Sprache mächtig zu werden – und einige der ersten Puppet Scripts sorgten für rauchende Köpfe bei uns. Doch der Aufwand lohnt sich allemal: Es braucht weniger Zeit, um ein solches Script zu schreiben – das dann auf einigen Duzend Servern laufen wird –, als die Administrationsaufgaben eines einzigen Servers auszuführen. Ist der Initialaufwand geleistet, kann eine Menge Zeit in der Administration einer dezentralen Server- und Service-Landschaft gespart werden.
Zu guter Letzt zur Code-Entwicklung. Hier benutzen wir Hudson. Hudson, wie einige andere Systeme, funktioniert als sogenanntes laufendes Integrations-System (continuous integration system). Es erledigt zwei Aufgaben: Erstens ermöglicht es Entwicklern auf einfache Art Änderungen einzupflegen und zweitens lassen sich mit Hudson automatisiert und laufend Software Projekte entwickeln und testen.
Sind diese Helfer, FAI, Hudson und Puppet, richtig aufgesetzt, wird neuer Code ohne menschliches Zutun in die Entwicklungsumgebung und Live-Systeme integriert.
Diese Automatisierung erhöht die Produktivität unseres Teams signifikant. Wir verbraten unsere Zeit nicht mehr damit, Server aufzusetzen sondern kümmern uns um die wirklich wichtigen Dinge: Die Entwicklung einer Applikation, die unsere Kunden voll und ganz überzeugt.
Bauanleitung für Startups: Virtualisierung – wirklich keiner da… » startwerk.ch
Bauanleitung für Startups: Irren ist menschlich, Testing nötig » startwerk.ch
Das FAI Projekt ist umgezogen. Die Homepage ist nun erreichbar unter:
Opps, da fehlt doch was
http://fai-project.org