@georgeguimaraes. Integração Discreta. melhorando a Integração Contínua e ganhando em colaboração

Documentos relacionados
Versionamento Ágil com Git

Jadson Santos Analista TI UFRN Amador Pahim Eng. Red Hat / Pesquisador SINFO

PROJETO CEMEA. Um trabalho educacional

DevOps na Zendesk DEVOPS LEAD SENIOR DEVELOPER OPERATIONS ENGINEER

(STUDY OF AGILITY IN SOFTWARE DEVELOPMENT PROCESS WITH TEAMS AT DIFFERENT WORK UNITS USING A ON-LINE MANAGEMENT TOOL)

Metodologias de desenvolvimento de jogos

Agile Methods for the Traditional Guy

Os Desafios da Segurança no Desenvolvimento com Métodos Ágeis. OWASP Education Project. The OWASP Foundation

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

Controle de Versão. Prof. Msc. Bruno Urbano Rodrigues.

Desenvolvimento Ágil de Software

Manifesto Ágil - Princípios

Integração Contínua com containers Docker. Fabricio

Comparativo entre Processos Ágeis. Daniel Ferreira

Desenvolvimento Ágil de Software em Larga Escala

Test Driven Infrastructure na Globo.com. globo. .com. Fernando Carolo e Rogério Schneider QCon São Paulo 2014

Metodologias Ágeis. Gerenciando e Desenvolvendo Projetos de forma eficiente. Gabriel Verta Rafael Reimberg Vinicius Quaiato

Versionamento de Código. Núcleo de Desenvolvimento de Software

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Introdução ao Git. Laboratório de Programação. Luísa Lima, Pedro Vasconcelos, DCC/FCUP. Março 2015

Introdução à Engenharia ENG1000

O que estamos procurando?

Sistemas de Informação I

Prof. Me. Marcos Echevarria

CONHEÇA. nosso. processo. Para você lançar sua Startup. Semana de descoberta. Semana de desenvolvimento. E depois de tudo pronto?

Desenvolvimento Ágil com XP e Scrum. Guilherme Chapiewski guilherme.chapiewski@gmail.com

Gestão Ágil de Projetos e a certificação PMI-ACP

Wesley Torres Galindo

development Teresa Maciel DEINFO/UFRPE

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

Gerência de Configuração de Software Funções

Aprenda, ensine, instale e compartilhe

Desenvolvimento Ágil 1

Capítulo 25. Gerenciamento de Configuração. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D.

Salvando modificações localmente (commit) Enviando modificações para o servidor (push) Sinalizando versão estável (tag)

Um case de sucesso em equipe ágil, dedicada e remota com evolução adaptativa e gradativa do Scrum.

Controle de Versão de Software. Luiz Jácome Júnior

6 Infraestrutura de Trabalho

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

Cowboys, Ankle Sprains, and Keepers of Quality: How Is Video Game Development Different from Software Development?

Investigando Sistemas de Informação. Crafty Syntax Live Help

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

MPSP Projeto ALM/Scrum. Diretoria de Sistemas de Informação

Quais são as características de um projeto?

Continuous Delivery. E seus princípios e práticas. Carlos Felippe Cardoso (CFC) slideshare.

Investigando números consecutivos no 3º ano do Ensino Fundamental

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS - APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

Práticas do XP (Programação em Pares e Stand Up Meeting)

Wesley Torres Galindo.

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Métodos Formais em Engenharia de Software. VDMToolTutorial

30 Dicas de SEO para E-commerce. por Diego Ivo, CEO da Conversion

Agenda. Aprendendo Git/GitHub. Definições. Git. História 31/05/2012. Vantagem de usar controle de versão

Métodos Ágeis para Desenvolvimento de Software Livre

Mini Curso Gerenciamento de Configuração e Mudança com GIT + Eclipse. Jadson Santos Amador Pahim

Software e Hardware Livres. Fábio Olivé (fabio.olive@gmail.com)

Resumo artigo Agile Modeling- Overview

ARQUITETANDO E EVOLUINDO. um erp para a nuvem

