DevOps-Tools

Wähle Tools für jede Phase des DevOps-Lebenszyklus.


Offene Toolkette

DevOps ist die nächste Weiterentwicklung der agilen Methoden – ein kultureller Wandel, der Entwicklungs- und Operations-Teams zusammenbringt. DevOps ist eine Praxis, die einen kulturellen Wandel, neue Managementprinzipien und Technologietools beinhaltet, die zur Implementierung von Best Practices beitragen.

Wenn es um die DevOps-Toolkette geht, sollten Unternehmen nach Tools Ausschau halten, die die Zusammenarbeit verbessern, Kontextwechsel reduzieren, Automatisierungsfunktionen einführen sowie Observability und Überwachung nutzen, um schneller bessere Software auszuliefern.

Es gibt zwei Hauptansätze für eine DevOps-Toolkette: eine universelle oder eine offene Toolkette. Eine universelle DevOps-Toolkette bietet eine Komplettlösung, die normalerweise nicht in andere Tools von Drittanbietern integriert werden kann. Eine offene Toolkette kann mit verschiedenen Tools an die Bedürfnisse eines Teams angepasst werden. Atlassian ist der Ansicht, dass eine offene Toolkette der beste Ansatz ist, weil sie sich mit erstklassigen Tools auf die individuellen Bedürfnisse eines Unternehmens abstimmen lässt. Mit diesem Ansatz kann häufig eine verbesserte Zeiteffizienz und eine kürzere Markteinführungszeit erreicht werden.

Lies mehr über DevOps-Toolketten.

Unabhängig von der Art der DevOps-Toolkette, die ein Unternehmen verwendet, muss ein DevOps-Prozess die richtigen Tools verwenden, um die wichtigsten Phasen des DevOps-Lebenszyklus abzudecken:

  • Planen
  • Erstellen
  • Continuous Integration und Deployment
  • Überwachung
  • Operate
  • Kontinuierliches Feedback

Mit einer Open-DevOps-Toolkette haben die ausgewählten Tools Berührungspunkte mit mehreren Phasen des DevOps-Lebenszyklus. In den folgenden Abschnitten werden einige der beliebtesten Tools für DevOps vorgestellt, aber angesichts der Marktdynamik ändert sich diese Liste häufig. Anbieter fügen neue Funktionen hinzu, die es ihnen ermöglichen, mehr Phasen des DevOps-Lebenszyklus abzudecken. Jedes Quartal werden neue Integrationen angekündigt und in einigen Fällen konsolidieren Anbieter ihre Angebote, um sich auf ein bestimmtes Problem ihrer Benutzer zu konzentrieren.

Planen


Jira Software-Logo Confluence-Logo Slack-Logo

In Anlehnung an das Agile-Handbuch empfehlen wir Tools, mit denen Entwicklungs- und Operations-Teams die Arbeit zugunsten von schnelleren Deployments in kleinere, überschaubare Blöcke aufteilen können. So kannst du früher von Benutzern Rückmeldung erhalten und ein Produkt auf der Grundlage des Feedbacks optimieren. Halte nach Tools wie Jira Ausschau, die Sprint-Planung, Vorgangsnachverfolgung und Zusammenarbeit ermöglichen.

Eine weitere empfehlenswerte Praktik besteht darin, kontinuierlich Benutzerfeedback einzuholen, es in umsetzbare Vorgaben zu organisieren und diese Aktionen für deine Entwicklerteams zu priorisieren. Suche nach Tools, die "asynchrones Brainstorming" fördern (falls gewünscht). Es ist wichtig, dass jeder alles teilen und kommentieren kann: Ideen, Strategien, Ziele, Anforderungen, Roadmaps und Dokumentation.

Und vergiss die Integrationen und Feature-Flags nicht. Wo immer du dein Feature oder Projekt abgrenzen willst, sollte es in deinem Entwicklungs-Backlog in User Storys umgewandelt werden. Feature-Flags sind If-Anweisungen in der Codebasis, die es Teams ermöglichen, Funktionen ein- und auszuschalten.

Weitere Informationen zu dieser Phase findest du in diesem Beitrag von Atlassian-Produktmanagern zum Thema Backlog-Pflege und -Priorisierung.

Plan


