Framework CALMS

Valuta le tue capacità e misura i progressi compiuti nel percorso DevOps.

Ian Buchanan

Principal Solutions Engineer


CALMS è un framework che valuta la capacità di un'azienda di adottare processi DevOps e consente anche di misurare i risultati durante una trasformazione DevOps. Il termine è stato coniato da Jez Humble, coautore del libro "The DevOps Handbook", ed è l'acronimo di Culture, Automation, Lean, Measurement e Sharing.

Cultura


DevOps non è semplicemente un processo o un approccio diverso allo sviluppo: è un cambiamento culturale e una parte importante di una cultura DevOps è la collaborazione.

Tutti gli strumenti e le soluzioni di automazione del mondo sono inutili se i professionisti dello sviluppo e dell'IT/operativi non lavorano insieme. Questo perché le attività di DevOps non risolvono i problemi degli strumenti, risolvono i problemi umani.

DevOps può essere definito in termini di evoluzione dei team Agile, con la differenza che ora il team operativo è automaticamente incluso. La formazione di team orientati al progetto o al prodotto per sostituire i team basati sulle funzioni rappresenta un passo nella giusta direzione. A questo bisogna aggiungere lo sviluppo, il controllo di qualità, la gestione del prodotto, la progettazione, le operazioni, la gestione del progetto e qualsiasi altro set di competenze richieste dal progetto. Invece di avere un team che si occupa di tutto o di assumere "professionisti DevOps", è più importante disporre di team basati sui prodotti in grado di lavorare insieme agevolmente.

Poche cose favoriscono la collaborazione come condividere un obiettivo comune e avere un piano per raggiungerlo insieme. Per alcune aziende, il passaggio improvviso a team basati sui prodotti sarebbe una scelta troppo affrettata. Pertanto, è meglio procedere a piccoli passi. I team di sviluppo possono, e dovrebbero, invitare membri appropriati del team operativo a partecipare a sessioni di pianificazione di sprint, standup quotidiani e demo di sprint. I team operativi possono invitare gli sviluppatori chiave alle riunioni. È un modo Agile e organico per tenersi reciprocamente informati su lavoro, idee e difficoltà.

materiale correlato

Scopri di più sui vantaggi di DevOps

materiale correlato

Crea una cultura DevOps

Le sfide e persino le emergenze sono test efficaci della cultura DevOps. Gli sviluppatori, il team operativo e i Customer Advocate affrontano il problema e lo risolvono come un team? L'analisi retrospettiva degli imprevisti si basa sul miglioramento dei risultati per il prossimo imprevisto invece che sull'individuazione delle colpe? Se la risposta è "Sì", è un segnale positivo che indica che l'organizzazione sta adottando una cultura DevOps.

Le aziende di maggior successo adottano la cultura DevOps in ogni reparto e a tutti i livelli dell'organigramma. Su una scala così ampia, il termine "DevOps" è spesso troppo limitato e non più necessario. Queste aziende dispongono di canali di comunicazione aperti e comunicano regolarmente. Ritengono che la soddisfazione dei clienti sia una responsabilità tanto del reparto di gestione del prodotto quanto del team di sviluppo. Sono consapevoli del fatto che le attività di DevOps non rappresentano il lavoro di un singolo team, ma di tutti.

Automazione


Automation helps eliminate repetitive manual work, yields repeatable processes, and creates reliable systems.

Build, test, deploy, and provisioning automation are typical starting points for teams who don’t have them in place already. And hey: what better reason for developers, testers, and operators to work together than building systems to benefit everyone?

Teams new to automation usually start with continuous delivery: the practice of running each code change through a gauntlet of automated tests — often facilitated by cloud-based infrastructure — then packaging up builds and promoting them through environments using automated deployments.

Why? Computers execute tests more rigorously and faithfully than humans. These tests catch bugs and security flaws sooner. And automated deployments alert IT/Ops about drift between environments, which reduces surprises when it’s time to release.

Another major contribution of DevOps is “configuration as code.” Developers strive to create modular, composable applications because they are more reliable and maintainable. That same thinking can be extended to the infrastructure that hosts them, whether it lives in the cloud or on the company's own network.

“Configuration as code” and “continuous delivery” aren’t the only types of automation seen in the DevOps world, but they’re worth special mention because they help break down the wall between development and operations. And when DevOps uses automated deploys to send thoroughly tested code to identically provisioned environments, “works on my machine!” becomes irrelevant.

Lean


When we hear “lean” in the context of software, we usually think about eliminating low-value activities and moving quickly — being scrappy and agile. Even more relevant for DevOps are the concepts of continuous improvement and embracing failure — which lay the foundation of an experimental mindset.

