Áreas de Conhecimento

Frontend HTML, CSS, JavaScript, Frameworks
Backend Node.js, APIs, Servidores
Bancos de Dados SQL, NoSQL, Padrões
DevOps Deployment, Containers, CI/CD

Desenvolvimento Frontend

HTML & CSS

HTML5 Avançado

A linguagem de marcação que estrutura o conteúdo web

  • Estrutura semântica (header, nav, section, article, footer)
  • Formulários avançados e validação nativa
  • APIs do HTML5 (Canvas, SVG, Web Storage, Web Workers)
  • Atributos de dados personalizados (data-*)
  • Armazenamento local e sessão
  • SEO estrutural e metadados
  • Acessibilidade (ARIA, WAI-ARIA, WCAG 2.1)

CSS Moderno

Estilização avançada para layouts modernos

  • Box model avançado
  • Flexbox para layouts unidimensionais
  • Grid para layouts bidimensionais complexos
  • CSS Custom Properties (variáveis)
  • Media queries e design responsivo
  • Animações e transições
  • Transformações 2D e 3D
  • Seletores avançados e pseudo-elementos

Pré-processadores CSS

Extensões para tornar o CSS mais poderoso

  • SASS/SCSS
    • Variáveis e escopo
    • Mixins e funções
    • Aninhamento e herança (@extend)
    • Partials e modularização
    • Operadores e cálculos
  • Less
    • Variáveis e mixins
    • Funções e operações
    • Importação de módulos
  • PostCSS
    • Plugins e extensibilidade
    • Autoprefixer e cssnano
    • Integração com ferramentas modernas

Frameworks CSS

Bibliotecas de utilidades e componentes visuais

  • Tailwind CSS
    • Abordagem utility-first
    • Customização e configuração
    • JIT (Just-In-Time) Compiler
    • Plugins e extensões
  • Bootstrap 5
    • Sistema de grid e flexbox
    • Componentes prontos
    • Customização via Sass
    • JavaScript integrado
  • Material UI e outros sistemas de design
  • CSS-in-JS (Styled-components, Emotion)
Dica

Domine o CSS vanilla (especialmente Flexbox e Grid) antes de se aprofundar em frameworks CSS. Isso lhe dará uma base sólida para entender como as ferramentas funcionam internamente.

JavaScript

JavaScript Fundamental

Base da programação web moderna

  • Sintaxe, tipos de dados e estruturas de dados
  • Funções e escopo
    • Arrow functions
    • Closures
    • Higher-order functions
  • Objetos e protótipos
  • This, bind, call e apply
  • Contexto de execução e pilha de chamadas
  • Manipulação de eventos
  • Tratamento de erros (try/catch)

JavaScript Moderno (ES6+)

Recursos avançados e padrões modernos

  • Let, const e escopo de bloco
  • Template literals e interpolação
  • Desestruturação e spread operator
  • Parâmetros padrão e rest
  • Classes e herança
  • Módulos (import/export)
  • Promessas e async/await
  • Generators e iterators
  • Map, Set, WeakMap, WeakSet
  • Proxy e Reflect

DOM e APIs Web

Interação com elementos HTML e recursos do navegador

  • Manipulação do DOM
    • Seletores e traversing
    • Modificação de elementos
    • Eventos e delegação
  • Fetch API e AJAX
  • APIs modernas:
    • LocalStorage e SessionStorage
    • Geolocation API
    • Web Workers
    • Service Workers e PWAs
    • WebSockets
    • Canvas e WebGL
    • File API e Drag & Drop

Padrões de Design JavaScript

Padrões para organizar e escalar código

  • Programação Funcional
    • Imutabilidade
    • Funções puras
    • Composição de funções
    • Recursividade
  • Padrões de design
    • Module e Revealing Module
    • Factory e Constructor
    • Singleton
    • Observer e Pub/Sub
    • MVC, MVP e MVVM
  • Gerenciamento de estado
  • Otimização de performance
Atenção

JavaScript é uma linguagem com muitas peculiaridades. Certifique-se de compreender conceitos como hoisting, coerção de tipos, prototype chain e escopo de execução para evitar bugs difíceis de depurar.

TypeScript

Fundamentos do TypeScript

Tipagem estática para JavaScript

  • Tipos básicos e anotações
  • Interfaces e type aliases
  • Enums e tuplas
  • Union e intersection types
  • Configuração do compilador (tsconfig.json)
  • Migração gradual de JavaScript para TypeScript

TypeScript Avançado

Recursos avançados do sistema de tipos

  • Generics
    • Funções e classes genéricas
    • Constraints em generics
    • Utility types
  • Decorators
    • Class decorators
    • Method decorators
    • Property decorators
  • Type Guards e Type Narrowing
  • Mapped Types e Conditional Types
  • Template Literal Types
  • Declaration merging
  • Namespace e módulos

