Mindmap
Engenharia de Software Cap. 10: DevOps

Inhalt der Mindmap
Engenharia de Software Cap. 10: DevOps
Departamento de Sistemas (Desenvolvimento)
Departamento de Suporte (Operações)
DevOps
- Movimento que visa unificar as culturas de desenvolvimento (Dev) e de operação (Ops), visando permitir a implantação mais rápida e ágil de um sistema
- Grupo de desenvolvedores que ajudou a difundir esse princípio
- Gene Kim
- Jez Humble
- Patrick Debois
- John Willes
- Se tem um disrupção tradicional na implantação dos sistemas de modo que seja mais ágil
- Para isso se tem a aproximação do pessoal de desenvolvimento com o de operações desde os primeiros sprints do projeto
- Controle de Versões
- Sistema de controle de versões
- Oferece um repositório para armazenar a versão mais recente de um código fonte, além de arquivos de documentação, manuais, etc.
- Permite que se recupere versões mais antigas de qualquer arquivo
- Existe um único servidor, que armazena o repositório e o sistema de controle de versões
- Clientes podem modificar o arquivo e depois atualizar o arquivo no servidor
- Commit
- Torna o arquivo visível para outros desenvolvedores no servidor
- Commit
- São sistemas centralizados e baseados em uma arquitetura cliente/servidor
- Sistema de controle de versões Distribuídos
- Adota uma arquitetura peer-to-peer
- Cada desenvolvedor possui em sua máquina um servidor completo de controle de versões, que pode se comunicar com os servidores de outras máquinas
- Repositório central
- Máquina principal, que armazena a versão de referência do código fonte
- Pull
- Atualiza o repositório local com novos commits disponíveis no repositório central.
- Push
- Envia para o repositório central os commits mais recentes realizados pelo desenvolvedor em seu repositório local.
- Pode-se trabalhar e gerenciar versões de forma offline
- Pode-se realizar commits com mais frequência de forma parcial pois não são colocados no repositório central
- Commits são executados em menos tempo
- Git
- Desenvolvimento foi liderado por Linus Torvalds (criador do Linux)
- É um sistema de controle de versões distribuído, de código aberto
- Sistema de linha de comando
- GitHub
- Serviço de hospedagem de código que usa o sistema Git para prover controle de versões
- Oferece repositórios públicos e gratuitos, além de repositórios fechados e pagos, para uso de empresas
- Multirepos vs Monorepos
- Multirepos
- Uma organização terá vários repositórios
- Monorepos
- Uma organização terá um único repositório, no diretório raiz desse repositório, teremos os subdiretórios
- Multirepos
- Sistema de controle de versões
- Continuous Integration (CI)
- É uma prática de desenvolvimento proposta por Extreme Programming (XP)
- "Se uma tarefa causa dor, não podemos deixar que ela acumule"
- Deve ser quebrada em subtarefas que possam ser realizadas de forma frequente
- CI recomenda integrar o código de forma frequente, isto é, contínua.
- Deve ser quebrada em subtarefas que possam ser realizadas de forma frequente
- Build Automatizado
- É a compilação de todos os arquivos de um sistema, até a geração de uma versão executável
- Usando CI, o build deve ser automatizado
- É importante que ele seja o mais rápido possível
- Testes Automatizados
- Servidores de CI
- Após um novo commit, o sistema de controle de versões avisa o servidor de CI
- Este clona o repositório e executa um build completo do sistema, bem como roda todos os testes.
- Após a execução do build e dos testes, o servidor notifica o usuário.
- Se o usuário for notificado que ele não passou nos testes ou quebrou o build
- Alterações ou correções devem ser feitas de imediato
- Se o usuário for notificado que ele não passou nos testes ou quebrou o build
- Após a execução do build e dos testes, o servidor notifica o usuário.
- Este clona o repositório e executa um build completo do sistema, bem como roda todos os testes.
- Seu objetivo principal é evitar a integração de código com problemas, sejam eles de build ou de comportamento.
- Após um novo commit, o sistema de controle de versões avisa o servidor de CI
- Continuous Deployment (CD)
- Continuous Delivery
- É o processo de liberar uma nova versão de um sistema para ser objeto de deployment.
- Quando se usa entrega contínua, todo commit pode entrar em produção imediatamente.
- Existe uma autoridade externa que toma a decisão sobre quando os commits, de fato, serão liberados para os usuários finais.
- A entrega é realizada com frequência, mas o deployment depende de uma autorização manual.
- É o processo de liberar uma nova versão de um sistema para seus usuários.
- O desenvolvedor desenvolve e testa na sua máquina local.
- Ele realiza um commit e o servidor de CI executa novamente um build e os testes de unidade.
- Se todos os testes passarem, os commits entram imediatamente em produção.
- Ele realiza um commit e o servidor de CI executa novamente um build e os testes de unidade.
- Reduz o tempo de entrega de novas funcionalidades.
- Não existe mais um dia D ou um deadline para entrega de novas releases.
- Feedback contínuo dos usuários sobre o sucesso ou não de suas tarefas.
- Processos são automáticos e contínuos
- Feature Flags (Release flags)
- São variáveis usadas para evitar a entrada em produção de implementações parciais de funcionalidades
- Integrando continuamente o código parcial da funcionalidade X, qualquer código relativo a X estará guardado por uma variável booleana (um flag) que, enquanto a implementação de X não estiver concluída, vai avaliar como falso.
- Podem gerar diferentes versões de um mesmo sistema de software.
- Business flags
- Um sistema pode ter sua versão gratuita e sua versão paga
- Os clientes da versão paga têm acesso a mais funcionalidades, cujo código é delimitado por feature flags.
- Um sistema pode ter sua versão gratuita e sua versão paga
- Business flags
- Continuous Delivery
Bilder und Dateien der Mindmap
Informationen
- Beschreibung
- Mindmap am Engenharia de Software Cap. 10: DevOps, erstellt von Edicleiton Alves am 27/08/2021.
- Erstellt von
- Edicleiton Alves
- Aufrufe
- 1
- Bewertung
Mehr zu Gerência de configuração e DevOps




