• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
105
0
0

Texto

(1)

Integração Discreta

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

@georgeguimaraes

(2)

George Guimarães

co-fundador da Plataformatec entrega de projetos

@georgeguimaraes

(3)
(4)

Posicionamento único em RoR

Atualmente somos a única empresa a ter 3 membros integrando o Rails Core Team ao redor do globo

!4

Carlos Antonio Rafael França

José Valim 


Co-fundador da Plataformatec

Rails Core Team website: http://rubyonrails.org/core

(5)
(6)
(7)
(8)
(9)

!

!

!

(10)

x

!

!

!

(11)

Integração Contínua

parte do extreme programming (XP)

veio para resolver o “integration hell”

(12)
(13)
(14)
(15)

Commit #1, Feature A

(16)

Commit #1, Feature A

Commit #2, Feature A

(17)

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

Commit #2, Feature A

(18)

Commit #1, Feature A

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

Commit #2, Feature A

(19)

Commit #1, Feature A

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

Commit #2, Feature A

Commit #2, Feature B

(20)

Commit #1, Feature A

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

Commit #2, Feature A

Commit #2, Feature B

(21)
(22)

Força a pensar em testes automatizados

Ajudou muitas equipes nas entregas de projetos

Atualmente vista como pré-requisito de equipes

(23)

Existe algo que estamos deixando de lado?

Podemos melhorar?

(24)

novas práticas nesses ∼ 15 anos metodologias ágeis

distributed version control

git e seu ecossistema

(25)

Evolução, não disrupção

O que podemos manter do CI?

(26)

Tem certeza que o software funciona?

1. Testes automatizados

(27)

Build early, build often

2. Build a cada commit

(28)

Chato e barulhento

3. Servidor de CI

(29)

E então o que melhorar?

(30)

Não jogue código direto no master

ou mainline, ou trunk...

(31)

“crença” de que branches são ruins

(32)

Evita conflitos no merge Branches separadas ficam desatualizadas

Porque integrar imediatamente?

(33)

“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.”

(34)

“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.”

(35)

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

Commits no master

(36)

Existe algo melhor

como desenvolvedores de um mesmo time podem colaborar eficientemente?

(37)

Pull Requests

não é uma idéia nova

git send-email (Linux mailing list) git request-pull

código + contexto + discussão

(38)

código + contexto + discussão

comunicação entre desenvolvedores

(39)
(40)
(41)
(42)
(43)
(44)

Feature A

(45)

Feature A

Feature B

(46)

Feature A

Feature B

(47)

Feature A

Feature B

(48)

Feature A

Feature B

(49)

?

Feature A

Feature B

(50)

?

Feature A

Feature B

(51)

?

Feature A

Feature B

(52)

?

Feature A

Feature B

(53)

?

Feature A

Feature B

(54)

?

Feature A

Feature B

(55)

?

Feature A

Feature B

(56)

?

?

Feature A

Feature B

(57)

?

?

Feature A

Feature B

(58)

O que é discutido num Pull Request?

Sintaxe

(59)

O que é discutido num Pull Request?

Arquitetura do software

(60)

O que é discutido num Pull Request?

Problemas de escalabilidade

(61)

O que é discutido num Pull Request?

Disseminação de conhecimento do projeto

(62)

O que é discutido num Pull Request?

Code review

(63)

Collective ownership

Peer review

(64)

“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.”

(65)

Mas a gente está integrando...

quando está pronto!

(66)

Integração Discreta

Integre quando está pronto

(67)

Integração Discreta

Abuse de Pull Requests para comunicação

(68)

Integração Discreta

Commite coisas pequenas no master (typos, syntax fix)

(69)

Integração Discreta

Features devem ser pequenas

(70)

Integração Discreta

Conheça suas ferramentas

(71)

Integração Discreta

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

(72)
(73)
(74)

2. “Shippando” features inacabadas

Commits no master

(75)

E se eu usar feature toggles?

É uma maneira de desacoplar features de deploys/releases

(76)

Toggles trazem problemas

Qual é mesmo o toggle que eu tenho que ligar?

(77)

Toggles trazem problemas

O que seu software faz? Vai depender dos toggles ligados

(78)

Toggles trazem problemas

2^n combinações possíveis

(79)

Toggles trazem problemas

Precisa ser removido (débito técnico)

(80)

Como usar toggles com CSS?

Como usar toggles com JavaScript?

Migração de bancos com toggle?

Tarefas assíncronas com toggle?

(81)

...fizer rollout incremental de features

Use toggles se...

(82)

...PO tiver acesso ao toggle

Use toggles se...

(83)

ou seja, use feature toggles

se ele possuir valor!

(84)

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

E não para esconder o WIP

(85)

na Integração Discreta,

branches isolam o WIP

(86)

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

Commits no master

(87)

WTF?!

(88)

“tem muita gente no mesmo repo"

(89)

“precisamos escalar nosso time"

(90)

“precisamos de uma arquitetura

distribuída"

(91)

não está cedo pra isso?

Precisa mesmo? Agora?

(92)

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

(93)

no free lunch

arquitetura distribuída

(94)

na Integração Discreta,

é possível escalar times

no mesmo app/repo

(95)

Concluindo...

(96)

1. Testes automatizados

(97)

2. Build a cada commit/branch

(98)

3. Pull Requests

(99)

4. Comunique-se

(100)

5. Individuals and interactions

over processes and tools

(101)

a Plataformatec

orgulha-se em dizer

(102)

Não usamos CI

(103)

usamos  

Integração Discreta

(104)

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-martin-

fowler-has-a-merge-paranoia/

(105)

george@plataformatec.com.br

@georgeguimaraes

Obrigado! Dúvidas?

Referências

Documentos relacionados

Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.. --

Devido às escolas, de modo geral, ainda veem a educação em saúde como uma prática a ser realizada apenas em eventos especiais e não no dia-a-dia, enfatizando a informação

Já Ventura (2012), ao realizar uma pesquisa exploratória com idosos, agentes e profissionais de saúde, constatou que, dos 54 idosos entrevistados, todos utilizavam

Grupo Assessor Público A tag SERVICOS se refere aos serviços de cada Nota Fiscal Eletrônica, também é apenas informativa, deve ser aberta no inicio da declaração dos

Tudo o que é necessário com o objetivo de construir um produto, deve estar incluído no sistema controlo de versões, incluindo scripts, ficheiros com propriedades da

Acompanhando as primeiras peças elisabetanas tais como Sackville & Norton de Gorboduc e The Spanish Tragedy por Kyd, a qual forneceu muito material para Hamlet,

Neste trabalho são apresentadas estimativas para a inflação brasileira na década de 2000. Os resultados de um modelo “estrutural” com duas variáveis endógenas

Como se observou anteriormente, a Estatística tem como objetivo encon- trar leis de comportamento para todo o conjunto, por meio da sintetização dos dados numéricos, sob a forma