1 of 19

A Contribuição do Docker para a Facilidade e Padronização no Uso de Ferramentas de Software no TRF1

Universidade Federal da Bahia

Instituto de Computação

Autor: Rodrigo Dos Santos Silva

Orientador: Prof. Dr. Frederico Araújo Durão

2 of 19

Apresentação

  • Introdução
  • Referencial teórico
  • Modelagem
  • Conclusão

2

3 of 19

Introdução

O setor jurídico está cada vez mais tecnológico.

3

"Fonte: Gerado por Inteligência Artificial (manus) em 20 de julho de 2025"

4 of 19

Introdução

  • Caso emblemático

4

Fonte: https://g1.globo.com/mg/minas-gerais/noticia/2022/09/13/sistema-inoperante-do-tribunal-regional-federal-da-6a-regiao-provoca-atrasos-nos-processos-em-minas-gerais.ghtml

5 of 19

Introdução - Motivação

  • Divergência entre versões de linguagem (ex: Java 22 vs Java 1.8).
  • configuração de ambiente manual.
  • Falhas por inconsistências de dependências.

5

6 of 19

Introdução - Metodologia

  • Estudo de caso prático: projeto Reinf-Sender no TRF1.

  • Análise de ambiente antes e depois da conteinerização.

  • Implementação real com Docker, mult container e Dev Containers.

  • Revisão bibliográfica e fundamentos técnicos.

6

7 of 19

Introdução - Objetivos

Geral:

  • Avaliar como a conteinerização com Docker pode facilitar o desenvolvimento de software no setor jurídico.

Específicos:

  1. Identificar dificuldades operacionais sem Docker.
  2. Documentar impactos técnicos da ausência de containerização.
  3. Avaliar os benefícios da adoção do Docker.

7

8 of 19

Referencial teórico - Máquinas Virtuais (VMs)

8

  • Vantagens
  • Limitações

9 of 19

Referencial teórico - Conteinerização

9

1. Namespaces (Isolamento de Recursos):

  • Cada container tem sua própria visão isolada do sistema.

2. Cgroups (Controle de Recursos):

  • Controla e limita o uso de:
    • CPU: tempo de processamento por container.
    • Memória: define limites e evita uso excessivo.
    • I/O: regula o acesso ao disco.
    • Rede e dispositivos: restringe o acesso a recursos específico

10 of 19

Referencial teórico - Docker

10

  • Docker Client (CLI)
  • Docker Daemon
  • Docker Registry

11 of 19

Referencial teórico - Docker:Dockerfile

11

  • Padronização de Ambientes

12 of 19

Referencial teórico - Docker:Dev Containers

12

13 of 19

Modelagem

13

Objetivo: Validar a arquitetura Docker em um projeto real.�

Arquitetura Multi-Container:�

  • Aplicação: reinf-sender-app
  • Servidor Web: reinf-sender-webserver
  • Banco de Dados: reinf-sender-db
  • Benefício: Escalabilidade e isolamento de responsabilidades.

Padronização:�

  • Os serviços foram definidos e orquestrados para operar de forma integrada.
  • devcontainer.json: Padronização do ambiente de desenvolvimento no VS Code.
  • Resultado: Garantiu que toda a equipe usasse as mesmas bibliotecas, extensões e configurações.

Problema Resolvido:�

  • Eliminou o clássico problema do "na minha máquina funciona".

14 of 19

Matriz Comparativa: Com Docker vs. Sem Docker

14

Aspecto

Sem Docker

Com Docker

Tempo de Configuração

Até 8 horas por desenvolvedor devido a setups manuais e dependências complexas.

Reduzido para ~15 minutos com imagens pré-configuradas e automação.

Padronização

Inconsistências entre ambientes (desenvolvimento, teste, produção) causam falhas.

Ambientes consistentes em todas as fases, eliminando divergências de versões.

Escalabilidade

Difícil escalar devido a dependências específicas e configurações manuais.

Fácil escalar com contêineres leves e orquestração (ex.: Docker Compose).