Jira Software logo Confluence logo Slack logo

Taking a page out of the agile handbook, we recommend tools that allow development and operations teams to break work down into smaller, manageable chunks for quicker deployments. This allows you to learn from users sooner and helps with optimizing a product based on the feedback. Look for tools that provide sprint planning, issue tracking, and allow collaboration, such as Jira. 

Another great practice is continuously gathering user feedback, organizing it into actionable inputs, and prioritizing those actions for your development teams. Look for tools that encourage “asynchronous brainstorming” (if you will). It’s important that everyone can share and comment on anything: ideas, strategies, goals, requirements, roadmaps and documentation.

And don’t forget about integrations and feature flags. Wherever you decide to scope your feature or project, it should be converted into user stories in your development backlog. Feature flags are if-statements in the code base that enable teams to turn features on and off.

For more on this phase, check out this post from Atlassian product managers about backlog grooming and prioritization.

Erstellen


Kubernetes-Logo Docker-Logo

Produktionsidentische Umgebungen für die Entwicklung:

Während Puppet und Chef in erster Linie für Operations-Teams gedacht sind, verwenden Entwickler Open-Source-Tools wie Kubernetes und Docker, um individuelle Entwicklungsumgebungen bereitzustellen. Die Programmierung mit virtuellen, löschbaren Produktionsrepliken hilft dir dabei, deine Arbeit effektiver zu erledigen.

Wenn jedes Teammitglied in identisch bereitgestellten Umgebungen arbeitet, ist die Aussage "funktioniert auf meinem Computer!" gar nicht mehr so komisch, weil es stimmt (jetzt ist es einfach lustig).

Ansible-Logo Primäres Logo Docker-Logo Puppet Logo Terraform-Logo

Infrastructure as Code:

Entwickler erstellen modulare Anwendungen, weil diese zuverlässiger und leichter zu warten sind. Warum also sollte man das Prinzip nicht auch auf die IT-Infrastruktur ausweiten? Die Anwendung auf Systeme kann sich als schwierig erweisen, weil sie sich ständig ändern. Deshalb umgehen wir das Problem, indem wir Code für die Bereitstellung verwenden.

Infrastructure as Code bedeutet, dass die erneute Bereitstellung nicht nur schneller ist als eine Reparatur, sondern auch konsistenter und besser reproduzierbar. Außerdem kannst du damit problemlos Variationen deiner Entwicklungsumgebung mit einer ähnlichen Konfiguration wie in der Produktionsumgebung aufsetzen können. Die Bereitstellung von Code kann immer wieder angewendet werden, um einen Server auf eine bekannte Baseline zurückzusetzen. Er kann in der Versionskontrolle gespeichert werden. Er kann getestet, in Continuous Integration (CI) integriert und durch Kollegen überprüft werden.

Wenn institutionelles Wissen quasi im Code kodifiziert ist, müssen seltener Runbooks und interne Dokumentation hinzugezogen werden. Und daraus entstehen wiederholbare Prozesse und zuverlässige Systeme.

Bitbucket-Logo Logo von GitHub Logo von GitLab

Quellcodeverwaltung und kollaborative Programmierung:

Es ist wichtig, eine Quellcodeverwaltung für Code zu haben. Tools zur Quellcodeverwaltung helfen dabei, den Code in verschiedenen Ketten zu speichern, sodass du jede Änderung sehen und einfacher mit anderen zusammenarbeiten kannst, indem du diese Änderungen teilst. Anstatt vor der Bereitstellung für die Produktion auf Änderungsgenehmigungsstellen zu warten, kannst du die Codequalität und den Durchsatz mit Prüfungen durch Kollegen über Pull-Anfragen verbessern.

Du fragst dich, was Pull-Anfragen sind? Pull-Anfragen informieren dein Team über Änderungen, die du an einen Entwicklungs-Branch in deinem Repository übertragen hast. Dein Team kann dann die vorgeschlagenen Änderungen überprüfen und besprechen, bevor sie in die Hauptcodezeile übernommen werden. Pull-Anfragen erhöhen die Qualität der Software, was zu weniger Bugs und Vorfällen führt. Dies senkt wiederum die Betriebskosten und verkürzt die Entwicklungszeit.

