mas não precisa ser assim. acreditamos que a tecnologia ... · um contêiner do docker é um...

60
Mas não precisa ser assim. acreditamos que a tecnologia pode entregar cada vez mais conveniência sem comprometer a nossa privacidade.

Upload: others

Post on 05-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Mas não precisa ser assim. acreditamos que a tecnologia pode entregar cada vez mais conveniência sem comprometer a nossa privacidade.

Page 2: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Desenvolvimento de aplicações web com R ShinyComo escalar produtos de dados de forma rápida e confiável

Page 3: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Gabriel Teotonio

EstatísticaUniversidade Federal de Pernambuco.

Cientista de Dados.

Page 4: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

> 60Mde smartphones no Brasil

> 16TBde dados processados

diariamente

> 28Mde lugares mapeados

Page 5: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Privacidade

Fluidez RelevânciaConveniência

Anonimidade Personalizaçãoconsentida

Entregar conveniência para as pessoas garantindo sua

privacidade.

Nosso propósito

Page 6: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Sessão

1.O que é Shiny?

2.Lidando com banco de dados

3.Testando sua aplicação

4.Deploy

Conhecendo o framework de R que nos ajuda a criar aplicações

Entendo a comunicação com bancos e boas práticas

Buscando gargalos e melhorando a performance

Como disponibilizar sua aplicação de forma segura

Page 7: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 8: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

O que é Shiny?

Page 9: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Um pacote em R para desenvolvimento de aplicações web.

Page 10: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Todo aplicativo Shiny possui uma página da web que o usuário visita e, por trás dessa página, há um computador que serve essa página executando R.

Page 11: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 12: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Instruções do Server Interface do usuário

Page 13: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Interface do usuárioControla o layout e aparência do app

Função serverContém as instruções

necessárias para construir o app

Anatomia de uma aplicação Shiny

Page 14: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 15: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

server.R ui.R

Page 16: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

server.R ui.R

global.R

Page 17: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Lidando com banco de dados

Page 18: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Esses formatos compactam seu arquivo de maneira que você tenha um alto desempenho de leitura dentro do aplicativo:

● .feather

● .RDS

Mas antes...

Page 19: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Conectando-se a um grande volume de dados.

Page 20: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

sum(column_x)

sum(column_x[a, b-1])

sum(column_x[b, c-1])

sum(column_x[c, d])

Result

R é single-threaded

Page 21: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 22: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Consulta

Dados processados

Page 23: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Podemos continuar usando o maravilhoso pacote dplyr para realizar as consultas ao banco de dados, a partir da versão dbplyr.

Page 24: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 25: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Pontos importantes

● Ao trabalhar com bancos de dados, o dplyr tenta ser o mais lazy possível;

● Podemos usar o comando collect() para retornar a tabela resultante para o ambiente local;

● O comando pull() também é útil quando a consulta retorna um vetor, e não uma tibble.

Page 26: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Cuidando das credenciais

● Criptografar credenciais com o pacote keyring;

● Use o arquivo de configuração;

● Variáveis de ambiente usando o arquivo .Renviron;

● Usando as opções de comando do R base;

● Solicite credenciais usando o RStudio IDE.

Page 27: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Testando sua aplicação

Page 28: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 29: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Está rápida suficiente?

O que está causando

isso?Otimização

Não

Repita

shinyloadtest profvis

Page 30: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

shinyloadtest

O processo para testar a carga de um aplicativo Shiny consiste em três etapas:

1. Grave uma sessão típica do usuário para o aplicativo;

2. Repita a sessão em paralelo, simulando muitos; usuários simultâneos acessando o aplicativo;

3. Analise os resultados do teste de carga e determine se o aplicativo teve bom desempenho.

Page 31: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

1.

2.

3.

Page 32: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Voltando...

Page 33: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

● Dados em um .csv;

● Lendo os dados sempre que for realizar um filtro.

● Dados em um .feather;

● Múltiplos arquivos para cada combinação

Cenário 1 Cenário 2

Page 34: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 35: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Cenário 1

Page 36: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Cenário 2

Page 37: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

profvis

O profvis é uma ferramenta para ajudar você a entender como o R gasta seu tempo.

Page 38: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 39: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 40: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Faça o trabalho fora da aplicação

Spark etls/jobs

Page 41: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Deploy

Page 42: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 43: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Dependências

Pacotes

Sistema operacional

Versão do R

Page 44: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Algumas opções:

● Shinyapps.io;

● Shiny server (open source);

● Shiny server pro.

Compartilhando ou disponibilizando sua aplicação

Page 45: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 46: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

O Docker é uma ferramenta projetada para facilitar a criação, implantação e execução de aplicativos usando contêineres. De certa forma, o Docker é um pouco como uma máquina virtual.

O que é Docker?

Page 47: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Imagem Contêiner

Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código específico do aplicativo.

Eles são "modelos prontos para uso com instruções para criar um contêiner Docker".Define o código do contêiner, bibliotecas, variáveis de ambiente, arquivos de configuração e muito mais.

Page 48: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 49: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 50: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Imagem base com o Shiny server instalado

Instalando algumas dependências

Instalando os pacotes que vamos utilizar em R

Copiando a pasta que contém meu app

Iniciando a aplicação

Page 51: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 52: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 53: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Spark etls/jobs ?

Page 54: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Criando APIs

Um pacote que converte seu código em uma REST API simplesmente decorando seu código existente em R com comentários especiais.

Page 55: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Arquivo kmeans.R

Page 56: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código
Page 57: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Imagem base do R

Instalando o plumber e criando um diretório

Copiando nosso arquivo para o diretório criado

Page 58: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Spark etls/jobs

Page 59: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

Vá mais longe!

● Banco:○ SQL injections attack.

● Autenticação:○ Pacote auth0 (Curso-R).

● Teste:○ shinytest;○ plotCaching.

● Deploy:○ kubernetes.

Page 60: Mas não precisa ser assim. acreditamos que a tecnologia ... · Um contêiner do Docker é um ambiente isolado em execução no kernel de uma máquina host que permite executar código

inloco.com.br/careersmedium.com/inlocotech

[email protected]