Close

Negative Velocity: Erhöhen der Komplexitätsgrenze


Eines der häufigsten Ziele in der Softwareentwicklung: die schnelle Bereitstellung von hochwertiger Software.

Schau dir das Vision Statement deines CIO oder CTO an und höre ihnen zu. Die Chancen stehen gut, dass sie dieses Ziel in einer gewissen Art verfolgen. Während es ein häufiges Ziel ist, reicht das Spektrum von Teams, die es erreichen, bis zu Teams, die ewig mit der Softwarebereitstellung kämpfen. Einige Teams bringen ständig neuen Code in die Produktion, wobei es nur zu wenigen Vorfällen oder negativen Auswirkungen auf die Kunden kommt, während andere schon Probleme mit vierteljährlichen Releases haben.

Eines der häufigsten Ziele in der Softwareentwicklung: die schnelle Bereitstellung von hochwertiger Software.

Schau dir das Vision Statement deines CIO oder CTO an und höre ihnen zu. Die Chancen stehen gut, dass sie dieses Ziel in einer gewissen Art verfolgen. Während es ein häufiges Ziel ist, reicht das Spektrum von Teams, die es erreichen, bis zu Teams, die ewig mit der Softwarebereitstellung kämpfen. Einige Teams bringen ständig neuen Code in die Produktion, wobei es nur zu wenigen Vorfällen oder negativen Auswirkungen auf die Kunden kommt, während andere schon Probleme mit vierteljährlichen Releases haben.

Was verursacht diesen Leistungsunterschied?


Bei der Softwarebereitstellung macht die Komplexität den Unterschied zwischen einer schnellen Bereitstellung von hochwertiger Software und… dem Gegenteil davon. Sie macht den Unterschied zwischen dem wöchentlichen Klingeln der Siegesglocke nach einem erfolgreichen Release und einem unengagierten Softwareteam, das darüber frustriert ist, dass die monatelange Arbeit am neuesten Release zu sechs neuen Bugs und einem Rollback geführt hat.

Vergleiche die Geschwindigkeit und Qualität der neuen Produkte und Funktionen von Startups mit denen eines etablierten, großen Unternehmens. In der Finanzbranche werden großen, etablierten Banken beispielsweise immer mehr Marktanteile von FinTech-Startups abgerungen. Große Banken nennen oft die unfairen Vorteile von FinTech-Startups, die mit weniger regulatorischer Aufsicht arbeiten und keine traditionellen, monolithischen Anwendungsbestände verwalten müssen. Kleinere Teams bieten mehr Flexibilität und die Möglichkeit, sich an die Kundenbedürfnisse anzupassen. Im Wesentlichen haben FinTech-Startups nicht die Komplexität etablierter Banken, wodurch sie schneller und mit geringerem Risiko agieren können. Doch während sie Softwareteams bremsen kann, ist Komplexität nicht immer eine schlechte Sache.

Globales Netzwerk
Zugehöriges Material

Software unter Kontrolle

Symbol: drei Ringe
Lösung anzeigen

Verwalte deine Komponenten mit Compass

Komplexität bei der Softwarebereitstellung


Komplexität kann eine gute Sache sein: Wenn schwierige Probleme gelöst werden, erzeugt das große Glücksgefühle. Das motiviert Teams, mit der Herausforderung zu wachsen, schwierige Probleme anzugehen und eine Branche auf den Kopf zu stellen. Doch es gibt auch einen Punkt, an dem es bei Komplexität nicht mehr darum geht, ein schwieriges Problem zu lösen, sondern negative Auswirkungen auf Softwareteams entstehen.

Organisatorische Komplexität spielt eine Schlüsselrolle bei einer verringerten Effektivität von Softwareteams. Komplexität lässt sich definieren als ein Zustand, in dem viele verschiedene Teile komplizierte Verbindungen oder Beziehungen zueinander aufweisen. In der Praxis ist organisatorische Komplexität die Summe von Informationen, Abhängigkeiten, Änderungen, anderen Teams, Tools und Anfragen, die Softwareteams berücksichtigen müssen, wenn sie mit der restlichen Organisation zusammenarbeiten.

