A nstech é a maior empresa de software para logística da América Latina e conecta empresas, soluções e talentos para transformar um dos setores mais essenciais da economia. Na Holding, atuamos de
forma estratégica, apoiando as empresas do grupo em temas corporativos, tecnologia, pessoas, cultura, governança e crescimento. Aqui, buscamos profissionais que queiram atuar com visão de negócio, colaboração e impacto, ajudando a sustentar a evolução do ecossistema nstech.
Sobre a Vaga
Você vai atuar na camada de processamento e orquestração da plataforma, construindo e evoluindo o framework Spark declarativo e a DagFactory que sustentam os pipelines de produção dos domínios da companhia (Veículo, Motorista, Carga, Viagem, Pessoa, Frete, Risco). Nossa plataforma é orientada a contratos: engenheiros de dados consumidores declaram pipelines em YAML (JobContract / dagfactory.yaml) e o framework renderiza DAGs do Airflow, submete jobs Spark ao Kubernetes e registra os outputs no Unity Catalog — sem boilerplate.
É um trabalho de engenharia de dados com profundidade real: você vai do design do schema de JobContract à evolução do delta-sink (liquid clustering, z-ordering, criptografia em descanso), passando por instrumentação OTEL/Prometheus, validação de contratos no PR e CI/CD da imagem Spark.
Responsabilidades e atribuições
Você vai desenvolver e evoluir o framework Spark interno em Python 3.13+ / PySpark 4.x — desde o design de contratos YAML (JobContract) até a abstração DataTask que renderiza o manifesto SparkApplication e o submete via SparkK8sOperator. Parte do trabalho é construir novas activities (sources, transforms, sinks); outra parte é evoluir a DagFactory, que abstrai infraestrutura comum — criação idempotente de catálogo/schema/tabela no Unity Catalog, triggers por schedule e por dataset-trigger (FQDN dos data assets), injeção de credenciais via Airflow Secret Manager e ownership padronizado.
No dia a dia, isso significa escrever novos transforms (DBTTransform, PythonTransform), evoluir o delta-sink com liquid clustering, z-ordering e particionamento configurável, implementar criptografia em descanso obrigatória com Spark encryption interoperável com Databricks, instrumentar jobs com logs estruturados (structlog/JSON), métricas Prometheus e traces OTEL, e manter o ciclo de deploy via GitHub Actions + GitOps (build da imagem Spark, distribuição de jobs ao pod via ConfigMap ou sync GitHub WASB + mount PV). A governança é garantida por validador de JobContract no PR — schema YAML, existência do data contract, unicidade global de FQDN, coerência de materialização (tabela vs. view) — executável também localmente via justfile. A qualidade é garantida com testes em pytest, cobertura > 80% nos novos módulos e golden files diffados no CI a cada mudança no renderer.
Engenharia com IA
- Utilizar IA generativa (Claude, Copilot, Cursor) como ferramenta de produtividade diária — geração de código, revisão, documentação e debugging
- Operar dentro de frameworks com guardrails estabelecidos pelo time, como GSD, SpecKit e Superpowers: revisão crítica de outputs gerados por IA, rastreabilidade de decisões e validação antes de merge
- Contribuir com a evolução dos próprios workflows de desenvolvimento assistido por IA do time
Stack Técnica
Python 3.13 / 3.14, Java 17 (Spark)
PySpark 4.0.1, Delta Lake 4.0, structured streaming
Apache Airflow 3.2 (Celery+Kubernetes executor, KEDA, HA)
Unity Catalog (interop Databricks)
Kafka (Confluent), Protobuf
YAML, JSON Schema, ODCS (Open Data Contract Standard)
AKS, Spark Operator v1beta2 (SparkApplication CRD)
Soda Core, pytest, golden files
OpenTelemetry(OTLP), Prometheus, Grafana, Loki, structlog
Helm, Terraform/Terragrunt, ArgoCD, Azure Key Vault
GitHub Actions, GitOps (manifests repo)
devenv (Nix), devspace, just, uv, Minikube
Requisitos e qualificações
- Sólida experiência com Python para desenvolvimento de pipelines de dados em produção
- Conhecimento em PySpark — DataFrame API, Structured Streaming, otimizações de write/read, particionamento, z-ordering
- Experiência com Delta Lake — merge, upsert, vacuum, retention, autoOptimize
- Capacidade de trabalhar com Apache Airflow — TaskFlow, Datasets, operators customizados, executors (Celery/Kubernetes), plugins
- Capacidade de escrever código Python limpo, tipado, testável e modular
- Experiência com YAML / JSON Schema — design de contratos declarativos, validação programática, mensagens de erro acionáveis
- Conforto com Docker, pipelines de CI/CD e ambientes Kubernetes (manifestos, PV/PVC, ConfigMaps, Secrets)
Diferenciais
- Experiência com Spark Operator no Kubernetes (SparkApplication CRD, submissão e lifecycle)
- Conhecimento de OpenTelemetry e observabilidade de pipelines de dados (traces, métricas, logs estruturados)
- Experiência com Kafka — produtores, consumidores, Protobuf, offsets, controle de lag em streaming
- Familiaridade com Unity Catalog ou catálogos equivalentes (registro, lineage, ownership) e interoperabilidade Databricks
- Experiência com dbt-core — manifesto, execução programática contra Spark/Delta
- Conhecimento de Data Contracts (ODCS) e arquitetura medallion (Bronze/Silver/Gold, GDR/EDR/UDR)
- Experiência com GitOps (Argo CD, Flux ou similares) e gerenciamento de releases via manifests
- Contribuição ou manutenção de frameworks/SDKs internos compartilhados entre múltiplos times
- Familiaridade com devenv (Nix), devspace, just, uv ou ferramentas equivalentes de ambiente reproduzível
- Uso consciente de ferramentas de IA para desenvolvimento (Cursor, GitHub Copilot, Claude Code) com capacidade de avaliar criticamente os outputs
Como Trabalhamos
- Decisões são documentadas em RFCs e ADRs — qualquer pessoa pode propor mudanças arquiteturais
- Implementação tem Spec (spec-kit) antes de código — design revisado e aprovado pelo time antes da primeira linha
- Backlog em português: épicos, features, PBIs e tasks no padrão do repositório
- Declarative over imperative: se um pipeline exige Python escrito pelo consumidor do framework, o framework falhou
- Golden files no CI: mudanças no renderer aparecem como diff explícito em todos os pipelines impactados
- Valorizamos autonomia com contexto: você não precisa de aprovação para agir, mas precisa compartilhar o raciocínio
- IA é uma ferramenta de times sérios — usamos com disciplina, não com ingenuidade
- Trabalhamos em inglês na documentação técnica e em português no dia a dia
Benefícios
- Convênio médico com coparticipação
- Plano odontológico Amil Odonto
- Ticket refeição, sem custo para o colaborador
- Wellhub/Gympass
- Zenklub: duas consultas mensais sem custo
- Day off de aniversário
- Seguro de vida sem custo
- Auxílio funeral sem custo