Close

Velocity negativa: come innalzare il limite di complessità


Uno degli obiettivi più comuni di un'organizzazione di progettazione è fornire velocemente software di qualità elevata.

Scopri la vision aziendale del CIO o del CTO e senti cos'hanno da dire. Probabilmente stanno "inseguendo" una permutazione di questo obiettivo. Sebbene sia un obiettivo comune, c'è un ampio divario tra i team che raggiungono il nirvana e quelli bloccati nel limbo della distribuzione del software. Alcuni team inseriscono costantemente nuovo codice nella produzione, con pochi imprevisti o impatti negativi sui clienti, mentre altri trovano difficoltà nei rilasci trimestrali.

Uno degli obiettivi più comuni di un'organizzazione di progettazione è fornire velocemente software di qualità elevata.

Scopri la vision aziendale del CIO o del CTO e senti cos'hanno da dire. Probabilmente stanno "inseguendo" una permutazione di questo obiettivo. Sebbene sia un obiettivo comune, c'è un ampio divario tra i team che raggiungono il nirvana e quelli bloccati nel limbo della distribuzione del software. Alcuni team inseriscono costantemente nuovo codice nella produzione, con pochi imprevisti o impatti negativi sui clienti, mentre altri trovano difficoltà nei rilasci trimestrali.

Qual è la causa di questa discrepanza nelle prestazioni?


La complessità nella distribuzione è la differenza tra chi riesce e chi non riesce a fornire velocemente software di qualità elevata, tra chi canta vittoria dopo un rilascio di successo ogni settimana e un team di distribuzione software demotivato e frustrato che, dopo mesi di lavoro sull'ultimo rilascio, ottiene come unico risultato sei nuovi bug e un rollback.

Confronta la velocità e la qualità con cui le startup e le grandi organizzazioni affermate rilasciano nuovi prodotti e funzionalità. Nel settore finanziario, ad esempio, le startup fintech nell'ultimo decennio hanno ridotto la quota di mercato delle banche principali. Le grandi banche citano spesso i facili vantaggi delle startup fintech, che operano con meno supervisione normativa e senza dover mantenere sistemi di applicazioni monolitici preesistenti. Le dimensioni ridotte del team consentono una maggiore agilità e la capacità di adattarsi in base alle esigenze dei clienti. Essenzialmente le fintech, non essendo complesse come le banche consolidate, sono in grado di muoversi più velocemente e con meno rischi. La complessità non è sempre un aspetto negativo, anche se può rallentare i team software.

Rete globale
materiale correlato

Tieni sotto controllo la proliferazione di software

icona di tre anelli
Scopri la soluzione

Gestisci i componenti con Compass

Complessità nella distribuzione del software


La complessità può essere positiva: è estremamente gratificante risolvere problemi intricati, motiva i team ad affrontare le sfide e i problemi e a ribaltare un settore. Ma c'è un punto in cui la complessità non consiste più nella risoluzione di un problema difficile e provoca un impatto negativo sui team software.

La complessità organizzativa riveste un ruolo chiave nel ridurre l'efficacia dei team software. La complessità, per definizione, è lo stato di avere molte parti diverse collegate o correlate tra loro in modo complicato. In termini pratici, la complessità organizzativa è l'aggregato di informazioni, dipendenze, modifiche, altri team, strumenti e richieste, che i team software devono esplorare quando si interfacciano con il resto dell'organizzazione.

Livelli più elevati di complessità organizzativa rendono più difficile fornire software di alta qualità in tempi rapidi, perché i team dedicano più tempo a orientarsi nell'organizzazione che a risolvere problemi intricati. Le organizzazioni in crescita scoprono presto che i team software hanno un limite di complessità: la quantità di complessità che i team sono in grado di gestire prima che ciò influisca sulla soddisfazione lavorativa, sulla qualità e sulla velocità del software prodotto. Sembrerebbe, quindi, che la riduzione della complessità organizzativa consenta ai team di concentrarsi sulla risoluzione di problemi intricati e sulla fornitura di software di qualità superiore e in meno tempo. Vediamo perché non è necessariamente così.

Come capire se ti stai avvicinando al limite di complessità


Raggiungere il limite di complessità può sembrare inevitabile, ma alcuni segnali indicano ai team che si stanno avvicinando al limite. Non esiste una metrica assoluta che indichi quanto sia vicino il limite di complessità, ma è possibile capirlo grazie a questi indicatori.

L'indicatore più evidente che un team ha raggiunto il limite di complessità è quando dedica più tempo a gestire la complessità organizzativa che a risolvere i problemi intricati su cui dovrebbe concentrarsi. L'andamento dei lead time di DORA per le modifiche (velocità) e le metriche del tasso di errore delle modifiche (qualità) mostrano se i team rallentano o accelerano nel tempo. Anche se altri fattori influenzano queste metriche, sono un buon indicatore dell'efficacia del team.

La soddisfazione degli sviluppatori è un ulteriore indicatore della complessità organizzativa che i team software stanno gestendo. Gli sviluppatori, più di altri, preferiscono passare il tempo a risolvere problemi intricati piuttosto che affrontare attività inutili che intralciano il lavoro. La scarsa soddisfazione degli sviluppatori è un segnale che la complessità organizzativa rappresenta un problema per il team software.

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.

