SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
Trunk Based
Development
is a social
matter
Alessio Coser
Software Developer
Quando gli sviluppatori collaborano sul
codice presente in un singolo branch.
— trunkbaseddevelopment.com
1. Push continuo di piccoli commit
direttamente su master
— trunkbaseddevelopment.com
2. Merge frequente di short-lived
branches (-1 giorno)
— trunkbaseddevelopment.com
Frequenza di Integrazione
Quando ogni membro di un team
integra il codice
almeno una volta al giorno.
– https:/
/martinfowler.com/articles/continuousIntegration.html
Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti
Da una prospettiva Agile
Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti
● Ridurre il work in progress
Da una prospettiva Agile
Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti
● Ridurre il work in progress
● Lavorare per piccoli incrementi
Da una prospettiva Agile
Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti
● Ridurre il work in progress
● Lavorare per piccoli incrementi
● Accorciare il ciclo di feedback
Da una prospettiva Agile
Ma quale ciclo di Feedback?
Impatti
Soprattutto quando ci sono più
persone che lavorano sulla stessa
parte del sistema.
Aumenta la frequenza
di integrazione
rendendolo più trasparente, sai
immediatamente che codice
stanno cambiando i colleghi.
Viene evidenziato
il work in progress
Iterativo, e incrementale
con push frequenti
Abilita il
refactoring
Riduce la distanza tra gli sviluppatori che
lavorano sulle funzionalità nella stessa
codebase.
Aumenta la
collaborazione
https://trunkbaseddevelopment.com/5-min-overview/#distance
Branches create distance between
developers and we do not want that
— Frank Compagner, Guerrilla Games
Perchè TBD
non lo fanno
tutti?
Mindset
sociale
Lavoro di
squadra
Viene incoraggiato
rispetto al lavoro
individuale
Mindset - sociale
Lavoro di
squadra
Feedback
Viene incoraggiato
rispetto al lavoro
individuale
Frequente e
costruttivo
Mindset - sociale
Lavoro di
squadra
Fiducia
Feedback
Viene incoraggiato
rispetto al lavoro
individuale
Frequente e
costruttivo
Che livello di
fiducia abbiamo
nel team?
Mindset - sociale
Mindset
tecnico
Mindset - tecnico
Piccole
modifiche
incrementali
Mindset - tecnico
Piccole
modifiche
incrementali
Attenzione
alla qualità
Mindset - tecnico
Piccole
modifiche
incrementali
Attenzione
alla qualità
Separazione
Deploy - Release
Mindset - tecnico
Piccole
modifiche
incrementali
Attenzione
alla qualità
Sempre in uno
stato
deployabile
Separazione
Deploy - Release
Come si fa deploy
quando qualcosa
è in progress?
Nascondi le
funzionalità
incomplete
01
Deployare se qualcosa è ancora in progress
Nascondi le
funzionalità
incomplete
Usa branch by
abstraction
01 02
Deployare se qualcosa è ancora in progress
Usa branch by
abstraction
02
Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Usa branch by
abstraction
02
Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Usa branch by
abstraction
02
Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Usa branch by
abstraction
02
Nascondi le
funzionalità
incomplete
Usa branch by
abstraction
Usa i feature flag
01 02 03
https://martinfowler.com/articles/feature-toggles.html
Deployare se qualcosa è ancora in progress
Quando fare
attenzione?
Quando fare attenzione?
Open
Source
Team(?) di singoli
contributor
Quando fare attenzione?
Open
Source
Team(?) di singoli
contributor
Quando fare attenzione?
Open
Source
Team distribuito in
diverse timezones
Esperimenti
Team(?) di singoli
contributor
Quando fare attenzione?
Open
Source
Team distribuito in
diverse timezones
Iniziamo domani!
… ma come?
Costruire le
fondamenta
del team
Iniziamo domani! … ma come?
Team
Costruire le
fondamenta
del team
Iniziamo domani! … ma come?
Piccoli passi e
salvataggio
frequente
Team Abitudini
Costruire le
fondamenta
del team
Iniziamo domani! … ma come?
Ridurre tempo
di divergenza
da main branch
Trasparenza
Team Abitudini
Piccoli passi e
salvataggio
frequente
Costruire le
fondamenta
del team
Iniziamo domani! … ma come?
Ridurre tempo
di divergenza
da main branch
Trasparenza
Team Abitudini
Ridurre la
burocrazia
Flow
Piccoli passi e
salvataggio
frequente
Conclusioni
Lo sviluppo software è
un’attività sociale
Una persona, da sola, non è altrettanto creativa o
efficace nel far emergere idee e trovare soluzioni
Accetta il cambiamento
Non nascondere la testa sotto la sabbia,
impara a convivere con il cambiamento
Gary Gruver from HP
“Engineers thought
trunk-based development
would never work, but once
they started, they couldn’t
imagine ever going back”
CREDITS: This presentation template was created by
Slidesgo, including icons by Flaticon, infographics &
images by Freepik
Per approfondire
- nelis.boucke.be/post/trunk-based-development
- mrdevops.io/trunk-based-development-8376fe577c11
- techbeacon.com/app-dev-testing/how-trunk-based-delivery-key-faster-more-reliable-software
- trunkbaseddevelopment.com
- media.webteam.puppet.com/uploads/2019/11/2016-State-of-DevOps-Report_0.pdf
- georgestocker.com/2020/03/04/please-stop-recommending-git-flow/
- mrdevops.io/if-you-still-insist-on-feature-branching-you-are-hurting-your-business-and-our-profession-32e1109d4594
- continuousdelivery.com/2011/07/on-dvcs-continuous-integration-and-feature-branches/
- 12factor.net
- martinfowler.com/bliki/BranchByAbstraction.html
- continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction
- martinfowler.com/articles/feature-toggles.html
- infoq.com/articles/feature-flags-gone-wrong
- martinfowler.com/bliki/StranglerFigApplication.html
- tuple.app/pair-programming-guide/the-case-for-pair-programming
- grrava.blogspot.com/2017/10/review-of-our-code-review-process.html
CREDITS: This presentation template was created by
Slidesgo, including icons by Flaticon, infographics &
images by Freepik
Thanks,
any question?
twitter.com/alessiocoser
it.linkedin.com/in/alessiocoser
Alessio Coser
Software Engineer