A DevOps mindset recognizes opportunities for continuous improvement everywhere. Some are obvious, like holding regular retrospectives so your team’s processes can improve. Others are subtle, like A/B testing different on-boarding approaches for new users of your product.

We have agile development to thank for making continuous improvement a mainstream idea. Early adopters of the agile methodology proved that a simple product in the hands of customers today is more valuable than a perfect product in the hands of customers six months from now. If the product is improved continuously, customers will stick around.

And guess what: failure is inevitable. So you might as well set up your team to absorb it, recover, and learn from it (some call this “being anti-fragile”). At Atlassian, we believe that if you’re not failing once in a while, you’re not trying hard enough.

In the context of DevOps, failure is not a punishable offense. Teams assume that things are bound to go pear-shaped at some point, so they build for fast detection and rapid recovery. Postmortems focus on where processes fell down and how to strengthen them — not on which team member messed up the code. Why? Because continuous improvement and failure go hand in hand.

Misurazione


It’s hard to prove your continuous improvement efforts actually improve anything without data. Fortunately, there are loads of tools and technologies for measuring performance, like how much time users spend with your product, whether that blog post generated any sales, or how often critical alerts pop up in your logs.

Although you can measure just about anything, that doesn’t mean you have to (or should) measure everything. Take a page from agile development and start with the basics:

How long did it take to go from development to deployment?

How often do recurring bugs or failures happen?

How long does it take to recover after a system failure?

How many people are using your product right now?

How many users did you gain / lose this week?

With a solid foundation in place, it’s easier to capture sophisticated metrics around feature usage, customer journeys, and service level agreements (SLAs). The information you get comes in handy when it’s time for road mapping and spec’ing out your next big move.

All this juicy data will help your team make decisions, but it’s even more powerful when shared with other teams — especially teams in other departments. For example, your marketing team wants shiny new features they can sell. But meanwhile, you’re seeing high customer churn because the product is awash in technical debt. Providing user data that supports your roadmap — even if it’s light on features and heavy on fixes — makes it easier to build consensus and get buy-in from stakeholders.

Condivisione


As much as we wished that there was a magic wand to transform all teams into high-performing DevOps teams, DevOps transformations require a blend of practices, cultural philosophies, and tools. But like you’ve read, the benefits to breaking down the Development and Operations siloes are well worth it — increased trust, faster software releases, more reliable deployments, and a better feedback loop between teams and customers.

Embracing DevOps is no small task. Yet given the right mindset, effort, and tools, an organization can undergo a DevOps transformation that yields significant benefits.

The long-standing friction between development and operations teams is largely due to a lack of common ground. We believe that sharing responsibility and success goes a long way toward bridging that divide. Developers can win instant goodwill by helping to carry one of operations’ biggest burdens: the pager (a figurative construct these days). DevOps is big on the idea that the same people who build an application should be involved in shipping and running it.

In conclusion…


Out of this idea comes the phrase, "you built it, you run it," which fosters a hands-on approach accross teams. This doesn’t mean that you hire developers and simply expect them to be excellent operators as well. It means that developers and operators pair with each other throughout the application’s lifecycle. Moreover, reports have shown that peer-reviewed code and products are the only review that results in better delivery and performance; in fact, external reviewers were no more effective that conducting no review at all.

Teams that embrace DevOps often have a rotating role whereby developers address issues caught by end users while, at the same, troubleshooting production problems. This person responds to urgent customer-reported issues, creating patches when necessary, and works through the backlog of customer-reported defects. The “developer on support” learns a lot about how the application is used in the wild. And by being highly available to the operations team, the development teams build trust and mutual respect.

Ian Buchanan
Ian Buchanan

Ian Buchanan è Principal Solutions Engineer per DevOps presso Atlassian, dove si occupa della community DevOps emergente e dell'applicazione di Jira, Bitbucket e Bamboo per migliorare la continuous integration e la continuous delivery. Ian Buchanan vanta una lunga e vasta esperienza delle tecnologie Java e .NET ed è noto per essere un promotore delle pratiche Lean e Agile nelle aziende di grandi dimensioni.

Nel corso della sua carriera, ha gestito con successo strumenti per lo sviluppo software aziendale in tutte le fasi del loro ciclo di vita, dall'inizio alla fine. Si è occupato del miglioramento dei processi a livello di organizzazione riuscendo a ottenere maggiore produttività, qualità superiore e migliore soddisfazione del cliente. Ha creato team Agile multinazionali in cui viene valorizzata la capacità di gestire e organizzare autonomamente il lavoro. Quando non parla o codifica, Ian si dedica alle sue passioni: parser, metaprogrammazione e linguaggi specifici di dominio.


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 DevOps

Illustrazione su Devops

Percorso di apprendimento DevOps

Illustrazione di una mappa

Inizia gratis

Iscriviti alla nostra newsletter DevOps

Thank you for signing up