Setup von Entwicklungsumgebungen
13. Juli 2009 Roland
- Bits und Bytes
- Die For-Schleife
- Klasse
- Objekte
- while-Schleife
- Do -While-Schleife
- Kleiner Kurzeinschub zum Attributmodellieren
- Arrays in PHP
- foreach Schleife
- Globale Variablen in JavaScript
- Modelle von der Oberfläche trennen
- Aufgabe Eingabefelder während der Eingabe überprüfen
- Kleine Geschichte zur Verfügbarkeit
- Was können wir tun um die Verfügbarkeit zu erhöhen?
- Lösungsvorschlag um Eingabefelder während der Eingabe mit JavaScript zu überprüfen
- Aufgabe Eingaben überprüfen Erweiterungen
- Warum gibt es verschiedene Fachrichtungen?
- Aussagelogik
- Aufgabe Ratespiel um Mengenlehre zu verwenden
- Aufbau und Funktionsweise einer Festplatte
- Kleine Aufgabe um mit JavaScript Events rumzuspielen
- Wie kann man z.B. alle KDE Pakete löschen?
- Setup von Entwicklungsumgebungen
- Wozu ein Testprotokoll alles gut sein kann.
In den letzten Wochen diskutieren Dirk und ich immer wieder über den Einsatz meines Asus Eee 900 als Entwicklungsrechner.
Er möchte mich davon überzeugen, auf dem kleinen Ding nur die nötigste Umgebung für Webentwicklung aufzusetzen. ![]()
Ich möchte ihn davon überzeugen, dass so wenig wie möglich Unterschiede bei meiner Entwicklungsumgebung zur Produktionsumgebung sinnvoll sind.
Was ist die Infrastruktur und Systemkomponenten Anforderung?
Die Produktionsumgebung hat folgende Konfiguration:
- Apache Webserver (aktuelle Version)
- PHP 5.X
- MySQL (aktuelle Version)
- AMD 64 Bit Root-Server
Was für eine Entwicklungsumgebung verwende ich?
Ich habe zwei Rechner mit denen ich die meiste Zeit entwickle:
- Asus Eee 900 für Unterwegs. Da ich viel Reise, ist das Teil im Moment wirklich meine primäre Maschine
Kaum zu glauben oder? Aber ich kann darauf wirklich arbeiten. - Desktop Quad Core Pentium Maschine mit 4 GByte RAM, zwei Monitoren usw.
Was man hier sieht ist, dass ich von Hardwareseite aus schon einen ziemlichen Zoo beieinander habe und die Komponenten nicht nah an der Produktion sind.
Auf den Maschinen habe ich die gleichen Softwareumgebungen drauf wie auf der Produktion.
Das heisst, nicht ganz. Ich führe zuerst auf den Entwicklungsrechnern Softwareupdates durch. Wenn die funktionieren und unsere Komponenten immer noch gut zucken, wird die Produktion aktualisiert.
Eigentlich logisch oder?
Abnahmeumgebung
Damit die Produktionsumgebung nur dann umgestellt wird wenn sichergestellt ist, dass wir funktionsfähige Software einsetzen, haben wir einen weiteren Rechner für die Abnahmeumgebung aufgebaut.
Dieser Rechner ist ein AMD 64 bit Rechner. Damit ist die Prozessorarchitektur mit der des Root-Servers übereinstimmend.
Er hat auch das gleiche Betriebssystem mit den identischen Libraries wie der Produktionsrechner.
Was erreichen wir mit dieser Konfiguration?
Die Entwicklungsrechner verwenden identische Software wie in der Produktion.
Das hat folgende Vorteile:
- Wir entwickeln mit den gleichen Softwarepaketen wie in der Produktion. (Apache, PHP, MySQL usw.)
- Die Konfiguration des Webservers (httpd.conf usw.) können wir schon in der Entwicklung üben. Die Unterschiede zur Produktion sind relativ gering und wir sind für die Migration trainiert.
- Upgrades können auf der Entwicklungsmaschine ausprobiert werden.
- Ich kann immer und überall mit meinem kleinen Netbook entwickeln. Das hat sich schon oft als Vorteil erwiesen, falls ein paar kleinenere Anfragen von Kunden schnell behandelt werden mussten. Ich war damit nicht ortsgebunden.
Nachteile dieser Entwicklungsumgebung
Wir haben einen Zoo an Rechnern rumstehen.
Wenn wir genug Geld hätten, könnten wir uns einen Typ von Hardware kaufen und betreiben. Das würde viel Aufwand und somit Geld sparen.
Mein Asus Eee 900 ist eine nette Maschine, aber es ist und bleibt ein Zwerg. Eigentlich ist es nicht vernünftig so eine kleine Maschine für diesen Einsatzbereich zu verwenden.
Aber wie hat schon einer meiner Profs gesagt: “Alle wünschen sich die besten Studenten, aber wir haben nur sie!”. ![]()
Ich bin auch ein grosser Bastler und deshalb habe ich halt im Moment die kleine Maschine.
Dirk hat mir eine lange Mail geschrieben in der er ausführt, dass ich auf einen leichteren Webserver umsteigen sollte.
Damit könnte ich wichtige Systemresourcen einsparen und mein Asus wäre dann wohl etwas schneller.
Doch hierzu kann ich nur sagen, dass es mir wichtig ist mit dem Webserver zu arbeiten, den ich später auch in der Produktion einsetze. Spezielle Flags, die ich Beispielsweise für BuddyPress benötige, möchte ich gleich bei mir auf der Maschine ausprobieren und optimieren können.
Fazit
Es ist wichtig mindestens die Abnahmetestumgebung mit der Produktionsumgebung gleich aufzusetzen.
Wenn möglich, sollte identische Hard- und Softwarekonfigurationen eingesetzt werden.
Häufig ist dies aus Kostengründen nicht möglich. Dann muss man wenigstens versuchen so nah wie möglich an die Produktionsumgebung heranzukommen.
Bei der Entwicklungsumgebung sollte wenigstens der gleiche Softwarestack eingesetzt werden. Die Entwickler arbeiten dann mit den gleichen Tools, die später in der Produktion eingesetzt werden. Somit können Unterschiede und Problemstellungen schon während der Entwicklung erkannt werden.
Ein Mix von Komponenten sollte, wenn möglich, immer vermieden werden.
Artikel mit ähnlichen Schlagwörtern
Der Beitrag wurde am Montag, den 13. Juli 2009 um 10:03 Uhr veröffentlicht und wurde unter IT, Unterricht abgelegt.
Dir gefiel der Artikel? Dann abonniere doch den RSS Feed![]()
Du kannst die Kommentare zu diesem Eintrag durch den RSS 2.0 Feed verfolgen. Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.