Manutenção

Atualizações manuais de dependências levam a erros e atrasos.

Atualizações centralizadas via Dockerfile, reduzindo erros e tempo.

Integração de Equipe

Novas contratações enfrentam dificuldades com setups complexos.

Imagens Docker permitem integração rápida, mesmo para novos desenvolvedores.

Custo Operacional

Alto devido a maior uso de recursos (VMs) e tempo de equipe.

Menor, com contêineres leves (~3,5% vs. 20% de VMs).

Segurança

Configurações manuais podem expor vulnerabilidades.

Contêineres isolados e imagens verificadas melhoram a segurança.

15 of 19

Conclusão

15

  • Eficácia Comprovada: A conteinerização com Docker é uma solução eficaz para os desafios técnicos do setor jurídico.
  • Solução para Problemas Críticos:
    • Padronização de ambientes.
    • Portabilidade de aplicações.
    • Eliminação de inconsistências entre desenvolvimento e produção.
  • Validação Prática: O estudo de caso no TRF1 comprovou os benefícios da arquitetura de containers e DevContainers.

O Docker é uma estratégia tecnológica madura e recomendável para a transformação digital do setor público, promovendo soluções mais ágeis, seguras e sustentáveis.

16 of 19

Referências

  • Bernstein, D. (2014). Containers and cloud: From lxc to docker to kubernetes. In IEEE
  • Boettiger, C. (2015). An introduction to docker for reproducible research. In ACM
  • Bui, T. (2015). Analysis of docker security. arXiv preprint arXiv:1501.02967.
  • Clark, C. e. o. (2005). Live migration of virtual machines. In NSDI, pages 273–286.
  • Cloud Alliance (2018). Security Guidance for Critical Areas of Focus in Cloud Computing.
  • containers.dev (2023). Developing inside a container. https://containers.dev/supporting.
  • Docker Inc. (2023). Docker architecture overview.
  • Docker, Inc. (2023). Docker Registry: Storage and Distribution.
  • Feathers, M. (2004). Working Effectively with Legacy Code. Prentice Hall.

16

17 of 19

Referências

  • Goldberg, R. P. (1974). Survey of virtual machine research. IEEE Computer, 7(6):34–45.
  • Humble, J. and Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley.
  • Lehman, M. M. and Ramil, J. F. (1997). Laws of software evolution revisited. In Proceedings of the 5th International Workshop on Software Process Simulation and Modeling. Springer.
  • Linux Kernel (2023). Control groups v2. Documentacão oficial do kernel Linux.
  • Merkel, D. (2014). Docker: Lightweight linux containers for consistent development and deployment. Linux Journal.
  • Microsoft (2023). Developing inside a container. https://code.visualstudio.com/docs/devcontainers/containers.
  • microsoft (2025). Maquinas virtuais: computadores virtuais dentro de computadores.

17

18 of 19

Referências

  • Pigoski, T. M. (1996). Practical Software Maintenance: Best Practices for Managing Your Software Investment. Wiley.
  • Preston-Werner, T. (,2023). Semantic versioning 2.0.0.
  • Red Hat (2007). Control groups (cgroups). Documentacão original sobre cgroups. ˜
  • Red Hat (2022). Understanding linux network namespaces. Acesso em: 01 junho. 2025.
  • Silva, J. F. N. d. (2016). Descomplicando o Docker. Brasport Livros e Multimídia Ltda .Rio de Janeiro, 1 edition.
  • Smith, J. and Nair, R. (2005). The architecture of virtual machines. Computer, 38(5):32–38.
  • stackscale (2024). Hypervisors: definition, types and solutions. https://www.stackscale.com/blog/hypervisors/.
  • Varghese, Blesson e Buyya, R. (2016). Next-generation cloud computing: New challenges and opportunities. IEEE Internet Computing, 20(1):60–73.
  • Zuba, F. (2022). Sistema inoperante do tribunal regional federal da 6ª regiao provoca atrasos.

18

19 of 19

Obrigado!

19