TypeScript com Frameworks

Integrando TypeScript com bibliotecas populares

  • React com TypeScript
    • Props tipadas e generics
    • Tipagem de hooks
    • Context API tipada
    • Tipagem de eventos
  • Vue com TypeScript
  • Node.js com TypeScript
  • Tipando bibliotecas de terceiros
  • Criando arquivos de declaração (.d.ts)
  • Ferramentas como TSDoc
Importante

TypeScript não é apenas sobre adicionar tipos; é uma ferramenta poderosa para documentar seu código, prevenir bugs e melhorar a produtividade da equipe. Invista tempo em aprender suas capacidades mais avançadas.

Ferramentas de Desenvolvimento

Gerenciamento de Pacotes

Ferramentas para gerenciar dependências

  • npm
    • package.json e estrutura
    • Configuração e scripts
    • Semver e versionamento
    • Publicação de pacotes
    • workspaces e monorepos
  • Yarn
    • Plug'n'Play e Zero-installs
    • Workspaces
    • Resolução de conflitos
  • pnpm
    • Estrutura de hard links
    • Economia de espaço em disco
    • Monorepos com pnpm

Build Tools & Bundlers

Ferramentas para otimização e empacotamento

  • Webpack
    • Configuração e loaders
    • Code splitting e lazy loading
    • Tree shaking
    • Hot Module Replacement
  • Vite
    • ESM nativo para desenvolvimento
    • Configuração simplificada
    • Plugins e integração
  • Rollup
    • Foco em bibliotecas
    • Tree shaking eficiente
  • ESBuild e SWC
    • Bundlers escritos em Go/Rust
    • Performance extrema
  • Babel
    • Transpilação de JavaScript
    • Presets e plugins
    • Polyfills

Linters & Formatters

Ferramentas para padronização de código

  • ESLint
    • Configuração e regras
    • Plugins e extensões
    • Integração com editores
    • Configurações populares (Airbnb, Standard)
  • Prettier
    • Formatação automática
    • Integração com ESLint
    • Configuração personalizada
  • TypeScript Compiler (tsc)
    • Configuração avançada
    • Verificação de tipos estrita
  • StyleLint para CSS/SCSS

Controle de Versão

Ferramentas para colaboração e histórico de código

  • Git
    • Comandos básicos e avançados
    • Branching e merging
    • Resolução de conflitos
    • Rebase, cherry-pick, bisect
    • Git hooks
  • Plataformas
    • GitHub
    • GitLab
    • Bitbucket
  • Fluxos de trabalho
    • GitFlow
    • GitHub Flow
    • Trunk-based development
  • Semantic Versioning
  • Conventional Commits
Dica

Invista tempo configurando seu ambiente de desenvolvimento. Um bom setup com ESLint, Prettier, TypeScript e um bom bundler irá economizar horas de depuração e refatoração no futuro.

Frameworks & Bibliotecas Frontend

React

Biblioteca para construção de interfaces

  • Fundamentos
    • Virtual DOM e reconciliação
    • JSX e elementos
    • Componentes e props
    • State e lifecycle
  • Hooks
    • useState, useEffect, useRef
    • useContext, useReducer
    • useMemo, useCallback
    • Hooks personalizados
  • Padrões avançados
    • Render props
    • Higher-Order Components
    • Context API
    • Error boundaries
    • Portals e Fragments
    • Suspense e lazy loading

Ecossistema React

Bibliotecas e ferramentas complementares

  • Roteamento
    • React Router
    • TanStack Router
  • Gerenciamento de Estado
    • Redux e Redux Toolkit
    • Zustand
    • Jotai/Recoil
    • MobX
    • Context API + useReducer
  • Formulários
    • React Hook Form
    • Formik
    • Final Form
  • Consulta de dados
    • React Query
    • SWR
    • Apollo Client (GraphQL)
    • Relay (GraphQL)
  • Testes
    • React Testing Library
    • Jest
    • Cypress

Next.js

Framework React para aplicações web

  • Fundamentos
    • Pages e API Routes
    • App Router vs Pages Router
    • Layouts e templates
    • Middleware
  • Renderização
    • Server-Side Rendering (SSR)
    • Static Site Generation (SSG)
    • Incremental Static Regeneration (ISR)
    • Client-side rendering
    • Server Components vs Client Components
  • Features avançadas
    • Data fetching (getServerSideProps, getStaticProps)
    • Image Optimization
    • Internationalization
    • Authentication
    • Dynamic imports
    • Edge Functions

Alternativas ao React

