Ir para o conteúdo principal

Como criar dados prontos para produção e aplicativos de AI com o Databricks Apps e o Lakebase

Execute seu aplicativo, sincronize seus dados e implante tudo no Databricks

Flowchart for building production-ready data and AI apps.

Published: November 19, 2025

Produto13 min de leitura

Summary

  • Crie aplicativos de dados de pilha completa com o Databricks Apps e o Lakebase sem gerenciar servidores ou contêineres.
  • Mantenha os dados atualizados automaticamente com as tabelas sincronizadas do Lakebase que replicam os dados do Unity Catalog em segundos.
  • Implemente tudo como código usando o Databricks Bundles de Ativos para obter versões consistentes e orientadas por CI/CD.

O desafio dos aplicativos de dados de produção

Criar aplicativos de dados prontos para produção é complexo. Muitas vezes, você precisa de ferramentas separadas para hospedar o aplicativo, gerenciar o banco de dados e mover dados entre sistemas. Cada camada acrescenta uma sobrecarga de configuração, manutenção e implementação.

O Databricks simplifica isso consolidando tudo em uma única plataforma: a Databricks Data Intelligence Platform. O Databricks Apps executa seus aplicativos web em serverless compute. O Lakebase fornece um banco de dados Postgres gerenciado que sincroniza com o Unity Catalog, dando ao seu aplicativo acesso rápido a dados governados. E com os Databricks Asset Bundles (DABs), você pode pacote código, infraestrutura e pipeline de dados e implantá-los com um único comando.

Este blog mostra como essas três partes trabalham juntas para criar e implantar um aplicativo de dados reais, desde a sincronização de dados do Unity Catalog com o Lakebase até a execução de um aplicativo da Web no Databricks e a automação da implantação com ativos Bundles.

Arquitetura e como funciona

Você verá um aplicativo de viagem de táxi que demonstra todo o padrão: um aplicativo React e FastAPI que lê as tabelas sincronizadas do Lakebase, com atualizações automáticas de dados das tabelas Delta do Unity Catalog ocorrendo em segundos.

O diagrama a seguir apresenta uma view simplificada da arquitetura da solução:

app-lakebase-uc-solution-arch

Em um nível mais alto, o Databricks Apps serve como front-end onde os usuários exploram e visualizam os dados. O Lakebase fornece o banco de dados Postgres que o aplicativo query, mantendo-o próximo aos dados em tempo real do Unity Catalog com tabelas sincronizadas. Os Databricks Asset Bundles unem tudo, definindo e implantando todos os recursos - aplicativo, banco de dados e sincronização de dados - como uma unidade com controle de versão.

Principais componentes da solução:

O aplicativo de exemplo exibe corridas de táxi recentes em formato de tabela e de gráfico e busca novas corridas automaticamente. Ele lê dados de uma tabela sincronizada do Lakebase, que espelha uma tabela Delta no Unity Catalog. 

nyc-taxi-dashboard-static

Como a tabela sincronizada é atualizada automaticamente, qualquer alteração na tabela do Unity Catalog aparece no aplicativo em segundos, sem a necessidade de um ETL personalizado.

Você pode testar isso inserindo novos dados na tabela Delta de origem e, em seguida, atualizando a tabela sincronizada:

Em seguida, trigger um refresh da tabela sincronizada trips_synced.

refresh-synced-trip

O pipeline gerenciado que aciona a sincronização realiza uma cópia Snapshot da tabela Delta de origem para a tabela Postgres de destino.

Em poucos segundos, os novos registros aparecem no painel. O aplicativo busca atualizações e permite que os usuários refresh sob demanda, mostrando como o Lakebase mantém os dados operacionais atualizados sem engenharia adicional.

Esse fluxo de dados contínuo ocorre porque as tabelas sincronizadas do Lakebase lidam com toda a sincronização automaticamente, sem a necessidade de código ETL personalizado ou coordenação entre as equipes.

Anatomia do Databricks App

Vamos ver como os diferentes elementos da solução se integram no Databricks App.

Autenticação e conexão com o banco de dados

Cada aplicativo do Databricks tem uma service principal exclusiva atribuída na criação que o aplicativo usa para interagir com outros recurso do Databricks, incluindo o Lakebase.

O Lakebase oferece suporte à autenticação OAuth máquina a máquina (M2M). Um aplicativo pode obter um token válido usando o Databricks SDK para Pythone suas credenciais de service principal. O WorkspaceClient se encarrega de atualizar o token OAuth de curta duração (uma hora).

Em seguida, o aplicativo usa esse token ao estabelecer uma conexão com o Lakebase usando o Psycopg adaptador Python Postgres:

O host do Postgres e o nome do banco de dados são definidos automaticamente como variáveis de ambiente para o aplicativo Databricks quando você usa o recurso Lakebase para aplicativos.

