Table of Contents
Principal
🛠️ Curso: Ferramentas para Projetos
"Dominar a ferramenta certa é o primeiro passo para transformar uma ideia em um produto de sucesso."
Bem-vindo ao Guia Mestre de Ferramentas. Este curso foi projetado para capacitar desenvolvedores a dominar o ecossistema moderno de software: da gestão ágil e controle de versão à infraestrutura escalável, automação de CI/CD e design colaborativo.
⚡ Atalhos Rápidos
-
Trilha de Aulas
16 lições práticas englobando gestão, desenvolvimento, infra e design. Iniciar Jornada
-
Slides Interativos
Material visual moderno com Reveal.js para acompanhamento das aulas. Ver Slides
-
Quizzes Interativos
Avalie seu progresso com testes dinâmicos para cada módulo do curso. Testar Conhecimento
-
Laboratórios e Projetos
Aplique as ferramentas em cenários reais para consolidar o aprendizado. Ver Projetos
-
Exercícios Progressivos
Do básico ao desafio prático para dominar comandos e fluxos. Praticar Agora
-
Setup e Ferramentas
Configurações essenciais para seu ambiente de desenvolvimento. Configurar
🗺️ Mapa da Jornada (Módulos)
O curso está estruturado em 5 Módulos cruciais para a agilidade no desenvolvimento:
🧩 Módulo 1: Ecossistema e Gestão
O alicerce do projeto: organização e ambiente. - Aulas 01 a 04: Intro ao Ecossistema, Gestão de Projetos, Ambiente de Dev e Git Fundamentos.
🏗️ Módulo 2: Colaboração e Dados
Escalando o desenvolvimento e persistindo informação. - Aulas 05 a 08: Plataformas Git, DB Relacional, NoSQL e Cache, e Frameworks de Teste.
🔌 Módulo 3: API e Qualidade
Conectividade robusta e código impecável. - Aulas 09 a 12: Ferramentas de API, Qualidade de Código, CI/CD Moderno e Automação/IaC.
🚀 Módulo 4: Infraestrutura e Docker
Virtualização e orquestração para o mundo real. - Aulas 13 a 15: Docker e Compose, K8s e Runners, e Comunicação Corporativa.
🎨 Módulo 5: Design e UI
A ponte entre a funcionalidade e a experiência do usuário. - Aula 16: Design System e Figma para Desenvolvedores.
💡 Dicas de Sucesso
- Domine o Terminal: Muitas ferramentas de automação e infraestrutura (Docker, Git, IaC) dependem de um uso fluido da CLI.
- Pratique o Fluxo Git: O controle de versão é o coração da colaboração moderna; não avance sem entender
branchingepull requests. - Automatize Tudo: Sempre que possível, utilize as ferramentas de CI/CD para validar seu código automaticamente.
Pronto para dominar as ferramentas? Ir para Aula 01
Sobre o Guia de Ferramentas 🚀
O Guia de Ferramentas da ADS Extra nasceu para preencher a lacuna entre o conhecimento teórico de programação e as ferramentas reais utilizadas no dia a dia das empresas de tecnologia.
🎯 Por que este curso?
No mercado atual, saber codificar em uma linguagem (como JavaScript, Java ou Python) é apenas o primeiro passo. O diferencial competitivo de um desenvolvedor está em sua capacidade de:
- Gerenciar seu tempo e tarefas de forma ágil (Jira, GitHub Issues).
- Colaborar efetivamente com outros desenvolvedores (Git, GitHub, PRs).
- Garantir a qualidade do que entrega (Testes, Linters, API Testing).
- Automação de ambientes e processos (Docker, CI/CD, Terraform).
- Comunicar-se e entender as interfaces de design (Slack, Figma).
🛠️ Metodologia
Nosso foco é 100% aplicado: - Termynal: Exemplos interativos de linha de comando. - Diagramas: Visualização clara de fluxos e arquiteturas. - Projetos Progressivos: Cada aula resulta em uma configuração ou cinto de ferramentas útil para sua carreira.
🎓 Público-Alvo
- Estudantes de Análise e Desenvolvimento de Sistemas.
- Desenvolvedores juniores buscando maturidade profissional.
- Entusiastas de tecnologia que querem entender o "como as coisas funcionam" nos bastidores das grandes Big Techs.
📚 O Que Você Vai Aprender
Módulo 1 – Fundamentos e Gestão
- Organização profissional com Jira, Trello e Asana
- Domínio do Ambiente de Dev (VS Code, Extensões e Terminal)
- Máquina do Tempo com Git: Fundamentos e snapshots
Módulo 2 – Colaboração e Dados
- O Ciclo PR: GitHub, GitLab e Code Review
- Manipulação Visual de Dados (PostgreSQL, MongoDB, Redis)
- Frameworks de Qualidade e Testes (Jest, PyTest)
Módulo 3 – Qualidade e Automação
- Testes de API profissionais com Postman e Insomnia
- Qualidade de Código estática (ESLint, Prettier)
- CI/CD Moderno com GitHub Actions
Módulo 4 – Infraestrutura e Integração
- Automação de Servidores e IaC (Ansible, Terraform)
- Contêineres com Docker e Orquestração K8s
- Ferramentas de Comunicação (Slack/Teams) e Design (Figma)
🛠️ Metodologia
Foco 100% prático e orientado a projetos. Cada aula resulta em uma peça funcional do seu ambiente de trabalho ou em uma competência técnica validada por mini-projetos e quizzes, garantindo que ao final do curso você domine as ferramentas padrão da indústria.
Pronto para dominar as ferramentas? Começar Agora
Plano de Ensino 📅
Curso: Guia de Ferramentas para Desenvolvedores (ADS Extra)
Ementa
- Módulo 1: Fundamentos e Gestão: Introdução ao ecossistema, gestão de tarefas (Jira/Trello), configuração de ambientes (VS Code/Terminal) e fundamentos de Git.
- Módulo 2: Colaboração e Dados: Uso avançado de plataformas Git (GitHub/GitLab), interação com Bancos de Dados Relacionais e NoSQL via clientes GUI, e introdução a frameworks de teste.
- Módulo 3: Qualidade e Automação: Testes de API (Postman), qualidade de código (Linters/Formatters) e fluxos de CI/CD (GitHub Actions).
- Módulo 4: Infraestrutura e Integração: Automação de infraestrutura (IaC), Contêineres (Docker), Orquestração (Kubernetes), ferramentas de comunicação em equipe e Design (Figma).
Cronograma (16 Aulas)
Módulo 1: Fundamentos e Gestão
- Aula 01: Introdução ao Ecossistema de Ferramentas
- Aula 02: Gestão de Projetos e Tarefas (Jira, Trello, Asana)
- Aula 03: Ambiente de Desenvolvimento (VS Code, JetBrains, Terminal)
- Aula 04: Controle de Versão com Git: Fundamentos
Módulo 2: Colaboração e Dados
- Aula 05: Plataformas de Colaboração (GitHub, GitLab, Bitbucket)
- Aula 06: Bancos de Dados Relacionais e Clientes GUI (PostgreSQL, DBeaver)
- Aula 07: Bancos de Dados NoSQL e Cache (MongoDB, Redis)
- Aula 08: Frameworks de Teste e Qualidade (Jest, PyTest, JUnit)
Módulo 3: Qualidade e Automação
- Aula 09: Testes de API e Ferramentas (Postman, Insomnia)
- Aula 10: Qualidade de Código e Formatação (ESLint, Prettier)
- Aula 11: Automação e CI/CD Moderno (GitHub Actions)
Módulo 4: Infraestrutura e Integração
- Aula 12: Servidores, Automação e IaC (Ansible, Terraform)
- Aula 13: Contêineres com Docker e Docker Compose
- Aula 14: Orquestração com Kubernetes e Runners
- Aula 15: Comunicação e Colaboração em Equipe (Slack, MS Teams)
- Aula 16: Design, Prototipagem e Handoff (Figma)
Avaliação
- Exercícios: 16 listas de exercícios focadas no uso prático das ferramentas.
- Projetos: 16 mini-projetos (Setups, Configurações, Workflows).
- Quizzes: 16 testes de conhecimento sobre as ferramentas e conceitos.
- Projeto Integrador: Configuração de um ambiente completo de desenvolvimento e pipeline de CI/CD para uma aplicação fictícia.
Aulas
Aulas do Curso 📚
Acesse aqui todo o conteúdo teórico dividido em módulos de aprendizado.
Módulo 1 – Ecossistema e Gestão
- Aula 01 - Intro ao Ecossistema
- Aula 02 - Gestão de Projetos
- Aula 03 - Ambiente de Dev
- Aula 04 - Git Fundamentos
Módulo 2 – Colaboração e Dados
- Aula 05 - Plataformas Git
- Aula 06 - DB Relacional
- Aula 07 - NoSQL e Cache
- Aula 08 - Frameworks de Teste
Módulo 3 – API e Qualidade
- Aula 09 - Ferramentas de API
- Aula 10 - Qualidade de Código
- Aula 11 - CI/CD Moderno
- Aula 12 - Automação e IaC
Módulo 4 – Infra e Docker
Módulo 5 – Design e UI
Módulo 1 – Ecossistema e Gestão
Aula 01 - Introdução ao Ecossistema de Ferramentas 🌐
Objetivo
Objetivo: Compreender a importância das ferramentas no ciclo de vida de desenvolvimento de software e identificar as principais categorias de ferramentas utilizadas por equipes profissionais.
1. Por que as Ferramentas Importam? 🛠️
No desenvolvimento moderno, escrever código é apenas uma parte do trabalho. Para entregar software de forma eficiente, segura e colaborativa, utilizamos um conjunto de ferramentas que formam o nosso ecossistema de desenvolvimento.
🧠 Conceito: O Cinto de Utilidades do Dev
Assim como um marceneiro precisa de ferramentas especializadas para diferentes cortes e acabamentos, o ciclo de vida do software exige plataformas dedicadas. IDEs, controle de versão e pipelines formam uma cadeia de valor onde a saída de uma ferramenta alimenta a entrada da próxima.
No seu dia a dia profissional, você não abrirá apenas o VS Code. Seu fluxo será: Ler a Issue no Jira -> Criar branch no Git -> Escrever Código no VS Code -> Testar com Jest -> Subir um Pull Request no GitHub -> Ver o CI/CD (Actions) validar seu código.
2. Categorias de Ferramentas 🗂️
Podemos dividir as ferramentas essenciais em grandes blocos:
- Gestão e Organização: Onde planejamos o que será feito (Jira, Trello).
- Ambiente de Desenvolvimento: Onde o código nasce (VS Code, Terminal).
- Controle de Versão: Onde guardamos o histórico e colaboramos (Git, GitHub).
- Bancos de Dados: Onde os dados residem (PostgreSQL, MongoDB).
- Qualidade e Testes: Onde garantimos que tudo funciona (Postman, Jest).
- Infraestrutura e CI/CD: Onde o código "vai pro mundo" (Docker, GitHub Actions).
Visualização do Fluxo Profissional
```mermaid graph LR Plan([Planejamento]) --> Dev([Desenvolvimento]) Dev --> Test([Testes]) Test --> Deploy([Deploy/Produção]) Deploy --> Monitor([Monitoramento]) Monitor --> Plan
subgraph Ferramentas
Plan -.-> Jira
Dev -.-> VSCode
Test -.-> Postman
Deploy -.-> Docker
end
```
3. A Importância da Automação 🤖
Uma das metas deste curso é ensinar você a parar de fazer tarefas repetitivas manualmente.
Conceito
Automação é o uso de ferramentas para executar processos que seriam lentos ou propensos a erro se feitos por humanos (ex: rodar todos os testes do sistema a cada alteração no código).
4. O Coração do Desenvolvimento: O Terminal 💻
Quase todas as ferramentas profissionais possuem uma interface de linha de comando (CLI). Dominar o terminal é o primeiro passo para se tornar um desenvolvedor avançado.
5. Prática: Diagnóstico do Cinto de Ferramentas 🚀
Sua primeira missão é verificar o que você já tem instalado e o que precisaremos configurar:
- Abra seu terminal (CMD, PowerShell ou Terminal do macOS/Linux).
- Tente executar os comandos:
git --version,code --version,docker --version. - Anote quais ferramentas responderam com a versão e quais não foram encontradas.
- Crie uma conta gratuita no GitHub caso ainda não possua.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 02 - Gestão de Projetos e Tarefas 📊
Objetivo
Objetivo: Conhecer as principais ferramentas de gestão ágil, entender a diferença entre Scrum e Kanban e aprender a organizar o fluxo de trabalho de uma equipe de desenvolvimento.
1. Organização é Tudo! 📋
Um projeto de software moderno envolve centenas de tarefas, bugs e melhorias. Sem uma ferramenta de gestão, a equipe se perde em e-mails e mensagens de chat.
🧠 Conceito: Gestão Ágil
A maioria das ferramentas modernas baseia-se em metodologias ágeis (Agile). Diferente do modelo Cascata, o Agile foca em ciclos curtos de entrega (Sprints), feedback constante do cliente e transparência total sobre o que cada membro está desenvolvendo, garantindo previsibilidade.
Nas dailys (reuniões diárias de 15 minutos), a equipe se reúne em frente ao quadro Kanban para responder: O que eu fiz ontem? O que farei hoje? Existe algum impedimento bloqueando a minha tarefa?
2. Ferramentas de Mercado 🏗️
🟦 Jira Software
O padrão da indústria para ambientes corporativos. Extremamente poderoso e configurável. * Ideal para: Equipes grandes de engenharia. * Recurso chave: Quadros Scrum (Sprints) e relatórios de métricas.
🟨 Trello / Asana
Ferramentas visuais baseadas em cartões. Muito simples e intuitivas. * Ideal para: Projetos menores, equipes multidisciplinares e organização pessoal. * Recurso chave: Sistema de "Arrastar e Soltar" (Drag and Drop).
⬛ GitHub / GitLab Issues
Integradas diretamente ao repositório de código. * Ideal para: Rastrear bugs e funcionalidades atreladas a linhas específicas de código. * Recurso chave: Linking de issues com Pull Requests.
3. O Quadro Kanban 🧱
O Kanban é a forma mais comum de visualizar o trabalho. Consiste em colunas que representam o status de cada tarefa.
Fluxo Típico de Desenvolvimento
```mermaid graph TD A([Criar Tarefa]) --> B{Em Execução?} B -- Sim --> C([Desenvolvimento]) B -- Não --> A C --> D([Revisão de Código]) D --> E([Concluído])
subgraph "Estados Kanban"
A
C
D
E
end
```
Nota
O diagrama acima é uma representação visual simplificada do fluxo.
4. Criando sua Primeira Task 💻
Vamos simular a criação de uma tarefa no terminal, algo comum em ferramentas que possuem CLI ou integrações:
ADS-101 Configurar ambiente de dev High
ADS-99 Estudar Git Medium
5. Prática: Organizando seu Semestre 🚀
Sua missão é criar um quadro de gestão para suas atividades acadêmicas ou pessoais:
- Crie uma conta gratuita no Trello.
- Crie um quadro chamado "Organização ADS".
- Crie as colunas: Backlog, Em Execução, Em Revisão e Concluído.
- Adicione pelo menos 5 tarefas reais que você tenha para esta semana.
- Mova uma das tarefas para a coluna "Em Execução".
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 03 - Ambiente de Desenvolvimento 💻
Objetivo
Objetivo: Customizar o ambiente de trabalho para máxima eficiência, conhecer a diferença entre Editores de Código e IDEs e dominar comandos básicos de terminal.
1. Editor vs IDE: Qual Escolher? 🧠
Embora pareçam iguais, ferramentas de escrita de código têm propósitos diferentes.
📄 Editores de Código (Ex: VS Code)
São leves, rápidos e "nascem" simples. Você os torna poderosos através de extensões. * Vantagens: Consome pouca memória, gratuito, ecossistema gigante. * Desvantagens: Exige configuração manual para algumas linguagens.
🏎️ IDEs - Ambientes Integrados (Ex: IntelliJ, PyCharm)
Editores transferem a responsabilidade da configuração para o desenvolvedor. Eles carregam em milissegundos, consomem pouca RAM e são perfeitos para stacks modernas focadas em JavaScript/TypeScript.
IDEs automatizam o onboarding. Ao criar um projeto Spring Boot (Java), a IDE já configura o classpath, baixa as dependências Maven, mapeia botões para o banco de dados e levanta as configurações de debug automaticamente. Seu custo é o alto consumo de recursos da máquina.
2. O Super Poder do VS Code 🚀
O Visual Studio Code é o editor mais popular do mundo. Para ele ser produtivo, você precisa do "kit básico" de extensões:
- Portuguese (Brazil): Para traduzir a interface.
- Material Icon Theme: Para ícones de arquivos mais bonitos.
- Prettier: Para formatar seu código automaticamente.
- Error Lens: Para ver erros de código diretamente na linha.
3. Dominando o Terminal (CLI) ⌨️
O terminal é onde a magia acontece. Ele permite automatizar tarefas que levariam minutos na interface visual.
Comandos Essenciais (Universal)
| Comando | Ação |
|---|---|
ls (ou dir) |
Listar arquivos da pasta |
cd |
Entrar em uma pasta |
mkdir |
Criar uma nova pasta |
touch (ou echo >) |
Criar um novo arquivo |
rm (ou del) |
Excluir um arquivo |
Exemplo Prático de Fluxo no Terminal
4. Customização Profissional 🎨
Muitos desenvolvedores profissionais utilizam ferramentas para tornar o terminal mais informativo (como ZSH, Oh My Zsh ou Oh My Posh).
Componentes do Setup Ideal
```mermaid graph TD Dev([Desenvolvedor]) --> OS([Sistema Operacional]) OS --> Shell([Terminal/Shell]) Shell --> ZSH([ZSH / Oh My Zsh]) OS --> Editor([VS Code]) Editor --> Ext([Extensões])
subgraph "Ambiente Local"
Shell
Editor
end
```
Dica: Windows
No Windows, você pode usar o Windows Terminal e configurar o Oh My Posh para ter uma experiência visual similar.
5. Prática: Setup do Guerreiro(a) 🚀
Sua missão é deixar seu ambiente pronto para os próximos meses:
- Instale o Visual Studio Code.
- Instale as extensões citadas no capítulo 2.
- Abra o terminal do seu sistema e execute o comando
mkdir ads-ferramentas. - Entre na pasta e crie um arquivo chamado
config.txtusando comandos de terminal. - Configure o tema do seu VS Code para um que você goste (Ex: Dracula, One Dark Pro).
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 04 - Controle de Versão com Git: Fundamentos 🛠️
Objetivo
Objetivo: Entender o conceito de versionamento distribuído, configurar o Git pela primeira vez e dominar o fluxo básico de salvamento de trabalho (Local Workflow).
1. O que é o Git? 🧠
O Git é um sistema de controle de versão distribuído. Ele funciona como uma "Máquina do Tempo" para o seu código, permitindo que você salve estados do projeto e retorne a eles se algo der errado.
🧠 Conceito: Snapshot vs Backup
Ferramentas convencionais (como Google Drive) salvam cópias inteiras do arquivo. Se você apagar tudo e salvar, a versão anterior se perde ou fica difícil de recuperar sem duplicar gigabytes de dados.
O Git tira "fotos" incrementais do seu projeto. Ele monitora apenas o que mudou (as linhas adicionadas ou removidas). Se não há alteração, o Git apenas aponta para a versão anterior, permitindo navegar por todo o histórico em milissegundos.
2. Configuração Inicial ⚙️
Antes de começar, o Git precisa saber quem você é. Isso é importante para que cada alteração tenha um autor identificado.
user.email=seu@email.com
3. O Fluxo de Trabalho Local 🔄
Para salvar alterações no Git, passamos por três estados principais:
- Working Directory: Onde você edita seus arquivos.
- Staging Area (Index): A "sala de espera". Aqui você escolhe o que será salvo.
- Local Repository: Onde a "foto" é guardada permanentemente.
Visualização do Fluxo de Trabalho
mermaid
graph LR
WD([Working Directory]) -- git add --> SA([Staging Area])
SA -- git commit --> LR([Local Repository])
LR -- git checkout --> WD
4. Comandos de Sobrevivência ⌨️
Estes são os comandos que você usará 90% do tempo:
| Comando | Ação |
|---|---|
git init |
Transforma a pasta atual em um repositório Git. |
git status |
Mostra o que foi alterado e o que está na "sala de espera". |
git add . |
Adiciona todas as mudanças para a Staging Area. |
git commit -m "mensagem" |
Salva as mudanças com uma descrição. |
git log |
Mostra o histórico de todas as fotos (commits). |
5. Exemplo Prático de Commit 💻
6. Prática: Minha Primeira Máquina do Tempo 🚀
- Crie uma pasta chamada
meu-primeiro-repo. - Inicie o Git nesta pasta.
- Crie um arquivo
historia.txte escreva uma frase. - Adicione o arquivo ao Git e faça um commit com a mensagem "Início da história".
- Altere o arquivo, adicione outra frase e faça um novo commit "Capítulo 2".
- Use o comando
git logpara ver suas duas "fotos" salvas.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Módulo 2 – Versão e Dados
Aula 05 - Plataformas de Colaboração 🤝
Objetivo
Objetivo: Entender o papel das plataformas de hospedagem de código, conectar seu repositório local com a nuvem e compreender o fluxo de colaboração via Pull Requests.
1. Do Local para a Nuvem ☁️
Até agora, trabalhamos apenas na nossa máquina. Para colaborar com outras pessoas e garantir a segurança do nosso código, usamos plataformas como GitHub, GitLab ou Bitbucket.
🧠 Conceito: Repositório Remoto (Remote)
O repositório remoto atua como um porto seguro contra desastres. Se o seu computador local (Working Directory e Local Repo) for destruído, seu código ainda vive nas nuvens do GitHub/GitLab.
O Git distribui esse poder. Você "empurra" (push) os seus snapshots em lote para o repô remoto para a sua equipe, e "puxa" (pull) as fotos de outros colegas para se atualizar.
2. GitHub: O Padrão de Mercado 🐙
O GitHub é a maior plataforma de desenvolvedores do mundo. Além de hospedar o código, ele oferece ferramentas sociais e de automação.
Comandos de Conexão
| Comando | Ação |
|---|---|
git remote add origin <URL> |
Conecta seu repo local a um link remoto. |
git push -u origin main |
Envia seus commits para o servidor pela primeira vez. |
git pull origin main |
Traz as novidades do servidor para sua máquina. |
git clone <URL> |
Baixa um projeto completo da internet. |
3. O Fluxo de Colaboração Profissional 🔄
Em equipes profissionais, ninguém mexe direto no código "oficial" (main). Usamos um fluxo chamado GitHub Flow:
- Branch: Você cria uma "cópia" segura para trabalhar.
- Commit: Faz suas alterações.
- Pull Request (PR): Você pede permissão para unir suas mudanças ao código oficial.
- Code Review: Outros devs revisam seu código e sugerem melhorias.
- Merge: Se tudo estiver ok, o código é unido.
Visualização do Fluxo de PR
mermaid
graph LR
Main([Main Branch]) -- git checkout -b feature --> Feature([Sua Branch])
Feature -- git commit --> Feature
Feature -- Pull Request --> Review{Revisão}
Review -- Aprovado --> Main
Review -- Pedido de ajuste --> Feature
4. Praticando a Sincronização 💻
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 220 bytes | 220.00 KiB/s, done.
To https://github.com/usuario/meu-projeto.git
* [new branch] main -> main
5. Prática: Meu Portfólio no Ar 🚀
Sua missão é subir um de seus códigos para o GitHub:
- Crie um novo repositório Público no GitHub chamado
ads-ferramentas-desafio. - No seu terminal, dentro de uma pasta com código, execute o comando para adicionar o
origin. - Faça o
pushdo seu código. - Verifique no navegador se os arquivos apareceram lá.
- Desafio: Peça para um colega (ou use outra conta) fazer um "Fork" do seu projeto.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 06 - Bancos de Dados Relacionais e Clientes GUI 💾
Objetivo
Objetivo: Compreender o modelo de dados relacional (SQL), conhecer os principais bancos de dados do mercado e dominar o uso de ferramentas visuais para manipulação de dados.
1. Onde os Dados Moram? 🏗️
Quase toda aplicação precisa salvar informações permanentemente (usuários, pedidos, produtos). Para isso, usamos Sistemas de Gerenciamento de Banco de Dados (SGBDs).
🧩 Modelo Relacional (SQL)
O modelo SQL usa estruturação forte, em que cada coluna representa um atributo muito claro e inquebrável (Ex: ID, Nome, Email). Para organizar isso e mitigar a redundância de dados, divide-se em múltiplas tabelas que se "relacionam".
No exemplo abaixo, as informações estão na Tabela Usuarios. Se este usuário realiza compras, não reescrevemos o nome/email na venda, mas guardamos uma referência apontando para o seu ID.
| Exemplo de Tabela: Usuarios |
| :--- | :--- | :--- |
| ID | Nome | Email |
| 1 | Ana Silva | ana@email.com |
| 2 | Bob Souza | bob@email.com |
2. Líderes de Mercado 🏆
🐘 PostgreSQL
O "queridinho" dos desenvolvedores modernos. É robusto, gratuito e extremamente poderoso para lidar com grandes volumes de dados complexos.
🐬 MySQL
Famoso por ser o motor de grandes plataformas como o WordPress. É rápido e possui uma comunidade gigantesca.
3. Clientes GUI: Adeus Linha de Comando! 🖥️
Embora você possa usar o terminal, ferramentas visuais (Graphical User Interface) facilitam muito a vida do desenvolvedor.
🐝 DBeaver
O "canivete suíço" dos bancos de dados. É uma ferramenta universal que se conecta a quase qualquer banco (SQL, NoSQL, Nuvem). * Vantagem: Você aprende uma interface e usa em todos os projetos.
🎨 Beekeeper Studio
Uma alternativa moderna, mais bonita e simples de usar, ideal para quem está começando.
4. Visualizando Estruturas
mermaid
erDiagram
USUARIO ||--o{ PEDIDO : "faz"
PEDIDO ||--|{ ITEM_PEDIDO : "contem"
PRODUTO ||--o{ ITEM_PEDIDO : "pertence"
5. Praticando com SQL no Terminal 💻
Mesmo com ferramentas visuais, é bom conhecer o básico:
Type "help" for help.
meu_banco=# SELECT * FROM usuarios WHERE id = 1;
id | nome | email
----+-----------+---------------
1 | Ana Silva | ana@email.com
(1 row)
6. Prática: Conectando os Pontos 🚀
Sua missão é explorar um banco de dados real usando uma ferramenta visual:
- Instale o DBeaver Community Edition em sua máquina.
- Crie uma nova conexão do tipo SQLite (um banco que é apenas um arquivo, sem precisar instalar servidor).
- Crie uma tabela chamada
Ferramentascom as colunas:ID,NomeeCategoria. - Insira 3 linhas de dados usando a interface visual do DBeaver.
- Execute uma consulta SQL:
SELECT * FROM Ferramentas;e veja o resultado.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 07 - Bancos de Dados NoSQL e Cache ⚡
Objetivo
Objetivo: Entender quando utilizar bancos de dados não relacionais (NoSQL), compreender o conceito de documentos e descobrir como o Cache (Redis) acelera aplicações de larga escala.
1. Além das Tabelas: O Mundo NoSQL 🧠
Nem todo dado se encaixa bem em linhas e colunas rígidas. Para dados flexíveis e que precisam escalar rapidamente, usamos o NoSQL (Not Only SQL).
📄 Orientado a Documentos (MongoDB)
Em vez de tabelas rigorosas, usamos Coleções, que armazenam Documentos. Esses documentos se assemelham a objetos JSON na estrutura de chave-valor.
Ao dispensar "joins" complexos e predefinir que um mesmo Produto A pode ter especificações ausentes no Produto B, o MongoDB facilita muito o sharding — ou seja, espalhar os dados horizontalmente por dezenas de discos diferentes.
2. NoSQL vs SQL: Qual Usar? ⚖️
| Característica | 💾 SQL (Relacional) | ⚡ NoSQL (Documentos) |
|---|---|---|
| Esquema | Rígido (Fixo) | Flexível (Dinâmico) |
| Relacionamentos | Complexos (Joins) | Simples (Embarcados) |
| Foco | Consistência e Precisão | Velocidade e Escala |
| Exemplos | Postgres, MySQL | MongoDB, Cassandra |
3. Redis: A Velocidade da Memória 🚀
O Redis é um banco de dados que vive na Memória RAM, e não no disco rígido. Isso o torna incrivelmente rápido (milissegundos!).
🧠 Conceito: Cache
Imagine que um site de notícias tem 1 milhão de acessos na mesma matéria. Em vez de perguntar para o banco de dados lento 1 milhão de vezes, salvamos a resposta no Redis (Cache) por alguns minutos.
Fluxo de Funcionamento do Cache
```mermaid sequenceDiagram participant User as Usuário participant App as Aplicação participant Cache as Redis (Cache) participant DB as Postgres (Lento)
User->>App: Acessa Produto 1
App->>Cache: Tem no Cache?
Cache-->>App: Não (Miss)
App->>DB: Busca no Disco
DB-->>App: Retorna Dados
App->>Cache: Salva no Cache
App-->>User: Exibe Produto
```
4. Praticando com Redis no Terminal 💻
OK
127.0.0.1:6379> GET saudacao
"Olá Mundo"
127.0.0.1:6379> EXPIRE saudacao 10
(integer) 1# (Apaga o dado automaticamente em 10 segundos)
5. Prática: Explorando um JSON 🚀
No NoSQL, a estrutura mais comum é o JSON. Sua missão é criar o "esquema" de um documento para um sistema de cursos:
- Abra seu VS Code.
- Crie um arquivo chamado
aula.json. - Descreva uma aula utilizando a estrutura JSON (campos como nome, duracao, lista de ferramentas).
- Certifique-se de que o JSON esteja válido (use um validador online se necessário).
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 08 - Frameworks de Teste e Qualidade 🧪
Objetivo
Objetivo: Entender a importância dos testes automatizados para a estabilidade do software, conhecer os diferentes níveis de teste e descobrir os principais frameworks de cada linguagem.
1. Por que Testar? 🛡️
Software sem testes é uma bomba relógio. À medida que o código cresce, mudar uma linha pode quebrar algo que já estava funcionando.
🧠 Conceito: Regressão
Na engenharia, um pequeno hotfix numa função utilitária pode desencadear uma reação em cadeia oculta. Se os desenvolvedores precisarem testar a tela toda a vez que o código muda, perde-se eficiência e confiabilidade.
Testes automatizados evitam a regressão. Eles processam as regras de negócio em frações de segundos garantindo que um módulo continue retornando o que você esperava antes de aprovar uma mudança nova.
2. Níveis de Teste: A Pirâmide 🏗️
Nem todos os testes são iguais. Os desenvolvedores seguem a Pirâmide de Testes:
- Testes Unitários (Base): Testam pequenas partes isoladas (funções ou classes). São rápidos e baratos.
- Testes de Integração (Meio): Testam se dois ou mais módulos funcionam bem juntos (ex: API salvando no Banco).
- Testes E2E - Ponta a Ponta (Topo): Simulam o usuário real clicando na tela. São lentos e complexos.
Pirâmide de Testes
mermaid
graph TD
UI([Testes E2E / UI]) -- Lento/Caro --- INT([Testes de Integração])
INT --- UNIT([Testes Unitários])
UNIT -- Rápido/Barato --- UNIT
3. Ferramentas por Linguagem 🏆
Cada ecossistema tem seu framework de "ouro":
| Linguagem | Framework de Teste |
|---|---|
| JavaScript/TS | Jest / Vitest |
| Python | PyTest |
| Java | JUnit |
| C# (.NET) | xUnit / NUnit |
4. O Ciclo TDD (Test Driven Development) 🔄
Alguns desenvolvedores preferem escrever o teste antes do código. Este processo é chamado de TDD:
- 🔴 Red: Escreve um teste que falha.
- 🟢 Green: Escreve o código mínimo para o teste passar.
- 🔵 Refactor: Melhora o código garantindo que o teste ainda passe.
5. Praticando no Terminal 💻
Simulando a execução de um teste com o Jest:
PASS ./soma.test.js
✓ soma 1 + 2 deve ser 3 (5 ms)
✓ soma -1 + 5 deve ser 4 (2 ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 1.2 s
Ran all test suites.
6. Prática: O Primeiro Teste (Lógica) 🚀
Mesmo que ainda não estejamos codificando, vamos pensar na lógica de um teste unitário:
- Imagine uma função chamada
calcularDesconto(preco, percentual). - No seu bloco de notas, escreva 3 cenários de teste:
- Cenário 1: Preço 100, Desconto 10. Resultado esperado: 90.
- Cenário 2: Preço 50, Desconto 0. Resultado esperado: 50.
- Cenário 3: Preço 200, Desconto 100. Resultado esperado: 0.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Módulo 3 – API e Qualidade
Aula 09 - Ferramentas de API (Postman / Insomnia) 📡
Objetivo
Objetivo: Dominar o uso de clients HTTP para testar e documentar APIs, entender os métodos HTTP e interpretar os principais códigos de status retornados pelo servidor.
1. O que são Clients de API? 🕵️♂️
Quando desenvolvemos o backend (o "servidor"), muitas vezes ainda não temos o frontend (a "tela"). Para testar se o servidor está respondendo corretamente, usamos ferramentas que simulam requisições de um navegador ou aplicativo.
🏆 Líderes de Mercado
A plataforma mais consolidada no mercado. É ideal para APIs maduras que necessitam de Workspaces compartilhados, Mocks e automação completa de coleções (com relatórios).
Foca no minimalismo, velocidade e segurança local. Por não sobrecarregar as abas com dezenas de features, é a escolha preferida de novos devs e projetos ágeis.
2. O Protocolo HTTP na Prática 🔄
Para conversar com uma API, precisamos seguir as regras do protocolo HTTP.
Métodos (Verbos) HTTP
- GET: Buscar informações (ex: listar produtos).
- POST: Criar algo novo (ex: cadastrar usuário).
- PUT: Atualizar algo existente (ex: mudar senha).
- DELETE: Remover algo (ex: excluir conta).
Status Codes (Retorno do Servidor)
- 200 OK: Deu tudo certo!
- 201 Created: Criado com sucesso.
- 400 Bad Request: Você enviou algo errado.
- 401 Unauthorized: Você não está logado.
- 404 Not Found: Não encontrei o que você pediu.
- 500 Internal Server Error: O servidor "quebrou" (erro do programador).
3. Fluxo de uma Requisição
```mermaid sequenceDiagram participant Dev as Postman/Insomnia participant API as Servidor API participant DB as Banco de Dados
Dev->>API: POST /usuarios (Dados do Usuário)
API->>DB: Salva no Banco
DB-->>API: Confirmado
API-->>Dev: 201 Created (JSON com ID)
```
4. Praticando no Terminal 💻
Embora o Postman seja visual, as APIs também podem ser testadas via terminal usando o comando curl:
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz"
}
5. Prática: Minha Primeira Collection 🚀
Sua missão é testar uma API pública e organizar os resultados:
- Baixe e instale o Postman ou o Insomnia.
- Crie uma nova Collection chamada "Teste Local".
- Crie uma requisição GET para:
https://jsonplaceholder.typicode.com/posts. - Verifique o Status Code. Foi 200?
- Desafio: Tente fazer um POST para a mesma URL enviando um JSON com
titleebody.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 10 - Qualidade de Código (Linters e Formatters) ✨
Objetivo
Objetivo: Entender como as ferramentas de análise estática garantem a padronização do código em equipe, evitando erros comuns e mantendo um estilo visual consistente.
1. O Código Além do Funcionamento 🧠
Não basta o código "funcionar". Para que um projeto dure anos e seja mantido por várias pessoas, ele precisa ser legível e seguir padrões.
🧩 Análise Estática
Ferramentas de análise estática são o primeiro filtro de qualidade de um time. Elas leem seu código antes mesmo de você tentar rodá-lo (sem executá-lo), detectando anomalias e code smells (códigos mal estruturados).
As regras são configuráveis. O time decide que "Toda função deve ter limite de 20 linhas" ou "Ninguém pode usar aspas duplas". O Linter se torna o policial automático que barra códigos fora do padrão no GitHub.
2. Linters vs Formatters: Qual a Diferença? ⚖️
Embora parecidos, eles resolvem problemas diferentes:
| Ferramenta | O que faz? | Exemplo |
|---|---|---|
| Linter (ESLint / Flake8) | Encontra erros de lógica e potenciais bugs. | Variável criada mas nunca utilizada. |
| Formatter (Prettier / Black) | Cuida do visual e do estilo do código. | Colocar ponto e vírgula, ajustar espaços. |
🛠️ Por que usar os dois?
O Formatter deixa o código bonito; o Linter garante que ele está correto e segue as boas práticas da linguagem.
3. O Fluxo de Correção de Código
mermaid
graph TD
Code([Escrever Código]) --> Lint([Executar Linter])
Lint -- Erro Encontrado --> Fix([Corrigir Lógica])
Fix --> Lint
Lint -- OK --> Format([Executar Formatter])
Format --> Clean([Código Limpo e Padronizado])
4. Praticando no Terminal 💻
Simulando o uso do ESLint para encontrar erros e do Prettier para formatar:
5. Prática: Configurando o Corretor Automático 🚀
Sua missão é ver a mágica da formatação automática no VS Code:
- Abra o VS Code e instale a extensão Prettier - Code Formatter.
- Vá em Settings (Ctrl + ,) e pesquise por
Format on Save. Ative essa opção. - Crie um arquivo chamado
bagunca.js. - Escreva um código propositalmente bagunçado (muitos espaços, aspas simples e duplas misturadas, sem identação).
- Salve o arquivo e observe o VS Code organizar tudo instantaneamente.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 11 - CI/CD Moderno (GitHub Actions) 🚀
Objetivo
Objetivo: Compreender o ciclo de integração e entrega contínua (CI/CD), aprender a criar workflows automatizados no GitHub e garantir que o código seja testado automaticamente a cada push.
1. O que é CI/CD? 🔄
Em vez de rodar testes e linters manualmente na sua máquina local, a nuvem assume a responsabilidade após cada interação no controle de versão.
Integrar e validar o código de dezenas de desenvolvedores repetidas vezes ao dia. O servidor "puxa" o código, roda os linters, compila (build) e dispara centenas de testes unitários. Se algo quebrar, o pull request é bloqueado.
Uma vez que os testes garantem que o software está estável (CI passou), o processo de CD empacota esse aplicativo e o instale automaticamente nos servidores hospedados de teste ou de produção, sem intervenção humana.
2. GitHub Actions: Automação na Nuvem 🤖
O GitHub Actions é a ferramenta de CI/CD integrada ao GitHub. Ele funciona através de arquivos de configuração no formato YAML.
Componentes do Actions:
- Workflow: O processo completo (ex: "Build e Teste").
- Event: O que dispara o processo (ex: um
pushou umpull_request). - Job: Uma tarefa específica dentro do workflow (ex: "rodar testes unitários").
- Steps: Os comandos passo a passo dentro de um Job.
3. Visualização da Pipeline
mermaid
graph LR
Push([Git Push]) --> Trigger{GitHub Event}
Trigger --> VM([Spin up Virtual Machine])
VM --> Install([npm install])
Install --> Lint([npx eslint .])
Lint --> Test([npm test])
Test -- Success --> Deploy([Auto Deploy])
Test -- Failure --> Notify([Notificar Developer])
4. O Arquivo de Configuração (.yml) 📄
Abaixo, um exemplo de como é um arquivo de workflow real:
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
5. Praticando no Terminal (Simulação) 💻
Imagine o terminal do servidor do GitHub executando seu workflow:
Step 1: Checking out code... OK
Step 2: Installing Node 18... OK
Step 3: Running npm install... OK
Step 4: Running npm test...
PASS test/auth.test.js
PASS test/db.test.js
Step 5: All tests passed! Pipeline completed.
6. Prática: Monitorando um Workflow 🚀
- Vá até um repositório seu no GitHub.
- Clique na aba Actions.
- O GitHub sugerirá "Workflows" baseados na sua linguagem.
- Escolha um simples (como Node.js ou Python) e clique em Set up this workflow.
- Clique em Commit changes.
- Veja o workflow rodar em tempo real e verifique se ele fica "Verde" (Sucesso).
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 12 - Automação e IaC (Ansible e Terraform) ⚙️
Objetivo
Objetivo: Entender o conceito de Infraestrutura como Código (IaC), descobrir como o Terraform cria recursos na nuvem e como o Ansible gerencia e configura servidores automaticamente.
1. O Problema da Configuração Manual 😫
No passado, para criar um servidor, um técnico precisava configurar tudo manualmente: instalar o Linux, o banco de dados, as senhas, etc. Se precisasse de 10 servidores, ele repetia o processo 10 vezes.
🧠 Conceito: Infraestrutura como Código (IaC)
O provisionamento manual envolve dezenas de cliques em painéis como AWS ou Azure. Quando a empresa cresce e precisa de 100 servidores idênticos, a chance de erro humano (configuração esquecida, porta aberta, versão errada) beira os 100%.
Com IaC, a infraestrutura vira um script de texto versionado no Git. Se um servidor queimar, basta apertar "Run" novamente e um gêmeo idêntico subirá em minutos. Do mesmo modo, se um desenvolvedor injetar uma falha na infra, o time poderá simplesmente revogar (reverter) o commit no código de infraestrutura.
2. Terraform: O Arquiteto da Nuvem 🏗️
O Terraform serve para provisionar a infraestrutura. Ele "telefona" para a AWS, Google Cloud ou Azure e diz: "Crie para mim 3 servidores e 1 banco de dados".
- Linguagem: HCL (HashiCorp Configuration Language).
- Estado (State): O Terraform lembra o que ele criou, para que ele possa atualizar ou destruir depois sem se perder.
3. Ansible: O Mestre de Obras 👷♂️
Enquanto o Terraform "constrói o prédio" (servidor), o Ansible entra para "pintar as paredes e instalar os móveis" (configurar o software).
- Sem Agente: O Ansible não precisa ser instalado no servidor destino, ele usa apenas o acesso SSH.
- Playbooks: Arquivos YAML que descrevem o que deve ser instalado e configurado.
Fluxo Combinado de Provisionamento
mermaid
graph TD
Code([Arquivo de Definição]) --> TF([Terraform: Cria o Servidor])
TF --> Server([Servidor Vazio])
Server --> ANS([Ansible: Instala Node/Nginx])
ANS --> Prod([Servidor Pronto para Uso])
4. O Arquivo Ansible (Exemplo) 📄
Mesmo sem rodar, veja como é simples descrever uma instalação de servidor:
---
- name: Instalar Nginx no Servidor Web
hosts: webservers
tasks:
- name: Garantir que o Nginx esteja instalado
apt:
name: nginx
state: present
- name: Iniciar o serviço do Nginx
service:
name: nginx
state: started
5. Prática: Lógica de Automação 🚀
- Imagine que você tem 50 computadores em um laboratório.
- Todos precisam ter o Google Chrome e o VS Code instalados hoje.
- No seu bloco de notas, escreva a sequência de passos que o Ansible faria:
- Passo 1: Baixar instalador do Chrome.
- Passo 2: Executar arquivo de instalação do Chrome.
- Passo 3: Baixar instalador do VS Code...
- Perceba que, com o Ansible, você escreveria isso uma única vez e o comando rodaria nos 50 PCs simultaneamente.
6. Exercício de Fixação 📝
- Básico: O que significa o termo "Infraestrutura como Código"?
- Básico: Qual a diferença principal entre o que o Terraform faz e o que o Ansible faz?
- Intermediário: Por que é mais seguro usar o Terraform do que criar servidores clicando em botões no painel da AWS?
- Intermediário: Explique o que é "Idempotência" (pesquise este termo no contexto de Ansible).
- Desafio: Pesquise o que é "Cloud agnosticism" e por que o Terraform é considerado uma ferramenta que ajuda com isso.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Módulo 4 – Infra e Docker
Aula 13 - Contêineres com Docker 📦
Objetivo
Objetivo: Compreender o conceito de conteinerização, aprender a criar imagens Docker e orquestrar múltiplos serviços usando o Docker Compose.
1. O Problema: "Na minha máquina funciona!" 🤷♂️
Este é o pesadelo de todo desenvolvedor. Um código que funciona no seu computador, mas quebra quando vai para o servidor porque a versão do banco de dados ou do Node.js é diferente.
🧠 Conceito: Contêineres
Antigamente, para isolar um sistema, criava-se uma Máquina Virtual (VM) pesada, com seu próprio Sistema Operacional completo (Linux/Windows), sugando dezenas de Gigabytes e minutos de RAM apenas para ligar.
Contêineres empacotam apenas o código e bibliotecas essenciais, compartilhando de forma inteligente o "kernel" do sistema operacional hospedeiro. Isso garante inicialização instantânea e economia brutal de recursos.
2. Docker: A Baleia Azul 🐳
O Docker é a plataforma líder mundial em contêineres.
- Imagem: É o "molde" ou a "receita". Contém tudo o que é necessário para rodar o app (SO, bibliotecas, código).
- Contêiner: É a instância da imagem em execução (o "bolo" pronto).
Diferença para Máquinas Virtuais
mermaid
graph TD
subgraph "Máquina Virtual (Lenta)"
App1([App 1]) --- GuestSO1([SO Completo])
GuestSO1 --- Hyper([Hypervisor])
end
subgraph "Docker (Rápido)"
App2([App 2]) --- Engine([Docker Engine])
Engine --- HostSO([Host SO Kernel])
end
3. Docker Compose: Multi-Serviços 🎼
Raramente um app vive sozinho. Ele precisa de um Banco de Dados, um Cache e uma API. O Docker Compose permite subir todos eles com um único comando.
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: root
4. Praticando no Terminal 💻
a1b2c3d4e5f6 meu-app Up 5 minutes 0.0.0.0:8080->80/tcp
5. Prática: Meu Primeiro Dockerfile 🚀
Vamos criar a "receita" de um servidor simples:
- No VS Code, crie um arquivo chamado
Dockerfile(sem extensão). - Escreva a lógica básica:
- Pense neste arquivo como um conjunto de instruções para o Docker criar sua máquina virtual leve.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 14 - Orquestração com Kubernetes e Runners ☸️
Objetivo
Objetivo: Compreender a necessidade de orquestração de contêineres, conhecer os conceitos básicos de Kubernetes (K8s) e entender como os Runners executam nossas tarefas de automação em larga escala.
1. O que fazer com 1000 Contêineres? 🤯
O Docker é ótimo para rodar um ou dez contêineres. Mas e se você tiver um sistema gigante com milhares de contêineres que precisam escalar conforme o número de usuários sobe e desce?
🧠 Conceito: Orquestração
Sem orquestração, se um dos 1000 contêineres Docker travar, um humano precisaria rodar docker restart. Se o servidor ficar sem memória no meio da madrugada, alguém precisaria comprar outro servidor.
A Orquestração automatiza o gerenciamento. O K8s (Kubernetes) atua como um maestro: ele monitora a saúde das aplicações, reinicia as que falharam ou travaram e aumenta os servidores (Scale Out) quando identificam picos de acessos.
2. Conceitos Chave do Kubernetes 🏗️
O K8s não fala "contêiner", ele fala Pod.
- Pod: A menor unidade (pode conter um ou mais contêineres).
- Node: Uma máquina física ou virtual (o "trabalhador") onde os Pods rodam.
- Cluster: O conjunto de todos os Nodes gerenciados pelo Kubernetes.
- Deployment: A definição de como o seu app deve rodar (ex: "quero sempre 3 cópias deste Pod ligadas").
Visualização de um Cluster
mermaid
graph TD
Control([Control Plane - O Cérebro]) --> Node1([Node 1])
Control --> Node2([Node 2])
subgraph "Node 1"
Pod1([Pod A])
Pod2([Pod B])
end
subgraph "Node 2"
Pod3([Pod A])
Pod4([Pod C])
end
3. Auto-Cura e Escala Automática 🦾
A grande mágica do Kubernetes é a Auto-Cura: se um contêiner travar ou um servidor desligar, o K8s percebe e sobe um novo contêiner em outra máquina automaticamente.
Conceito
Horizontal Pod Autoscaler (HPA): O K8s pode aumentar o número de Pods se o CPU da sua aplicação estiver muito alto e diminuir quando o tráfego baixar.
4. O Papel dos Runners 🏃♂️
No mundo do CI/CD (que vimos na Aula 11), os Runners são os contêineres que "correm" para executar o seu código. No GitHub Actions, o GitHub fornece runners, mas grandes empresas criam seus próprios Self-hosted Runners em clusters Kubernetes para ter mais controle e velocidade.
5. Prática: Lógica de Orquestração 🚀
- Imagine que você tem uma loja virtual.
- Normalmente, 3 servidores dão conta do recado.
- Chega a Black Friday e os acessos aumentam 10x.
- No seu bloco de notas, desenhe como o Kubernetes deveria agir:
- Passo 1: Perceber aumento de tráfego.
- Passo 2: Criar mais 27 cópias dos servidores (totalizando 30).
- Passo 3: Quando a Black Friday acabar, destruir 27 cópias para economizar dinheiro.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Aula 15 - Comunicação e Colaboração em Equipe 💬
Objetivo
Objetivo: Entender a importância da comunicação eficaz em projetos de software, conhecer as ferramentas líderes de colaboração e aprender as melhores práticas de comunicação assíncrona.
1. O Código não é Tudo 🗣️
O sucesso de um projeto depende 50% da qualidade do código e 50% de quão bem a equipe se comunica. Mal-entendidos geram bugs, atrasos e frustração.
🧠 Conceito: Comunicação Assíncrona
É a comunicação que não exige que ambas as pessoas estejam presentes ao mesmo tempo (ex: mensagens de chat, e-mails, comentários no Git). É essencial para desenvolvedores, pois permite manter o "estado de fluxo" (concentração total).
2. Ferramentas de Mercado 🏢
🟦 Slack
A ferramenta favorita das startups e empresas de tecnologia. * Destaque: Integrações potentes (você pode receber alertas do GitHub ou do Jenkins direto no Slack). * Recurso: Canais organizados por projeto ou assunto.
🟪 Microsoft Teams
Muito comum em grandes corporações que já utilizam o ecossistema Office. * Destaque: Excelente integração para chamadas de vídeo e edição de documentos em tempo real.
3. Integração: ChatOps 🤖
Imagine que um teste falhou na sua pipeline (Aula 11). Em vez de você ter que abrir o GitHub para descobrir, um "bot" avisa a equipe no Slack imediatamente.
Fluxo de Notificação
mermaid
graph LR
CI[GitHub Actions] -- Falha no Teste --> BOT[Slack Bot]
BOT -- Alerta --> Channel[#projeto-ads]
Channel -- Dev vê --> Fix[Correção Imediata]
4. Etiqueta Digital para Devs 📜
- Evite o "Olá" vazio: Não mande apenas "Oi" e espere a resposta. Mande sua dúvida completa de uma vez.
- Use Threads: Responda a uma mensagem criando uma linha de conversa (thread) para não poluir o canal principal.
- Emojis: Use para confirmar recebimento (ex:
para "entendido") e economizar mensagens.
5. Prática: Configurando um Webhook (Lógica) 🚀
Webhooks são a forma como ferramentas "conversam" com o Slack:
- Imagine que você quer receber um aviso toda vez que um novo aluno entrar no curso.
- No seu bloco de notas, desenhe a lógica:
- Trigger: Cadastro de Aluno no Site.
- Ação: Enviar um JSON para a URL secreta do Slack.
- Resultado: Mensagem "Novo aluno registrado!" no canal #geral.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Módulo 5 – Design e UI
Aula 16 - Design, Prototipagem e Handoff (Figma) 🎨
Objetivo
Objetivo: Compreender o papel do designer de interface (UI/UX), aprender a navegar no Figma para extrair informações técnicas e entender o processo de "Handoff" — a entrega do design para o desenvolvimento.
1. O que é o Figma? 🎨
O Figma é a ferramenta líder de mercado para design de interfaces. Diferente de softwares antigos, ele é baseado na nuvem e permite que designers e desenvolvedores trabalhem no mesmo arquivo simultaneamente.
🧠 Conceito: Design System
Muitas empresas utilizam um "Design System" no Figma. É uma biblioteca de componentes (botões, cores, fontes) padronizados que garantem que o aplicativo tenha a mesma cara em todas as telas.
2. Dev Mode: O Paraíso do Desenvolvedor 💻
Recentemente, o Figma lançou o Dev Mode, uma interface pensada exclusivamente para programadores. Ao clicar em um elemento, você pode ver: * CSS / Código: Largura, altura, cores em Hexadecimal/RGB. * Assets: Exportar imagens e ícones diretamente em SVG ou PNG. * Spacing: Ver a distância exata entre um botão e um texto.
3. O Processo de Handoff 🤝
Handoff é o momento em que o designer termina o protótipo e o entrega para o desenvolvedor começar a codificar.
Fluxo de Trabalho
mermaid
graph LR
Ideas[Ideias/UX] --> Wireframe[Protótipo de Baixa Fidelidade]
Wireframe --> HighFi[Design de Alta Fidelidade - Figma]
HighFi -- Handoff --> Dev[Desenvolvimento/Código]
Dev -- Feedback --> HighFi
4. Praticando a Inspeção 🔍
Mesmo sem o Figma aberto, imagine que você está inspecionando um botão no "Dev Mode":
/* Propriedades extraídas do Figma */
.botao-primario {
width: 200px;
height: 48px;
background-color: #6200EE;
border-radius: 8px;
color: #FFFFFF;
font-family: 'Inter', sans-serif;
font-weight: 600;
}
5. Prática: Explorando um Protótipo 🚀
Sua missão final é entrar no mundo do design:
- Crie uma conta gratuita no Figma.
- Busque na "Community" do Figma por um arquivo chamado "Material 3 Design Kit".
- Abra o arquivo e tente encontrar a seção de Buttons.
- Use a ferramenta de "Inspeção" para descobrir qual a cor hexadecimal do botão principal.
- Tente alterar o texto de um botão apenas para entender como a ferramenta funciona.
🔗 Materiais da Aula
-
Slides
Material visual com diagramas e conceitos-chave.
-
Quiz
Teste seu conhecimento com 10 questões interativas.
-
Exercícios
5 exercícios progressivos (básico → desafio).
-
Projeto
Aplicação prática dos conceitos da aula.
Parabéns!
Você concluiu todas as aulas deste curso!
Materiais
Materiais de Apoio 📚
Bem-vindo à seção de materiais complementares do curso. Aqui você encontra recursos individuais organizados por categoria.
-
Material visual das aulas com diagramas e conceitos principais.
-
Testes interativos de 10 questões para validar seu conhecimento.
-
Listas progressivas (básico, intermediário e desafio) por aula.
-
Aplicações práticas para consolidar os temas de cada módulo.
-
Guias passo a passo para configurar seu ambiente de desenvolvimento.
Slides
Slides 📺
Material visual para acompanhamento das vídeo-aulas.
-
Módulo 1: Fundamentos e Gestão ---
-
Módulo 2: Colaboração e Dados ---
-
Módulo 3: Qualidade e Automação ---
-
Módulo 4: Infraestrutura e Integração ---
Exercícios
Exercícios Práticos 🏋️
Pratique o que aprendeu com desafios graduais para cada aula.
Módulo 1 – Ecossistema e Gestão
- Ex 01 - Intro ao Ecossistema
- Ex 02 - Gestão de Projetos
- Ex 03 - Ambiente de Dev
- Ex 04 - Git Fundamentos
Módulo 2 – Colaboração e Dados
Módulo 3 – API e Qualidade
- Ex 09 - Ferramentas de API
- Ex 10 - Qualidade de Código
- Ex 11 - CI/CD Moderno
- Ex 12 - Automação e IaC
Módulo 4 – Infra e Docker
Módulo 5 – Design e UI
Quizzes
Quizzes Interativos 🧠
Teste seus conhecimentos rapidamente ao final de cada lição.
Módulo 1 – Ecossistema e Gestão
- Quiz 01 - Intro ao Ecossistema
- Quiz 02 - Gestão de Projetos
- Quiz 03 - Ambiente de Dev
- Quiz 04 - Git Fundamentos
Módulo 2 – Colaboração e Dados
- Quiz 05 - Plataformas Git
- Quiz 06 - DB Relacional
- Quiz 07 - NoSQL e Cache
- Quiz 08 - Frameworks de Teste
Módulo 3 – API e Qualidade
- Quiz 09 - Ferramentas de API
- Quiz 10 - Qualidade de Código
- Quiz 11 - CI/CD Moderno
- Quiz 12 - Automação e IaC
Módulo 4 – Infra e Docker
Módulo 5 – Design e UI
Projetos
Projetos Práticos 🚀
Transforme teoria em prática com desafios progressivos que compõem seu portfólio.
Módulo 1 – Ecossistema e Gestão
- Projeto 01 - Diagnóstico Cinto Dev
- Projeto 02 - Fluxo Kanban (Jira/Trello)
- Projeto 03 - Meu Setup Profissional
- Projeto 04 - Primeiro Repo Git
Módulo 2 – Colaboração e Dados
- Projeto 05 - Pull Request Perfeito
- Projeto 06 - Modelagem RM (Relacional)
- Projeto 07 - Cache com Redis
- Projeto 08 - Testes Automatizados
Módulo 3 – API e Qualidade
- Projeto 09 - Documentação Postman
- Projeto 10 - Linting e Formatação
- Projeto 11 - Primeira Action CI
- Projeto 12 - Automação Shell
Módulo 4 – Infra e Docker
- Projeto 13 - Hello World Docker
- Projeto 14 - Compose Multi-Serviço
- Projeto 15 - Monitoramento Simples
Módulo 5 – Design e UI
Configuração
Ambientes de Desenvolvimento 🛠️
Guias para configurar seu computador para o desenvolvimento mobile.
-
Android --- Instalação do Android Studio, SDK e emuladores.
-
iOS (Opcional/Referência) --- Configuração básica de Xcode e ferramentas Mac.
-
Ferramentas de Apoio --- Git, Terminais e Postman/Insomnia para testes de API.
Setup 01: Android Studio 🤖
O Android Studio é a IDE oficial para o desenvolvimento Android.
1. Requisitos de Sistema
- RAM: Mínimo 8GB (Sugerido 16GB+).
- Espaço: Mínimo 10GB para IDE + SDKs.
- Processador: Intel Core i5 ou equivalente.
2. Instalação
- Acesse o site oficial: developer.android.com/studio.
- Baixe a versão mais recente para o seu Sistema Operacional.
- Execute o instalador e escolha a opção "Standard" na configuração inicial.
3. Configurando o SDK
- Após a instalação, vá em Settings > Languages & Frameworks > Android SDK.
- Certifique-se de que a versão mais recente do Android (estável) esteja instalada.
- Na aba SDK Tools, instale o "Android Emulator" e o "Intel x86 Emulator Accelerator (HAXM)" se estiver no Windows com Intel.
4. Criando um Emulador (AVD)
- Abra o Device Manager.
- Clique em Create Device.
- Escolha um dispositivo (ex: Pixel 7).
- Selecione uma imagem de sistema (ex: Level 34 - Android 14).
- Finalize e clique no "Play" para iniciar o celular virtual.
5. Solução de Problemas ⚠️
- VT-x is disabled: Você precisa habilitar a virtualização na BIOS do seu computador.
- Studio muito lento: Adicione a pasta do projeto e as pastas do Android SDK nas exclusões do seu Antivírus.
Setup 02: Xcode Foundation 🍎
O Xcode é o ambiente de desenvolvimento essencial para criar aplicativos para ecossistemas Apple (iOS, macOS).
Important
O Xcode está disponível apenas para computadores Mac. Caso você use Windows ou Linux, este guia serve apenas como referência técnica.
1. Requisitos de Sistema
- Hardware: Mac com processador Intel ou Apple Silicon (M1/M2/M3).
- Sistema: macOS Sonoma ou superior (recomendado).
- Espaço: Pelo menos 40GB livres (o Xcode é pesado!).
2. Instalação
- Abra a App Store no seu Mac.
- Pesquise por Xcode.
- Clique em "Obter" e aguarde o download (pode demorar bastante).
3. Configurando Componentes
- Ao abrir o Xcode pela primeira vez, ele solicitará a instalação de componentes adicionais. Aceite todos.
- Nas configurações do Xcode (Settings > Platforms), certifique-se de que o simulador de iOS esteja baixado.
4. Xcode Command Line Tools
Acesse o terminal e execute:
Isso instalará ferramentas essenciais como o compilador gcc, make e outros utilitários de linha de comando.
⬅️ Voltar para o Início do Setup
5. Opcional: CocoaPods
Muitos projetos iOS antigos ainda usam CocoaPods para dependências:
5. Solução de Problemas ⚠️
- Espaço em Disco: O Xcode é muito grande. Garanta pelo menos 40GB de espaço livre para ele e os simuladores.
- Build Lento: Use simuladores de modelos mais simples (ex: iPhone SE) para poupar memória RAM se necessário.
Setup 03: Ferramentas de Apoio ⚙️
Além da IDE, um desenvolvedor precisa de um conjunto de utilitários para gerenciar código e testar comunicações.
1. Git (Controle de Versão)
O Git é obrigatório para qualquer projeto moderno.
- Windows: Baixe em git-scm.com.
- Mac: Já vem com o Xcode Command Line Tools.
- Linux:
sudo apt install git.
Configure seu nome e e-mail no terminal:
2. Postman ou Insomnia
Essenciais para testar APIs sem precisar de um frontend.
- Baixe o Postman em postman.com/downloads.
- Crie uma conta gratuita para sincronizar suas Collections (Aula 09).
3. Node.js e NPM
Muitos utilitários de automação dependem do ambiente Node.
- Baixe a versão LTS (Long Term Support) em nodejs.org.
- Verifique a instalação no terminal:
4. DBeaver (Banco de Dados)
Excelente para visualizar seus dados (Aula 06).
- Baixe em dbeaver.io.
- A versão "Community" é gratuita e atende perfeitamente.
Versão para Impressão
Esta página foi gerada automaticamente para impressão.