Outras bibliotecas e frameworks

  • Vue.js
    • Composition API e Options API
    • Single File Components
    • Vuex e Pinia (gerenciamento de estado)
    • Vue Router
    • Nuxt.js (framework Vue)
  • Angular
    • Framework completo com TypeScript
    • RxJS e programação reativa
    • Sistema de módulos e DI
    • Angular CLI e ferramentas
    • Angular Universal (SSR)
  • Svelte
    • Compilação em tempo de build
    • Reatividade sem Virtual DOM
    • SvelteKit (framework full-stack)
    • Store para gerenciamento de estado
  • Solid.js
    • Inspirado em React, mas com performance superior
    • Reatividade granular
    • Padrões similares ao React (JSX, Hooks)
Atenção

Não tente aprender vários frameworks simultaneamente. Escolha um (React é uma boa opção por sua popularidade) e aprenda-o profundamente antes de expandir para outros.

Desenvolvimento Backend

Node.js

Fundamentos do Node.js

Runtime JavaScript baseado no V8

  • Arquitetura e Event Loop
    • Single-threaded e assíncrono
    • Event Loop e fases
    • Libuv e I/O não bloqueante
    • Worker threads
  • Módulos e sistema de pacotes
    • CommonJS vs ESM
    • Criação de módulos
    • npm e package.json
  • Módulos nativos essenciais
    • fs (sistema de arquivos)
    • path (manipulação de caminhos)
    • http/https (servidores web)
    • stream (streaming de dados)
    • buffer (manipulação binária)
    • events (emissores de eventos)
    • util e outros utilitários

Programação Assíncrona

Padrões para operações não-bloqueantes

  • Callbacks e callback hell
  • Promises
    • Criação e encadeamento
    • Promise.all, Promise.race, Promise.allSettled
    • Error handling
  • Async/Await
    • Top-level await
    • Try/catch e error handling
    • Execução paralela vs sequencial
  • Streams
    • Readable, Writable, Transform
    • Pipe e pipeline
    • Backpressure
  • Events e EventEmitter

Desenvolvimento Avançado

Tópicos para aplicações robustas

  • Performance e otimização
    • Profiling e diagnóstico
    • Memory leaks
    • CPU-bound vs I/O-bound
    • Cluster module
    • PM2 e gestão de processos
  • Debugging
    • Chrome DevTools Inspector
    • Node.js Debugger
    • Inspeção remota
  • Segurança
    • Práticas seguras
    • Dependências seguras
    • Validação e sanitização
    • Vulnerabilidades comuns
  • Testabilidade
    • Testes unitários
    • Testes de integração
    • Mocking e stubbing

Ferramentas e Ecossistema

Bibliotecas e ferramentas essenciais

  • Bibliotecas utilitárias
    • Lodash/Underscore
    • date-fns/moment
    • axios/got/node-fetch
  • Processamento
    • Child processes
    • Worker threads
    • Bibliotecas de paralelismo
  • Templating engines
    • EJS, Pug, Handlebars
  • Logging e monitoramento
    • Winston, Pino
    • Sentry, New Relic
  • Ambientes e configuração
    • dotenv, config
    • cross-env
Dica

Entender profundamente o modelo de execução assíncrona e o Event Loop do Node.js é crucial para desenvolver aplicações eficientes e evitar problemas de performance.

Frameworks Backend

Express.js

Framework web minimalista para Node.js

  • Fundamentos
    • Roteamento
    • Middleware
    • Request e Response
    • Error handling
  • Middleware essenciais
    • body-parser
    • cors
    • compression
    • helmet
    • morgan
  • Organização de código
    • Estrutura de pastas
    • Models, Views, Controllers
    • Roteadores
    • Serviços
  • Integração com banco de dados
  • Template engines

NestJS

Framework progressivo para aplicações escaláveis

  • Arquitetura
    • Módulos
    • Controladores
    • Providers e Serviços
    • Injeção de dependências
  • Decorators
    • Class decorators
    • Method decorators
    • Parameter decorators
    • Custom decorators
  • Features avançadas
    • DTOs e validação
    • Pipes, Guards, Interceptors
    • Exceções e filters
    • Microserviços
    • GraphQL
    • WebSockets
  • Testing
    • Unit testing
    • E2E testing
    • Test fixtures

Alternativas Node.js

Outros frameworks populares

  • Fastify
    • Foco em performance
    • Validação de esquema integrada
    • Sistema de plugins
    • TypeScript support
  • Koa.js
    • Successor espiritual do Express
    • Middleware cascading
    • Suporte nativo a async/await
  • Hapi.js
    • Framework enterprise-focused
    • Configuração sobre código
    • Validação, autenticação integradas
  • Adonis.js
    • Framework full-stack inspirado no Laravel
    • ORM integrado
    • Auth, validação e mais built-in

Outras Linguagens Backend

Alternativas ao Node.js

  • Python
    • Django (framework full-stack)
    • FastAPI (API modernas e rápidas)
    • Flask (microframework)
  • Java
    • Spring Boot
    • Quarkus
    • Micronaut
  • Go
    • Gin
    • Echo
    • Fiber
  • Ruby on Rails
  • PHP (Laravel, Symfony)
  • C# (.NET Core)
  • Rust (Actix, Rocket)
Atenção

Frameworks diferentes são otimizados para diferentes casos de uso. Express é ótimo para APIs simples e prototipagem, enquanto NestJS é melhor para aplicações empresariais complexas.

Autenticação & Segurança

Autenticação

Sistemas para identificação de usuários

  • Métodos de autenticação
    • Baseada em tokens (JWT)
    • Sessões e cookies
    • API Keys
    • OAuth 2.0 / OpenID Connect
    • Autenticação multifator (MFA)
    • Autenticação passwordless
  • JWT (JSON Web Tokens)
    • Estrutura e payload
    • Assinatura e verificação
    • Refresh tokens
    • Armazenamento seguro
    • Revogação
  • Bibliotecas e ferramentas
    • Passport.js
    • Auth0 / Supabase Auth
    • jsonwebtoken
    • express-session

Autorização

Controle de acesso a recursos

  • Modelos de controle de acesso
    • Role-Based Access Control (RBAC)
    • Attribute-Based Access Control (ABAC)
    • Policy-Based Access Control
    • Controle de acesso granular
  • Implementação
    • Middleware de autorização
    • Verificação de permissões
    • Decoradores/anotações de acesso
  • Ferramentas
    • CASL
    • accesscontrol
    • OSO
    • Permify

Segurança Web

Proteção contra vulnerabilidades

  • OWASP Top 10
    • Injection (SQL, NoSQL, command)
    • Broken Authentication
    • Cross-Site Scripting (XSS)
    • Cross-Site Request Forgery (CSRF)
    • Security Misconfigurations
  • Headers de segurança
    • Content Security Policy (CSP)
    • CORS (Cross-Origin Resource Sharing)
    • HSTS (HTTP Strict Transport Security)
    • X-XSS-Protection
    • X-Content-Type-Options
  • Técnicas de proteção
    • Input validation e sanitization
    • Parametrização de queries
    • Escape de output
    • Rate limiting
    • Logging e auditoria

Criptografia e Gerenciamento de Dados

Proteção de dados sensíveis

  • Hashing
    • Bcrypt, Argon2, Scrypt
    • Salt e fatores de trabalho
    • Hash de senhas
  • Criptografia
    • Simétrica vs Assimétrica
    • AES, RSA
    • Gerenciamento de chaves
    • Criptografia em trânsito e em repouso
  • Compliance e regulamentações
    • GDPR (Europa)
    • LGPD (Brasil)
    • CCPA (Califórnia)
    • PCI DSS (Pagamentos)
Importante

A segurança deve ser uma preocupação desde o início do desenvolvimento, não algo adicionado posteriormente. Nunca implemente seus próprios algoritmos criptográficos - use bibliotecas testadas e mantidas pela comunidade.

Desenvolvimento de APIs

RESTful APIs

Interfaces de Programação de Aplicações baseadas em REST

  • Princípios REST
    • Recursos e URIs
    • Métodos HTTP (GET, POST, PUT, DELETE)
    • Stateless
    • HATEOAS
  • Design de APIs
    • Consistência e convenções
    • Versionamento de APIs
    • Paginação e filtragem
    • Status codes HTTP
    • Formatos de resposta
  • Documentação
    • OpenAPI/Swagger
    • API Blueprint
    • RAML
    • Ferramentas de documentação
  • Testing
    • Testes unitários
    • Testes de integração
    • Testes de contrato
    • Ferramentas como Postman, Insomnia

GraphQL

Linguagem de consulta e manipulação para APIs

  • Conceitos fundamentais
    • Schema e tipos
    • Queries e Mutations
    • Resolvers
    • Subscriptions
    • Introspection
  • Implementações no Node.js
    • Apollo Server
    • GraphQL Yoga
    • TypeGraphQL
    • Nexus
  • Features avançadas
    • Fragments
    • Interfaces e Union Types
    • Dataloaders (N+1 problem)
    • Caching
    • Federation
  • Ferramentas
    • GraphQL Playground/GraphiQL
    • GraphQL Code Generator
    • Apollo Studio

Tempo Real e WebSockets