O usuário do Postgres é o service principal do aplicativo (quando implantado no Databricks Apps) ou o nome de usuário do Databricks do usuário que executa o aplicativo localmente.

Back-end RESTful FastAPI

O backend FastAPI do aplicativo usa essa conexão para query o Lakebase e buscar os dados mais recentes de viagens na tabela sincronizada:

Além de atender aos Endpoints da API, a FastAPI também pode atender a arquivos estáticos usando a classe StaticFiles. Ao agrupar nosso front-end React (app/frontend) usando o processo de compilação do Vite, podemos gerar um conjunto de arquivos estáticos que podem ser veiculados usando a FastAPI.

Frontend em React

O frontend React chama o endpoint FastAPI para exibir os dados:

O aplicativo de exemplo usa ag-grid e ag-charts para visualização e verifica automaticamente se há novos dados a cada poucos segundos:

Definição de recursos de DABs (Databricks Asset Bundles)

Todos os recursos do Databricks e o código do aplicativo mostrados acima podem ser mantidos como um pacote de DABs em um repositório de código-fonte. Isso também significa que todos os recursos podem ser implantados em um workspace do Databricks com um único comando. Consulte o repositório do GitHub para obter instruções detalhadas de implementação.

Isso simplifica o ciclo de vida do desenvolvimento de software e permite implementações por meio das práticas recomendadas de CI/CD nos ambientes de desenvolvimento, preparação e produção. 

As seções a seguir explicam os arquivos do pacote em mais detalhes.

Configuração do bundle

O databricks.yml contém a configuração do pacote DABs na forma de configurações de pacote e recursos incluídos:

Em nosso exemplo, definimos apenas um ambiente de desenvolvimento e um ambiente de preparação. Para um caso de uso de produção, considere adicionar outros ambientes. Consulte o repository databricks-dab-examples e a documentação dos DABs para obter exemplos de configuração mais avançados.

Configuração e sincronização do Lakebase com o Unity Catalog

Para definir uma instância do Lakebase em DABs, use o recurso database_instances. No mínimo, precisamos definir o campo de capacidade da instância.

Além disso, definimos um recursosynced_database_tables, que configura um pipeline de sincronização gerenciado entre uma tabela do Unity Catalog e uma tabela do Postgres.

Para isso, defina uma tabela de origem por meio de source_table_full_name. A tabela de origem no Unity Catalog precisa de uma key primária exclusiva (composta) para que você possa processar as atualizações definidas no campo primary_key_columns.

O local da tabela de destino no Lakebase é determinado pelo objeto de banco de dados de destino especificado como logical_database_name e o nome da tabela definido como name.

Uma tabela sincronizada também é um objeto do Unity Catalog. Nessa definição de recurso, colocamos a tabela sincronizada no mesmo catálogo e esquema que a tabela de origem usando variáveis DABs definidas em databricks.yml. Você pode substituir esses defaults definindo diferentes valores de variáveis.

Para nosso caso de uso, usamos o modo de sincronização SNAPSHOP. Consulte as seções de considerações e práticas recomendadas para ver uma discussão sobre as opções disponíveis.

Recurso de aplicativos da Databricks

O DABs nos permite definir tanto o compute resource do Databricks Apps como um recurso de apps quanto o código-fonte do aplicativo em um único pacote. Isso nos permite manter a definição de recursos do Databricks e o código-fonte em um único repository. No nosso caso, o código-fonte do aplicativo baseado em FastAPI e Vite é armazenado no diretório app de nível superior do projeto.

A configuração faz referência dinâmica a database_name e instance_name definidos na definição de recurso database.yml.

database é um recurso de aplicativo compatível que pode ser definido em DABs. Ao definir o banco de dados como um recurso de aplicativo, criamos automaticamente uma função do Postgres a ser usada pelo service principal do aplicativo ao interagir com a instância do Lakebase.

Considerações e práticas recomendadas

Crie pacotes modulares e reutilizáveis

Embora este exemplo faça a implantação em ambientes de desenvolvimento e de preparação, o DABs facilita a definição de vários ambientes para se adequar ao seu ciclo de vida de desenvolvimento. Automatize a implantação nesses ambientes configurando pipelines de CI/CD com o Azure DevOps, o GitHub Actions ou outras plataformas de DevOps.

Use substituições e variáveis de DABs para definir configurações específicas do ambiente. Por exemplo, você pode definir diferentes configurações de capacidade de instância do Lakebase para desenvolvimento e produção para reduzir o custo. Da mesma forma, você pode definir diferentes modos de sincronização do Lakebase para suas tabelas sincronizadas a fim de atender aos requisitos de latência de dados específicos do ambiente.

Escolha os modos de sincronização do Lakebase e otimize o desempenho