Höhere organisatorische Komplexität macht es natürlich schwieriger, hochwertige Software schnell bereitzustellen, weil Teams mehr Zeit damit verbringen, sich in der Organisation zurechtzufinden, als schwierige Probleme zu lösen. Wachsende Unternehmen bemerken schnell, dass Softwareteams eine Komplexitätsgrenze erreichen – die Komplexität, die Teams bewältigen können, bevor sie sich auf die Arbeitszufriedenheit sowie die Qualität und Geschwindigkeit der Softwareproduktion auswirkt. Es mag also logisch erscheinen, dass die Verringerung der organisatorischen Komplexität es Teams ermöglicht, sich darauf zu konzentrieren, schwierige Probleme zu lösen und hochwertige Software schneller bereitzustellen. Sehen wir uns an, warum das nicht unbedingt der Fall ist.

Indikatoren der Komplexitätsgrenze


Die Komplexitätsgrenze scheint unausweichlich zu sein, aber es gibt einige Indikatoren dafür, dass sich Teams ihrer Grenze nähern. Ich muss vorwegnehmen, dass es keine absolute Metrik dafür gibt, wie weit die Komplexitätsgrenze entfernt ist, aber diese Indikatoren können dir dabei helfen, deinen Abstand zu ermitteln.

Wenn ein Team mehr Zeit damit verbringt, sich in der organisatorischen Komplexität zurechtzufinden, als schwierige Probleme zu lösen, ist das der deutlichste Indikator dafür, dass es die Komplexitätsgrenze erreicht hat. Die Trends von den Metriken der DORA-Vorlaufzeit für Änderungen (Geschwindigkeit) und der Änderungsfehlerrate (Qualität) zeigen, ob Teams im Laufe der Zeit langsamer oder schneller werden. Auch wenn es noch andere Faktoren gibt, die diese Metriken beeinflussen, sind sie ein guter Indikator für die Effektivität des Teams.

Die Zufriedenheit der Entwickler ist ein weiterer Indikator für das Ausmaß der organisatorischen Komplexität bei den Softwareteams. Entwickler haben eine besonders starke Tendenz dazu, gerne an schwierigen Problemen zu arbeiten und zugleich unnötige Aufgaben zu verabscheuen, die ihnen im Weg stehen. Deshalb ist eine geringe Zufriedenheit der Entwickler ein guter Indikator dafür, dass die organisatorische Komplexität ein Problem für dein Softwareteam ist.

Best for managing microservices: Compass

Compass hero screen.

Compass is an ideal server management tool. It simplifies handling microservices architectures by putting disconnected data about engineering work and teamwork together in one central, searchable location. 

Compass' features include: 

  • Get full visibility into service details with relevant APIs, libraries, documentation, key health metrics, latest deployment activities, on-call schedules, and more.
  • Document and track upstream and downstream dependencies and understand performance impact across teams and services.
  • View all incidents, deployments, and other critical activities for a service and its dependencies in one place.

Best for CI/CD: Bitbucket Pipelines

Bitbucket pipeline screenshot.

CI/CD is an acronym for continuous integration and continuous deployment

Bitbucket Pipelines is a CI tool that automates processes. It works right out of the box with Bitbucket, an Atlassian cloud-based version control system. It can use code to manage pipelines, letting users commit pipeline definitions and start builds fast. Bitbucket Pipelines also has CD features that allow you to deploy projects to live infrastructure.

Part of the CI/CD development process is to build microservices. Bitbucket Pipelines fosters efficiency by simplifying workflows and integrating with Bitbucket's cloud version control system.

Best for ITSM: Jira Service Management

Jira Service Management is an add-on for Jira Software, a microservices-based application that lets you control IT services, such as incident, problem, and change management. Jira Service Management’s ITSM features allow IT teams to provide excellent service. There are several reasons why that is the case: 

  • Flexibility: JSM's collaborative approach can help streamline service delivery processes.
  • Automation: The automation suite can help automate recurring tasks.
  • Integration: JSM integrates seamlessly with other Atlassian tools.
  • Security: It encrypts all data in transit using TLS 1.2+.
  • Scalability: JSM is an agile ITSM product that can scale up to the enterprise level.

Best for documentation: Confluence

Confluence is a collaborative documentation tool. It’s ideal for creating and sharing documentation, critical in microservices architectures. Confluence offers a wide range of Confluence templates for various setups, including those using Kubernetes and Docker, a microservices tool that helps developers build, deploy, and run containers. 

Confluence templates include multiple features and apps to help you capture, distribute, and update your technical documentation. Also, with Confluence, you can centralize all your documentation in one place and grant access to users only to what they need.

Best for bug tracking: Jira Software

JSW issues screenshot.

Jira Software excels at bug tracking and project management. It provides a platform to track, prioritize, and resolve bugs effectively through an easily navigable interface. Jira Software's bug-tracking features contribute significantly to successful microservices management. They also address the potential for software sprawl.

With Jira Service Management, Jira's capabilities extend to streamline IT service management, including incident, problem, and change management within microservices and monolithic architecture.

Best for monitoring and logging: Prometheus

Prometheus is an open-source tool developers use to manage microservices. It collects extensive metrics, including counters, gauges, histograms, and summaries, that comprehensively view the application's performance. Prometheus also assists in real-time troubleshooting by providing a comprehensive monitoring and alerting system that enables developers and IT teams to identify and resolve issues promptly.

Best for testing microservices APIs: Postman

The distributed nature of microservices architectures significantly hamper traditional testing methodologies. Testing the entire system becomes complex and time-consuming because each microservice is an independent component. This is where a specific microservices testing tool like Postman comes in handy.

Postman simplifies the process of testing microservices APIs. Developers love that it can automate testing, enabling faster and more accurate results.

Some of the ways Postman simplifies the process of testing microservices APIs include: 

  • Visual request builder: Postman's visual request builder makes it easy to construct HTTP requests without writing code. 
  • Request collections: Postman allows you to organize your API requests into collections, making it easy to group related requests and share them with other team members.
  • Predefined tests: Postman provides a library of predefined tests that you can use to validate the responses from your API requests. 
  • Test scripts: Postman allows you to write test scripts using JavaScript, giving you more control over your tests and enabling you to automate complex testing scenarios.

Indikatoren der Komplexitätsgrenze


Die Komplexitätsgrenze scheint unausweichlich zu sein, aber es gibt einige Indikatoren dafür, dass sich Teams ihrer Grenze nähern. Ich muss vorwegnehmen, dass es keine absolute Metrik dafür gibt, wie weit die Komplexitätsgrenze entfernt ist, aber diese Indikatoren können dir dabei helfen, deinen Abstand zu ermitteln.

Wenn ein Team mehr Zeit damit verbringt, sich in der organisatorischen Komplexität zurechtzufinden, als schwierige Probleme zu lösen, ist das der deutlichste Indikator dafür, dass es die Komplexitätsgrenze erreicht hat. Die Trends von den Metriken der DORA-Vorlaufzeit für Änderungen (Geschwindigkeit) und der Änderungsfehlerrate (Qualität) zeigen, ob Teams im Laufe der Zeit langsamer oder schneller werden. Auch wenn es noch andere Faktoren gibt, die diese Metriken beeinflussen, sind sie ein guter Indikator für die Effektivität des Teams.

Die Zufriedenheit der Entwickler ist ein weiterer Indikator für das Ausmaß der organisatorischen Komplexität bei den Softwareteams. Entwickler haben eine besonders starke Tendenz dazu, gerne an schwierigen Problemen zu arbeiten und zugleich unnötige Aufgaben zu verabscheuen, die ihnen im Weg stehen. Deshalb ist eine geringe Zufriedenheit der Entwickler ein guter Indikator dafür, dass die organisatorische Komplexität ein Problem für dein Softwareteam ist.

Erhöhen der Komplexitätsgrenze


Why is monitoring and testing important in microservices architecture?

Um die Effektivität des Softwareteams wiederherzustellen, müssen Organisationen die Komplexitätsgrenze erhöhen. Und um die Komplexitätsgrenze zu erhöhen, muss das Ausmaß der organisatorischen Komplexität gesteigert werden, die ein Team bewältigen kann, bevor die Arbeitszufriedenheit, Qualität und Geschwindigkeit der Softwareproduktion darunter leiden.

Platform Engineering ist ein wichtiges Konzept für die Erhöhung der Komplexitätsgrenze einer Organisation. Starke Platform-Engineering-Teams reduzieren die kognitive Belastung von Softwareteams, indem sie ihnen die Komplexität der Organisation bei der täglichen Arbeit abnehmen. Wenn Platform Engineering korrekt implementiert wird, wenden die Teams weniger Zeit für die organisatorische Komplexität auf und können sich stattdessen auf das Lösen schwieriger Probleme konzentrieren.

What are some common challenges in monitoring microservices?

Genau deshalb hat Atlassian Compass, eine Developer-Experience-Platform, entwickelt. Compass ermöglicht es, die Komplexitätsgrenze zu erhöhen, indem es Softwareteams erleichtert wird, die organisatorische Komplexität mithilfe des Komponentenkatalogs, der Metriken und Scorecards zu bewältigen und sich auf eine gesunde Entwicklungskultur zu konzentrieren. Der wichtigste Punkt dabei ist, dass die organisatorische Komplexität bei Atlassian nicht abgenommen hat. Sie ist sogar weiter gewachsen, da immer mehr Bestandteile der Organisation auf eine Microservice-Architektur umstiegen sind. Wir haben es den Softwareteams ermöglicht, weniger Zeit für diese Komplexität aufwenden zu müssen, was eben der Unterschied zwischen einem Vereinfachungsprojekt und dem Erhöhen der Komplexitätsgrenze ist.

Atlassian hat über 10.000 Mitarbeiter und über 17.000 Softwarekomponenten, aber seine Softwareteams arbeiten größtenteils mit der Freiheit eines Startups und stellen hochwertige Software schnell bereit. Der Schlüssel zum Erfolg? Das Erhöhen der Komplexitätsgrenze, um die Effektivität der Softwareteams zu verbessern.

Hier sind zwei erste Aktionen, um deine Komplexitätsgrenze zu erhöhen:

  • Verfolge und bewerte deine DORA-Metriken. Wie sehen die DORA-Metriken für dein Team aus? Falls du sie noch nicht verfolgst: Die DORA-Metriken sind bei Compass sofort einsatzbereit.
  • Analysiere und bewerte die Zufriedenheit der Entwickler. Wie geht es den Entwicklern in deinen Softwareteams? Die meisten Organisationen führen Umfragen zur Mitarbeiterzufriedenheit durch. Frag nach den Meinungen, aufgeschlüsselt nach Funktionsbereichen, um einen Einblick in die Zufriedenheit der Entwickler zu erhalten. Zu den wichtigsten Fragen zählen Bewertungen der folgenden Aussagen:
    • Ich bin stolz auf die Bereitstellung
    • Der Stress bei meiner Arbeit ist zu bewältigen
    • Ich verstehe, wie meine Arbeit zu den Unternehmenszielen beiträgt

Alternativ erfasst Compass diese Informationen während des CheckOps-Rituals, bei dem die Teams erklären, wie sie die letzte Woche fanden und was besser gewesen wäre.

Um die Komplexitätsgrenze zu erhöhen, ist eine Kombination aus Tools, Prozessen und Ritualen erforderlich. Eine Developer-Experience-Platform wie Compass kann dir dabei helfen, den Systemzustand zu verstehen, Abhängigkeiten abzubilden und regelmäßige Rituale zu entwickeln, um die Komplexitätsgrenze zu erhöhen und das wahre Potenzial der Softwarebereitstellungsteams in deiner Organisation zu nutzen.

Teste Compass noch heute kostenlos.

What are some best practices for monitoring and testing microservices?

To test and monitor microservices effectively, use monitoring data, set the proper alert levels, automate tests, set up continuous integration and delivery pipelines, and regularly test their performance and security. These methods ensure that your platforms work reliably. 

Join the Atlassian Community for more Microservices articles and discussions.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

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

Abbildung: DevOps

Compass-Community

Illustration: Überwindung von Hindernissen

Tutorial: Erstellen einer Komponente

Abbildung: Karte

Erste Schritte mit Compass (kostenlos)

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up