Gestão de projetos

A Gestão de Projetos e Controle de Desenvolvimento de Software envolve o planejamento, execução e acompanhamento de todas as atividades necessárias para criar um sistema ou aplicação. O objetivo é entregar software de qualidade dentro do prazo e orçamento, garantindo que a equipe trabalhe de forma organizada e produtiva.

  • Milestones → Grandes objetivos ou fases do projeto que agrupam várias issues. Eles representam pontos-chave no progresso de um trabalho, como a conclusão de uma fase, a entrega de um recurso específico ou o alcance de um objetivo importante. No GitHub, milestones podem agrupar issues e pull requests para organizar entregas. Exemplo: "Versão 1.0", "Refatoração do Backend".

  • Issues → Tarefas, bugs ou melhorias específicas a serem feitas.  é um recurso que serve para apontar problemas ou tarefas dentro de um repositório. Está presente no Github. Para criar uma tarefa para issue basta ir em add a comment e em write usar o formato: - [ ] Nome da tarefa, e logo após pressionar enter para adicionar uma proxima. Exemplo: "Corrigir erro de login", "Implementar API de pagamento".

  • Build → Processo de copiar os arquivos, configurações do projeto, além de instalar todas as dependencias e construir um pacote final que será implantado (Deploy).

Principio do privilegio mínimo (principle of least privilege): para maior segurança de a menos quantidade de acesso.
POC (prova de conceito):  qual menor custo e esforço eu posso ter para saber em que direção ir.
MVP ( Produto viável mínimo): se arrisca com mais cautela.

Overengieering: excesso de engenharia
Underengieering: falta de engenharia

MVC (Model View Controller) é um padrão de arquitetura de software que separa a lógica da aplicação em três camadas principais:

1️⃣ Model (Modelo) – Responsável pelos dados e regras de negócio. Um model é uma caixa de ferramentas onde cada ferramenta é util para realizar alguma tarefa. Processa os dados e executa as regras de negócio.
2️⃣ View (Visão) – Responsável pela interface com o usuário. Exibe as informações para o usuário (interface gráfica, HTML, etc.).
3️⃣ Controller (Controlador) – Responsável por processar as requisições e conectar o Model com a View. Recebe as ações do usuário, repassa para o Model processar e envia a resposta para a View.

Transpiling converter códigos numa versão compatível.

SLA ( acordo de nível de serviço) é a disponibilidade fornecida pela plataforma/serviço. As status pages, são paginas que monitoram a saúde do serviço. Coloque o nome do servidor e status, exemplo, vercel status no buscador.

  • CI (Continuous Integration): Automatiza testes e integração de código frequentemente.
  • CD (Continuous Delivery): Mantém o código pronto para deploy com aprovação manual.
  • CD (Continuous Deployment): Faz deploy automático em produção sem intervenção humana.
Prática O que faz? Deploy automático? Necessita aprovação?
CI (Continuous Integration) Automatiza integração e testes de código ❌ Não ✅ Sim (revisão do código)
CD (Continuous Delivery) Garante que o código testado esteja pronto para deploy ❌ Não ✅ Sim
CD (Continuous Deployment) Automatiza totalmente o deploy em produção ✅ Sim ❌ Não

DataOps

DataOps (abreviação de Data Operations) é uma abordagem de gerenciamento de dados que busca aplicar práticas ágeis e automação ao processo de coleta, armazenamento, preparação e análise de dados dentro de uma organização. O objetivo principal do DataOps é melhorar a qualidade, a colaboração e a velocidade na entrega de dados para análise e decisão.

StreamSets e Apache NiFi são ferramentas de integração e orquestração de dados que se encaixam na metodologia DataOps porque ajudam a automatizar e gerenciar fluxos de dados, além de proporcionar monitoramento e controle de qualidade.

O StreamSets é uma ferramenta que ajuda empresas a mover, transformar e organizar dados entre sistemas de forma fácil, rápida e visual — quase como montar LEGO com dados.

