GoConqr has a new look! Let us know what you think.

Mind map

Engenharia de Software Cap. 10: DevOps

Edicleiton Alves Portuguese

Engenharia de Software Cap. 10: DevOps

Map content

Engenharia de Software Cap. 10: DevOps

  1. Departamento de Sistemas (Desenvolvimento)

  2. Departamento de Suporte (Operações)

  3. 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
        • 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
    • 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.
      • 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
        • Seu objetivo principal é evitar a integração de código com problemas, sejam eles de build ou de comportamento.
    • 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.
      • 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.

Images and files in the map

  • Engenharia de Software Cap. 10: DevOps
  • Engenharia de Software Cap. 10: DevOps
  • Engenharia de Software Cap. 10: DevOps
  • Engenharia de Software Cap. 10: DevOps
  • Engenharia de Software Cap. 10: DevOps
  • Engenharia de Software Cap. 10: DevOps

Information

Description
Mind Map on Engenharia de Software Cap. 10: DevOps, created by Edicleiton Alves on 27/08/2021.
Views
1
Rating

More on Gerência de configuração e DevOps

Feedback

What is it about?

What do you think of the new look?

How do you like it?