DevOps im Startup

In agilen Umgebungen wie Startups sind starre Trennungen von Softwareentwicklung und IT Operations eher selten anzutreffen. Doch auch viele große Unternehmen wechseln immer öfter auf agile Prozesse und einem dazu passenden IT Umfeld. DevOps ermöglicht die Vernetzung der klassischen Silos. Durch die Einführung intelligenter und automatisierter Prozesse lässt sich die Auslieferung der Software und dessen Qualität erheblich steigern.

Die gängigen DevOps Prozesse und Tools decken die Bereiche Planung, Entwicklung, Build, Test, Release, Deployment, Operations und Monitoring ab. Welche Prozesse dabei automatisiert werden sollen und zu welchem Zeitpunkt hängt maßgeblich vom Reifegrad des Unternehmens und der verfügbaren Zeit ab. Dabei muss die DevOps Umgebung am Anfang nicht so perfekt optimiert sein wie bei Netflix deren Automatiserungsgrad einzigartig ist. Für die Einführung der Tools und Prozesse muss Zeit aufgewendet werden welche dann in der Entwicklung fehlt. Gerade bei Startups die noch ihr MVP (Minimum Viable Product) am Markt erproben wäre eine vollständige Automatisierung noch verfrüht. Dennoch hilft eine frühzeitige Einführung auch hier die Produktivität und Qualität zu erhöhen. Exemplarisch möchte ich die Umsetzung meines letzten Stacks für ein schnell wachsendes Startup Unternehmen beschreiben.

Ausgangslage und Anforderungen

Das MVP ist am Markt erprobt und das Team hat bereits einige Entwickler an Board. Die primären Anforderungen sind somit die Qualität der Software erhöhen, idealerweise durch Testautomatisierung und Code-Quality-Standards. Neue Features müssen jederzeit und von jedem Mitarbeiter getestet werden können bevor diese in die Produktionsumgebung kommen. Somit müssen mehrere Testumgebungen verfügbar sein. Im Hinblick auf weitere neue Entwickler sollen diese schnell produktiv sein. Außerdem müssen alle Umgebungen zur Nachstellung von Problemen gleichartig aufgesetzt und konfiguriert sein.

A fool with a tool is still a fool.

Ein weiteres wichtiges Kriterium ist eine einfache Wartbarkeit und Administration. Probleme und Anforderungen sollen nicht mit einem Zoo aus tausend Tools erschlagen werden. Dabei ist eine wichtige Frage welche Programme selber gehostet werden sollen und wo ein Zukauf bzw. ein SaaS Modell sinnvoll ist. Natürlich gilt es den Datenschutz bei letzterem zu wahren. Selber administrierte Tools müssen immer auf dem aktuellsten Softwarestand und mit sicheren Konfigurationen bestückt sein.

Tools

Ansible

Eines der zwei zentralen Tools ist hier Ansible geworden. In den sogenannten Playbooks und den Konfigurationsdateien lässt sich die gesamte Umgebung definieren. Ansible verfolgt dabei den Ansatz, dass der Endzustand beschrieben wird. Die Definition für den Applikationsserver sieht dann also beispielsweise wie folgt aus.

  • [AppServer]
    • Server1
    • Server2
  • [AppServer Installation]
    • nginx: installiert
    • PM2: gestartet
    • DatendankVerbindung: DbServerCluster

Ich nutze Ansible sogar um die Server direkt bei dem Cloud Anbieter aufzusetzen. Somit gibt es zwei Ansible Projekte. Ein Projekt um die gesamte Serverumgebung inkl. Datenbankservern, VPNs, Firewall Regeln, SSH-Keys und Object Storages zu verwalten und ein zweites Projekt welches dann für jeden Server die Software und deren Konfiguration beschreibt. Durch die einfache Konfiguration können somit innerhalb weniger Minuten beliebig viele gleichartige Integrations-/Testumgebungen aufgebaut werden. Alle Umgebungen werden außerdem automatisch in die Monitoring- (Icinga/Nagios) und Loggingumgebung (Graylog 2) eingebunden. Ich habe mich bewusst gegen Datadog und ähnliche SaaS Dienste entschieden weil die Administration und Konfiguration von Tools wie Graylog, Icinga, Elasticsearch und vielen mehr mit Ansible ein Kinderspiel ist. Wichtig sind hier nur zuverlässige und sichere Konfigurationsdefinitionen und sauber abgetrennte Netzwerkbereiche und Firewall Regeln.

