DevOps

DevOps hat als Schlagwort in der IT-Welt an enormer Bedeutung gewonnen - ohne das immer klar ist, worum es sich denn konkret geht.

Ziel von DevOps ist es, die traditionelle Teilung zwischen Entwicklung und Betrieb zu überwinden. Für lange Zeit war es so, dass Entwickler an einer neuen Version der Software gearbeitet haben, und diese nach einem Fertigstellungszeitpunkt an den Betrieb übergeben hat, der diese Softwareversion dann weiter betrieben hat, während die Entwicklung an einer neuen Version gearbeitet hat.

Dabei sind die Prioritäten zwischen Entwicklung und Betrieb häufig komplett gegenläufig. Die Entwicklung möchte dem Kunden neue Features bieten, neue Standards implementieren und sich von der Konkurrenz dadurch abheben, während der Betrieb das Augenmerk hauptsächlich auf Stabilität, Fehlerbehebung und Sicherheit legt.

DevOps versucht dieses Konfliktfeld zu entschärfen, in dem Entwicklung (Dev) und Betrieb (Ops) näher zusammengebracht werden, und idealerweise als ein Team an einem Produkt arbeiten und die Verantwortung für alle Aspekte der Software mit Features und Betrieb in die Hand eines Teams legt.

Besonderes Augenmerk bekommen hier die Punkte kurze Releasezyklen, direktes Feedback und Automatisierung.

p-square kann bei der Einführung einer DevOps Kultur in Ihrem Unternehmen helfen, da wir uns in einem kleinem Team schon seit langem mit der Entwicklung und dem Betrieb von Softwärelösungen beschäftigt, und diese Dinge bei uns aus einer Hand kommen.

Cloud

Der "Cloud" bekommt beim Thema DevOps eine zentrale Rolle, denn viele Dinge, die mit DevOps umgesetzt werden, oder werden sollen, sind nur in einer dynamischen Cloudumgebung möglich.

Egal ob Cloud Computing Services von Amazon AWS, Azure, Google, oder die eigene In-House Cloud - wir haben die Erfahrung und die Tools, um in dieser zu Arbeiten und schnell zu Ergebnissen zu kommen und die Anforderungen unserer Kunden umzusetzen.

 

AWS

AWS ist der Marktführer unter den Cloudanbietern, und bietet von einfachen Servern in der Cloud bis hin zu hochkomplexen vorkonfigurierten Anwendungen alles, was Sie benötigen, um Ihre Anforderungen in der Cloud umzusetzen.

Azure

Microsoft ist inzwischen mehr als nur Windows und Office. Man hat in den letzten Jahre eine beeindrucke Kehrtwende hin zu mehr Open Source und betriebssystemunabhängigen Diensten hingelegt. Dabei ist Azure als Produkt entstanden, welches Serverleistung in den Rechenzentrum bei Microsoft zur Verfügung stellt.

Google Cloud Platform

Google Cloud Platform (GCP) war einer der ersten großen Teilnehmer am  Markt, welcher seine Rechenzentren auch für die Benutzung von externen Unternehmen geöffnet hat. Während das erste Angebot, AppEngine, noch einen sehr schmalen Fokus hatte, ist man schnell dazu übergegangen, auch allgemeine Ressourcen zur Verfügung zu stellen.

Eigene Cloud

Selbstgehostet und Cloud müssen sich nicht zwangsläufig ausschließen. Auch wenn der Begriff Cloud häufig synonym damit verwendet wird, dass die Rechenleistung extern bei einem der großen Anbieter eingekauft werden, sind viele der Dinge, die eine öffentliche Cloud anbietet, auch im eigenen Datacenter zu realisieren.

Ob es nun eine VMWare Umgebung ist, eine hochdynamische OpenStack Umgebung oder eine hybride Cloudanbindung mit den Produkten unseres Partners BlueCat, wir beraten Sie gerne dabei!

Continous Integration / Continous Delivery