Se houver dados espalhados e necessitar juntar tudo isso, organizar, limpar e mandar para outro lugar (como um banco de dados moderno, ou uma ferramenta de análise). O StreamSets ajuda você a fazer esse "caminho dos dados" com uma interface gráfica — sem precisar programar muito.

É uma ferramenta que unifica dados de fontes diferentes, transforma eles e entrega organizados para onde você quiser.

Quando você conecta o seu StreamSets Data Collector (docker gerado pela plataforma da IBM) local ao StreamSets Control Hub (a plataforma online), você está basicamente controlando o seu ambiente local de StreamSets remotamente a partir da interface online.
Primeiro você cria um Environment (ambiente lógico, tipo Produção ou Teste). Dentro do Environment você configura um Deployment (grupo de engines + regras). O Deployment instala/configura uma ou mais Engines (que são os "motores" que rodam de verdade suas pipelines). As pipelines são enviadas e rodam nas Engines.

Nome O que é Pra que serve Exemplo Rápido
Environment Um agrupador de infraestrutura Organizar ambientes de trabalho separados "Produção", "Dev", "Homologação"
Deployment Conjunto de engines + regras Definir como engines são instaladas e usadas "Deployment de Pipelines de Produção"
Engine O motor que executa pipelines Rodar fisicamente suas pipelines no servidor "Data Collector Docker rodando"

Para conectar no control hub precisa passar o jdbc conector .jar para external library da engine antes de configurar a conexão: jdbc:mysql://172.17.0.3:3306/fifa

Existem 3 tipos de estágios (stages): 

  • Origin → Onde os dados nascem (entrada).

  • Processor → Onde os dados são transformados (processamento).

  • Destination → Onde os dados são enviados (destino).

Principais Stages do StreamSets:
Stage Tipo O que faz
Directory Origin Lê arquivos de um diretório (CSV, Excel, JSON, etc.).
Dev Data Generator Origin Gera dados fictícios para testes de pipelines.
Stream Selector Processor Separa o fluxo de dados em diferentes caminhos com base em condições. (Ex: manda dados "Brasil" para um lado e "Argentina" para outro.)
Expression Evaluator Processor Cria ou modifica campos usando expressões (tipo somar valores, formatar textos).
Field Remover Processor Remove campos que você não quer mais no dado.
Field Masker Processor Mascara campos sensíveis (tipo esconder CPF, senha etc.).
Field Type Converter Processor Converte o tipo de um campo (por exemplo, texto para número).
Filter Processor Filtra registros — só deixa passar o que atende a uma condição.
Trash Destination Joga fora os dados que você não quer usar (tipo uma lixeira).
Local FS Destination Salva arquivos no sistema de arquivos local (em disco).
JDBC Producer Destination Envia dados para um banco de dados relacional (MySQL, PostgreSQL, etc.).
HTTP Client Destination Manda dados para uma API usando HTTP POST, PUT etc.
Kafka Producer Destination Publica mensagens em um tópico Kafka.
S3 Destination Destination Salva dados em um bucket do Amazon S3.

Apache NiFi é uma alternativa gratuita ao StreamSets, também é uma plataforma de automação de fluxo de dados que permite movimentar, transformar e monitorar dados de forma visual (arrastar e soltar), semelhante ao StreamSets.

🔄 Comparativo Rápido: StreamSets vs Apache NiFi
Recurso StreamSets Apache NiFi
Interface visual ✅ Sim ✅ Sim
Suporte a dados em tempo real ✅ Sim ✅ Sim
Suporte a dados em lote ✅ Sim ✅ Sim
Open-source ❌ Não (versão IBM) ✅ Sim
Gratuito ❌ (Plano limitado) ✅ Totalmente grátis
Comunidade ativa Média Muito ativa
Extensibilidade Boa Excelente (componentes customizáveis)

Uma pipeline é um fluxo de dados — um caminho que os dados percorrem, desde a origem (source) até o destino (destination), passando por possíveis transformações, limpezas, filtros, validações, etc.