• Dezember 04, 2014

Unterstützende Technologien in der Entwicklung

Ich möchte Ihnen gerne meine Einschätzung unserer Erfahrungen bei Arcusys mit der Unterstützung der Softwareentwicklung für über 50 Entwickler und über 100 Projekte geben. Damit dies etwas tiefergehend behandelt werden kann, bietet dieser Post einen Überblick über das Gesamtthema, und die unterschiedlichen Komponenten/Teile unserer Systeme werden dann später in einer Art Artikelreihe diskutiert.

In unserem Unternehmen gibt es kontinuierliche Änderungen bezüglich der Notwendigkeit und der Anforderungen von Serverumgebungen und anderer Entwicklungsressourcen. Herkömmliche Entwicklungsserver könnten für bestimmte PC-Tower oder Rack-Server von Grund auf für die Entwicklungsaufgaben eingerichtet sein, aber das kann natürlich nicht auf mehrere Projekte hochgerechnet werden. Die moderne Lösung ist es, auf die eine oder andere Weise die Hardware virtuell zu machen.

Bei Arcusys verwenden wir seit einigen Jahren IAAS/PAAS-Lösungen, erst Eucalyptus und nun Openstack, die Cloud Computing-Dienstleistungen nach unserem Bedarf liefern. Dadurch konnten sich unsere Entwickler auf die Softwareentwicklung statt auf die Wartung von Serverumgebungen konzentrieren. Ein Beispiel: ein Liferay-Entwickler, der eine neue Entwicklungsarbeit beginnt, klickt auf ein paar Buttons, um die Art Serverressourcen zu haben, die er braucht, und kann sich dann in einer garantiert funktionierenden Umgebung auf die Entwicklung und Umsetzung konzentrieren. Nach dem Ende der Entwicklungsarbeit können die Ressourcen mit wenigen Klicks wieder in den Ressourcenpool zurückgegeben und anderweitig genutzt werden.

Bei den mit den Serviceangeboten von Jenkins and Gerrit und seit neuestem in einigen Projekten, von Puppet, abgedeckten kontinuierlichen Integrations-/kontinuierlichen Bereitstellungsprozessen konnten wir die menschliche Interaktions- und Gesamtprozesszeit bei der Änderung von einer Entwicklungs- zu einer Kundenproduktionsumgebung bei gleichzeitiger Erhöhung der Qualität von Softwareprodukten verringern, indem wir die Energie auf die Aufgaben richten, bei denen Entwicklungsaufwand nötig ist. Die Vorteile einer effizienten Nutzung menschlicher und Computer-Ressourcen sind bei jedem Schritt vom Entwickler bis zum Kunden und von der Systemverwaltung bis zur Unternehmensführung sichtbar.

Das Erreichen dieses Ziels erforderte und erfordert noch viele Anpassungen im gesamten Unternehmen, da dieses wie auch seine Anforderungen wachsen und sich verändern. Die Entwicklungsrichtlinien und Abläufe wurden innerhalb der Projekte standardisiert, wobei weiterhin möglicherweise für bestimmte Projekte notwendige spezielle Anforderungen möglich sind. Darüber hinaus haben wir die Art und Weise geändert, wie die permanent gespeicherten Daten verwaltet werden, zum Beispiel spezielle Inhalte, die für das Testen in einem Projekt benötigt werden, um die Wiederholbarkeit von Änderungen zu verbessern und zu verankern.

Wir testen alle Softwareänderungen in unserer Entwicklung in mehreren Schritten, bevor sie unsere Kunden erreichen, darunter auch interne Bereitstellungen und Kundenrezensionen, bevor es in die Produktion geht. Für alle diese Dinge muss der Entwickler lediglich die Ergebnisse früherer Schritte akzeptieren, um zum nächsten überzugehen, ganz ohne Stress.

Insgesamt haben wir einen großen Anteil sorgfältig ausgewählter Arbeitsschritte auf Computer übertragen. So können sich unsere Entwickler darauf konzentrieren, sich um die Endqualität des gerade bearbeiteten Produkts zu kümmern, statt um die gesamte Infrastruktur in Zusammenhang mit den Projekten.

Jussi Kekkonen

Weitere Posts lesen