DevOps Tools, Prozesse & Infrastruktur
DevOps
Die Kombination aus Development und Operations ist bei Taktsoft selbstverständlich. Denn personell existiert keine Trennung zwischen Entwicklung und dem eigentlichem Betrieb. Außerdem existiert bei uns auch ein hohes Bewusstsein für Sicherheitsthemen. Jeder Entwickler ist im Umgang mit Linux, der Shell und den grundsätzlichen Anforderungen an den Betrieb von Rails-Software vertraut. Die Integration von Capistrano, unserer Wahl zur Automatisierung von Deployment-Vorgängen, ist in unseren Projekten eine Selbstverständlichkeit.
Automatisierung
Unser Anspruch ist es, einen immer höheren Automatisierungs-Grad im Zusammenhang mit unserem Betrieb zu erreichen. Dabei spielen natürlich Faktoren wie Schnelligkeit und Kostenersparnis eine Rolle. Mindestens genauso wichtig ist hier allerdings der Aspekt der Reproduzierbarkeit. Die starke Integration von Softwareentwicklung und Betrieb mit dem gleichzeitigen Anspruch agil zu sein, erfordert die Orchestrierung einer großen Palette von Technik. Diese zielgerichtet und vor allem reproduzierbar zum Einsatz zu bringen, wird durch Automatisierung an vielen Stellen stark vereinfacht und zum Teil sogar erst möglich gemacht. Der größte Teil der hier erwähnten Tools zielt auf diesen Effekt ab.
Contiuous Delivery
Mit der Praxis der Continuous Integration wird sichergestellt, dass alle freigegebenen Code-Änderungen zusammenlaufen und die Software weiterhin voll funktionsfähig bleibt. Mit der Unterstützung von Git und Jenkins, und mit Hilfe einer hohen Testabdeckung als Ergebnis unserer testgetrieben Entwicklung, wird sichergestellt, dass Überraschungen sehr selten sind. Im nächsten Schritt werden die Anpassungen an die Software vollautomatisch auf das Testsystem ausgeliefert. So kann sich jeder interessierte Projektbeteiligte über den aktuellen Stand der Software informieren: Nur wenige Minuten nach Umsetzung eines Features steht es zur Ansicht bereit. Dieser Prozess ist auch Teil unserer gelebten Scrum Softwareentwicklung.
Nach Absprache mit unseren Kunden sind wir durchaus gerne bereit, dieses Vorgehen auf die Produktions-Umgebung auszudehnen. Für Software-Plattformen, deren Geschäftsmodell schnelle Änderungen erfordert, sind wir so in der Lage jederzeit und bei Bedarf mehrfach täglich Änderungen an der Software vorzunehmen.
Konfigurationsmanagement
Entweder stellt der Kunde die Server für den Betrieb zur Verfügung oder wir übernehmen das Hosting der Anwendung. Doch die Provisionierung der Maschinen wird in der Regel durch uns vorgenommen. Hier spielen die Aspekte Sicherheit und Vollständigkeit der Installation eine große Rolle. Dafür ist eine möglichst hohe Reproduzierbarkeit nötig. Um dies zu erreichen, arbeiten wir mit Checklisten und automatisieren, wo möglich, das Konfigurationsmanagement. Hierfür setzen wir aktuell Puppet ein.
Sicherheit
Die Sicherheit der von uns betriebenen Software, insbesondere der Daten, genießt bei uns einen hohen Stellenwert. Dies beginnt bereits bei unserer hausinternen Infrastruktur auf Basis von Open Source Software, den darin eingesetzten Firewall-Technologien und asymmetrischen Verschlüsselungsverfahren und zieht sich durch die gesamte Software, die für die Entwicklung und den Betrieb genutzt wird. Die im Internet stehenden Server erhalten darüberhinaus gesonderte Aufmerksamkeit. Diese besteht aus einer Kombination von Automatisierung, dem Einsatz von Icinga zum Monitoring und einem großen Know-How und Interesse an Sicherheits-relevanten Themen. Dieses Know-How fließt insbesondere bei der oben genannten, weitgehend mit Puppet automatisierten, Provisionierung der Server ein. Somit wird sichergestellt, dass alle durch uns betriebenen Maschinen den selben und aktuellen Stand in Punkto Sicherheit haben.
Monitoring
Probleme erst gar nicht aufkommen zu lassen, ist natürlich unser primäres Ziel. Doch es wird sich nicht immer erreichen lassen. Also gilt es möglichst, Probleme festzustellen und darauf zu reagieren, bevor Nutzer sie bemerken. Zur Überwachung der durch uns betriebenen Software und des damit in Zusammenhang stehenden Netzwerkes nutzen wir Icinga. Durch die Überwachung der unterschiedlichen Dienste lassen sich nicht nur spontane Ausfälle erkennen, sondern auch sich anbahnende Probleme, wie z.B. knapp werdender Plattenplatz oder auslaufende SSL-Zertifikate, identifizieren.
Über den Zustand der betriebenen Rails-Anwendung lassen wir uns durch Errbit informieren. Dieses Tool wertet automatisch Fehler der zu überwachenden Software aus, aggregiert diese und löst eine angemessene Benachrichtigung von zuständigen Personen aus. Dabei integriert es sich hervorragend in unseren Softwareentwicklungsprozess. Dies ist ein weiteres Beispiel dafür, wie eng Entwicklung und Betrieb bei Taktsoft zusammenhängen. Denn je aussagekräftiger eine Fehlermeldung im Zuge der Softwareentwicklung definiert wurde, um so schneller und genauer lassen sich auftretende Fehler im Betrieb eingrenzen und abstellen.
Helpdesk
Für den Fall, dass doch dringender, spontaner Kommunikationsbedarf im Zusammenhang Ihrer Software besteht, sind die Verantwortlichen auch kurzfristig in Ihrem Zugriff. Ob per Telefon, Mail oder über unser Ticketsystem: Wir punkten mit schnellen Reaktionszeiten.