Jenkins

Die zweite Zentrale Software ist Jenkins. Dieser löst Deploybot ab um mehr Kontrolle über den gesamten Release Prozess zu haben. Jenkins kümmert sich um mehrere Teile. Zum einen prüft er sämtliche Check-Ins die auf GitHub getätigt werden. Dies umfasst die Prüfung der Code Qualität (Linting, SonarQube, …). Zum anderen führt Jenkins Unit Tests durch, startet die API Tests mit postman bzw. newman und führt die User Acceptance Tests von Selenium aus. Abhängig von den gewählten Branches automatisiert Jenkins auch das Deployment. Sämtliche commits auf den develop branch führen zu einem Deployment auf die Integrationsumgebung. Alle master commits müssen von mindestens zwei Entwicklern und Jenkins selber geprüft werden und führen dann zu einem Deployment auf die Produktionsumegbung.

Jeder Entwickler hat darüber hinaus jederzeit die Möglichkeit beliebige Branches auf Testumgebungen zu deployen. Dabei kann außerdem festgelegt werden welche Testdaten initial in den Datenbankservern zur Verfügung gestellt werden. Die Testumgebungen werden darüber hinaus in gesonderten virtuellen Netzwerken aufgebaut.

Produktion als lokale Entwicklunsumgebung

Ansible funktioniert auch mit Vagrant. Sämtliche Konfigurationen die für die Serverumgebungen definiert sind funktionieren somit auch lokal. Jeder Entwickler hat daher eine Umgebung deren Softwarestände und Konfiguration 1:1 mit der Produktion übereinstimmen. Lediglich die Datenbank ist in den Entwicklungsumgebung lokal anstelle von dedizierten Servern. Die lokalen Umgebungen können jederzeit auf Knopfdruck neu erstellt werden und erhalten direkt Testdaten. Neue Mitarbeiter lassen sich somit innerhalb von ca. 30 Minuten arbeitsfähig einbinden!

Zusammenfassung

Durch die Automatisierung des Aufbaus der lokalen Entwicklungsumgebung bis hin zur vollständigen Serverumgebung und der Automatisierung der Deployments findet jeder Entwickler jederzeit gleichartige Umgebungen vor. Fehler können lokal nachgestellt werden und notwenige Konfigurationsänderungen werden versioniert und auditiert zentral verwaltet. Jeder Entwickler kann jederzeit Änderungen von Code und Infrastruktur nachvollziehen und überprüfen.

 

Bildquelle: pixabay.com

Digitaler Minimalismus – Das papierlose Büro und Heim

Im Lauf der Zeit sammelt sich ein riesiger Berg Papier im Haushalt an. Darunter fallen Ausdrucke von Rechnungen, Verträgen, Skizzen und Notizen. Neben dem unschönen Effekt von übervollen Ordnern und Schränken sorgt diese Menge auch für eine fehlende Übersicht und lange Zeit für die Suche nach den richtigen Dokumenten. Das papierlose Büro oder auch das papierlose Heim kann hier Abhilfe schaffen. Dabei ist das papierlose Büro doch überhaupt nichts neues, nur hat es sich bisher nicht durchgesetzt. Doch die Digitalisierung ändert einiges und ermöglicht damit den Papier Minimalismus.

Klappt doch nicht?!

Das papierlose Büro wird seit Jahren versprochen und doch sammeln sich die Papierstapel weiter an. Es gibt aber mittlerweile einige Änderungen die sich diesem möglichen Ideal annähern. In den Zeiten von eCommerce und Smartphones gibt es durchaus schnelle und einfache Methoden alles zu digitalisieren. Die einzelnen Bereiche werden hier betrachtet und auch Möglichkeiten zur sinnvollen Datenablage.

