DevOps
& SRE.
DevOps
& SRE.
Plataforma interna que o time do cliente opera sem nós no meio. Pipeline com revisão por PR, deploy contínuo com canary, error budget que alguém respeita. Começa com postmortem do que está quebrando hoje, termina com runbook na wiki do cliente.
An internal platform the client team operates without us in the middle. PR-reviewed pipeline, continuous canary deploys, an error budget someone respects. Starts with a postmortem of what is broken today, ends with the runbook in the client's wiki.
Self-service que o dev usa. Sem ticket de infra.
Plataforma interna de desenvolvedor não é Backstage instalado. É um conjunto pequeno de golden paths que cobre 80% do que o time precisa fazer toda semana — provisão de serviço, deploy, observabilidade, secret rotation — com defaults seguros e fuga prevista para os outros 20%.
- 01
Catálogo & ownership claro
Backstage ou Port com inventário vivo dos serviços. Quem mantém, em qual SLO, com qual on-call. Atualiza sozinho a partir do Git — não fica desatualizado.
- 02
Golden paths que viram template
Novo serviço HTTP, novo job batch, nova função stream. Cookiecutter + workflow + dashboards prontos. Day-zero tem CI verde, deploy em staging e métrica chegando.
- 03
Self-service guardrails
Provisão de bucket, fila, banco efêmero, ambiente de PR. Por API, com policy. Sem abrir Jira de infra para nada do dia-a-dia.
- 04
Secret & credential management
Vault, Doppler, AWS Secrets, OCI Vault. Rotação automática, audit trail, OIDC para CI/CD. Senha em variável de ambiente é cheiro de sistema antigo — a gente arruma.
- 05
Métricas DORA reais
Lead time, deploy frequency, change failure rate, MTTR. Coletadas do pipeline real, não preenchidas em planilha. Fica visível pra todo mundo.
- 06
Documentação que o dev lê
Markdown ao lado do código, exemplos copiáveis, ADR para decisões. Confluence intransitável não conta como documentação.
Deploy contínuo com canary. Rollback que dispara sozinho.
Pipeline não é "Jenkins com 28 plugins". É contrato versionado entre dev e operação: o que entra em produção, em que velocidade, com qual rede de proteção. GitOps resolve a parte fácil — declarativo, reconciliação. A parte difícil é o que fazer quando o canary degrada o p95.
CI matricial, OIDC para cloud, cache reproduzível. Workflow versionado por path.
Para cliente self-hosted. Runners dedicados, review apps por MR, deploy auto em homolog.
GitOps puro. Canary por header, por porcentagem, por região. Análise automática contra Prometheus — rollback se p95 ou error rate degradar.
Quando o cliente prefere modelo pull-only. Image automation, Helm controller, multi-tenant.
Quando o legado pede. Migração gradual para o que serve, sem big-bang descabido.
Build assinado, audit trail.
- 01
Trunk-based + branch-by-flag
Branches longos morrem em dia 5. Feature flag (Unleash, LaunchDarkly, ConfigCat) faz o resto. Deploy desacopla de release — quem libera é o produto, não o pipeline.
- 02
Canary que mede o que importa
Análise automática contra Prometheus: latency p95, error rate, saturation, métrica de negócio. Se piorou, rollback. Sem humano no loop para o caminho feliz.
- 03
Promotion entre ambientes
Mesmo artefato (mesmo SHA) percorre dev → staging → prod. Sem rebuild. Sem "funciona em homolog mas em prod não".
- 04
Supply chain assinado
Build em runner efêmero, imagem assinada com cosign, SBOM gerado, política de admission no cluster. Quem deployou, com qual SHA, em qual hora — auditável.
- 05
Database migration coordenada
Schema migration entra antes do código que depende, em backward-compatible. Nunca quebra deploy por causa de banco. Para casos difíceis, integramos com a prática de Dados.
Quando faz sentido. Quando não, a gente diz.
Kubernetes resolve um problema específico: orquestrar muitos serviços com requisitos de scheduling não-triviais. Para 4 microsserviços e um job, ECS Fargate ou Cloud Run é melhor escolha — e a gente fala isso. Quando o caso pede K8s, a gente opera com a régua dos times que sustentam isso há 8+ anos.
- 01
Managed quando dá
EKS, AKS, OKE, GKE. Self-hosted só quando regulação ou ar-gapped exige. Operar control plane não é hobby — é custo.
- 02
Multi-cluster, não multi-tenant fingido
Cluster por blast radius, não por time. Argo CD ou Rancher para gestão. Service mesh só quando o problema dele aparece.
- 03
Service mesh quando cabe
Istio, Linkerd, Cilium. Mutual TLS, policy de tráfego, observabilidade L7. Não instala porque é tendência — instala se mTLS é requisito ou tráfego inter-serviço justifica.
- 04
Autoscaling honesto
HPA por métrica de negócio (RPS, queue depth) — não só CPU. KEDA para event-driven. Cluster autoscaler com node pools por classe.
- 05
Resource governance
Requests/limits que correspondem ao que o serviço usa. PriorityClass, PDB, QoS. OOMKill às 3h tem causa raiz, não fica como ruído.
- 06
Upgrade sem terror
Versão N-1 sempre. Plano de upgrade testado em cluster de staging. Operadores com compatibilidade verificada antes de mexer.
SLI ligado ao negócio. Error budget que alguém respeita.
Observabilidade não é "Datadog instalado". É o engenheiro de plantão abrir uma página e responder em 90 segundos: está quebrado? para quem? desde quando? o que mudou? Para isso, a stack tem que ser opinionada — não 14 ferramentas concorrentes lidas em série.
Coleta pull, label-based, recording rules para o que repete. Federation por região quando precisa.
Indexa label, não corpo. Custo de retenção compatível com long tail. LogQL alinhado com PromQL.
Sampling inteligente, exemplars do Prometheus pulam direto pra trace relevante. OTLP nativo.
13 meses de métrica em S3 por custo de hot-set. Multi-tenant para holdings com várias unidades.
Dashboard versionado em git, alerta com runbook embutido, anotação de deploy. Single pane de verdade.
- O·01
SLI com critério
Disponibilidade medida no que o usuário sente — não em ping. Login funciona, checkout completa, relatório carrega abaixo de 4s. SLI sintético + RUM para o que importa.
- O·02
SLO acordado com produto
99,9% de checkout em janela de 30 dias é mais útil que 99,99% de "tudo". O número sai de uma conversa entre eng e produto — não cai do céu.
- O·03
Error budget como freio
Queimou o budget? Deploy congela, prioridade vira confiabilidade. Acordado em contrato, não negociado a quente. Funciona porque tem trava.
- O·04
Stack opinionada
Prometheus + Grafana + Loki + Tempo, ou Datadog, ou New Relic. Uma escolha por cliente, integrada. OpenTelemetry como protocolo — sem lock-in de SDK.
- O·05
Alerta com contexto
Disparo carrega: dashboard relevante, runbook do incidente parecido anterior, último deploy, owner. Não chega "CPU alta" — chega "checkout p95 acima de 2s desde 03:14, último deploy às 02:51, runbook anexo".
- O·06
Chaos & load engineering
Game day trimestral. k6/Gatling para carga, LitmusChaos/AWS FIS para falha. Hipótese antes do experimento. Resultado vira backlog.
Tudo que existe foi declarado. Tudo que muda passa por PR.
Infrastructure as code não é sobre a ferramenta — é sobre o hábito. Mudança de produção entra por pull request, com plan visível, revisão por alguém que entende, e aplicação em janela. Console é para diagnóstico, não para mudança.
Terraform · OpenTofu
Padrão para infra de cloud. Módulos versionados, remote state com lock, plan em CI revisado por humano. Workspaces por ambiente.
Pulumi
Para times que já vivem em TypeScript ou Python e ganham reaproveitando código de domínio. Mesmo provider model do Terraform por baixo.
Crossplane
Plataforma interna que entrega Composite Resources ao dev. Pede um banco PostgreSQL com 3 linhas de YAML; recebe RDS provisionado, secret rotacionado, dashboard publicado.
Ansible
Configuração de host quando ainda existe host. Bare-metal, on-prem, fleet de VM. Idempotente, audit trail, rotinas reutilizáveis.
Argo Workflows · Temporal
Orquestração de pipelines longos: ETL diário, rotinas DBA, jobs de migração. Retry, backoff, observabilidade. Cron + bash não é orquestração.
Policy as code
OPA/Gatekeeper, Conftest, Checkov. Política versionada, testada em CI, aplicada em admission. Compliance que vive no repo, não em PDF.
- 01
State seguro & auditável
Remote state com lock, criptografia at-rest, audit log de quem aplicou o quê. Drift detection rodando diário.
- 02
Módulos versionados
Registry interno, semver, changelog. Dev consome v1.4.2, não main. Refatoração não quebra ambiente.
- 03
Plan obrigatório no PR
Bot posta o diff de infra no comentário. Reviewer vê o que vai mudar antes de aprovar. Apply só em main, com janela.
- 04
Reaplicável em qualquer região
Mesmo código provisiona na us-east-1 e na sa-east-1. Sem hard-code, sem dado regional disperso. DR vira exercício real, não plano em PDF.
Conta de cloud previsível. Sem reserva no escuro.
FinOps não é planilha de fim de mês com gráfico vermelho. É hábito diário com três frentes: visibilidade (cada dólar com dono e produto), otimização (rightsizing, savings plan, descomissionamento) e governança (orçamento por equipe, alerta antes de estourar). A meta é o time de produto tomar decisão técnica sabendo o custo dela — em PR, não em retrospectiva trimestral.
- 01
Visibilidade granular & tagging
Tag policy aplicada por OPA antes de provisionar. Custo por equipe, por produto, por ambiente. Showback mensal automático — cada gestor recebe o que sua área consumiu, sem pedir.
- 02
Custo de Kubernetes resolvido
OpenCost ou KubeCost agregando uso real por namespace e label. Workload compartilhado é rateado por CPU·hora e GB-mês — não dividido na unha em planilha.
- 03
Rightsizing contínuo
Recomendação semanal por workload: instância superdimensionada, volume gp2 que vira gp3, RDS com IOPS provisionado ocioso. Implementação por PR, com aprovação do dono.
- 04
Savings Plans & Reservations
Cobertura calculada com base na linha de base real, não em estimativa do vendor. Compromisso parcial (60–70% da base), spot/preemptive para picos. Recompra automatizada.
- 05
Orçamento & alerta proativo
Budget por equipe com alerta em 50/75/90/100%. Anomaly detection (Cost Explorer, Cloud Billing, OCI Cost Analysis) avisa antes do humano notar.
- 06
Custo no PR
Infracost no pipeline. Mudança de Terraform mostra +US$ 412/mês no comentário antes do merge. Decisão arquitetural sai informada — não em ticket de surpresa.
- 07
Descomissionamento ativo
Snapshot órfão, EBS desanexado, IP elástico parado, ambiente de staging esquecido. Auditoria mensal corta gordura — em média 11–18% da fatura nos primeiros 3 meses.
Engenheiro com nome. Não número de chamado.
Plantão de SRE em formato de catraca de nível 1 com upsell não funciona — só vira ponte até alguém sênior ser acordado. Aqui o sênior está acordado desde o primeiro alerta, com contexto, com histórico e com autonomia para corrigir. Não só escalar.
- P·01
SLA formal por severidade
Sev1 — toque mediano em 4 min (P95 7 min nos últimos 12 meses), mitigação em 30 min. Sev2 — toque em 15 min. Contrato define alvo formal e multa quando aplicável.
- P·02
On-call rotation transparente
Você sabe o nome de quem está no plantão da semana. Calendário compartilhado. Se prefere alguém específico, a gente combina.
- P·03
Runbook na wiki do cliente
Não na nossa. Atualizado a cada incidente. Alguém além de nós consegue ler, executar e — se quiser — sair sem dependência.
- P·04
Postmortem em 5 dias úteis
Sev1 e Sev2 obrigatório. Escrito por quem estava no incidente. Blameless, com ação de engenharia, owner e prazo. Vira backlog priorizado.
- P·05
Game day trimestral
Failover ensaiado, perda de dependência simulada, AZ derrubada em ambiente espelho. DR que ninguém testou não existe.
- P·06
Sem lock-in
Contrato anual, mas saída em 30 dias com handover. Recontrata se for melhor que as alternativas — não por inércia.
Hype não vai pra produção.
- NÃO
Kubernetes para 3 microsserviços
ECS Fargate, Cloud Run, Container Apps resolvem com menos custo cognitivo. K8s entra quando o problema dele aparece — não antes.
- NÃO
Service mesh "porque é boas práticas"
Mesh resolve mTLS forçado, policy de tráfego e observabilidade L7. Se nenhum dos três é requisito, é overhead disfarçado.
- NÃO
Migração big-bang de Jenkins
Strangler fig. Pipeline crítico fica até o último, novos times nascem na stack nova, descomissionamento gradual. Big-bang é receita de incidente.
- NÃO
SRE como rebranding de NOC
Plantão sem error budget, sem SLO, sem postmortem é catraca. Se é isso que precisa, um terceirão resolve por metade do preço.
Self-service the dev actually uses. No infra ticket.
An internal developer platform isn't "Backstage installed". It is a small set of golden paths covering 80% of what the team does every week — service provisioning, deploy, observability, secret rotation — with safe defaults and a known escape hatch for the other 20%.
- 01
Catalog & clear ownership
Backstage or Port with a live inventory of services. Who maintains, on which SLO, with which on-call. Updates itself from Git — it does not go stale.
- 02
Golden paths that become templates
New HTTP service, new batch job, new stream function. Cookiecutter + workflow + dashboards ready. Day-zero ships green CI, staging deploy, and metrics flowing.
- 03
Self-service guardrails
Bucket, queue, ephemeral database, PR environment — provisioned via API, with policy. No daily Jira tickets to infra.
- 04
Secret & credential management
Vault, Doppler, AWS Secrets, OCI Vault. Automatic rotation, audit trail, OIDC for CI/CD. Passwords in environment variables smell like a legacy system — we fix that.
- 05
Real DORA metrics
Lead time, deploy frequency, change failure rate, MTTR. Collected from the real pipeline, not typed into a spreadsheet. Visible to everyone.
- 06
Docs developers actually read
Markdown next to the code, copyable examples, ADRs for decisions. Impassable Confluence does not count as documentation.
Continuous canary deploy. Rollback that fires on its own.
A pipeline isn't "Jenkins with 28 plugins". It is a versioned contract between dev and ops: what reaches production, how fast, with which safety net. GitOps handles the easy part — declarative, reconciliation. The hard part is what to do when the canary degrades p95.
Matrix CI, OIDC to cloud, reproducible cache. Workflow versioned per path.
For self-hosted clients. Dedicated runners, review apps per MR, auto-deploy to staging.
Pure GitOps. Canary by header, percentage, region. Automatic analysis against Prometheus — rollback if p95 or error rate degrades.
When the client prefers a pull-only model. Image automation, Helm controller, multi-tenant.
When the legacy demands it. Gradual migration to what works, no reckless big-bang.
Signed build, audit trail.
- 01
Trunk-based + branch-by-flag
Long-lived branches die on day 5. Feature flags (Unleash, LaunchDarkly, ConfigCat) do the rest. Deploy decouples from release — the product decides what ships, not the pipeline.
- 02
Canary that measures what matters
Automatic analysis against Prometheus: p95 latency, error rate, saturation, business metric. If it got worse, rollback. No human in the loop on the happy path.
- 03
Promotion across environments
Same artifact (same SHA) flows dev → staging → prod. No rebuild. No "it works in staging but not in prod".
- 04
Signed supply chain
Build on ephemeral runner, cosign-signed image, generated SBOM, admission policy in the cluster. Who deployed, which SHA, at which time — auditable.
- 05
Coordinated database migration
Schema migration lands before dependent code, backward-compatible. Never breaks the deploy because of the database. For hard cases we integrate with the Data practice.
When it makes sense. When it doesn't, we say so.
Kubernetes solves a specific problem: orchestrating many services with non-trivial scheduling requirements. For 4 microservices and one job, ECS Fargate or Cloud Run is the better choice — and we say so. When the case calls for K8s, we operate it with the standards of teams that have run it for 8+ years.
- 01
Managed when possible
EKS, AKS, OKE, GKE. Self-hosted only when regulation or air-gapped requires it. Operating the control plane isn't a hobby — it is a cost.
- 02
Multi-cluster, not fake multi-tenant
Cluster per blast radius, not per team. Argo CD or Rancher for management. Service mesh only when its problem appears.
- 03
Service mesh when it fits
Istio, Linkerd, Cilium. Mutual TLS, traffic policy, L7 observability. Not installed because it is trendy — installed if mTLS is a requirement or inter-service traffic justifies it.
- 04
Honest autoscaling
HPA by business metric (RPS, queue depth) — not just CPU. KEDA for event-driven. Cluster autoscaler with node pools per class.
- 05
Resource governance
Requests/limits that match what the service uses. PriorityClass, PDB, QoS. OOMKill at 3 a.m. has a root cause — it doesn't become noise.
- 06
Upgrade without dread
Always N-1. Upgrade plan tested in a staging cluster. Operators with compatibility verified before touching.
SLIs tied to the business. An error budget someone respects.
Observability isn't "Datadog installed". It is the on-call engineer opening a page and answering in 90 seconds: is it broken? for whom? since when? what changed? For that, the stack must be opinionated — not 14 competing tools read in sequence.
Pull-based collection, label-based, recording rules for repeating queries. Federation per region when needed.
Indexes labels, not bodies. Retention cost compatible with long-tail. LogQL aligned with PromQL.
Smart sampling, Prometheus exemplars jump straight to the relevant trace. Native OTLP.
13 months of metrics in S3 at hot-set cost. Multi-tenant for holdings with multiple units.
Dashboards versioned in Git, alerts with embedded runbook, deploy annotations. A real single pane.
- O·01
SLI with judgement
Availability measured by what the user feels — not by ping. Login works, checkout completes, report loads under 4s. Synthetic SLI + RUM for what matters.
- O·02
SLO agreed with product
99.9% checkout in a 30-day window is more useful than 99.99% of "everything". The number comes from a conversation between engineering and product — not from thin air.
- O·03
Error budget as guardrail
Budget burned? Deploys freeze, priority becomes reliability. Agreed in contract, not negotiated in the heat. It works because there is a brake.
- O·04
Opinionated stack
Prometheus + Grafana + Loki + Tempo, or Datadog, or New Relic. One choice per client, integrated. OpenTelemetry as the protocol — no SDK lock-in.
- O·05
Alerts with context
An alert carries: relevant dashboard, runbook from a similar prior incident, last deploy, owner. "CPU high" doesn't arrive — what arrives is "checkout p95 above 2s since 03:14, last deploy at 02:51, runbook attached".
- O·06
Chaos & load engineering
Quarterly game day. k6/Gatling for load, LitmusChaos/AWS FIS for failure. Hypothesis before the experiment. The result becomes backlog.
Everything that exists was declared. Everything that changes goes through a PR.
Infrastructure as code isn't about the tool — it is about the habit. Production change enters via pull request, with a visible plan, reviewed by someone who understands it, applied in a window. Console is for diagnosis, not for change.
Terraform · OpenTofu
Standard for cloud infra. Versioned modules, remote state with lock, plan in CI reviewed by a human. Workspace per environment.
Pulumi
For teams already living in TypeScript or Python who win by reusing domain code. Same provider model as Terraform underneath.
Crossplane
Internal platform that ships Composite Resources to developers. Request a PostgreSQL database with 3 lines of YAML; receive a provisioned RDS, rotated secret, published dashboard.
Ansible
Host configuration when hosts still exist. Bare metal, on-prem, VM fleets. Idempotent, audit trail, reusable routines.
Argo Workflows · Temporal
Orchestration of long pipelines: daily ETL, DBA routines, migration jobs. Retry, backoff, observability. Cron + bash is not orchestration.
Policy as code
OPA/Gatekeeper, Conftest, Checkov. Versioned policy, tested in CI, applied at admission. Compliance that lives in the repo, not in a PDF.
- 01
Secure & auditable state
Remote state with lock, at-rest encryption, audit log of who applied what. Drift detection running daily.
- 02
Versioned modules
Internal registry, semver, changelog. Developers consume v1.4.2, not main. Refactoring doesn't break environments.
- 03
Plan mandatory in the PR
Bot posts the infra diff in the comment. Reviewer sees what will change before approving. Apply only on main, in a window.
- 04
Repeatable in any region
Same code provisions in us-east-1 and sa-east-1. No hard-coding, no scattered regional data. DR becomes a real exercise, not a PDF plan.
A predictable cloud bill. No reservations in the dark.
FinOps isn't an end-of-month spreadsheet with a red chart. It is a daily habit with three fronts: visibility (every dollar with an owner and product), optimization (rightsizing, savings plan, decommissioning), and governance (budget per team, alert before overrun). The goal is for the product team to make technical decisions knowing the cost — in the PR, not in a quarterly retrospective.
- 01
Granular visibility & tagging
Tag policy enforced by OPA before provisioning. Cost per team, per product, per environment. Automatic monthly showback — every manager receives what their area consumed, without asking.
- 02
Kubernetes cost solved
OpenCost or KubeCost aggregating real usage per namespace and label. Shared workload allocated by CPU·hour and GB-month — not split by hand in a spreadsheet.
- 03
Continuous rightsizing
Weekly recommendation per workload: oversized instance, gp2 volume becoming gp3, RDS with provisioned IOPS idle. Implementation via PR, with owner approval.
- 04
Savings Plans & Reservations
Coverage calculated from real baseline, not vendor estimate. Partial commitment (60–70% of base), spot/preemptive for peaks. Automated repurchase.
- 05
Budget & proactive alerts
Budget per team with alerts at 50/75/90/100%. Anomaly detection (Cost Explorer, Cloud Billing, OCI Cost Analysis) warns before a human notices.
- 06
Cost in the PR
Infracost in the pipeline. Terraform change shows +US$ 412/month in the comment before merge. Architectural decisions come out informed — not as a surprise ticket.
- 07
Active decommissioning
Orphan snapshot, detached EBS, idle elastic IP, forgotten staging environment. Monthly audit trims fat — on average 11–18% of the bill in the first 3 months.
An engineer with a name. Not a ticket number.
SRE on-call as a tier-1 turnstile with upsell doesn't work — it just bridges until someone senior is woken up. Here the senior is awake from the first alert, with context, with history, and with autonomy to fix. Not only escalate.
- P·01
Formal SLA per severity
Sev1 — 4 min median first response (P95 7 min over the last 12 months), mitigation in 30 min. Sev2 — response in 15 min. The contract defines the formal target and penalty where applicable.
- P·02
Transparent on-call rotation
You know the name of who is on-call this week. Shared calendar. If you prefer someone specific, we arrange it.
- P·03
Runbook in the client's wiki
Not in ours. Updated after every incident. Anyone besides us can read, execute, and — if they want — leave without dependency.
- P·04
Postmortem in 5 business days
Sev1 and Sev2 mandatory. Written by who was on the incident. Blameless, with engineering action, owner, and deadline. Becomes prioritized backlog.
- P·05
Quarterly game day
Rehearsed failover, dependency loss simulated, AZ taken down in a mirror environment. DR that nobody tested doesn't exist.
- P·06
No lock-in
Annual contract, but 30-day exit with handover. Renew if it's better than alternatives — not by inertia.
Hype doesn't go to production.
- NO
Kubernetes for 3 microservices
ECS Fargate, Cloud Run, Container Apps solve it with less cognitive cost. K8s enters when its problem appears — not before.
- NO
Service mesh "because best practices"
Mesh solves mandatory mTLS, traffic policy and L7 observability. If none of the three is a requirement, it is overhead in disguise.
- NO
Big-bang Jenkins migration
Strangler fig. Critical pipeline stays until last, new teams are born on the new stack, gradual decommissioning. Big-bang is a recipe for incident.
- NO
SRE as a rebranded NOC
On-call without error budget, without SLO, without postmortem is a turnstile. If that is what you need, an outsourcer solves it for half the price.
Quer uma primeira faixa antes do diagnóstico?
Want a first opportunity band before discovery?
Baixe a calculadora FinOps 90 Dias para estimar a faixa de oportunidade e os próximos três movimentos sem mandar export de billing.
Download the FinOps 90-Day calculator to estimate the opportunity band and the next three moves without sending a billing export.
Pipeline lento, deploy assustador, ou plantão sem nome? Conta o problema.
45 min com um SRE sênior. Sem pitch.
Slow pipeline, scary deploy, or nameless on-call? Tell us the problem.
45 min with a senior SRE. No pitch.