Professioneller Betrieb von
Ruby on Rails

Entwicklung und Betrieb

Software wird bei Taktsoft in dem Bewusstsein entwickelt, dass sie betrieben werden muss.

Unsere Entwickler arbeiten allesamt aus voller Überzeugung unter dieser Prämisse. Denn so, wie die Qualität einer Software unter schlechtem Betrieb leidet, ist guter Betrieb nur möglich, wenn die Software bestimmten, nicht funktionalen Anforderungen genügt.

Was zeichnet Software aus, die sich gut betreiben lässt?

Die Anforderungen sind nicht exotisch. Im Gegenteil: Wir schreiben Ruby on Rails Anwendungen nach allgemein bewährter Vorgehensweise und dem aktuellen Stand der Technik. Unsere Software wird mit klaren Vorstellungen darüber entwickelt, wie Exception-Handling oder Datenbankabfragen geschehen sollen, mit Vorgaben zur automatischen Verwaltung von Abhängigkeiten, zur Verwaltung von Assets und zur Vermeidung von Sicherheitslücken (z.B. von SQL-Injection). Diese und weitere Vorgaben haben sehr detaillierte und auch kleinteilige Auswirkungen auf die Programmierung und sind das Ergebnis jahrelanger Erfahrung in der Softwareentwicklung. Sie sind auch ein kleiner Ausschnitt der Kriterien, die unserer Meinung nach gute Software ausmachen!
Diese Vorgaben sind natürlich kein Selbstzweck. Das Ziel dabei ist, dass sich die so entwickelte Rails-Anwendung reibungslos in unsere Prozesse und Bausteine des Taktsoft-Betriebs eingliedert und nur so viel Aufmerksamkeit wie nötig beansprucht.

Übernahme individueller Rails-Lösungen von Drittanbietern in den Betrieb von Taktsoft

Sie suchen nach einem kompetenten Partner für den Betrieb Ihrer RoR-Anwendung?

Der professionelle Betrieb einer Individualsoftware erfordert neben der hohen Kompetenz für Softwarebetrieb auch die genaue Kenntnis der Individualsoftware, sowie eine Abstimmung der zu betreibenden Software mit den Betriebsanforderungen. Die Erfüllung dieser Voraussetzungen sind Teil unseres Entwicklungsprozesses. Doch wie verhält es sich bei einer Software, die von einer dritten Partei entwickelt wurde?

So außergewöhnlich Ihre Software ist, so individuell werden wir uns dieser annehmen. Je nach Umfang, Qualität und Einsatzzweck kann sich das Vorgehen und vor allem der damit verbundene Aufwand stark unterscheiden. Es wäre auf jeden Fall nicht die erste Software, der wir in moderner Umgebung zu neuer Blüte und gesundem Fortbestand verhelfen. Wir besprechen mit Ihnen gerne das Vorgehen und die möglichen Aufwände für die Übernahme Ihrer Software in unseren Rails-Betrieb.

Bausteine im Taktsoft-Betrieb

Die Kombination von Know-How, Prozessen und Software ermöglicht einen Betrieb von Software nach State of the Art.

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.

Professioneller Betrieb von Ruby on Rails

Geschäftskritische Software kauft man nicht, um sie ins Regal zu stellen!
Sie ist dazu da, ihren Dienst zu tun, ist in den Arbeitsalltag integriert und bedarf kontinuierlicher Betreuung und in der Regel auch Anpassung.

Somit erfordert der professionelle Betrieb von Ruby on Rails-Systemen die Kombination von sehr unterschiedlichen und zum Teil gegenläufigen Bedürfnissen.

  • Sicherheit: Vertraulichkeit und Integrität sind neben der Stablität die wichtigsten, nicht-funktionalen Anforderungen an eine geschäftskritische Software. Wir stellen sicher, dass Ihr System von Haus aus grundlegenden Sicherheitsansprüchen genügt, auf dem aktuellen Stand ist und auch über die gesamte Betriebszeit bleibt
  • Stabilität: Wir sorgen dafür, dass Ihre Software das erforderliche Umfeld hat und die notwendige Zuwendung erhält, damit sie zuverlässig läuft. Dafür nutzen wir die passende Kombination aus hohem Automatisierungsgrad und individuellem Know-How Ihrer Software.
  • Agilität: Wir bieten ein hohes Maß an Prozesssicherheit und Automatisierung bei der Übernahme neuer Features und Versionen, bei gleichzeitig großer Aufmerksamkeit für Sicherheit und Stabilität.
  • Kostenbewustsein: Durch eine enge Integration der Softwareentwickler in den Server- und Anwendungsbetrieb und der Implementierung von betriebsrelevanten, aber nicht funktionalen Anforderungen, vermeiden wir Reibungsverluste und minimieren den Aufwand beim Betrieb.