Digitalisieren der Inhalte

Hier sind die wichtigsten Varianten und Quellen von Dokumenten beschrieben und wie sich diese erfassen lassen.

E-Mail und PDF

Immer mehr Einkäufe erfolgen über das Internet und die Onlinehändler haben sich bereits in vielen Bereichen von der Papiervariante der Rechnung verabschiedet. Händler wie beispielsweise Amazon verschicken ihre Pakete ohne eine beiliegende Rechnung. Diese kann nach dem Versand direkt über den Kundenbereich heruntergeladen werden. Bei anderen Plattformen kommt die Rechnung oft bereits per E-Mail. Somit lassen sich diese Rechnungen direkt digital archivieren.

Smartphone

Im Supermarkt nehmen viele Menschen den Kassenbon mit um einen Überblick über die Ausgaben zu behalten. Oft landet der Zettel dann im Portemonnaie und verblasst über die Zeit. Deutlich leichter ist hier die Nutzung einer der unzähligen Scanner Apps aus den Android und Apple App Stores. In allen Modernen Smartphone sind die Kameras ausreichend aufgelöst um klare Fotos von den Belegen aufzunehmen. Ebenfalls können normale Rechnungen auf Papier so erfasst werden. Die Bilder lassen sich dann später sichten und archivieren.

Scanner

Für eine große Menge von Dokumenten oder für das Erfassen von Texten in digitaler Form eignen sich Dokumentenscanner. Einfache Versionen ermöglichen das Einschieben der Dokumente und am Ende erfolgt die Ausgabe als Bild oder PDF. Die größeren Versionen umfassen neben dem automatischen Einzug von vielen Seiten auch den Duplex Scan, also die automatische Erfassung beider Seiten. Außerdem können diese Geräte mittels Texterkennung (OCR) durchsuchbare PDF Dateien erzeugen. Das ist besonders praktisch falls über große Datenbestände spezielle Inhalte auffindbar sein sollen.

Dokumentenablage

Die richtige Struktur der Dokumentenablage endet schnell in einer eigenen Wissenschaft. Sollen alle eigenen Rechnungen in einen eigenen Ordner? Jeder Händler? Was ist mit Verträgen? Mein Tipp ist hier mit einer einfachen Struktur starten. Aufteilen in Rechnungen (alles was zu einem gekauften Produkt gehört und irgendwann irrelevant wird) und sonstige Dokumente. In jedem der Ordner gibt es dann die Dokumente mit einer sinnvollen Namenskonvention. Das ist idealerweise etwas wie JAHR\MONAT\TAG_NAME.xyz oder JAHR\MONAT\TAG\NAME\HINWEIS.xyz. Eine Rechnung von Amazon wäre dann also etwas wie 2017\12\12\Amazon\Weinachtseinkauf.pdf oder ähnliches. Oft fallen weniger Dokumente an als man glaubt. Andernfalls können je nach Bedarf weitere Unterordner erstellt werden.

Niemals sollten die Daten jedoch nur auf einem Gerät liegen! Eine Strategie zur Datensicherung ist unabdingbar!

Jetzt dürfte dem papierlosen Büro und Heim kein Hindernis mehr im Weg stehen! Frohes Erfassen!

 

Bild: pixabay.com

Digitaler Minimalismus – Accounts löschen

Was der Frühjahrsputz im Haushalt ist, dass ist das Löschen von Accounts im digitalen Leben. Es geht viel zu schnell und einfach im Internet – Hier eine Bestellung im Onlineshop, da eine Anmeldung auf einem sozialen Netzwerk und dann noch ein paar Anmeldungen in diversen Foren. Plötzlich ist man nach einem Jahr auf einigen Dutzend oder Hunderten Webseiten angemeldet. Grundsätzlich problematisch ist dies dann, wenn die Plattformen nicht mehr genutzt werden und später möglicherweise einem Hackerangriff zum Opfer fallen. Dann sind viele persönliche Daten im Netz. Die Lösung: Accounts löschen – ganz einfach ist das aber nicht immer.

