Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adiciona materiais de aula #2

Merged
merged 1 commit into from
Aug 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 15 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ O que veremos essa semana?
- [CI/CD:continuous integration e continuous delivery](./material/002-ci-cd.md)
- [Componentes](./material/003-componentes.md)
- [Serviços e Ferramentas](./material/004-servicos-e-ferramentas.md)
- [Inteligência Artificial (IA) e DevOps](./material/005-Inteligencia-artificial-e-devops.md)
- [Inteligência Artificial (IA) e DevOps](./material/005-Inteligencia-artificial-e-devops.md)
- [Git Flow vs Trunk Based](./material/006-gitflow-e-trunk-bases.md)

- [Materiais](#materiais)
- [PDF da Aula](./material/Aula_10_Metodologia_DevOps.pdf)
Expand All @@ -57,15 +58,22 @@ O que veremos essa semana?
---

### Links Úteis
* https://www.redhat.com/pt-br/topics/devops
* https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd
* https://gaea.com.br/devops-na-pratica-dia-a-dia-do-desenvolvedor/
* [Introdução ao DevOps](https://www.redhat.com/pt-br/topics/devops)
* [O que é CI/CD?](https://www.redhat.com/pt-br/topics/devops/what-is-ci-cd)
* [DevOps na prática: dia a dia do desenvolvedor](https://gaea.com.br/devops-na-pratica-dia-a-dia-do-desenvolvedor/)
* [Testes de Software: Definição, Conceitos e Exemplos](https://www.objective.com.br/insights/testes-de-software/#:~:text=O%20que%20%C3%A9%20um%20teste,corretamente%20tudo%20que%20ele%20prop%C3%B5e)
* [Conheça a incrível história do DevOps](https://gaea.com.br/conheca-a-incrivel-historia-do-devops/#:~:text=O%20embri%C3%A3o%20da%20hist%C3%B3ria%20do,desenvolvimento%20e%20opera%C3%A7%C3%B5es%20de%20TI)
* [Por que o versionamento de software é tão importante?](https://www.locaweb.com.br/blog/temas/codigo-aberto/versionamento-de-software-importancia/)
* [Saiba tudo sobre o Gitflow Workflow](https://www.atlassian.com/br/git/tutorials/comparing-workflows/gitflow-workflow)
[Trunk-based development](https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development)

### Links documentação de ferramentas:
* https://backstage.io/
* https://helm.sh/docs/
* https://tekton.dev/docs/
* https://www.objective.com.br/insights/testes-de-software/#:~:text=O%20que%20%C3%A9%20um%20teste,corretamente%20tudo%20que%20ele%20prop%C3%B5e
* https://gaea.com.br/conheca-a-incrivel-historia-do-devops/#:~:text=O%20embri%C3%A3o%20da%20hist%C3%B3ria%20do,desenvolvimento%20e%20opera%C3%A7%C3%B5es%20de%20TI
* https://www.locaweb.com.br/blog/temas/codigo-aberto/versionamento-de-software-importancia/
* https://argoproj.github.io/cd/
* [AWS Treinamento e Certificação](https://aws.amazon.com/pt/training/?nc2=type_a)


### Livros
<h1>
Expand Down
Binary file added assets/Trunk-Based-Development.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/git-flow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ As ferramentas e serviços são essenciais para automatizar e integrar processos

### Controle de Versão

#### Git:
#### Git:

Sistema de controle de versão distribuído que permite que múltiplos desenvolvedores trabalhem em paralelo em um projeto. Git é a base para muitas outras ferramentas DevOps.

GitHub, GitLab, Bitbucket: Plataformas baseadas em Git que oferecem repositórios de código, revisão de código, integração contínua, e outras funcionalidades colaborativas.

#### Integração Contínua / Entrega Contínua (CI/CD);
#### Integração Contínua / Entrega Contínua (CI/CD):

Jenkins: Uma das ferramentas de CI/CD mais populares, Jenkins é altamente extensível e suporta uma ampla gama de plugins para automação de build, teste e deployment.

Expand Down Expand Up @@ -81,7 +82,6 @@ AWS, Azure, Google Cloud Platform (GCP): Provedores de nuvem que oferecem uma am

OpenStack: Plataforma de nuvem open-source que permite construir e gerenciar infraestruturas de nuvem privada e pública.


Enfim, existem uma infinidade de ferramentas no mercado atualmente, tando pagas quanto gratuítas, cada uma podendo ser usada em fases do processo. A imagem abaixo reflete um pouco disso.

<img src="../assets/ferramentas.jpeg" alt="CI" width="600"/>
Expand Down
99 changes: 99 additions & 0 deletions material/006-gitflow-e-trunk-bases.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# GitFlow vs Trunk-Based

## GitFlow

<img src="../assets/git-flow.png" alt="CI" width="600"/>

É uma metodologia de modelo de branching que se tornou bastante popular por sua estruturação clara e por suportar um ciclo de desenvolvimento de software mais tradicional, com versões e releases definidos. Abaixo estão os principais aspectos do Git Flow:

### Caracteristicas:

#### Branches Principais:

* Main (ou Master): Representa a versão estável e lançada do software. Somente código que está pronto para ser lançado entra na branch main.

* Develop (ou Dev): É a branch onde o desenvolvimento principal ocorre. Funciona como uma "pré-release" onde o código é integrado e testado antes de ser mesclado na main.

#### Branches de Suporte:

* Feature Branches: Usadas para desenvolver novas funcionalidades. Elas partem da branch develop e são mescladas de volta nela quando a feature está pronta.
Nome típico: feature/nome-da-feature

* Release Branches: Criadas a partir de develop quando o software está pronto para uma nova release. Essa branch permite ajustes finais, como correções de bugs ou pequenas melhorias antes do lançamento.
Nome típico: release/x.x.x

* Hotfix Branches: Usadas para correções de emergência na branch main. Elas partem de main e, depois de aplicadas as correções, são mescladas de volta em main e develop.
Nome típico: hotfix/x.x.x

### Fluxo de Trabalho

* Início de uma nova feature: Cria-se uma branch a partir de develop.Desenvolvimento é feito na branch de feature.
Quando pronta, é mesclada de volta na develop.

* Preparação para um lançamento: Cria-se uma branch de release a partir de develop. Ajustes finais e testes são feitos na branch de release. Uma vez estável, a branch de release é mesclada em main e develop.

* Correção de um bug crítico (hotfix): Cria-se uma branch de hotfix a partir de main. A correção é aplicada e testada.
A branch de hotfix é mesclada em main (para o lançamento imediato) e develop (para garantir que a correção também exista no próximo ciclo de desenvolvimento).

### Vantagens e Desvantagens do GitFlow

#### Vantagens:

* Estrutura clara que facilita o gerenciamento de versões e releases.
* Adequado para equipes que fazem releases periódicos e previsíveis.

#### Desvantagens:

* Pode ser complexo e pesado para projetos com ciclos de release rápidos ou contínuos.
* Exige muita criação e mesclagem de branches, o que pode ser confuso para equipes menores ou menos experientes.

## Trunk-Based

<img src="../assets/Trunk-Based-Development.jpg" alt="CI" width="600"/>

É uma abordagem mais simplificada e ágil para o gerenciamento de branches. Nesta abordagem, o foco é em integrar o código frequentemente em uma única branch principal (trunk ou main), minimizando a necessidade de branches de longa duração.

### Caraceristicas:

* Uma Única Branch Principal: Todo o desenvolvimento é feito na branch principal (trunk ou main). Novas features e correções de bugs são integradas diretamente na Branch Principal.

* Feature Flags: Como o código é integrado frequentemente, recursos incompletos ou experimentais são frequentemente controlados por feature flags, permitindo que eles sejam ativados ou desativados sem a necessidade de criar branches separadas.

* Commits Frequentes e Pequenos: Mudanças de código são feitas em pequenos incrementos e integradas na trunk o mais rápido possível. Isso minimiza os conflitos de merge e facilita o teste contínuo.

* Integração Contínua: O processo de integração contínua (CI) é fundamental no Trunk-Based Development. Todo o código integrado na trunk deve passar por testes automatizados para garantir a estabilidade.

#### Fluxo de Trabalho:

* Início de uma nova feature: Pequenos commits são feitos diretamente na branch principal. Se a feature não estiver pronta para produção, ela é protegida por feature flags.

* Correção de bugs: correções de bugs são feitas diretamente na trunk e implantadas imediatamente.

* Release contínuo: Como o código é constantemente integrado e testado, o software pode ser liberado a qualquer momento.

### Vantagens e Desvantagens do Trunk-Based:

#### Vantagens:

* Simplicidade: Menos complexidade em comparação com o Git Flow, com menos branches para gerenciar.
* Agilidade: Ideal para equipes que fazem deploy contínuo ou têm ciclos de release muito curtos.
* Redução de conflitos de merge: Como o código é integrado frequentemente, há menos chances de conflitos complexos.

#### Desvantagens:

* Pode ser arriscado para equipes que não têm uma boa cultura de integração contínua e testes automatizados.
* Requer disciplina para garantir que o código integrado na trunk esteja sempre em um estado de alta qualidade.

### Quando Usar Cada Abordagem?

* GitFlow:

Melhor para projetos que seguem um ciclo de release mais tradicional, com lançamentos programados e versões definidas.
Útil em projetos onde a estabilidade da versão de produção é crítica e onde as equipes podem se dar ao luxo de trabalhar em branches separadas por longos períodos.

* Trunk-Based Development:

Ideal para equipes ágeis que fazem deploys contínuos ou muito frequentes.
Adequado para ambientes de desenvolvimento onde a integração contínua e os testes automatizados são bem estabelecidos.

Cada abordagem tem seus próprios méritos, e a escolha entre Git Flow e Trunk-Based Development deve ser baseada no estilo de trabalho da equipe, na complexidade do projeto e nas práticas de deploy e release adotadas pela organização.
Binary file modified material/Aula_10_Metodologia_DevOps.pdf
Binary file not shown.
Loading