Comunicação bidirecional em tempo real

  • WebSockets
    • Protocolos e handshake
    • Implementação com ws/WebSocket
    • Comunicação full-duplex
    • Gerenciamento de conexões
  • Socket.IO
    • Eventos e namespaces
    • Rooms e broadcasting
    • Fallback para polling
    • Escalabilidade com Redis adapter
  • Alternativas
    • SSE (Server-Sent Events)
    • GraphQL Subscriptions
    • Webhooks
    • Long polling
  • Casos de uso
    • Chat e mensageria
    • Jogos multiplayer
    • Dashboards em tempo real
    • Notificações push

Arquiteturas de API

Padrões para APIs escaláveis

  • Microserviços
    • Princípios e vantagens
    • Comunicação entre serviços
    • Gateway de API
    • Discovery de serviços
  • Serverless
    • Funções como serviço (FaaS)
    • Cold start e limites
    • Composição de funções
    • Plataformas (AWS Lambda, Vercel, Netlify)
  • Event-Driven Architecture
    • Mensageria e filas
    • Publish/Subscribe
    • Event sourcing
    • CQRS
Dica

A escolha entre REST e GraphQL depende do caso de uso. REST é mais simples e amplamente adotado, enquanto GraphQL resolve problemas específicos como over-fetching e under-fetching.

Servidores Web

Fundamentos de Servidores Web

Conceitos e terminologia

  • Como funcionam os servidores web
  • Modelo de requisição-resposta
  • Métodos HTTP e cabeçalhos
  • Status codes
  • Conexões persistentes
  • HTTP/1.1 vs HTTP/2 vs HTTP/3
  • Virtual hosts
  • Web servers embutidos vs dedicados

Nginx

Servidor web de alta performance

  • Instalação e configuração básica
  • Arquitetura baseada em eventos
  • Configuração de proxy reverso
    • Balanceamento de carga
    • Upstream servers
    • Buffers e timeouts
  • SSL/TLS e HTTPS
  • Caching e compressão
  • Location blocks e matching
  • Redirecionamentos e rewrites
  • Rate limiting

Apache

Servidor web tradicional e robusto

  • Instalação e configuração
  • Arquitetura baseada em processos/threads
  • Virtual hosts
  • Módulos e extensões
  • .htaccess e configuração distribuída
  • Configuração de SSL/TLS
  • Rewrite rules
  • Autenticação e autorização

Otimização e Deployment

Configurações para produção

  • Configurações de segurança
    • Headers de segurança
    • SSL/TLS best practices
    • Prevenção de ataques comuns
  • Performance
    • Compressão (gzip, Brotli)
    • Caching e controle de cache
    • HTTP/2 e HTTP/3
    • Static file serving
  • Proxy reverso e gateway
    • Arquitetura de aplicação
    • Balanceamento de carga
    • Sticky sessions
    • WebSockets proxying
  • Monitoramento e logs
    • Configuração de logs
    • Análise de logs
    • Health checks
Atenção

Em produção, geralmente não é recomendado expor diretamente seu aplicativo Node.js à internet. Use um servidor web como Nginx como proxy reverso na frente da sua aplicação.

Bancos de Dados

Bancos Relacionais (SQL)

Fundamentos SQL

Linguagem para bancos de dados relacionais

  • Estrutura e sintaxe
    • DDL (CREATE, ALTER, DROP)
    • DML (INSERT, UPDATE, DELETE)
    • DQL (SELECT, JOIN, GROUP BY)
    • DCL (GRANT, REVOKE)
    • TCL (COMMIT, ROLLBACK)
  • Modelagem relacional
    • Tabelas e relações
    • Chaves primárias e estrangeiras
    • Normalização (1NF a 5NF)
    • Índices e constraints
    • Transações e ACID
  • Consultas avançadas
    • JOINs (INNER, LEFT, RIGHT, FULL)
    • Subqueries e CTEs
    • Window functions
    • Funções agregadas
    • Otimização de queries

PostgreSQL

Sistema de banco de dados relacional avançado

  • Instalação e administração
    • Setup e configuração
    • pgAdmin e interfaces
    • Roles e permissões
    • Backups e restauração
  • Features exclusivas
    • Tipos de dados avançados (JSON, ARRAY, HSTORE)
    • Herança de tabelas
    • Extensões (PostGIS, TimescaleDB)
    • Funções e procedimentos armazenados
    • Triggers e rules
    • Full-text search
  • Performance
    • EXPLAIN e plano de execução
    • Indexação avançada
    • Particionamento
    • Configuração e tuning

MySQL / MariaDB