Tools zur Quellcodeverwaltung sollten sich in andere Tools integrieren lassen, damit du die verschiedenen Aspekte der Codeentwicklung und -auslieferung verbinden kannst. Auf diese Weise kannst du feststellen, ob der Code der Funktion in der Produktion ausgeführt wird. Wenn ein Vorfall auftritt, kann der Code abgerufen werden, um den Vorfall zu untersuchen.

Continuous Integration und Delivery


Logo von Jenkins Logo von AWS Bitbucket-Logo Logo von CircleCISnyk-Logo SonarSource-Logo

Continuous Integration:

Bei Continuous Integration wird Code mehrmals täglich in ein gemeinsam genutztes Repository eingecheckt und jedes Mal getestet. Auf diese Weise erkennst du Probleme automatisch und frühzeitig. So kannst du sie beheben, wenn es am einfachsten ist, und deinen Benutzern so früh wie möglich neue Funktionen zur Verfügung stellen.

Code Reviews durch Pull-Anfragen erfordern Branching und liegen voll im Trend. Das übergeordnete Ziel von DevOps ist ein Workflow, der zu immer weniger und schnelleren Branches führt und strenge Tests aufrechterhält, ohne die Entwicklungsgeschwindigkeit zu beeinträchtigen.

Suche nach Tools, die deine Tests automatisch auf Entwicklungs-Branches anwenden und dir die Möglichkeit geben, diese zum Haupt-Branch zu pushen, wenn Branch-Builds erfolgreich sind. Gleichzeitig erhältst du mit einer einfachen Integration kontinuierliches Feedback durch Chat-Benachrichtigungen in Echtzeit von deinem Team.

Erlebe, wie Bitbucket Pipelines dir dabei hilft, Code vom Test bis zur Produktion zu automatisieren.

mabl-Logo Sauce Labs-Logo Xray-Logo Logo von Zephyr

Testen:

Testtools decken viele Anforderungen und Funktionen ab, einschließlich exploratives Testen, Testmanagement und Orchestrierung. Für die DevOps-Toolkette ist Automatisierung jedoch eine wesentliche Funktion. Automatisiertes Testen zahlt sich im Laufe der Zeit aus, weil es deine Entwicklungs- und Testzyklen langfristig beschleunigt. Und in einer DevOps-Umgebung ist es aus einem anderen Grund wichtig: Du kannst damit Bewusstsein schaffen.

Testautomatisierung kann die Softwarequalität erhöhen und das Risiko reduzieren, indem automatisierte Tests frühzeitig und häufig durchgeführt werden. Entwicklerteams können wiederholt automatisierte Tests ausführen, die verschiedene Bereiche wie UI-Tests, Sicherheitsscans oder Belastungstests abdecken. Sie liefern auch Berichte und Trenddiagramme, mit denen Risikobereiche identifiziert werden können.

Risiken lassen sich in der Softwareentwicklung nie ganz vermeiden, du kannst sie aber mindern, wenn du mit ihnen rechnest. Tue deinem Operations-Team einen Gefallen und gewähre ihm Einblick hinter die Kulissen. Halte Ausschau nach Tools, die Wallboards unterstützen, und lasse alle Projektbeteiligten bei bestimmten Build- oder Deployment-Ergebnissen mitreden. Es gibt extra Punkte für Tools, die es dem Operations-Team erleichtern, schnelle und explorative Tests durchzuführen.

Jira Software-Logo

Deployment-Dashboards:

Einer der stressigsten Aspekte der Softwarelieferung besteht darin, alle Änderungs-, Test- und Deployment-Informationen für einen bevorstehenden Release an einem Ort zu bündeln. Das Letzte, was man vor einem Release braucht, ist eine langwierige Besprechung, um über den Status zu berichten. Und hier kommen Release-Dashboards ins Spiel.

Suche nach Tools mit einem einzigen Dashboard, das in dein Code-Repository und deine Deployment-Tools integriert ist. Finde etwas, das dir in einer zentralen Ansicht einen kompletten Überblick über Branches, Builds, Pull-Anfragen und Deployment-Warnungen gibt.

Bitbucket-Logo Logo von Zephyr

Automatisiertes Deployment:

Es gibt kein Wundermittel für ein automatisiertes Deployment, das für jede Anwendung und IT-Umgebung funktioniert. In der Regel fängt man aber damit an, das Runbook von Operations mit Ruby oder Bash in ein ausführbares cmd-Skript zu konvertieren. Gute Engineering-Praktiken sind unerlässlich. Verwende Variablen, um Hostnamen auszuklammern. Denn es macht bestimmt keinen Spaß, für jede Umgebung ein eigenes Skript oder einen eigenen Code zu erstellen (und verfehlt ohnehin ihr Ziel). Erstelle Hilfsmethoden oder Skripte, um doppelten Code zu vermeiden. Und lasse deine Skripte durch Kollegen auf ihre Korrektheit überprüfen.

Versuche zuerst, Deployments in deiner Umgebung auf unterster Ebene zu automatisieren, wo du diese Automatisierungsfunktionen am häufigsten verwendest, und übertrage das dann auf alle Schritte bis zur Produktion. Bei dieser Übung sollten zumindest die Unterschiede zwischen deinen Umgebungen hervorgehoben werden und eine Liste mit Aufgaben dabei herauskommen, um diese Umgebungen zu standardisieren. Ein weiterer Vorteil ist, dass die Standardisierung von Deployments durch Automatisierung "Konfigurationsabweichungen" innerhalb und zwischen Umgebungen reduziert.

Test


Automated testing

               

Testing tools span many needs and capabilities, including exploratory testing, test management, and orchestration. However, for the DevOps toolchain, automation is an essential function. Automated testing pays off over time by speeding up your development and testing cycles in the long run. And in a DevOps environment, it’s important for another reason: awareness.

Test automation can increase software quality and reduce risk by doing it early and often. Development teams can execute automated tests repeatedly, covering several areas such as UI testing, security scanning, or load testing. They also yield reports and trend graphs that help identify risky areas.

Risk is a fact of life in software development, but you can’t mitigate what you can’t anticipate. Do your operations team a favor and let them peek under the hood with you. Look for tools that support wallboards, and let everyone involved in the project comment on specific build or deployment results. Extra points for tools that make it easy to get Operations involved in blitz testing and exploratory testing.

Deploy


Deployment dashboards

Jira Software logo 

One of the most stressful parts of shipping software is getting all the change, test, and deployment information for an upcoming release into one place. The last thing anyone needs before a release is a long meeting to report on status. This is where release dashboards come in.

Look for tools with a single dashboard integrated with your code repository and deployment tools. Find something that gives you full visibility on branches, builds, pull requests, and deployment warnings in one place.

Automated deployment

Bitbucket logo Zephyr logo

There’s no magic recipe for automated deployment that will work for every application and IT environment. But converting operations’ runbook into a cmd-executable script using Ruby or bash is a common way to start. Good engineering practices are vital. Use variables to factor out host names – maintaining unique scripts or code for each environment is no fun (and misses half the point anyway). Create utility methods or scripts to avoid duplicated code. And peer review your scripts to sanity-check them.

Try automating deployments to your lowest-level environment first, where you’ll be using that automation most frequently, then replicate that all the way up to production. If nothing else, this exercise highlights the differences between your environments and generates a list of tasks for standardizing them. As a bonus, standardizing deploys through automation reduces “server drift” within and between environments.

Operate


AppDynamics-Logo Datadog-Logo Slack-Logo Splunk-LogoNew Relic-Logo Opsgenie-Logo Pingdom-Logo Nagios-Logo Dynatrace-Logo Hosted Graphite-Logo Sumo Logic-Logo

Überwachung der Anwendungs- und Serverleistung:

Es gibt zwei Überwachungsarten, die automatisiert werden sollten: Serverüberwachung und Überwachung der Anwendungsleistung.

Für Stichproben reicht es völlig aus, eine Box von Hand zu markieren oder deine API einem spontanen Test zu unterziehen. Um jedoch Trends und den allgemeinen Zustand deiner Anwendung (und Umgebungen) nachvollziehen zu können, benötigst du Software, die rund um die Uhr Daten überwacht und aufzeichnet. Kontinuierliche Observability ist eine Schlüsselfunktion für erfolgreiche DevOps-Teams.