Continous Integration / Continous Delivery, oder CICD, beschreibt die Praxis, auch nach kleinen Iterationsschritten in einer Software eine komplett neue Version der Software zu bauen, und diese auf einer Staging Umgebung für Tests zur Verfügung zu stellen.

In der traditionellen Softwareenwicklung ist die Zusammenstellung einer neuen Version, oder der "Build" ein aufwändiger Prozess, der nur für große Meilensteine durchgeführt wird.

In der DevOps Vorgehensweise sollen hingegen die Versionen auch schon nach kleinen Änderungen aktualisiert werden, deswegen muss der Buildprozess komplett automatisiert werden.

Dazu gibt es spezielle Software, die sich insbesondere an eine Versionverwaltung, inzwischen hautpsächlich git, anhängt.

Als OpenSource Tool gibt es Jenkins, der diese Aufgabe übernehmen kann, im kommerziellen Bereich sind Atlassian Bamboo oder Gitlab häufig im Einsatz. Github, die größte Plattform für öffentliche git Repositories, stellt mit Github Actions auch einen Cloudmechnismus zur Verfügung, um CICD zu erreichen.

Wir können Sie dabei unterstützen, Ihr Projekt in eine CI/CD Umgebung zu integrieren, um die Grundsteine für einen Übergang in einer DevOps zentrierte Vorgehensweise zu legen.

Neue Projekte von uns benutzen natürlich CI/CD, soweit dieses sinnvoll ist.

Container und Infrastructure as Code

Damit CI/CD erfolgreich laufen kann und Sie als Kunde für ihre Entwickler Umgebungen Ihrer Software einfach zur Verfügung stellen können, müssen diese reproduzierbar immer wieder installiert und aktiviert werden können.

Zwei Technologien spielen dabei eine herausragende Rolle: Container und Infrastructure as Code (IaC)

Kurzlebige Container sind das Gegenstück zu langlaufenden Servern oder virtuellen Maschinen. In kleinen, schlanken Containern ist genau nur die Software installiert, die benötigt wird, um die Software zu betreiben, und diese sind normalerweise so aufgebaut, dass sie mit wenig Aufwand gestartet und gestoppt werden können sowie von einer CI/CD Software auch komplett neu zusammengebaut werden können. Dieses sorgt dafür, dass Ihre Software immer in einer stabilen, vorhersehbaren Umgebung läuft.

Die bekanntesten Technologien, um Container zu erstellen und zu betreiben sind Docker und Kubernetes, aber es gibt dort eine große Auswahl an Produkten. Außerdem bieten alle großen Cloudprovider an, entweder eine Umgebung für Container zu betreiben, oder die Container direkt nativ auf Infrastruktur des Cloudproviders laufen zu lassen.

Wir beraten Sie gerne zu Containern, und helfen Ihnen, ihre Software zu containerisieren oder in neue Cloudumgebungen auszubringen.

Aber nur einfach den Container zu starten, ist nicht alles. Die komplette Infrastruktur drumherum muss auch stimmen - sei es Netzwerkverbindungen, Firewallregeln oder welches Storage an einen Container angebunden wird.

Hier kommt Infrastructure as a Code ins Spiel. Anstatt die komplette Infrastruktur manuell in den unterschiedlichen Produkten zu konfigurieren, beschreibt man die benötigte Umgebung als Code, der genauso der Versionierung unterliegt wie der geschriebene Programmcode.

Damit kann man für eine bestimmte Version eines Programmes die passende Infrastruktur ausbringen, indem man einem IaaC Tool die Beschreibung übergibt. Dieses schaut dann, welches der Infrastrukturkomponenten noch nicht existieren, welche vielleicht verändert werden müssen der Beschreibung zu entsprechen, oder welche vielleicht auch gelöscht werden.

Terraform und Terragrunt haben sich hier an vielen Stellen als Standard herauskristallisiert, aber es gibt auch cloudspezifische Lösung wie CloudFormation von Amazon oder Azure Resource Manager von Microsoft.

Wir beraten Sie, wie Sie ihre Infrastructure mit IaC besser administrierbar machen, Kosten sparen und nur genau die Infrastruktur haben, die Sie benötigen.