Sistemas de banco de dados relacionais populares

  • Instalação e configuração
  • Administração básica e ferramentas
  • Engines de armazenamento
    • InnoDB
    • MyISAM
    • Diferenças e casos de uso
  • Replicação e alta disponibilidade
  • Otimização de performance
    • Índices e estratégias
    • Query optimization
    • Cache e buffers
  • MariaDB vs MySQL
    • Diferenças e vantagens
    • Features adicionais

ORM (Object-Relational Mapping)

Integração de banco de dados com aplicações

  • Conceitos ORM
    • Mapeamento objeto-relacional
    • Entity relationships
    • Active Record vs Data Mapper
    • Lazy loading vs Eager loading
    • Migrações
  • Prisma
    • Schema e models
    • Migrations
    • CRUD e queries
    • Relations e nested queries
  • TypeORM
    • Entities e decorators
    • Repositories
    • Relations e lazy loading
    • Query builder
  • Sequelize
    • Models e instâncias
    • Hooks e validação
    • Associations
    • Queries e finders
  • Outros ORMs populares
    • Knex.js (query builder)
    • MikroORM
    • Objection.js
Dica

Mesmo usando um ORM, é importante entender SQL e o funcionamento dos bancos de dados relacionais. Em cenários complexos ou de alta performance, você frequentemente precisará escrever SQL customizado.

Bancos Não-Relacionais (NoSQL)

Bancos de Documentos

MongoDB e similares

  • MongoDB
    • Instalação e configuração
    • CRUD operations
    • Esquema flexível
    • Aggregation pipeline
    • Índices e performance
    • Transactions
    • Sharding e replicação
    • MongoDB Atlas (cloud)
  • Mongoose (ODM)
    • Schemas e models
    • Validação
    • Middleware/hooks
    • Populate/references
    • Queries e operations
  • Firebase Firestore
    • Document-collection model
    • Real-time updates
    • Security rules
    • Queries e limitações

Bancos Chave-Valor

Redis e similares

  • Redis
    • Estruturas de dados: Strings, Lists, Sets, Hashes, Sorted Sets
    • Persistência (RDB, AOF)
    • Pub/Sub
    • Transactions
    • Lua scripting
    • Expiração e TTL
    • Clustering e sharding
  • Casos de uso
    • Caching
    • Rate limiting
    • Filas e messaging
    • Leaderboards e contadores
    • Session store
    • Throttling e deduplicação
  • Integrações
    • Node.js clients (ioredis, node-redis)
    • Redis Stack (RedisSearch, RedisJSON)
    • Monitoramento e administração

Outros Tipos NoSQL

Bancos de colunas, grafos e mais

  • Bancos de colunas
    • Cassandra
    • ScyllaDB
    • Casos de uso: Big Data, séries temporais
  • Bancos de grafos
    • Neo4j
    • Cypher Query Language
    • Casos de uso: Redes sociais, recomendações, rotas
  • Time-series databases
    • InfluxDB
    • TimescaleDB (extensão PostgreSQL)
    • Casos de uso: IoT, métricas, monitoramento
  • Bancos wide-column
    • HBase
    • Casos de uso: Análise de grandes volumes

Padrões de Uso NoSQL

Boas práticas e considerações

  • Modelagem de dados
    • Embedding vs referencing
    • Desnormalização
    • Modelagem orientada a consultas
    • Schema design patterns
  • Desafios e considerações
    • Consistência eventual
    • Transações
    • ACID vs BASE
    • Teorema CAP
    • Escalabilidade
  • Soluções multi-modelo
    • ArangoDB
    • FaunaDB
    • CosmosDB (Azure)
Atenção

Escolha o tipo de banco de dados com base nos requisitos do seu projeto, não nas tendências. Bancos NoSQL não são substitutos universais para bancos relacionais - cada tipo tem seus casos de uso ideais.

Padrões e Conceitos

Modelagem de Dados

Princípios e estratégias

  • Princípios de modelagem
    • Modelagem conceitual, lógica e física
    • Entidade-Relacionamento (ER)
    • UML para banco de dados
    • Normalização vs desnormalização
  • Estratégias em diferentes paradigmas
    • Relacional: normalização, índices, constraints
    • Documento: embedding vs referencing
    • Grafo: nodes, edges, propriedades
    • Chave-valor: estrutura de chaves, namespaces
  • Padrões comuns
    • Polimorfismo
    • Árvores e hierarquias
    • Muitos-para-muitos
    • Histórico e auditoria
    • Soft delete
    • Particionamento vertical e horizontal

Caching

Estratégias para otimização de desempenho

  • Tipos de cache
    • Cache na aplicação (in-memory)
    • Cache distribuído
    • Cache em camadas
    • Cache de consulta
    • Full-page cache
    • CDN
  • Estratégias de cache
    • Cache-aside (lazy loading)
    • Write-through
    • Write-behind (write-back)
    • Refresh-ahead
  • Políticas de invalidação
    • Time-based (TTL)
    • Event-based
    • LRU, LFU, FIFO
  • Implementações
    • Redis
    • Memcached
    • Node-cache
    • Bibliotecas de caching

