Pular para o conteúdo principal

Incorporar ou ejetar

"Coloque meu painel dentro do meu próprio app" tem duas respostas aqui, e elas são de fato dois produtos diferentes, não duas configurações de um só.

  • Incorporar — nós renderizamos o painel; você o coloca em um <iframe>. Você não escreve código de painel e não é dono de nenhum build. Incorporando um painel.
  • Ejetar — nós entregamos o código-fonte React e SQL; você o renderiza. Saímos inteiramente do caminho de renderização e ficamos apenas com o motor de dados por baixo. Ejete seu painel.

As duas mantêm a metade de plataforma — conexões, conjuntos de dados, atualizações, agendamentos, o mecanismo de consultas, a governança — mantida do nosso lado. A única pergunta é quem desenha os pixels.

A resposta curta​

Incorpore se você precisa de filtragem por linha para cada visualizador, ou se quer que publicar seja todo o deploy. Ejete se o painel precisa se parecer e se comportar como o resto do seu app, ou se ele precisa rodar onde nós não chegamos.

Lado a lado​

IncorporarEjetar
Quem renderizanósvocê
O que você integrauma URL (mais um token de curta duração na via protegida)uma árvore de código que você constrói e hospeda
Quem publica uma mudançaninguém — republique e o frame já a servevocê, no seu próprio build e na sua própria release
Filtragem por linha para cada visualizadorsim, aplicada no servidor a partir de um token assinado — é o único lugar em que ela existenão na via sem credenciais; exige um servidor seu no caminho
Controle visual e de interaçãoo nosso renderizador, a nossa molduracompleto — são os seus componentes
Estado dos filtros compartilhado com a sua própria interfacenão, em nenhuma das duas direçõessim, é o seu estado
Roteamento, autenticação, integração de layouta fronteira do iframenativa no seu app
Credencial que você precisa guardarnenhuma na via pública; uma chave de API no seu backend para a via protegidanenhuma na via sem credenciais; uma chave de API no seu servidor para a via backend
Precisa de um backend seusó para a via protegida, para emitir os tokenssó se você quiser recorte por linha ou consultas ao vivo
Frescor dos dadosconsultas ao vivo a cada carregamentoao vivo na via backend; o snapshot publicado na via sem credenciais

Escolha incorporar quando​

  • Visualizadores diferentes precisam ver linhas diferentes. Esse é o critério decisivo. A filtragem em nível de linha vive na via de incorporação com token assinado e em nenhum outro lugar: seu backend emite um token de curta duração carregando os filtros, a plataforma reescreve cada referência a um conjunto de dados como uma relação filtrada, e a página só pode estreitar mais. Nada que você construa sobre uma árvore ejetada reproduz isso sem colocar um servidor seu na frente de cada consulta.
  • Você quer que publicar seja o deploy. Uma republicação muda o que toda incorporação serve. Nenhuma release do seu lado, nenhuma versão do painel fixada dentro do seu bundle.
  • Você não quer ser dono de código de painel. Sem build, sem atualizações de dependências, sem o vai e vem das bibliotecas de gráficos.
  • O painel é um quadro dentro do produto, não o produto. Uma aba de relatórios, um extrato para o cliente, uma visão administrativa.

Escolha ejetar quando​

  • Precisa se parecer com o seu app. Seu design system, sua tipografia, seus estados vazios, seus esqueletos de carregamento. Um iframe é um retângulo com a moldura de outra pessoa dentro.
  • Precisa interagir com o seu app. Seus filtros conduzindo os gráficos dele, as seleções dele conduzindo a sua página. A via de incorporação não passa o estado dos filtros em nenhuma das duas direções, então o filtro cruzado entre um painel e a sua própria interface não está disponível ali.
  • Você precisa do seu próprio roteamento, autenticação ou layout. Links diretos para um bloco, a sua sessão, a sua casca de aplicação, as suas trilhas de navegação.
  • Precisa rodar onde nós não estamos. Sua própria hospedagem, sua própria VPC, uma CDN que você controla. O código-fonte é React e SQL puros e se constrói com npm install && npm run dev. Note que ejetar move a renderização para a sua infraestrutura, não os dados: um painel ejetado continua alcançando pela rede o mecanismo de consultas desta conta ou o seu extrato Parquet. Se o requisito é que nenhum dado saia do seu ambiente, isso é Vibedasher Server, não ejeção.
  • Você não quer credencial nenhuma nem backend nenhum. Um painel público e publicado é ejetado sobre uma via que baixa um extrato Parquet e executa cada consulta no navegador do visitante — sem chave, sem token, nada seu para rodar ou pagar. Leia o que isso sacrifica em a via de consulta wasm.

Três diferenças difíceis de desfazer​

Sobre tudo o que está acima você pode mudar de ideia barato. Estas três convém decidir antes de construir.

Recorte por linha é uma escolha de arquitetura, não um botão​

Se você publicar um painel ejetado na via sem credenciais e depois precisar que o visualizador A veja menos linhas que o visualizador B, não existe nenhuma configuração para ligar. O extrato no navegador é o conjunto de dados inteiro, então cada visitante já tem todas as linhas. Recuperar o recorte significa colocar um servidor seu entre o visualizador e os dados e reescrever contra ele a via de consulta do painel — ou mudar para a via de incorporação, que é outra integração. Veja quem pode ver o quê.

Assim que você edita uma árvore ejetada, o app deixa de ser a fonte da verdade​

Ejetar é um fork de verdade, e é exatamente esse o ponto. Você pode empurrar uma árvore editada de volta para o branch de rascunho e continuar trabalhando no ciclo, mas se levar o código-fonte para o seu próprio repositório e começar a mudá-lo lá, as mudanças feitas depois no app não chegam à sua cópia e as suas não voltam. Decida qual lado é dono do código.

As escolhas de visibilidade na via de incorporação não são simétricas​

A via protegida exige que a visibilidade do painel seja protected, e recusa de saída um painel public — para que você não possa acreditar que tem filtros por linha quando não tem. Um painel private não é incorporável por nenhuma das duas vias. E tornar um painel legível pelo mundo inteiro é o único passo irreversível do fluxo de publicação; veja publique e compartilhe.

Você pode fazer as duas coisas​

Elas não são exclusivas, e uma forma comum usa cada uma para o que ela faz bem: incorporar a visão voltada ao cliente, onde a filtragem por linha é todo o requisito, e ejetar a visão interna que precisa ficar dentro da sua própria casca administrativa. Os mesmos conjuntos de dados, as mesmas atualizações, a mesma governança por baixo.

Próximo​

  • Incorporando um painel — as duas vias de incorporação, o ciclo de renovação de token, as mensagens que a sua página de fato recebe, e onde fica a fronteira do frame.
  • Ejete seu painel — as três chamadas, o contrato de paginação, e como religar os dados.