Método Aldeia de Projetos

4 O Workflow e a Máquina de Regras

Com metodologias de desenvolvimento

ELABORAÇÃO DE UM PRODUCT BACKLOG EFETIVO

5. Métodos ágeis de desenvolvimento de software

Rafael Biriba BLUE GREEN. Deployment

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Utilização de Branches de Erro e Melhoria Sistema de Gestão da Qualidade

Agilidade -foco no. por Yóris Linhares

Como contribuir com projetos de software livre

SCRUM Discussão e reflexão sobre Agilidade. Fernando Wanderley

Desenvolvendo Software Livre com Programação extrema

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm.

[Agile] Scrum + XP. Wagner Roberto dos Santos. Agilidade extrema. Arquiteto Java EE / Scrum Master wrsconsulting@gmail.com. Globalcode open4education

O primeiro passo é habilitar acesso externo através de web service a configuração é bem simples e não exige maiores explicações.

Accessing the contents of the Moodle Acessando o conteúdo do Moodle

Desafio para a família

o Maria Hermínia Cabral o Sérgio Guimarães o Pedro Krupenski

Diretrizes de Qualidade de Projetos

Conteúdo Programático Anual

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br

O Ciclo de Desenvolvimento do Kernel do Linux

Curso de Imersão em Desenvolvimento Ágil de Software

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

SCRUM Gerência de Projetos Ágil. Prof. Elias Ferreira

globo.com Novos paradigmas na gestão de produtos da Globo.com

Como criar, priorizar e manter o Product Backlog

Desenvolvimento de Software Livre. Aspectos Culturais e Tecnológicos

Amy Winehouse - Tears Dry On Their Own

Trilha Agile TDD e 20 coisas que você precisa saber

MANIFESTO ÁGIL. Esses conceitos aproximam-se melhor com a forma que pequenas e médias organizações trabalham e respondem à mudanças.

Escrevendo Estórias do Usuário Eficazes aula #1

Processo de Desenvolvimento de Software. Unidade V Modelagem de PDS. Luiz Leão luizleao@gmail.com

Scrum Uma breve apresentação. Alfredo Goldman Dairton Bassi

Alexandre Lima Guilherme Melo Joeldson Costa Marcelo Guedes

WP EXPRESSO GUIA RÁPIDO. Descubra três formas para montar seu site rapidamente e onde encontrar bons temas

Sticker Art: Uma ferramenta de inclusão e conscientização do valor da arte

Transcrição:

@georgeguimaraes Integração Discreta melhorando a Integração Contínua e ganhando em colaboração

@georgeguimaraes George Guimarães co-fundador da Plataformatec entrega de projetos

Posicionamento único em RoR Atualmente somos a única empresa a ter 3 membros integrando o Rails Core Team ao redor do globo José Valim Co-fundador da Plataformatec Rafael França Rails Core Team website: http://rubyonrails.org/core Carlos Antonio!4

!!!

! x!!

Integração Contínua parte do extreme programming (XP) veio para resolver o integration hell

Commit #1, Feature A

Commit #2, Feature A Commit #1, Feature A

Commit #1, Feature B Commit #2, Feature A Commit #1, Feature A

Commit #3, Feature A (done!) Commit #1, Feature B Commit #2, Feature A Commit #1, Feature A

Commit #2, Feature B Commit #3, Feature A (done!) Commit #1, Feature B Commit #2, Feature A Commit #1, Feature A

Commit #2, Feature B Commit #3, Feature A (done!) Commit #1, Feature B Commit #2, Feature A Commit #1, Feature A

Força a pensar em testes automatizados Ajudou muitas equipes nas entregas de projetos Atualmente vista como pré-requisito de equipes

Podemos melhorar? Existe algo que estamos deixando de lado?

novas práticas nesses 15 anos metodologias ágeis distributed version control git e seu ecossistema

O que podemos manter do CI? Evolução, não disrupção

1. Testes automatizados Tem certeza que o software funciona?

2. Build a cada commit Build early, build often

3. Servidor de CI Chato e barulhento