Migrações e Versionamento

Gerenciamento de evolução do esquema

  • Fundamentos de migrações
    • Versionamento de esquema
    • Migrações reversíveis (up/down)
    • Estados e transições
    • Migrações automatizadas vs manuais
  • Ferramentas de migração
    • TypeORM migrations
    • Sequelize migrations
    • Prisma migrations
    • Knex migrations
    • node-pg-migrate
    • Flyway, Liquibase (Java)
  • Boas práticas
    • Migrações em ambientes de produção
    • Estratégias sem downtime
    • Rollback e planejamento de contingência
    • Testes de migração
    • Integração com CI/CD

Arquiteturas Avançadas

Padrões para sistemas complexos

  • Multi-tenancy
    • Banco de dados compartilhado
    • Schema compartilhado
    • Banco de dados dedicado
    • Implementações híbridas
  • Sharding
    • Estratégias de sharding
    • Sharding horizontal e vertical
    • Chave de sharding
    • Balanceamento e rebalanceamento
  • Padrões event-sourcing e CQRS
    • Event store
    • Projeções
    • Separação de leitura e escrita
    • Event streaming com Kafka
  • Polyglot persistence
    • Utilizar múltiplos tipos de bancos
    • Consistência entre bancos
    • Transações distribuídas
    • Casos de uso
Dica

Considere o caching desde o início do desenvolvimento. Um sistema de cache bem implementado pode reduzir drasticamente a carga no banco de dados e melhorar significativamente a performance da aplicação.

DevOps & Infraestrutura

Deployment & Hosting

Ambientes e Configuração

Gerenciamento de diferentes ambientes

  • Ambientes de desenvolvimento
    • Local, desenvolvimento, staging, produção
    • Paridade de ambientes
    • Ambientes efêmeros (PR previews)
  • Gestão de configuração
    • Variáveis de ambiente
    • Secrets management
    • Configuration as code
    • Feature flags
  • Infrastructure as Code (IaC)
    • Terraform
    • AWS CloudFormation
    • Pulumi
    • Ansible

Plataformas de Hospedagem

Serviços para deploy de aplicações

  • Plataformas Serverless
    • Vercel
    • Netlify
    • AWS Lambda + API Gateway
    • Google Cloud Functions
    • Azure Functions
  • PaaS (Platform as a Service)
    • Heroku
    • Railway
    • Render
    • Google App Engine
    • AWS Elastic Beanstalk
  • IaaS (Infrastructure as a Service)
    • AWS EC2
    • Google Compute Engine
    • DigitalOcean Droplets
    • Linode
    • Azure Virtual Machines
  • Serviços gerenciados
    • AWS RDS (bancos de dados)
    • MongoDB Atlas
    • Supabase
    • Firebase

Deployment Strategies

Técnicas para deploy seguro e confiável

  • Estratégias de release
    • Big bang deployment
    • Rolling updates
    • Blue-green deployment
    • Canary releases
    • Feature toggles
  • Continuous Integration (CI)
    • Testes automatizados
    • Code quality checks
    • Build e artifacts
    • Integração com VCS
  • Continuous Deployment (CD)
    • Pipeline de deployment
    • Aprovações e gates
    • Rollback automatizado
    • Monitoramento pós-deploy

Monitoramento e Logging

Sistemas para observabilidade

  • Logging
    • Estruturação de logs
    • Níveis de log
    • Log rotation
    • Agregação de logs
    • ELK Stack (Elasticsearch, Logstash, Kibana)
    • Fluentd/Fluent Bit
  • Métricas e monitoramento
    • Prometheus e Grafana
    • Datadog
    • New Relic
    • CloudWatch (AWS)
    • Dashboards e alertas
  • APM (Application Performance Monitoring)
    • Rastreamento de transações
    • Profiling
    • Análise de latência
    • Distributed tracing
    • OpenTelemetry
  • Alerting e on-call
    • Definição de thresholds
    • PagerDuty
    • OpsGenie
    • Escalações e rotatividade
Importante

Independentemente da plataforma de hospedagem escolhida, sempre considere aspectos como custos recorrentes, vendor lock-in, suporte, conformidade, escalabilidade e limites operacionais.

Containerização

Docker