Come capire se ti stai avvicinando al limite di complessità


Raggiungere il limite di complessità può sembrare inevitabile, ma alcuni segnali indicano ai team che si stanno avvicinando al limite. Non esiste una metrica assoluta che indichi quanto sia vicino il limite di complessità, ma è possibile capirlo grazie a questi indicatori.

L'indicatore più evidente che un team ha raggiunto il limite di complessità è quando dedica più tempo a gestire la complessità organizzativa che a risolvere i problemi intricati su cui dovrebbe concentrarsi. L'andamento dei lead time di DORA per le modifiche (velocità) e le metriche del tasso di errore delle modifiche (qualità) mostrano se i team rallentano o accelerano nel tempo. Anche se altri fattori influenzano queste metriche, sono un buon indicatore dell'efficacia del team.

La soddisfazione degli sviluppatori è un ulteriore indicatore della complessità organizzativa che i team software stanno gestendo. Gli sviluppatori, più di altri, preferiscono passare il tempo a risolvere problemi intricati piuttosto che affrontare attività inutili che intralciano il lavoro. La scarsa soddisfazione degli sviluppatori è un segnale che la complessità organizzativa rappresenta un problema per il team software.

Innalzamento del limite di complessità


Why is monitoring and testing important in microservices architecture?

Le organizzazioni devono aumentare il limite di complessità per ripristinare l'efficacia dei team software. Ciò significa essenzialmente aumentare la complessità organizzativa che ogni team può affrontare prima che influisca sulla soddisfazione lavorativa e sulla qualità e velocità con cui il team rilascia il software.

La progettazione della piattaforma è un concetto significativo nella ricerca di innalzare il limite di complessità di un'organizzazione. I team più efficienti di progettazione delle piattaforme si concentrano sulla riduzione del carico cognitivo dei team software astraendo la complessità organizzativa dal loro lavoro quotidiano. Se implementata correttamente, la progettazione della piattaforma consente ai team di riequilibrare la maggior parte degli sforzi per risolvere problemi intricati, dedicando meno tempo alla gestione della complessità organizzativa.

What are some common challenges in monitoring microservices?

Per questo motivo Atlassian ha creato Compass, una piattaforma per l'esperienza di sviluppo. Compass aiuta a innalzare il limite di complessità consentendo ai team software di orientarsi facilmente nella complessità organizzativa attraverso il catalogo componenti, le metriche e le scorecard e di concentrarsi sulla creazione di una sana cultura di progettazione. L'aspetto principale è che la complessità organizzativa non si è ridotta all'interno di Atlassian, ma ha continuato a crescere man mano che l'organizzazione passava a un'architettura di microservizi in misura sempre maggiore. Il tempo che i team software impiegano per gestire la complessità è stato ridotto, il che costituisce la differenza tra un progetto di semplificazione e l'innalzamento del limite di complessità.

Anche se Atlassian conta oltre 10.000 dipendenti e più di 17.000 componenti software, gran parte dei nostri team software opera con la stessa libertà di una startup, fornendo velocemente software di qualità elevata. La chiave per il successo? Aumentare il limite di complessità per migliorare l'efficacia del team software.

Ecco due azioni per iniziare a innalzare il limite di complessità:

  • Monitorare e valutare le metriche DORA. Come ti sembrano le metriche DORA per il tuo team? Se ancora non le stai monitorando, sono fornite pronte all'uso con Compass.
  • Comprendere e valutare la soddisfazione degli sviluppatori. Come si trovano gli sviluppatori nei tuoi team software? La maggior parte delle organizzazioni effettua sondaggi sulla soddisfazione dei dipendenti. Per comprendere il livello di soddisfazione degli sviluppatori, esamina i risultati suddivisi per area funzionale. Le domande chiave includono la valutazione delle seguenti dichiarazioni:
    • Il risultato finale è quello che mi aspettavo
    • Riesco a gestire lo stress sul lavoro
    • Sono consapevole che il mio lavoro contribuisce al raggiungimento degli obiettivi aziendali

In alternativa, Compass acquisisce queste informazioni durante il rituale CheckOps, in cui i team condividono le loro impressioni sull'ultima settimana e i dettagli sugli aspetti da migliorare.

L'innalzamento del limite di complessità richiede una combinazione di strumenti, processi e rituali. Una piattaforma per l'esperienza di sviluppo come Compass può aiutare a comprendere lo stato d'integrità del sistema, mappare le dipendenze e creare rituali continui, contribuendo a innalzare il limite di complessità e a sbloccare il potenziale dei team di distribuzione del software nella tua organizzazione.

Prova Compass gratuitamente oggi stesso.

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.


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Illustrazione su Devops

Community di Compass

illustrazione del superamento di ostacoli

Tutorial: Creare un componente

Illustrazione di una mappa

Inizia a utilizzare Compass gratuitamente

Iscriviti alla nostra newsletter DevOps

Thank you for signing up