Contenu connexe

Tendances

MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較Shinya Sugiyama
 
Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...
Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...
Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...Kai Wähner
 
Road to (Enterprise) Observability
Road to (Enterprise) ObservabilityRoad to (Enterprise) Observability
Road to (Enterprise) ObservabilityChristoph Engelbert
 
Combining Logs, Metrics, and Traces for Unified Observability
Combining Logs, Metrics, and Traces for Unified ObservabilityCombining Logs, Metrics, and Traces for Unified Observability
Combining Logs, Metrics, and Traces for Unified ObservabilityElasticsearch
 
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...GetInData
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルTsuyoshi Ushio
 
Deploying Confluent Platform for Production
Deploying Confluent Platform for ProductionDeploying Confluent Platform for Production
Deploying Confluent Platform for Productionconfluent
 
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)NTT DATA Technology & Innovation
 
Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断
Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断
Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断さくらインターネット株式会社
 
Graph Computing with JanusGraph
Graph Computing with JanusGraphGraph Computing with JanusGraph
Graph Computing with JanusGraphJason Plurad
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Yahoo!デベロッパーネットワーク
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
Graph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft EcosystemGraph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft EcosystemMarco Parenzan
 
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまでLINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまでLINE Corporation
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsYoshiyasu SAEKI
 
NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてkawarasho
 
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送Google Cloud Platform - Japan
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念Masahito Zembutsu
 

Tendances (20)

Zen of Akka
Zen of AkkaZen of Akka
Zen of Akka
 
MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較MySQLとPostgreSQLの基本的なバックアップ比較
MySQLとPostgreSQLの基本的なバックアップ比較
 
Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...
Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...
Architecture patterns for distributed, hybrid, edge and global Apache Kafka d...
 
Road to (Enterprise) Observability
Road to (Enterprise) ObservabilityRoad to (Enterprise) Observability
Road to (Enterprise) Observability
 
Combining Logs, Metrics, and Traces for Unified Observability
Combining Logs, Metrics, and Traces for Unified ObservabilityCombining Logs, Metrics, and Traces for Unified Observability
Combining Logs, Metrics, and Traces for Unified Observability
 
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキル
 
How Secure Are Your APIs?
How Secure Are Your APIs?How Secure Are Your APIs?
How Secure Are Your APIs?
 
Deploying Confluent Platform for Production
Deploying Confluent Platform for ProductionDeploying Confluent Platform for Production
Deploying Confluent Platform for Production
 
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
 
Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断
Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断
Zabbix で Mastodon を監視する Sidekiq / Redis を中心に Mastodon 健康診断
 
Graph Computing with JanusGraph
Graph Computing with JanusGraphGraph Computing with JanusGraph
Graph Computing with JanusGraph
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
Graph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft EcosystemGraph Databases in the Microsoft Ecosystem
Graph Databases in the Microsoft Ecosystem
 
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまでLINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
LINE LIVE のチャットが
30,000+/min のコメント投稿を捌くようになるまで
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once Semantics
 
NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用について
 
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
[Cloud OnAir] Apigee でかんたん API 管理 2019年12月12日 放送
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 

Similaire à Trunk Based Development is a social matter

Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Klab
 
ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...Stefano Marchetti
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Come i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsCome i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsGiulio Roggero
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!Alex Comba
 
AgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insiemeAgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insiemeFelice Pescatore
 
Back to basics - il Manifesto Agile
Back to basics - il Manifesto AgileBack to basics - il Manifesto Agile
Back to basics - il Manifesto AgileGiancarlo Valente
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
Milano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationMilano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationGonzalo Marcos Ansoain
 
Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2Meet Magento Italy
 
Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2MageSpecialist
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfFlorence Consulting
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessFelice Pescatore
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeDotNetMarche
 

Similaire à Trunk Based Development is a social matter (20)

Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)
 
ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Come i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsCome i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature Teams
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!
 
05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!
 
AgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insiemeAgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insieme
 
Back to basics - il Manifesto Agile
Back to basics - il Manifesto AgileBack to basics - il Manifesto Agile
Back to basics - il Manifesto Agile
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Milano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationMilano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce Integration
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2
 
Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del Business
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto reale
 
Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
 

Trunk Based Development is a social matter