Pular para o conteúdo
Lucas Lessa
Voltar para projetos

Estudo de caso · Plataforma de dados · DevOps

Construção de uma plataforma Databricks do zero

Implantação e estruturação de uma plataforma de dados com Databricks, separando os ambientes de desenvolvimento (DEV) e produção (PRD) e construindo a infraestrutura, a governança e os processos de CI/CD necessários para sustentar o ciclo de vida das soluções de dados.

  • Databricks
  • Azure
  • Unity Catalog
  • Terraform
  • Azure DevOps
  • Microsoft Entra ID
  • CI/CD

Arquitetura de infraestrutura

A plataforma foi estruturada no ecossistema Azure, com separação lógica entre desenvolvimento e produção. As principais atividades de infraestrutura incluíram:

  • Criação e configuração dos workspaces de DEV e PRD.
  • Provisionamento dos recursos de armazenamento para cada ambiente.
  • Padronização de nomenclatura e aplicação de tags de ambiente, responsável e centro de custo.
  • Organização dos grupos de acesso do Microsoft Entra ID (Azure AD) e atribuição aos workspaces.

Uma decisão arquitetural importante foi manter os recursos no mesmo Resource Group, utilizando separação lógica, convenções de nomenclatura e controles de acesso para distinguir DEV e PRD.

Governança de dados com Unity Catalog

O projeto também envolveu a estruturação da governança de dados, buscando centralizar o controle de acesso e organizar os ativos analíticos por ambiente e camada. A arquitetura contemplava:

  • Separação de catálogos e schemas por ambiente e camada, seguindo a abordagem Bronze, Silver e Gold.
  • Organização de dados por domínio de negócio.
  • Utilização de Volumes para armazenamento de arquivos e dados de staging.
  • Definição de permissões para catálogos, schemas, tabelas e demais objetos.
  • Separação das responsabilidades administrativas entre workspace e Unity Catalog.

CI/CD com Azure DevOps e Git

Uma parte central do projeto foi construir um fluxo de desenvolvimento e implantação para Databricks integrado ao Azure DevOps.

  1. Azure DevOps Repos

    Versionamento, branches e controle de alterações.

  2. Azure DevOps Pipelines

    Automação de processos de validação e implantação.

  3. Terraform

    Infraestrutura e recursos Databricks.

  4. Databricks

    Jobs, consultas e pipelines.

As atividades incluíram:

  • Integração dos repositórios com os workspaces Databricks.
  • Estruturação dos pipelines de CI/CD no Azure DevOps.
  • Organização de variáveis e grupos de variáveis para configurações globais e backend do Terraform.
  • Tratamento de permissões de Git, incluindo permissões para criação de branches.

Infraestrutura como código com Terraform

Foi estruturada uma abordagem de Infrastructure as Code (IaC) para automatizar a criação e a manutenção de recursos da plataforma. O projeto utilizou Terraform com os providers AzureRM e Databricks, contemplando:

  • Configuração do backend remoto para armazenamento do estado do Terraform.
  • Separação de variáveis e configurações por ambiente.
  • Automação da gestão de recursos e jobs do Databricks.
  • Definição de tarefas, clusters de jobs, permissões, tags e dependências.
  • Geração automatizada de arquivos Terraform a partir de configurações YAML.

Principais desafios técnicos

DesafioTrabalho realizado
Separação DEV/PRDOrganização dos workspaces, storages, tags e acessos
GovernançaEstruturação da estratégia de Unity Catalog e permissões
CI/CDConfiguração de pipelines, variáveis e agente self-hosted
TerraformBackend remoto, providers, versões e estado dos recursos
Automação de jobsGeração de código a partir de YAML e templates Jinja
Controle de versãoIntegração com Git e resolução de permissões
Implantação seguraTratamento de recursos existentes e prevenção de duplicações