Brilhante: Ajuste de desempenho com futuro e promessas – Parte 1

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Em nosso artigo anterior sobre o Shiny, compartilhamos nossas experiências com testes de carga e dimensionamento horizontal de aplicativos. Mostramos o design de um processo, desde uma prova de conceito até uma aplicação em toda a empresa.

A segunda parte da série de blogs se concentra no futuro e nas promessas dos pacotes R, que são usados ​​para otimizações no aplicativo. Isso facilita a redução drástica de possíveis tempos de espera para o usuário.

Para cobrir este tópico com o máximo de detalhes possível, a primeira parte do artigo refere-se à teoria e operação do Shiny e ao futuro / promessas. Também explica as técnicas de programação assíncrona nas quais o pacote funciona. Na segunda parte, um exemplo prático é usado para mostrar como as idéias para otimização podem ser implementadas.

Fluxo de trabalho brilhante – conexões e processos R

A figura a seguir mostra o procedimento pelo qual o acesso do usuário a um aplicativo Shiny é realizado:

Para cada usuário acessar um aplicativo Shiny, o servidor decide se o usuário é adicionado a um processo R existente ou se um novo processo R é iniciado ao qual o usuário será conectado. Como exatamente o servidor lida com essa decisão pode ser controlado separadamente para cada aplicativo por meio de determinados parâmetros de ajuste.

R é de thread único, ou seja, todos os comandos dentro de um processo são executados sequencialmente (não em paralelo). Por esse motivo, o processo destacado em laranja pode causar atrasos na execução do aplicativo. No entanto, isso depende do uso de outros usuários do aplicativo, que estão conectados ao processo. O gráfico a seguir ilustra esse uso.

Como o usuário 2 está conectado ao mesmo processo R do usuário 1, ele precisa aguardar até que a tarefa iniciada pelo usuário 1 seja concluída para usar o aplicativo. Como geralmente é impraticável (ou impossível) atribuir a cada usuário uma sessão R separada para o aplicativo Shiny, isso leva às possibilidades acima mencionadas, que são realizadas com promessas / futuras e serão discutidas em mais detalhes abaixo.

Leia Também  Construindo um pipeline simples em R

futuro e promessas – Programação assíncrona em R

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Qualquer pessoa que já tenha experiência com outras linguagens de programação provavelmente encontrará o termo “programação assíncrona” de uma forma ou de outra. A idéia por trás disso é simples: a partir de uma lista de tarefas de um processo, uma sub-lista de tarefas complexas é terceirizada para manter o processo inicial reativo. Em nosso exemplo, uma dessas “tarefas de bloqueio de processos” seria a tarefa de aprendizado de máquina / banco de dados iniciada pelo usuário 1. Os pacotes R future & promises implementam esse paradigma de programação para R, que permite apenas a programação seqüencial (“síncrona”) nativamente. O fluxo de trabalho é dividido em diferentes classes (os chamados “planos”):

O conjunto da operação de referência reflete a maneira “normal” na qual R funciona. Os processos executam tarefas uma após a outra, ou seja, tarefas posteriores devem aguardar a conclusão de seus predecessores.

As tarefas 1 e 2 dos agendamentos assíncronos mostrados acima são terceirizadas para processos secundários / secundários, para que o processo principal permaneça livre e a tarefa 3 possa ser processada. A diferença é que “Multisessão” inicia dois novos processos R nos quais as tarefas são executadas. O multicore, por outro lado, ramifica o processo principal em dois subprocessos, o que só é possível no Linux. Por exemplo. planos adicionais permitem a terceirização de sistemas distribuídos.

Otimização: entre sessões versus intra-sessão

Para entender melhor as etapas do artigo prático a seguir, são apresentados dois tipos de otimização, nos quais o termo ajuste de desempenho no aplicativo pode ser dividido. Eles têm uma influência significativa no processo de otimização e, portanto, são essenciais para um entendimento comum.

Conforme mostrado no gráfico abaixo, o ajuste de desempenho é dividido em otimização entre sessões e intra-sessão. Se um aplicativo for otimizado em relação ao desempenho intra-sessão, o sistema tentará reduzir o tempo de espera do usuário que está executando o aplicativo atual.

Leia Também  Anatomia de regressão intrigante | R-bloggers

Os pacotes future & promises são projetados no contexto Shiny para otimização entre sessões. O objetivo é manter o aplicativo reativo para todos os outros usuários que acessam o aplicativo ao mesmo tempo. O usuário que inicia a tarefa ainda terá que aguardar a conclusão da tarefa antes de poder continuar usando o aplicativo.

Conclusão e Perspectivas

A teoria por trás da maneira como o Shiny funciona e os paradigmas de programação assíncronos são um passo importante para entender como o futuro / promessas funciona. Além disso, percepções mais profundas da arquitetura dos sistemas aprimoram a visão em relação aos processos de otimização necessários e em que pontos isso pode ser aplicado. Na segunda parte deste artigo, veremos como a riqueza de informações pode ser moldada usando uma sintaxe intuitiva e como isso pode influenciar o desenvolvimento de um aplicativo.

Somos especialistas no desenvolvimento de aplicativos Shiny e na construção de infraestruturas produtivas de TI no contexto da ciência de dados. Você tem perguntas sobre esses tópicos? Teremos o maior prazer em estar à sua disposição como pessoas de contato.



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha seu sabor: e-mail, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br