Plataforma de containers

  • Conceitos fundamentais
    • Containers vs. VMs
    • Imagens e camadas
    • Dockerfile
    • Volumes
    • Rede e comunicação
  • Comandos e operações
    • Build, run, stop, exec
    • Gerenciamento de imagens
    • Logs e debugging
    • Tag e versionamento
    • Registry e distribuição
  • Boas práticas
    • Multi-stage builds
    • Imagens mínimas
    • Segurança de containers
    • Health checks
    • Otimização de performance
  • Node.js em containers
    • Configuração ideal
    • Gerenciamento de dependências
    • Gestão de sinais e graceful shutdown

Docker Compose

Orquestração multi-container

  • Conceitos básicos
    • docker-compose.yml
    • Serviços e dependências
    • Networks
    • Volumes
    • Environment variables
  • Comandos e operações
    • up, down, build, logs
    • exec, run
    • restart policies
    • scale
  • Desenvolvimento local
    • Ambientes dev vs prod
    • Bind mounts para código
    • Hot reloading
    • Debugging
  • Aplicações completas
    • Frontend + Backend + DB
    • Serviços auxiliares
    • Profiles e Extends

Kubernetes

Orquestração de containers em escala

  • Arquitetura
    • Control plane e Data plane
    • Nodes, Pods, Containers
    • Deployments, StatefulSets, DaemonSets
    • Services, Ingress
    • ConfigMaps, Secrets
    • Namespaces
    • RBAC (Role-Based Access Control)
  • Operações básicas
    • kubectl
    • YAML manifests
    • Deployments e rollbacks
    • Logs e debugging
    • Port forwarding
  • Armazenamento
    • Volumes
    • PersistentVolumes e PersistentVolumeClaims
    • StorageClasses
  • Networking
    • Cluster Networking
    • Service Discovery
    • Network Policies

Kubernetes Avançado

Conceitos avançados e extensões

  • Helm
    • Charts e templates
    • Valores e configuração
    • Releases e rollbacks
    • Repositories
  • Operadores
    • Custom Resources
    • Operator Framework
    • Casos de uso
  • Service Mesh
    • Istio
    • Linkerd
    • Traffic management
    • mTLS
  • Plataformas gerenciadas
    • EKS (AWS)
    • GKE (Google Cloud)
    • AKS (Azure)
    • DigitalOcean Kubernetes
Atenção

Kubernetes é uma excelente solução para orquestração de containers em grande escala, mas introduz complexidade significativa. Para aplicações menores, considere soluções mais simples como Docker Compose ou serviços gerenciados.

CI/CD

GitHub Actions

CI/CD integrado ao GitHub

  • Conceitos fundamentais
    • Workflows e Eventos
    • Jobs e Steps
    • Actions
    • Runners
    • Ambientes
  • Configuração
    • YAML Syntax
    • Triggers e filtros
    • Secrets e variáveis
    • Caching e performance
    • Matrix builds
  • Workflows comuns
    • Testes e linting
    • Build e release
    • Deploy para ambientes
    • Container builds
    • Scheduled jobs
  • Integrações
    • Vercel, Netlify, Heroku
    • AWS, GCP, Azure
    • Docker e registries
    • Dependabot

GitLab CI

CI/CD integrado ao GitLab

  • Conceitos básicos
    • Pipelines e stages
    • Jobs e runners
    • .gitlab-ci.yml
    • Variáveis e secrets
    • Artifacts e caching
  • Features avançadas
    • Multi-project pipelines
    • Parent-child pipelines
    • DAG (directed acyclic graph)
    • Release management
    • Environments e deployments
  • Integrações
    • Container Registry
    • Package Registry
    • Security scanning
    • Kubernetes integration

Jenkins

Servidor de automação open-source

  • Arquitetura
    • Master e nodes
    • Jobs e builds
    • Plugins
    • Pipelines
    • Credentials
  • Jenkinsfile
    • Declarative vs Scripted
    • Stages e Steps
    • Parallel execution
    • Shared libraries
  • Integrações
    • SCM (Git, SVN)
    • Build tools
    • Test frameworks
    • Docker e Kubernetes

Práticas de CI/CD

Padrões e estratégias

  • Testes automatizados
    • Unit, integration, e2e
    • Cobertura de código
    • Paralelização
    • Test reports
  • Quality gates
    • Linting e formatação
    • Análise estática
    • Security scanning
    • Threshold enforcement
  • Deployment
    • Ambientes múltiplos
    • Promoção entre ambientes
    • Blue-Green e Canary
    • Rollback automático
  • DevSecOps
    • SAST (Static Application Security Testing)
    • DAST (Dynamic Application Security Testing)
    • Dependency scanning
    • Container scanning
Dica

GitHub Actions é excelente para começar com CI/CD, especialmente se seus projetos já estão no GitHub. Ele oferece um bom equilíbrio entre facilidade de uso e recursos avançados.