Accounts löschen

Eigentlich muss jede Webseite in Deutschland eine Möglichkeit zur Verfügung stellen um den Account zu löschen. Da viele Webseiten aber im Ausland beheimatet sind oder sich einen Spaß daraus machen diese Option zu verstecken ist das Löschen oft nicht ganz einfach. Idealerweise erstellt man sich eine Liste mit allen Seiten auf denen ein Account besteht (noch besser ein sicherer Passwortspeicher mit individuellen Daten) und pflegt diese regelmäßig. Danach erfolgt die Sichtung der Inhalte ein oder zweimal im Jahr. Jede Webseite die nicht besucht wurde oder nicht mehr relevant ist kommt auf die Liste der zu löschenden Accounts.

Sind alle Accounts bekannt die zu löschen sind dann bietet sich ein Besuch auf der Webseite an. Oft lässt sich unter Menüpunkten wie „Profil“ oder „Account“ ein Button oder Link zum Löschen finden. Alle Webseite die diese Option nicht direkt bieten lassen sich mittels Google klären. Der ideale Suchbegriff ist hierbei „Account löschen NAME_DER_WEBSEITE“. In den Treffern befinden sich die Links zum Löschen oder mindestens hilfreich Anleitungen dafür.

Abos prüfen

Wenn regelmäßig Verträge geschlossen wurden beispielsweise bei Spotify, Telekom, Apple, Audible, usw. können diese Abos oft direkt beim Hersteller gekündigt werden. Andernfalls helfen Webseiten wie Aboalarmsepastop.eu oder check24 bei der Erinnerung an die Kündigungsfristen. Die Accounts sind dadurch aber nicht automatisch gelöscht! Dies muss im Anschluss wie oben beschrieben erfolgen!

 

Bildquelle: pixabay.com

Datensicherung und Backup

In Zeiten von Ransomware und Cloudspeichern war das Sichern von Daten noch nie so wichtig und gleichzeitig so einfach wie heute. Eine gute Backup Strategie hilft für den Ernstfall bei dem man hofft, dass dieser niemals eintritt. Kommt es aber doch zum Ernstfall ist ein automatisches Backup die Rettung. Das Erstellen soll so wenig Aufwand wie möglich machen und gleichzeitig sicher sein. Hier gibt es diverse Ansätze.

Strategie für die Datensicherung

Eine gute Strategie klärt die wichtigsten Punkte für eine sichere Datenverwaltung. Die folgenden Fragen stellen hier den Rahmen für die Strategie da.

  • Welche Daten müssen gesichert werden? (Persönliche Bilder, Steuerlich relevante Dokumente, …)
  • Müssen die Daten auch außerhalb der eigenen vier Wände gespeichert sein? (Im Brandfall, Diebstahl, …)
  • Ist eine Verschlüsselung notwendig?
  • Wie viele Replikationen sind notwendig?
  • Vertraue ich Clouddiensten?

Aus den Antworten kann nun die Strategie entwickelt werden. Idealerweise sollte diese auch aufgeschrieben sein!

Cloud und NAS

Anbieter wie Synology bieten Network Attached Storage (NAS) Systeme an. In diesen Geräten befinden sich mehrere Festplatten die gegen Datenverlust oft im redundanten RAID System aufgebaut sind. Fällt eine Festplatte aus können die Daten auf den übrigen Festplatten wiederhergestellt werden. Der große Vorteil von NAS System ist die einfache Einbindung in das vorhanden Netzwerk. Viele System lassen sich in das heimische Netzwerk einbinden und direkt über eine einfache Freigabe erreichen. Die Systeme bieten auch die Möglichkeit Filme und Fotos auf dem heimischen Multimediasystemen abzuspielen. Nachteilig sind hier der hohe Preis und der Umstand das die Geräte im gleichen Brandbereich stehen wie die Datenquelle. Bei einem Katastrophenfall sind im schlimmsten Fall also auch die Backups zerstört.

