{"id":95283,"date":"2020-09-27T19:42:23","date_gmt":"2020-09-27T17:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah"},"modified":"2020-09-27T19:42:23","modified_gmt":"2020-09-27T17:42:23","slug":"primenenie-low-code-v-analiticheskih-platformah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah","title":{"rendered":"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Prezados leitores, bom dia!<\/p>\n<p>A constru\u00e7\u00e3o de plataformas de TI para acumula\u00e7\u00e3o e an\u00e1lise de dados surge, mais cedo ou mais tarde, em qualquer empresa cujo modelo de neg\u00f3cios \u00e9 baseado em servi\u00e7os intensivos em intelig\u00eancia ou na cria\u00e7\u00e3o de produtos tecnicamente complexos. A constru\u00e7\u00e3o de plataformas anal\u00edticas \u00e9 uma tarefa complexa e que consome muitas horas de trabalho. No entanto, qualquer tarefa pode ser simplificada. Neste artigo, quero compartilhar a experi\u00eancia de aplica\u00e7\u00e3o de ferramentas low-code que auxiliam na cria\u00e7\u00e3o de solu\u00e7\u00f5es anal\u00edticas. Essa experi\u00eancia foi adquirida na implementa\u00e7\u00e3o de diversos projetos na \u00e1rea de Big Data Solutions da empresa \"Neoflex\". Desde 2005, a \u00e1rea de Big Data Solutions da Neoflex se dedica a quest\u00f5es relacionadas \u00e0 constru\u00e7\u00e3o de armaz\u00e9ns e lagos de dados, resolvendo problemas de otimiza\u00e7\u00e3o da velocidade de processamento de informa\u00e7\u00f5es e trabalhando na metodologia de gest\u00e3o da qualidade dos dados.<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/ca066793a937041577085dfb813f979e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNingu\u00e9m poder\u00e1 evitar acumular conscientemente dados fracos e\/ou fortemente estruturados. Provavelmente, nem mesmo se estivermos falando de pequenas empresas. Afinal, ao escalar o neg\u00f3cio, um empreendedor promissor enfrentar\u00e1 quest\u00f5es como o desenvolvimento de um programa de fidelidade, desejar\u00e1 analisar a efic\u00e1cia dos pontos de venda, pensar em publicidade direcionada e se preocupar\u00e1 com a demanda por produtos complementares. A princ\u00edpio, a tarefa pode ser resolvida de maneira improvisada. Mas, conforme o neg\u00f3cio cresce, a transi\u00e7\u00e3o para uma plataforma anal\u00edtica se torna inevit\u00e1vel.<\/p>\n<p>Mas em que circunst\u00e2ncias as tarefas de an\u00e1lise de dados podem se transformar em quest\u00f5es do tipo \"Ci\u00eancia de Foguete\"? Sem d\u00favida, no momento em que se trata de dados realmente grandes.<br \/>\nPara simplificar a tarefa da \"Ci\u00eancia de Foguete\", voc\u00ea pode comer um elefante em partes. <\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/f81e7704b91a5b95303e4240d6012730.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuanto maior a discretiza\u00e7\u00e3o e autonomia de suas aplica\u00e7\u00f5es\/servi\u00e7os\/microservi\u00e7os, mais f\u00e1cil ser\u00e1 para voc\u00ea, seus colegas e todo o neg\u00f3cio digerir o elefante.<\/p>\n<p>Esse postulado foi aceito por praticamente todos os nossos clientes, que reestruturaram o cen\u00e1rio com base nas pr\u00e1ticas de engenharia das equipes DevOps.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMas mesmo com uma dieta \"separada e elefantina\", ainda temos boas chances de \"superlotar\" a paisagem de TI. Nesse momento, \u00e9 hora de parar, respirar fundo e olhar na dire\u00e7\u00e3o de <b>plataforma de engenharia low-code<\/b>.<\/p>\n<p>Muitos desenvolvedores temem a perspectiva de estagna\u00e7\u00e3o na carreira ao se afastar da programa\u00e7\u00e3o direta em dire\u00e7\u00e3o ao \"arrastar e soltar\" em interfaces de usu\u00e1rio de sistemas low-code. Mas a introdu\u00e7\u00e3o de m\u00e1quinas n\u00e3o levou ao desaparecimento de engenheiros, mas sim elevou seu trabalho a um novo patamar!<\/p>\n<p>Vamos entender o porqu\u00ea.<\/p>\n<p>A an\u00e1lise de dados nos setores de log\u00edstica, telecomunica\u00e7\u00f5es, estudos de m\u00eddia e o setor financeiro sempre est\u00e1 associada \u00e0s seguintes perguntas: <\/p>\n<ul>\n<li>Velocidade de execu\u00e7\u00e3o da an\u00e1lise automatizada;<\/li>\n<li>Capacidade de realizar experimentos sem impactar o fluxo principal de produ\u00e7\u00e3o de dados;<\/li>\n<li>Veracidade dos dados preparados;<\/li>\n<li>Monitoramento de mudan\u00e7as e versionamento;<\/li>\n<li>Proveni\u00eancia de dados, linha de dados, CDC;<\/li>\n<li>Rapidez na entrega de novas funcionalidades para o ambiente de produ\u00e7\u00e3o;<\/li>\n<li>E o famoso: custo de desenvolvimento e suporte.<\/li>\n<\/ul>\n<p>\nOu seja, os engenheiros enfrentam uma infinidade de tarefas de alto n\u00edvel, cuja execu\u00e7\u00e3o eficaz s\u00f3 \u00e9 poss\u00edvel ao limpar a mente das tarefas de baixo n\u00edvel da programa\u00e7\u00e3o.<\/p>\n<p>As premissas para a transi\u00e7\u00e3o dos desenvolvedores a um novo n\u00edvel foram a evolu\u00e7\u00e3o e digitaliza\u00e7\u00e3o dos neg\u00f3cios. O valor do desenvolvedor tamb\u00e9m mudou: h\u00e1 uma escassez significativa de desenvolvedores que conseguem mergulhar na ess\u00eancia dos conceitos de neg\u00f3cios automatizados.<\/p>\n<p>Vamos tra\u00e7ar uma analogia entre linguagens de programa\u00e7\u00e3o de baixo e alto n\u00edvel. A transi\u00e7\u00e3o de linguagens de baixo n\u00edvel para linguagens de alto n\u00edvel \u00e9 uma mudan\u00e7a de \"diretivas diretas na linguagem da m\u00e1quina\" para \"diretivas na linguagem das pessoas\". Ou seja, a adi\u00e7\u00e3o de uma camada de abstra\u00e7\u00e3o. Nesse caso, a transi\u00e7\u00e3o de plataformas low-code de linguagens de programa\u00e7\u00e3o de alto n\u00edvel \u00e9 uma mudan\u00e7a de \"diretivas na linguagem das pessoas\" para \"diretivas na linguagem dos neg\u00f3cios\". Se houver desenvolvedores que se sentirem tristes com esse fato, \u00e9 poss\u00edvel que estejam tristes desde o momento em que o JavaScript surgiu, onde s\u00e3o usadas fun\u00e7\u00f5es de ordena\u00e7\u00e3o de arrays. E essas fun\u00e7\u00f5es, \u00e9 claro, t\u00eam implementa\u00e7\u00f5es program\u00e1ticas sob o cap\u00f4 usando outros meios de programa\u00e7\u00e3o de alto n\u00edvel.<\/p>\n<p><b>Portanto, o low-code \u00e9 apenas o surgimento de mais um n\u00edvel de abstra\u00e7\u00e3o. <\/b><\/p>\n<h2>Experi\u00eancia pr\u00e1tica no uso de low-code<\/h2>\n<p>\nO tema low-code \u00e9 bastante amplo, mas agora gostaria de falar sobre a aplica\u00e7\u00e3o pr\u00e1tica de \"conceitos de low-code\" com base em um dos nossos projetos.<\/p>\n<p>A divis\u00e3o Big Data Solutions da empresa \"Neoflex\" se especializa, em grande parte, no setor financeiro, construindo reposit\u00f3rios e lagos de dados e automatizando diversos relat\u00f3rios. Nesse nicho, a aplica\u00e7\u00e3o de low-code j\u00e1 se tornou padr\u00e3o. Entre outras ferramentas de low-code, podemos mencionar solu\u00e7\u00f5es para organizar processos ETL: Informatica Power Center, IBM DataStage, Pentaho Data Integration. Ou ainda Oracle Apex, que atua como um ambiente de r\u00e1pida desenvolvimento de interfaces de acesso e edi\u00e7\u00e3o de dados. No entanto, o uso de ferramentas de desenvolvimento de low-code nem sempre est\u00e1 associado \u00e0 constru\u00e7\u00e3o de aplicativos espec\u00edficos em uma pilha comercial de tecnologia com uma depend\u00eancia claramente definida do fornecedor.<\/p>\n<p>Com plataformas de low-code, tamb\u00e9m \u00e9 poss\u00edvel organizar a orquestra\u00e7\u00e3o de fluxos de dados, criar ambientes de data science ou, por exemplo, m\u00f3dulos de verifica\u00e7\u00e3o da qualidade dos dados. <\/p>\n<p>Um dos exemplos pr\u00e1ticos de experi\u00eancia no uso de ferramentas de desenvolvimento de low-code \u00e9 a colabora\u00e7\u00e3o entre \"Neoflex\" e a empresa Mediascope, uma das l\u00edderes do mercado russo em pesquisas de m\u00eddia. Uma das tarefas dessa empresa \u00e9 a produ\u00e7\u00e3o de dados com base nos quais anunciantes, plataformas na internet, canais de televis\u00e3o, esta\u00e7\u00f5es de r\u00e1dio, ag\u00eancias de publicidade e marcas tomam decis\u00f5es de compra de publicidade e planejam suas comunica\u00e7\u00f5es de marketing. <\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/d6410c1fe93231281bdd536798fe7c66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPesquisas de m\u00eddia s\u00e3o um setor de neg\u00f3cios tecnologicamente carregado. O reconhecimento de v\u00eddeos, a coleta de dados de dispositivos que analisam visualiza\u00e7\u00f5es, a medi\u00e7\u00e3o da atividade em recursos da web \u2014 tudo isso implica que a empresa possui uma grande equipe de TI e uma imensa experi\u00eancia na constru\u00e7\u00e3o de solu\u00e7\u00f5es anal\u00edticas. Mas o crescimento exponencial da quantidade de informa\u00e7\u00f5es, do n\u00famero e da diversidade de suas fontes exige um progresso constante na ind\u00fastria de TI de dados. A solu\u00e7\u00e3o mais simples para escalar a j\u00e1 funcionando plataforma anal\u00edtica da Mediascope poderia ser aumentar a equipe de TI. No entanto, uma solu\u00e7\u00e3o muito mais eficaz \u00e9 acelerar o processo de desenvolvimento. Um dos passos que levam a essa dire\u00e7\u00e3o pode ser a aplica\u00e7\u00e3o de plataformas de low-code.<\/p>\n<p>No in\u00edcio do projeto, a empresa j\u00e1 contava com uma solu\u00e7\u00e3o de produto em funcionamento. No entanto, a implementa\u00e7\u00e3o da solu\u00e7\u00e3o em MSSQL n\u00e3o poderia atender plenamente \u00e0s expectativas em rela\u00e7\u00e3o \u00e0 escalabilidade das funcionalidades, mantendo um custo razo\u00e1vel para as adapta\u00e7\u00f5es.<\/p>\n<p>A tarefa que t\u00ednhamos pela frente era verdadeiramente ambiciosa \u2013 a Neoflex e a Mediascope precisariam criar uma solu\u00e7\u00e3o industrial em menos de um ano, com o MVP sendo lan\u00e7ado j\u00e1 no primeiro trimestre a partir da data de in\u00edcio dos trabalhos.<\/p>\n<p>Como base para a constru\u00e7\u00e3o da nova plataforma de dados, fundamentada em computa\u00e7\u00e3o low-code, foi escolhido o stack de tecnologias Hadoop. O padr\u00e3o de armazenamento de dados passou a ser HDFS, utilizando arquivos no formato parquet. Para o acesso aos dados na plataforma, foi utilizado o Hive, no qual todas as vitrines dispon\u00edveis s\u00e3o apresentadas como tabelas externas. A carga de dados para o armazenamento foi realizada com o aux\u00edlio do Kafka e Apache NiFi.<\/p>\n<p>O instrumento low-code nesta concep\u00e7\u00e3o foi aplicado para otimizar a tarefa mais trabalhosa na constru\u00e7\u00e3o da plataforma anal\u00edtica \u2013 a tarefa de c\u00e1lculo de dados.<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/fe62234ab0ae611a0c4a536ca68af898.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO mecanismo principal para o mapeamento de dados foi o instrumento low-code Datagram. <b>Neoflex Datagram<\/b> \u2013 \u00e9 uma ferramenta para o desenvolvimento de transforma\u00e7\u00f5es e fluxos de dados. <br \/>\nUsando esta ferramenta, \u00e9 poss\u00edvel evitar a escrita de c\u00f3digo em Scala \"manual\". O c\u00f3digo Scala \u00e9 gerado automaticamente utilizando a abordagem de Model Driven Architecture.<\/p>\n<p>Uma vantagem \u00f3bvia dessa abordagem \u00e9 a acelera\u00e7\u00e3o do processo de desenvolvimento. No entanto, al\u00e9m da velocidade, h\u00e1 tamb\u00e9m as seguintes vantagens: <\/p>\n<ul>\n<li>Visualiza\u00e7\u00e3o do conte\u00fado e estrutura das fontes\/receptores;<\/li>\n<li>Rastreamento da origem dos objetos no fluxo de dados at\u00e9 campos espec\u00edficos (lineage);<\/li>\n<li>Execu\u00e7\u00e3o parcial de transforma\u00e7\u00f5es com visualiza\u00e7\u00e3o de resultados intermedi\u00e1rios;<\/li>\n<li>Visualiza\u00e7\u00e3o do c\u00f3digo-fonte e sua corre\u00e7\u00e3o antes da execu\u00e7\u00e3o;<\/li>\n<li>Valida\u00e7\u00e3o autom\u00e1tica das transforma\u00e7\u00f5es;<\/li>\n<li>Carregamento autom\u00e1tico de dados 1 para 1.<\/li>\n<\/ul>\n<p>\nA barreira de entrada para solu\u00e7\u00f5es low-code para gera\u00e7\u00e3o de transforma\u00e7\u00f5es \u00e9 bastante baixa: o desenvolvedor precisa conhecer SQL e ter experi\u00eancia com ferramentas ETL. Vale ressaltar que geradores de transforma\u00e7\u00f5es orientados por c\u00f3digo n\u00e3o s\u00e3o ferramentas ETL no sentido amplo da palavra. Ferramentas low-code podem n\u00e3o ter seu pr\u00f3prio ambiente para execu\u00e7\u00e3o de c\u00f3digo. Isso significa que o c\u00f3digo gerado ser\u00e1 executado no ambiente que j\u00e1 existia no cluster antes da instala\u00e7\u00e3o da solu\u00e7\u00e3o low-code. E esse \u00e9, sem d\u00favida, mais um ponto positivo para o low-code. Assim, em paralelo com a equipe low-code, pode trabalhar uma equipe<\/p>\n<p>cl\u00e1ssica <\/p>\n<h2>Arquitetura da Solu\u00e7\u00e3o<\/h2>\n<p>\nimplementando funcionalidade, por exemplo, em c\u00f3digo Scala puro. A integra\u00e7\u00e3o de altera\u00e7\u00f5es de ambas as equipes em produ\u00e7\u00e3o ser\u00e1 simples e \"sem costura\".<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/365f1b1cf69bf2a71854eb05c5bba809.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Vale mencionar que, al\u00e9m do low-code, tamb\u00e9m existem solu\u00e7\u00f5es no-code. E, na ess\u00eancia, essas s\u00e3o coisas diferentes. O low-code permite que o desenvolvedor intervenha mais no c\u00f3digo gerado. No caso do Datagram, \u00e9 poss\u00edvel visualizar e editar o c\u00f3digo Scala gerado, enquanto o no-code pode n\u00e3o oferecer essa possibilidade. Essa diferen\u00e7a \u00e9 bastante significativa, tanto em termos de flexibilidade da solu\u00e7\u00e3o, quanto em termos de conforto e motiva\u00e7\u00e3o para o trabalho dos engenheiros de dados.<\/b><\/p>\n<ul>\n<li>Pipometros (medidores de TV) s\u00e3o dispositivos de hardware e software que registram o comportamento do usu\u00e1rio entre os entrevistados de um painel de televis\u00e3o \u2013 quem, quando e qual canal assistiu na resid\u00eancia que participa da pesquisa. A informa\u00e7\u00e3o fornecida \u00e9 um fluxo de intervalos de audi\u00eancia vinculados ao pacote de m\u00eddia e ao produto de m\u00eddia. Os dados na fase de carregamento no Data Lake podem ser enriquecidos com atributos demogr\u00e1ficos, associa\u00e7\u00f5es geogr\u00e1ficas, fusos hor\u00e1rios e outras informa\u00e7\u00f5es necess\u00e1rias para a an\u00e1lise da audi\u00eancia de determinado produto de m\u00eddia. As medi\u00e7\u00f5es realizadas podem ser usadas para an\u00e1lise ou planejamento de campanhas publicit\u00e1rias, avalia\u00e7\u00e3o da atividade e prefer\u00eancias do p\u00fablico, e elabora\u00e7\u00e3o de grades de programa\u00e7\u00e3o;<\/li>\n<li>Os dados podem vir de sistemas de monitoramento de transmiss\u00e3o de televis\u00e3o por streaming e medi\u00e7\u00e3o de visualiza\u00e7\u00e3o de conte\u00fado em recursos de v\u00eddeo na internet;<\/li>\n<li>Ferramentas de medi\u00e7\u00e3o no ambiente web, incluindo contadores centrados no site e centrados no usu\u00e1rio. Um complemento do navegador, como a research bar e um aplicativo m\u00f3vel embutido pode servir como fornecedor de dados para o Data Lake; <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/vpn\/\"   title=\"VPN\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"133\">VPN<\/a>.<\/li>\n<li>Os dados tamb\u00e9m podem ser coletados de plataformas que consolidam resultados de preenchimento de question\u00e1rios online e resultados de entrevistas telef\u00f4nicas em pesquisas da empresa;<\/li>\n<li>Um enriquecimento adicional do lago de dados pode ocorrer por meio do carregamento de informa\u00e7\u00f5es a partir de logs de empresas parceiras.<\/li>\n<\/ul>\n<p>\nA implementa\u00e7\u00e3o da carga as is de sistemas-fonte para o staging prim\u00e1rio de dados brutos pode ser organizada de v\u00e1rias formas. No caso de utiliza\u00e7\u00e3o de low-code para esses fins, \u00e9 poss\u00edvel a gera\u00e7\u00e3o autom\u00e1tica de scripts de carga com base em metadados. Nesse contexto, n\u00e3o h\u00e1 necessidade de descer ao n\u00edvel de desenvolvimento de mapeamentos source to target. Para realizar o carregamento autom\u00e1tico, precisamos estabelecer uma conex\u00e3o com a fonte e, em seguida, determinar na interface de carregamento as entidades a serem carregadas. A cria\u00e7\u00e3o da estrutura de diret\u00f3rios no HDFS ocorrer\u00e1 automaticamente e corresponder\u00e1 \u00e0 estrutura de armazenamento de dados no sistema de origem.<\/p>\n<p>No entanto, no contexto deste projeto, decidimos n\u00e3o utilizar essa funcionalidade da plataforma low-code, uma vez que a empresa Mediascope j\u00e1 come\u00e7ou por conta pr\u00f3pria a desenvolver um servi\u00e7o semelhante utilizando a combina\u00e7\u00e3o Nifi + Kafka.<\/p>\n<p>\u00c9 importante deixar claro que essas ferramentas n\u00e3o s\u00e3o substitutas, mas sim complementares entre si. Nifi e Kafka podem operar tanto na liga\u00e7\u00e3o direta (Nifi -&gt; Kafka) quanto na inversa (Kafka -&gt; Nifi). Para a plataforma de pesquisa de m\u00eddia, foi utilizada a primeira op\u00e7\u00e3o de conex\u00e3o.<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/8284ef5bd6d3b947998ffd42bfb66dbd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo nosso caso, o Nifi precisava processar diferentes tipos de dados de sistemas fontes e encaminh\u00e1-los para o broker Kafka. O direcionamento das mensagens para um t\u00f3pico espec\u00edfico do Kafka era feito por meio de processadores do Nifi PublishKafka. A orquestra\u00e7\u00e3o e a manuten\u00e7\u00e3o desses pipelines s\u00e3o realizadas na interface gr\u00e1fica. A ferramenta Nifi e o uso da combina\u00e7\u00e3o Nifi + Kafka tamb\u00e9m podem ser considerados uma abordagem low-code para o desenvolvimento, com baixa barreira de entrada nas tecnologias de Big Data e que acelera o processo de desenvolvimento de aplica\u00e7\u00f5es. <\/p>\n<p>A pr\u00f3xima etapa na implementa\u00e7\u00e3o do projeto foi a adequa\u00e7\u00e3o ao formato de uma camada sem\u00e2ntica unificada de dados detalhados. Caso a entidade possua atributos hist\u00f3ricos, o c\u00e1lculo \u00e9 feito no contexto da parti\u00e7\u00e3o analisada. Se a entidade n\u00e3o for hist\u00f3rica, \u00e9 opcional recalcular todo o conte\u00fado do objeto ou mesmo optar por n\u00e3o recalcular esse objeto (devido \u00e0 aus\u00eancia de altera\u00e7\u00f5es). Nesta fase, s\u00e3o geradas as chaves para todas as entidades. As chaves s\u00e3o armazenadas nos diret\u00f3rios mestres correspondentes no Hbase, que cont\u00eam a correspond\u00eancia entre as chaves na plataforma anal\u00edtica e as chaves dos sistemas fontes. A consolida\u00e7\u00e3o das entidades at\u00f4micas \u00e9 acompanhada pelo enriquecimento com os resultados do c\u00e1lculo preliminar dos dados anal\u00edticos. O framework utilizado para o c\u00e1lculo dos dados foi o Spark. A funcionalidade descrita para a adequa\u00e7\u00e3o dos dados \u00e0 sem\u00e2ntica unificada tamb\u00e9m foi implementada com base nos mapeamentos da ferramenta low-code Datagram.<\/p>\n<p>Na arquitetura alvo, era necess\u00e1rio garantir acesso SQL aos dados para usu\u00e1rios de neg\u00f3cios. Para essa op\u00e7\u00e3o, foi utilizado o Hive. O registro de objetos no Hive \u00e9 realizado automaticamente ao ativar a op\u00e7\u00e3o 'Registrar Tabela Hive' na ferramenta low-code.<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/a13f7260d067d3d21b7090bd8fa10aff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Gerenciamento do fluxo de c\u00e1lculo<\/h2>\n<p>\nO Datagram tem uma interface para a constru\u00e7\u00e3o de designs de fluxos de trabalho. A execu\u00e7\u00e3o de mapeamentos pode ser feita usando o agendador Oozie. Na interface do desenvolvedor de fluxos, \u00e9 poss\u00edvel criar esquemas de execu\u00e7\u00e3o de transforma\u00e7\u00f5es de dados em paralelo, sequencialmente ou dependendo de condi\u00e7\u00f5es espec\u00edficas. H\u00e1 suporte para shell scripts e programas em Java. Tamb\u00e9m \u00e9 poss\u00edvel usar <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/dts-los-angeles\/\"   title=\"servidor\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3662\">servidor<\/a> Apache Livy. O Apache Livy \u00e9 utilizado para executar aplicativos diretamente do ambiente de desenvolvimento. <\/p>\n<p>Caso a empresa j\u00e1 tenha seu pr\u00f3prio orquestrador de processos, \u00e9 poss\u00edvel utilizar a API REST para integrar mapeamentos no fluxo j\u00e1 existente. Por exemplo, tivemos uma experi\u00eancia bastante bem-sucedida na integra\u00e7\u00e3o de mapeamentos em Scala com orquestradores escritos em PLSQL e Kotlin. A API REST da ferramenta de baixo c\u00f3digo implica opera\u00e7\u00f5es como a gera\u00e7\u00e3o do ano execut\u00e1vel com base no design do mapeamento, chamada do mapeamento, chamada de uma sequ\u00eancia de mapeamentos e, claro, a passagem de par\u00e2metros na URL para acionar os mapeamentos.<\/p>\n<p>Juntamente com o Oozie, \u00e9 poss\u00edvel organizar o fluxo de c\u00e1lculo usando o Airflow. N\u00e3o vou me aprofundar na compara\u00e7\u00e3o entre Oozie e Airflow, mas apenas direi que, no contexto do projeto de pesquisas de m\u00eddia, a escolha recaiu sobre o Airflow. Os principais argumentos desta vez foram uma comunidade mais ativa que desenvolve o produto e uma interface + API mais avan\u00e7adas.<\/p>\n<p>O Airflow tamb\u00e9m \u00e9 bom porque, para descrever os processos de c\u00e1lculo, ele utiliza o amado Python. E, de fato, n\u00e3o h\u00e1 muitas plataformas de gerenciamento de fluxos de trabalho de c\u00f3digo aberto. A execu\u00e7\u00e3o e monitoramento da execu\u00e7\u00e3o dos processos (inclusive com gr\u00e1fico de Gantt) apenas adicionam pontos \u00e0 reputa\u00e7\u00e3o do Airflow. <\/p>\n<p>O formato do arquivo de configura\u00e7\u00e3o para a execu\u00e7\u00e3o de mapeamentos da solu\u00e7\u00e3o de baixo c\u00f3digo tornou-se o spark-submit. Isso ocorreu por duas raz\u00f5es. Primeiro, o spark-submit permite iniciar diretamente um arquivo jar a partir do console. Em segundo lugar, ele pode conter todas as informa\u00e7\u00f5es necess\u00e1rias para configurar o fluxo de trabalho (o que facilita a escrita de scripts que formam o Dag).<br \/>\nO elemento mais frequentemente encontrado no fluxo de trabalho do Airflow, no nosso caso, foi o SparkSubmitOperator.<\/p>\n<p>O SparkSubmitOperator permite executar arquivos jar \u2014 mapeamentos empacotados do Datagram com par\u00e2metros de entrada previamente definidos.<\/p>\n<p>\u00c9 importante mencionar que cada tarefa do Airflow \u00e9 executada em uma thread separada e n\u00e3o sabe nada sobre as outras tarefas. Portanto, a intera\u00e7\u00e3o entre as tarefas \u00e9 realizada por meio de operadores de controle, como DummyOperator ou BranchPythonOperator.<\/p>\n<p>A combina\u00e7\u00e3o do uso da solu\u00e7\u00e3o low-code Datagram com a universaliza\u00e7\u00e3o de arquivos de configura\u00e7\u00e3o (formando o Dag) resultou em uma acelera\u00e7\u00e3o significativa e na simplifica\u00e7\u00e3o do processo de desenvolvimento de fluxos de carregamento de dados.<\/p>\n<h2>C\u00e1lculo das vitrines<\/h2>\n<p>\nSem d\u00favida, a etapa mais intelectualmente exigente na produ\u00e7\u00e3o de dados anal\u00edticos \u00e9 a constru\u00e7\u00e3o das vitrines. No contexto de um dos fluxos de c\u00e1lculo de dados de uma empresa de pesquisa, nesta etapa ocorre a padroniza\u00e7\u00e3o da tradu\u00e7\u00e3o com a corre\u00e7\u00e3o para fusos hor\u00e1rios, vinculado \u00e0 grade de transmiss\u00e3o. Tamb\u00e9m pode haver corre\u00e7\u00e3o para a grade de transmiss\u00e3o local (not\u00edcias e publicidade locais). Entre outras coisas, nesta etapa \u00e9 feita a segmenta\u00e7\u00e3o dos intervalos de visualiza\u00e7\u00e3o cont\u00ednua de produtos de m\u00eddia com base na an\u00e1lise dos intervalos de visualiza\u00e7\u00e3o. Aqui tamb\u00e9m ocorre o 'pesagem' dos valores de visualiza\u00e7\u00e3o com base nas informa\u00e7\u00f5es sobre sua import\u00e2ncia (c\u00e1lculo do coeficiente de corre\u00e7\u00e3o).<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/b5f90f7d1d95c97c9819218aab9079c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUm passo adicional na prepara\u00e7\u00e3o das vitrines \u00e9 a valida\u00e7\u00e3o dos dados. O algoritmo de valida\u00e7\u00e3o est\u00e1 associado ao uso de uma s\u00e9rie de modelos cient\u00edficos matem\u00e1ticos. No entanto, a utiliza\u00e7\u00e3o de plataformas low-code permite dividir um algoritmo complexo em uma s\u00e9rie de mapeamentos visualmente leg\u00edveis. Cada um desses mapeamentos executa uma tarefa espec\u00edfica. Como resultado, \u00e9 poss\u00edvel realizar depura\u00e7\u00e3o, registro e visualiza\u00e7\u00e3o das etapas de prepara\u00e7\u00e3o dos dados. <\/p>\n<p>O algoritmo de valida\u00e7\u00e3o foi dividido nos seguintes subetapas:<\/p>\n<ul>\n<li>Constru\u00e7\u00e3o de regress\u00f5es das depend\u00eancias de audi\u00eancia das redes de TV na regi\u00e3o em rela\u00e7\u00e3o \u00e0 audi\u00eancia de todas as redes na regi\u00e3o durante 60 dias. <\/li>\n<li>C\u00e1lculo dos res\u00edduos estudentizados (desvios dos valores reais em rela\u00e7\u00e3o aos previstos pelo modelo de regress\u00e3o) para todos os pontos de regress\u00e3o e para o dia de c\u00e1lculo.<\/li>\n<li>Sele\u00e7\u00e3o de pares an\u00f4malos regi\u00e3o-rede de TV, onde o res\u00edduo estudentizado do dia de c\u00e1lculo ultrapassa o limite (definido pela configura\u00e7\u00e3o da opera\u00e7\u00e3o).<\/li>\n<li>Recontagem do saldo estudantes ajustado para pares an\u00f4malos regi\u00e3o-rede de televis\u00e3o para cada respondente que assistiu \u00e0 rede na regi\u00e3o, com a defini\u00e7\u00e3o da contribui\u00e7\u00e3o deste respondente (quantidade de mudan\u00e7a do saldo estudantes ajustado) ao excluir a visualiza\u00e7\u00e3o deste respondente da amostra.<\/li>\n<li>Busca por candidatos cuja exclus\u00e3o leva o saldo estudantes ajustado do dia de c\u00e1lculo \u00e0 normalidade. <\/li>\n<\/ul>\n<p>\nO exemplo acima \u00e9 uma confirma\u00e7\u00e3o da hip\u00f3tese de que um engenheiro de dados j\u00e1 tem muita coisa na cabe\u00e7a\u2026 E, se realmente for um 'engenheiro' e n\u00e3o um 'programador', o medo da degrada\u00e7\u00e3o profissional ao usar ferramentas low-code deve finalmente desaparecer.<\/p>\n<h2>O que mais pode ser feito com low-code?<\/h2>\n<p>\nA \u00e1rea de aplica\u00e7\u00e3o da ferramenta low-code para processamento de dados em lote e em fluxo sem a necessidade de escrever c\u00f3digo em Scala manualmente n\u00e3o termina aqui.<\/p>\n<p>A aplica\u00e7\u00e3o de low-code no desenvolvimento de datalakes j\u00e1 se tornou um padr\u00e3o para n\u00f3s. Pode-se dizer que as solu\u00e7\u00f5es na pilha Hadoop seguem o caminho de desenvolvimento dos cl\u00e1ssicos DWH, baseados em SGBDs. Ferramentas low-code na pilha Hadoop podem resolver tanto problemas de processamento de dados quanto a constru\u00e7\u00e3o de interfaces BI finais. Al\u00e9m disso, \u00e9 importante destacar que por BI pode-se entender n\u00e3o apenas a representa\u00e7\u00e3o de dados, mas tamb\u00e9m sua edi\u00e7\u00e3o por usu\u00e1rios de neg\u00f3cios. Essa funcionalidade \u00e9 frequentemente utilizada por n\u00f3s na constru\u00e7\u00e3o de plataformas anal\u00edticas para o setor financeiro. <\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/cde5ce9dac9fcc9356b2b0ed291e299c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEntre outras coisas, com o uso de low-code e, em particular, Datagram, \u00e9 poss\u00edvel resolver a tarefa de rastreamento da origem de objetos de fluxos de dados com atomicidade at\u00e9 campos individuais (lineage). Para isso, no instrumento low-code, foi implementada a conex\u00e3o com o Apache Atlas e o Cloudera Navigator. Essencialmente, o desenvolvedor precisa registrar um conjunto de objetos nos dicion\u00e1rios do Atlas e referenciar os objetos registrados ao construir mapeamentos. O mecanismo de rastreamento da origem dos dados ou an\u00e1lise de depend\u00eancias de objetos economiza muito tempo quando \u00e9 necess\u00e1rio fazer ajustes nos algoritmos de c\u00e1lculo. Por exemplo, ao construir relat\u00f3rios financeiros, esse recurso permite lidar com mais conforto durante per\u00edodos de mudan\u00e7as na legisla\u00e7\u00e3o. Quanto melhor entendermos a depend\u00eancia entre formas no contexto de objetos da camada detalhada, menos enfrentaremos <\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/0b351b116564090bd03f6adf3fc52616.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Qualidade dos Dados &amp; Low-code<\/h2>\n<p>\nOutra tarefa implementada pelo instrumento low-code no projeto da empresa Mediascope foi a classe de tarefa de Qualidade dos Dados. A caracter\u00edstica da implementa\u00e7\u00e3o do pipeline de verifica\u00e7\u00e3o de dados para o projeto da empresa de pesquisa foi a aus\u00eancia de impacto na operabilidade e na velocidade do fluxo principal de c\u00e1lculo de dados. Para possibilitar a orquestra\u00e7\u00e3o de fluxos independentes de verifica\u00e7\u00e3o de dados, utilizou-se o j\u00e1 conhecido Apache Airflow. \u00c0 medida que cada etapa da produ\u00e7\u00e3o de dados ficava pronta, a parte isolada do pipeline de DQ era executada em paralelo. <\/p>\n<p>\u00c9 considerado uma boa pr\u00e1tica monitorar a qualidade dos dados desde o momento de seu surgimento na plataforma anal\u00edtica. Tendo informa\u00e7\u00f5es sobre metadados, podemos come\u00e7ar a verificar o cumprimento das condi\u00e7\u00f5es b\u00e1sicas \u2014 not null, constraints, foreign keys \u2014 assim que os dados entram na camada prim\u00e1ria. Essa funcionalidade \u00e9 implementada com base em mapeamentos gerados automaticamente da fam\u00edlia de qualidade de dados no Datagram. A gera\u00e7\u00e3o de c\u00f3digo, nesse caso, tamb\u00e9m se baseia nos metadados do modelo. No projeto da empresa Mediascope, a conex\u00e3o foi feita com os metadados do produto Enterprise Architect. <\/p>\n<p>Gra\u00e7as \u00e0 conex\u00e3o entre o instrumento low-code e o Enterprise Architect, as seguintes verifica\u00e7\u00f5es foram geradas automaticamente:<\/p>\n<ul>\n<li>Verifica\u00e7\u00e3o da presen\u00e7a de valores \"null\" em campos com o modificador \"not null\"; <\/li>\n<li>Verifica\u00e7\u00e3o da presen\u00e7a de duplicatas na chave prim\u00e1ria;<\/li>\n<li>Verifica\u00e7\u00e3o de chave estrangeira da entidade;<\/li>\n<li>Verifica\u00e7\u00e3o de exclusividade de uma linha com base em um conjunto de campos.<\/li>\n<\/ul>\n<p>\nPara verifica\u00e7\u00f5es mais complexas de disponibilidade e validade dos dados, foi criado um mapeamento com Scala Expression, que aceita como entrada um c\u00f3digo de verifica\u00e7\u00e3o em Spark SQL, preparado pelos analistas no Zeppelin.<\/p>\n<p><img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/f6dcc5719077a3186d23d7bdcb412c45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCertamente, a auto-gera\u00e7\u00e3o de verifica\u00e7\u00f5es deve ser feita gradualmente. No \u00e2mbito do projeto descrito, os seguintes passos foram realizados:<\/p>\n<ul>\n<li>DQ, realizados em notebooks do Zeppelin;<\/li>\n<li>DQ, integrados no mapeamento;<\/li>\n<li>DQ na forma de mapeamentos massivos separados, contendo um conjunto completo de verifica\u00e7\u00f5es para uma entidade espec\u00edfica;<\/li>\n<li>Mapeamentos DQ universalmente parametrizados, que aceitam como entrada informa\u00e7\u00f5es sobre metadados e verifica\u00e7\u00f5es de neg\u00f3cios.<\/li>\n<\/ul>\n<p>\nSem d\u00favida, a principal vantagem de criar um servi\u00e7o de verifica\u00e7\u00f5es parametrizadas \u00e9 a redu\u00e7\u00e3o do tempo de entrega de funcionalidades para o ambiente de produ\u00e7\u00e3o. Novas verifica\u00e7\u00f5es de qualidade podem passar pelo padr\u00e3o cl\u00e1ssico de entrega de c\u00f3digo de forma indireta atrav\u00e9s de ambientes de desenvolvimento e teste:<\/p>\n<ul>\n<li>Todas as verifica\u00e7\u00f5es de metadados s\u00e3o geradas automaticamente quando a modelagem na EA \u00e9 alterada;<\/li>\n<li>Verifica\u00e7\u00f5es de disponibilidade de dados (determina\u00e7\u00e3o da presen\u00e7a de quaisquer dados em um determinado momento) podem ser geradas com base em um diret\u00f3rio que guarda a temporiza\u00e7\u00e3o esperada da chegada do pr\u00f3ximo lote de dados em rela\u00e7\u00e3o aos objetos;<\/li>\n<li>As verifica\u00e7\u00f5es de validade dos dados de neg\u00f3cios s\u00e3o criadas pelos analistas nos notebooks do Zeppelin, a partir dos quais s\u00e3o direcionadas diretamente para as tabelas de configura\u00e7\u00e3o do m\u00f3dulo DQ no ambiente de produ\u00e7\u00e3o. <\/li>\n<\/ul>\n<p>\nOs riscos de enviar scripts diretamente para a produ\u00e7\u00e3o s\u00e3o praticamente inexistentes. Mesmo com um erro de sintaxe, o m\u00e1ximo que enfrentamos \u00e9 o n\u00e3o cumprimento de uma \u00fanica verifica\u00e7\u00e3o, pois o fluxo de c\u00e1lculo de dados e o fluxo de execu\u00e7\u00e3o de verifica\u00e7\u00f5es de qualidade est\u00e3o separados.<\/p>\n<p>Essencialmente, o servi\u00e7o DQ est\u00e1 permanentemente ativo no ambiente de produ\u00e7\u00e3o e pronto para iniciar seu trabalho assim que novos dados chegam. <\/p>\n<h2>Em conclus\u00e3o<\/h2>\n<p>\nA vantagem de usar low-code \u00e9 evidente. Os desenvolvedores n\u00e3o precisam criar um aplicativo \"do zero\". E um programador liberado de tarefas adicionais entrega resultados mais rapidamente. A velocidade, por sua vez, libera um recurso adicional de tempo para resolver quest\u00f5es de otimiza\u00e7\u00e3o. Portanto, neste caso, pode-se contar com uma solu\u00e7\u00e3o mais qualitativa e r\u00e1pida.<\/p>\n<p><b>Naturalmente, o low-code n\u00e3o \u00e9 uma panaceia, e a m\u00e1gica n\u00e3o acontecer\u00e1 sozinha:<\/b><\/p>\n<ul>\n<li>A ind\u00fastria de low-code est\u00e1 passando por uma fase de \"fortalecimento\", e ainda n\u00e3o h\u00e1 padr\u00f5es industriais homog\u00eaneos;<\/li>\n<li>Muitas solu\u00e7\u00f5es low-code n\u00e3o s\u00e3o gratuitas, e sua aquisi\u00e7\u00e3o deve ser um passo consciente, a ser dado com plena confian\u00e7a no benef\u00edcio financeiro de seu uso;<\/li>\n<li>Muitas solu\u00e7\u00f5es de low-code nem sempre se d\u00e3o bem com GIT \/ SVN. Ou s\u00e3o inconvenientes de usar no caso de oculta\u00e7\u00e3o do c\u00f3digo gerado;<\/li>\n<li>Ao expandir a arquitetura, pode ser necess\u00e1ria uma adapta\u00e7\u00e3o da solu\u00e7\u00e3o low-code \u2013 o que, por sua vez, provoca o efeito de \"vincula\u00e7\u00e3o e depend\u00eancia\" do fornecedor da solu\u00e7\u00e3o low-code.<\/li>\n<li>Um n\u00edvel adequado de seguran\u00e7a \u00e9 poss\u00edvel, mas \u00e9 bastante trabalhoso e complexo de implementar em motores de sistemas low-code. As plataformas de low-code devem ser escolhidas n\u00e3o apenas pelo princ\u00edpio de buscar lucro com seu uso. Ao escolher, deve-se considerar a presen\u00e7a de funcionalidades de gest\u00e3o de acesso e delega\u00e7\u00e3o\/escalonamento de dados de identifica\u00e7\u00e3o em todo o n\u00edvel de TI da organiza\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas\" src=\"\/wp-content\/uploads\/2020\/09\/8ad44d2f71f519b70f5ae1e1fe722066.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo entanto, se voc\u00ea conhece todas as desvantagens do sistema escolhido, e os benef\u00edcios de seu uso, no entanto, est\u00e3o na maioria dominante, ent\u00e3o avance para o low-code sem medo. Al\u00e9m disso, a transi\u00e7\u00e3o para ele \u00e9 inevit\u00e1vel \u2013 assim como qualquer evolu\u00e7\u00e3o.<\/p>\n<p>Se um desenvolvedor em uma plataforma low-code consegue executar seu trabalho mais rapidamente do que dois desenvolvedores sem low-code, isso d\u00e1 \u00e0 empresa uma vantagem em todos os aspectos. A barreira de entrada para solu\u00e7\u00f5es low-code \u00e9 mais baixa do que para tecnologias 'tradicionais', o que impacta positivamente na quest\u00e3o da escassez de profissionais. O uso de ferramentas de baixo c\u00f3digo pode acelerar a intera\u00e7\u00e3o entre equipes funcionais e a tomada de decis\u00f5es sobre a validade do caminho escolhida nas pesquisas de data science. As plataformas de baixo c\u00f3digo podem ser um motor para a transforma\u00e7\u00e3o digital da organiza\u00e7\u00e3o, pois as solu\u00e7\u00f5es produzidas podem ser compreendidas por especialistas n\u00e3o t\u00e9cnicos (em particular, usu\u00e1rios de neg\u00f3cios). <\/p>\n<p>Se voc\u00ea tem prazos apertados, uma l\u00f3gica de neg\u00f3cios complexa, escassez de expertise tecnol\u00f3gica e precisa acelerar o time to market, ent\u00e3o o low-code \u00e9 uma das maneiras de atender \u00e0s suas necessidades.<\/p>\n<p>N\u00e3o se deve subestimar a import\u00e2ncia das ferramentas de desenvolvimento tradicionais, mas em muitos casos, a aplica\u00e7\u00e3o de solu\u00e7\u00f5es de baixo c\u00f3digo \u00e9 a melhor forma de aumentar a efici\u00eancia nas tarefas a serem resolvidas.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/neoflex\/blog\/520554\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u2014 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438 \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043b\u044e\u0431\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 low-code \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-27T17:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-27T17:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Aplica\u00e7\u00e3o de low-code em plataformas anal\u00edticas | ProHoster","description":"Prezados leitores, boa tarde! A tarefa de construir plataformas de TI para acumula\u00e7\u00e3o e an\u00e1lise de dados surge, cedo ou tarde, em qualquer empresa cuja base de neg\u00f3cios seja um modelo intelectualmente exigente.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 low-code \u0432 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 | ProHoster","og:description":"\u0423\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0434\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f! \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0443 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/primenenie-low-code-v-analiticheskih-platformah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-27T17:42:23+00:00","article:modified_time":"2020-09-27T17:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95283","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:08:24","updated":"2026-02-22 15:29:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/95283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=95283"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/95283\/revisions"}],"predecessor-version":[{"id":162190,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/95283\/revisions\/162190"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/95284"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=95283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=95283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=95283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}