1 of 23

Como o Docker Pode Ajudar na Gerência de Configuração?

2 of 23

Conhecendo a Apresentadora e o Projeto

Apps4Society

Construindo Aplicativos que

Impactem Positivamente na Sociedade

UFPB | CCAE | DCX

apps4society.dcx.ufpb.br

apps4society@dcx.ufpb.br

Amanda Martins

Bacharelado em Sistemas de Informação

UFPB | CCAE | DCX

github.com/AmandaAzevedo

amanda.azevedo@dcx.ufpb.br

3 of 23

Contextualização

  • Um software é um programa e seus artefatos.
  • Mudanças durante o desenvolvimento de software são inevitáveis.
  • Os softwares estão em constante evolução.

  • Figura 1 - Microsoft Word logo history

4 of 23

Com tantas mudanças, como evitar que o desenvolvimento fique caótico?

5 of 23

Gerência de Configuração

6 of 23

É um conjunto de atividades de apoio que permite a absorção ordenada das mudanças inerentes ao desenvolvimento de software, mantendo a integridade e a estabilidade durante a evolução do projeto.”

- Dias (2016)

7 of 23

Tarefas da Gerência de Configuração

Gerenciamento de mudanças

Controle de versão

Construção do sistema

Gerenciamento de releases

  • Figura 2 - Atividades de Gerenciamento de Configuração

8 of 23

Gerenciamento de Mudanças

  • “Manter o controle das solicitações de mudanças de clientes e desenvolvedores no software já entregue, elaborar os custos e o impacto de fazer essas mudanças e decidir se e quando as alterações devem ser implementadas.” (Sommerville, 2016).

9 of 23

Gerenciamento de Versões

  • Manter o controle das várias versões dos componentes do sistema
  • Garantir que as mudanças feitas por diferentes desenvolvedores não interfiram entre si.

10 of 23

Construção do Sistema

  • Build do sistema.
  • Processo de montagem de componentes de programa, dados e bibliotecas e, em seguida, compilação e ligação destes, para criar um sistema executável.

11 of 23

Gerenciamento de Releases

  • Preparar o software para release e deploy.
  • Acompanhar as versões do sistema que foram lançadas para produção.

12 of 23

Integração Contínua

  • Processo existente principalmente dentro de “projetos ágeis” .
  • Processo contínuo de release, entrega e deploy.
  • DevOps.
  • Figura 4 - Deploy contínuo e DevOps

13 of 23

Problemas na G.C.

  • Uma ferramenta é instalada de forma diferente em diferentes ambientes.
  • É muito trabalhoso fazer com que uma aplicação de várias camadas (back, front, bd...) funcione em diferentes ambientes.
  • Figura 5 - Matrix from hell

Fonte: Romero (2015)

14 of 23

Virtual Machine (VM)

  • Software que emula um ambiente computacional, funcionando de forma isolada da máquina física
  • Hypervisor
  • Problemas: ocupa muito espaço, dificuldades na replicação, etc.
  • Figura 6 - Arquitetura de uma VM

15 of 23

Com tantas atividades trabalhosas e sujeitas a tantos erros, existe uma forma de deixar esse trabalho mais simples?

16 of 23

17 of 23

O que é Docker?

  • Plataforma de código aberto desenvolvida na linguagem Go.
  • Criada com o objetivo de facilitar o desenvolvimento e a execução de aplicações em ambientes isolados.
  • Build e deploy do sistema.
  • Tecnologia de conteinerização.

18 of 23

Containers

  • Os containers proporcionam uma maneira padrão de empacotar código, configurações e dependências de seu aplicativo em um único objeto. Eles compartilham um sistema operacional instalado no servidor e são executados como processos isolados de recursos” (AWS, 2020).
  • Um container Docker é uma imagem Docker em execução.
  • Figura 7 - Containerized Applications

Fonte: Docker Inc. (2020)

19 of 23

Como o Docker Pode Ajudar na G.C. ?

  • Figura 8 - Resolvendo o problema com Docker

Fonte: Romero (2015)

  • Similaridade dos ambientes.
  • Aplicação como pacote completo.

20 of 23

Como o Docker Pode Ajudar na G.C. ?

  • Utilização mais eficiente dos recursos de hardware.
    • Economia significativa de recursos.
    • Disponibilidade maior do sistema.
    • Possibilidade de compartilhamento.
  • Figura 9 - VM x Container

21 of 23

Como o Docker Pode Ajudar na G.C. ?

  • Padronização e replicação.
  • Possibilidade de acessar a comunidade.
  • Figura 10 - Homepage do Docker Hub

Fonte: hub.docker.com

22 of 23

Referências

DANTAS, Cristine. Gerência de configuração de software. Disponível em: <https://www.devmedia.com.br/gerencia-de-configuracao-de-software/9145>. Acesso em: 16 de abr. 20.

DIAS, André F. O que é gerência de configuração de software?. Disponível em: <https://blog.pronus.io/posts/o-que-eh-gerencia-de-configuracao-de-software/>. Acesso em: 16 de abr. 20.

SOMMERVILLE, Ian. Engenharia de software. Tradução de Luiz Claudio Queiroz. Revisão técnica Fábio Levy Siqueira. Título original: Software engineering. 10 ed. São Paulo: Pearson Education do Brasil, 2018.

DIEDRICH, Cristiano. O que é Docker?. Disponível em: <https://www.mundodocker.com.br/o-que-e-docker/> . Acesso em: 30 de abr. 2020.

Docker Inc. What is a Container? A standardized unit of software. Disponível em: <https://www.docker.com/resources/what-container>. Acesso em: 30 de abr. 2020.

GOMES, Rafael. Docker para Desenvolvedores. Disponível em: <https://github.com/gomex/docker-para-desenvolvedores>. Acesso em: 15 de jun. 2020.

Positivo Tecnologia. Container Docker: o que é e quais são as vantagens de usar?. Disponível em: <https://www.meupositivo.com.br/panoramapositivo/container-docker/>. Acesso em: 30 de abr. 2020.

ROMERO, Daniel. Containers com Docker: Do desenvolvimento à Produção. São Paulo: Casa do Código, 2015.

23 of 23

Obrigada!