Suche nach Tools, die sich in deinen Gruppenchat-Client integrieren lassen, damit Benachrichtigungen direkt an den Raum deines Teams oder in einen speziellen Raum für Vorfälle weitergeleitet werden.

Jira Service Management-Logo Jira Software-LogoOpsgenie-Logo Statuspage-Logo

Vorfall-, Änderungs- und Problemnachverfolgung:

Um eine erfolgreiche Zusammenarbeit zwischen DevOps-Teams sicherzustellen, solltest du dafür sorgen, dass alle Einblick in dieselbe Arbeit haben. Was passiert, wenn Vorfälle gemeldet werden? Sind sie mit Softwareproblemen verknüpft und rückverfolgbar? Wenn Änderungen vorgenommen werden, sind sie mit Releases verknüpft?

Nichts behindert die Zusammenarbeit zwischen Entwicklungs- und Operations-Teams mehr als die Nachverfolgung von Vorfällen und Softwareentwicklungsprojekten in verschiedenen Systemen. Achte bei der Auswahl von Tools darauf, dass sie Vorfälle, Änderungen, Probleme und Softwareprojekte auf einer Plattform zusammenfassen, damit du Probleme schneller identifizieren und beheben kannst.

Observe


Application and server performance monitoring

AppDynamics logo DataDog logo Slack logo Splunk logoNew Relic logo Opsgenie logo Pingdom logo Nagios logo Dynatrace logo Hosted Graphite logo Sumo Logic logo

There are two types of monitoring that should be automated: server monitoring and application performance monitoring.

Manually “topping” a box or hitting your API with a test is fine for spot-checking. But to understand trends and the overall health of your application (and environments), you need software that is listening and recording data 24/7. Ongoing observability is a key capability for successful DevOps teams.

Look for tools that integrate with your group chat client so alerts go straight to your team’s room, or a dedicated room for incidents.

Fortlaufendes Feedback


GetFeedback-Logo Slack-Logo Jira Service Management-Logo Logo: Pendo

Kunden werden dir schon sagen, wenn du die richtige Lösung für sie erstellt hast. Du musst nur auf sie hören. Für kontinuierliches Feedback sind eine bestimmte Kultur und Prozesse erforderlich, um regelmäßig Feedback zu sammeln, sowie Tools, um Erkenntnisse aus dem Feedback zu gewinnen. Zu den Praktiken für kontinuierliches Feedback gehören das Sammeln und Überprüfen von NPS-Daten, Umfragen zu Abwanderungen, Fehlerberichte, Supporttickets und sogar Tweets. In einer DevOps-Kultur hat jeder im Produktteam Zugriff auf Benutzerkommentare. Denn diese dienen dir als Anhaltspunkt für alles: von der Release-Planung bis hin zu explorativen Tests.

Suche nach Anwendungen, die dein Chattool in deine bevorzugte Umfrageplattform integrieren, um Feedback im NPS-Stil zu erhalten. Auch Twitter und/oder Facebook können in den Chat integriert werden, um Feedback in Echtzeit zu erhalten. Für einen genaueren Blick auf das Feedback aus den sozialen Medien lohnt es sich, in eine Social-Media-Managementplattform zu investieren, die Berichte mithilfe historischer Daten abrufen kann.

Die Analyse und Einbeziehung von Feedback mag kurzfristig das Entwicklungstempo verlangsamen, aber auf lange Sicht ist das effizienter als neue Features herauszubringen, die niemand haben will.

Fazit


Bei Atlassian sind wir der Auffassung, dass eine DevOps-Toolkette in die Tools integriert sein sollte, die von Entwicklungs- und Operations-Teams bevorzugt verwendet werden. Aus diesem Grund haben wir unsere DevOps-Plattform für die Integration in mehr als 171 führende Drittanbieter-Lösungen entwickelt, sodass du für alle von dir verwendeten Tools die besten Entscheidungen treffen kannst. Schließlich sollten DevOps-Lösungen nicht von einem einzigen Anbieter stammen, sondern aufgebaut werden.

Probiere die DevOps-Lösung von Atlassian erst einmal kostenlos aus.


Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Abbildung: DevOps

DevOps-Community

Abbildung: DevOps

DevOps-Lernpfad

Abbildung: Karte

Kostenlos loslegen

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up