E então o que melhorar?

Não jogue código direto no master ou mainline, ou trunk...

crença de que branches são ruins

Porque integrar imediatamente? Evita conflitos no merge Branches separadas ficam desatualizadas

This fear of big merges also acts as a deterrent to refactoring! The result we see is that teams using feature branches shy away from refactoring which leads to uglier code bases.

CI is effective at removing the problem of big merges, but it's also a vital communication mechanism! Communication is one of the key factors in software development and one of CI's most important features is that it facilitates human communication.

Commits no master 1. não são uma ferramenta de comunicação entre desenvolvedores

Existe algo melhor como desenvolvedores de um mesmo time podem colaborar eficientemente?

Pull Requests não é uma idéia nova git send-email (Linux mailing list) git request-pull código + contexto + discussão

código + contexto + discussão comunicação entre desenvolvedores

Feature A

Feature B Feature A

Feature B Feature A

Feature B Feature A

Feature B Feature A

? Feature B Feature A

? Feature B Feature A

? Feature B Feature A

? Feature B Feature A

? Feature B Feature A

? Feature B Feature A

? Feature B Feature A

?? Feature B Feature A

?? Feature B Feature A

O que é discutido num Pull Request? Sintaxe

O que é discutido num Pull Request? Arquitetura do software

O que é discutido num Pull Request? Problemas de escalabilidade

O que é discutido num Pull Request? Disseminação de conhecimento do projeto

O que é discutido num Pull Request? Code review

Collective ownership Peer review

So unless feature branches only last less than a day, running a feature branch is a different animal to CI. I've heard people say they are doing CI because they are running builds, perhaps using a CI server, on every branch with every commit. That's continuous building, and a Good Thing, but there's no integration, so it's not CI.

Mas a gente está integrando... quando está pronto!

Integração Discreta Integre quando está pronto

Integração Discreta Abuse de Pull Requests para comunicação

Integração Discreta Commite coisas pequenas no master (typos, syntax fix)

Integração Discreta Features devem ser pequenas

Integração Discreta Conheça suas ferramentas

Integração Discreta Não trave os desenvolvedores. Explorem métodos de trabalho.

Commits no master 2. Shippando features inacabadas

E se eu usar feature toggles? É uma maneira de desacoplar features de deploys/releases

Toggles trazem problemas Qual é mesmo o toggle que eu tenho que ligar?

Toggles trazem problemas O que seu software faz? Vai depender dos toggles ligados

Toggles trazem problemas 2^n combinações possíveis

Toggles trazem problemas Precisa ser removido (débito técnico)

Como usar toggles com CSS? Como usar toggles com JavaScript? Migração de bancos com toggle? Tarefas assíncronas com toggle?

Use toggles se......fizer rollout incremental de features

Use toggles se......po tiver acesso ao toggle

ou seja, use feature toggles se ele possuir valor!

E não para esconder o WIP Código WIP é bagunça mesmo, não se envergonhe

na Integração Discreta, branches isolam o WIP

Commits no master 3. Força o time a tomar decisões de arquitetura precocemente

WTF?!

tem muita gente no mesmo repo"

precisamos escalar nosso time"

precisamos de uma arquitetura distribuída"

Precisa mesmo? Agora? não está cedo pra isso?

Main app Serviço A Serviço B Serviço C

arquitetura distribuída no free lunch

na Integração Discreta, é possível escalar times no mesmo app/repo

Concluindo...

1. Testes automatizados

2. Build a cada commit/branch

3. Pull Requests

4. Comunique-se

5. Individuals and interactions over processes and tools

a Plataformatec orgulha-se em dizer

Não usamos CI

usamos Integração Discreta

http://www.flickr.com/photos/47863131@n08/7940580038 http://martinfowler.com/bliki/featurebranch.html! http://dymitruk.com/blog/2012/02/05/branch-per-feature/ http://arialdomartini.wordpress.com/2011/11/02/help-me-because-i-think-martinfowler-has-a-merge-paranoia/

Obrigado! Dúvidas? george@plataformatec.com.br @georgeguimaraes