Der Punkt ist, dass auf dem Entwicklungsrechner, die Version von PHP (nicht 5.x) genau die gleiche sein sollte wie in er Produktion. Alles andere spielt eine untergeordnete Rolle.
Der Webserver liefert nur das Ergebnis des PHP-Interpreters aus, das kann jeder x-beliebige Webserver aber auch.
Buddypress war übrigens im Ursprung unserer Diskussion noch kein Thema, da ging es um selbst entwickelte PHP-Software. (Aber selbst da spielt die PHP-Version eine grössere Rolle als die anderen Komponenten).
Ich kopiere die Mail noch einmal hier hinein, damit haben wir alles zusammen:
Daher hier noch einmal die Auflösung des Apache2-Problems auf dem EEE PC. Es ist richtig, dass Du den X-Server an Platz 1 bei der Speichernutzung siehst, aber der Apache startet standardmässig zehn Tochter-Prozesse, an die er die http-Verbindungen weiterreicht.
Das heisst, den Speicherverbrauch, was bedeutet, dass Du im Minimalfall einen Mutter- und zehn Kindprozesse hast, die alle Speicher verbrauchen (bei mir in einer Testinstallation, sind das immerhin knapp 20 MB pro Kindprozess)
Dazu kommt, dass diese elf Prozesse auch regelmässig in der Run-Queue auftauchen und CPU verbrauchen.
Wenn Prozesse sehr lange idle sind, wandern sie in den Swap-Bereich, was nicht weh tut, aber I/O verbraucht und sowohl von Speicher, als auch Prozessor oder I/O hast Du auf der kleinen Büchse nicht so viel. Wenn die Prozesse wieder gebraucht werden, wird aus dem Swap-Bereich wieder der Speicher beschrieben.
Ich kenne natürlich wesentlich grössere Szenarien, aber es hat sich als gut erwiesen, wie folgt zu arbeiten:
Entwicklersysteme arbeiten mit der gleichen PHP-Version wie Produktionssysteme, können aber einen kleineren Webserver verwenden und eine andere Datenbank, die den gleichen Befehlsvorrat hat. Wenn Du Spezialitäten von Apache oder MySQL benötigst, kommst Du um die beiden allerdings nicht herum.
Jetzt haben wir allerdings schon das Problem, dass die Basis-Bedingung (gleiche PHP-Version) schon nicht erfüllt ist, was allerdings zu realen Problemen in der Produktion führen kann (aus diesem Grund sind bei uns auf den Systemen auf der Arbeit alle Programmiersprachen statisch gelinkt und auf den RedHat-, SUSE- und SOLARIS-Systemen in der identischen Version verfügbar, da sie aus denselben Quellen compiliert wurden).
Wenn Du wirklich nahe an die Produktion willst, kommst Du um Gentoo nicht herum und solltest auch alle anderen Unterschiede (X-Server …) eliminieren.
Nach der Entwicklungsumgebung geht es in eine Integrations-, danach in eine Abnahmeumgebung, die identisch zur Produktion installiert und konfiguriert ist und auch die gleiche Hardware beeinhaltet. In Deinem Fall würde ich mir die Integrationsumgebung sparen und direkt in die Abnahmeumgebung gehen, die heruntergebrochen auch nicht die gleiche Hardware haben musss, aber zwangsweise die gleiche Software-Umgebung haben muss. Dort können auch die Tests stattfinden. Danach geht es in die Produktion.
Um es zusammenzufassen.
- Entwicklungsumgebung
- Abnahmeumgebung mit identischen Softwareständen und produktionsidentischer Konfiguration (das kann vielleicht sogar eine virtuelle Maschine sein), dort laufen alle Tests.
- Produktionsumgebung
Ich könnte jetzt ins Schwafeln geraten, aber das hilft nicht. Auf der Arbeit (im Geschäft) haben wir sechs Entwicklungsumgebungen, vier Abnahmeumgebungen und zwei Produktionsumgebungen (eine für Desaster Recovery).
Vielleicht mache ich dazu mal einen Vortrag und erkläre dann auch in welche Schwierigkeiten man kommen kann, wenn man diesen Pfad verlässt. Ich hatte in meiner Karriere schon Probleme, die nicht nachgestellt werden konnten, da sie an der Serie der Netzwerkkarten lagen (in der Abnahmeumgebung war eine andere Serie verbaut als in der Produktionsumgebung).
[...] http://www.baldenhofer.eu/blog/it/setup-von-entwicklungsumgebungen [...]
Hi Dirk,
wenn wir “nur” von selbstentwickelten PHP Programmen ausgehen, ist es tatsächlich völlig egal welchen Webserver man verwendet.
Bei der Integration und Verwaltung von Webapplikationen sieht das jedoch schon ein bisschen anders aus.
Ich habe beim Aufsetzen von Systemen den kompletten Stack zu beachten. Nicht nur den eigentlichen Business Logik Stack.
Vielleicht sollte ich noch erwähnen, dass ich hier von einer drei Personenfirma rede.
Im Betrieb, den ich sonst so unter Tags mit meiner Anwesenheit beglücke, sieht das anders aus. Da haben wir eine deutlich grössere Aufgabenteilung und somit würde ein Programmierer wirklich “nur” programmieren.
Im grossen und ganzen sagen wir beide das Gleiche aus.
Es ist wichtig, die Abnahmetestumgebung zu haben und diese so nah wie möglich an der Produktion zu halten.
Bei der Entwicklungsumgebung kann man sich auf das Wesentliche konzentrieren und braucht sich nicht um alles wie in der Produktion im Detail kümmern.
Stimme Dir natürlich zu, wir setzen nur beide den Schwerpunkt woanders.
Bei Dir reicht es, auf der Produktion php 5.irgendwas und in der Entwicklung php 5.irgendwasanderes zu haben und ich bestehe darauf, dass die Versionen identisch sind und der Rest keine Rolle spielt.
Dazu kommt, dass wir beide den Fehler machen, den EEE als Entwicklungsmaschine zu sehen und das ist er nun wirklich nicht.
Der arme kleine Eee
Bei PHP bin ich übrigens sehr darauf aus, dass die Versionsnummern 100%ig übereinstimmen. Ausser wenn ich einen Upgrade durchführen (muss).
Wir hatten einmal das Problem, dass sich die XML Schnittstelle von PHP 5.x.x auf 5.x.y (wobei y eines höher war als x) verändert hat.
Das Resultat war, dass sämtliche XML-basierten Systeme nicht mehr korrekt arbeiteten.
Und das sind bei uns in miradlo eine ganz schöne Menge…
Genau darum geht es. Der Webserver hat eher eine untergeordnete Rolle …