Wer das Glück hatte eine FRITZ!Box sein eigen zu nennen hat bereits einen sehr guten Media Server zuhause. AVM bietet NAS Funktionen für angeschlossene Festplatten an.

Clouddienste sind in den letzten Jahren wie Pilze aus dem Boden gewachsen. Neben den großen Cloudanbieter wie Microsoft (OneDrive), Google (Google Drive), Amazon (Amazon Drive) gibt es auch spezialisierte Anbieter von Cloudspeicher. Der bekannteste Vertreter ist hier sicherlich Dropbox. Viele Anbieter bieten ihren Dienst bis zu einer bestimmten Größe kostenlos an. Danach können in der Regel 1 TB für eine monatliche Gebühr erworben werden. Ein großer Vorteil ist hier die dezentrale Ablage der Daten. Außerdem sind die Daten oft leicht über mehrere Geräte zu synchronisieren. Nachteilig ist der Umstand, dass die Daten bei einem anderen Anbieter liegen. Außerdem benötigt das Hochladen der Daten eine gute Internetanbindung. Da man sich hier auf einen anderen Anbieter verlässt sollten die Daten auf mehrere Clouddienste geladen werden. Falls ein Anbieter seinen Service einstellt oder Probleme hat sind die Daten nicht verloren.

Externe Festplatten und USB-Sticks

Eine weitere Variante die Daten zu sichern sind einfache USB-Sticks und externe Festplatten. Diese lassen sich im Bedarfsfall anschließen und sicher verstauen. Dafür sind die Daten nicht ständig erreichbar. Dies kann aber auch vorteilhaft sein. Ein Verschlüsselungstrojaner erreicht nur die Systeme die online sind. Solange die Festplatten bzw. USB-Sticks nicht angeschlossen werden sind die Daten sicher vor dem Schädling.

Backup planen

Abhängig vom gewählten Sicherungsmedium müssen verschiedene dinge beachtet werden. Während die Daten bei Cloud und NAS Systeme jederzeit kopiert werden können, müssen externe Festplatten zuerst eingesteckt werden. Bei schädlichen Programmen können diese aber auf die erstgenannten Systeme auch jederzeit zugreifen. Eine gute Mischung aus verschiedenen Formen ist daher sinnvoll. Bei der Auswahl von Programmen zur automatischen Sicherung muss dies auch im Hinterkopf behalten werden. Das Backup scheitert wenn das Medium nicht verfügbar ist.

Sicherungen durchführen

Natürlich möchte niemand alle Daten regelmäßig per Hand kopieren. Hier bieten sich diverse Backup Tools an. Leider sind viele der Tools so alt, dass der Hersteller diese nicht mehr pflegt oder die Benutzeroberfläche ist ein Graus. Bisher habe ich nicht viele gute Programme gefunden. Zum einen gibt es PureSync welches in der privaten Version kostenlos ist (mit wenigen Einschränkungen) und das OpenSource Programm Toucan. Beide bieten die Möglichkeit die Daten zu sichern (Backup), Ordner untereinander abzugleichen (Synchronisieren) oder die Ordner identisch abzugleichen (Spiegelung).

Grundsätzlich ist hier das Verfahren bei allen Tools sehr ähnlich. Man wählt die Datenquelle und das Ziel in das die Dateien gesichert werden sollen. Danach erfolgt die Angabe wie oft die Daten gesichert werden sollen. Den Rest übernehmen die Programme dann automatisch.

Ein Beispiel bei mir wäre das Folgende.

  1. Rechnungen verschlüsselt sichern auf der Dropbox.
  2. Die Daten aus der Dropbox sichern in OneDrive.
  3. Die Rechnungen außerdem auf eine externe Festplatte sichern sobald diese eingesteckt wurde.

 

Bild: pixabay.com