Escolher o modo de sincronização do Lakebase certo é key para equilibrar o custo e a atualização dos dados. 

 

Snapshot

Acionado

Contínuo

Método de atualização

Substituição completa da tabela a cada execuçãoCópia completa inicial + alterações incrementaisCarga inicial + atualizações de transmissão em tempo real

Desempenho

10x mais eficiente que outros modosCusto e desempenho equilibradosCusto mais alto (funcionamento contínuo)

Latência

Alta latência
(agendada/manual)
Latência média
(sob demanda)
Menor latência
(em tempo real, ~15 segundos)

Melhor para

  • Mudanças infrequentes
  • Modificando >10% da tabela de origem
  • Atualizações de baixa urgência e alto volume
  • Compromisso entre custo e latência
  • Dados razoavelmente atuais
  • Tempo de refresh controlado
  • Sistemas de missão crítica
  • Requisitos de dados tempo-real
  • Sem tolerância para refresh manual

Limitações

  • Latência maior
  • Recriação completa da tabela a cada vez
  • Evite executar >a cada 5 minutos
  • Requer alteração do feed de dados
  • Mais caro se a execução for muito frequente
  • Maior custo
  • Requer alteração do feed de dados
  • Consumo contínuo de recursos

Configure notificações para seu pipeline de sincronização gerenciado para ser alertado em caso de falhas.

Para melhorar o desempenho da query, dimensione corretamente sua instância de banco de dados do Lakebase, escolhendo uma capacidade de instância apropriada. Considere a criação de índices na tabela sincronizada no Postgres que correspondam aos seus padrões de query. Use a extensão pg_stat_statements pré-instalada para investigar o desempenho da query.

Prepare seu app para produção

O aplicativo de exemplo implementa uma abordagem de polling para obter os dados mais recentes do Lakebase. Dependendo dos seus requisitos, você também pode implementar uma abordagem de push baseada em WebSockets ou Server-Sent-Events para usar os recursos do servidor de forma mais eficiente e aumentar a pontualidade das atualizações de dados.

Para escala para um número maior de usuários do aplicativo, reduzindo a necessidade de o backend do FastAPI trigger operações de banco de dados, considere implementar o cache, por exemplo, usando o fastapi-cache para armazenar em cache os resultados da query na memória.

Autenticação e autorização

Use o OAuth 2.0 para autorização e autenticação - não dependa de access token pessoal (PATs) herdados. Durante o desenvolvimento em seu computador local, use a CLI do Databricks para configurara autenticação OAuth U2M para interagir perfeitamente com os recurso do Databricks ativos, como o Lakebase.

Da mesma forma, seu aplicativo implantado usa seu service principal associado para autenticação e autorização OAuth M2M com outros serviços da Databricks. Como alternativa, configure a autorização do usuário para que seu aplicativo execute ações nos recursos da Databricks em nome dos usuários do aplicativo.

Consulte também as práticas recomendadas para aplicativos na documentação do Databricks Apps para obter outras práticas recomendadas gerais e de segurança.

Conclusão

Criar aplicativos de dados de produção não deveria significar ter que lidar com ferramentas separadas para implantação, sincronização de dados e gerenciamento de infraestrutura. O Databricks Apps oferece compute serverless para execução seus aplicativos Python e Node.js sem gerenciar a infraestrutura. As tabelas sincronizadas do Lakebase entregam automaticamente dados de baixa latência de tabelas Delta do Unity Catalog para o Postgres, eliminando pipelines de ETL personalizados. Os ativos do Databricks integram tudo, permitindo que você empacote o código do seu aplicativo, as definições de infraestrutura e as configurações de sincronização de dados em um único pacote versionado que é implantado de forma consistente em diferentes ambientes.

A complexidade da implantação prejudica o ritmo. Quando você não consegue entregar alterações de forma rápida e confiante, você desacelera a iteração, introduz drift no ambiente e perde tempo coordenando as equipes. Ao tratar todo o seu stack de aplicativos como código com DABs, você habilita a automação de CI/CD, garante implantações consistentes nos ambientes de desenvolvimento, homologação e produção e permite que você e sua equipe se concentrem na criação de recursos em vez de lutar contra pipelines de implantação. É assim que você passa do protótipo para a produção sem as dores de cabeça habituais da implantação.

O exemplo completo está disponível no GitHub repository com instruções de implantação passo a passo.

Começar

Saiba mais sobre o Lakebase, o Databricks Apps e o Databricks Asset Bundles visitando a documentação da Databricks. Para obter mais recursos para desenvolvedores sobre o Databricks Apps, dê uma olhada no Livro de receitas do Databricks Apps e na Coleção de recursos do Livro de receitas.

 

(This blog post has been translated using AI-powered tools) Original Post

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada