arquiteturas híbridas de atendimento em cloud computing para otimizar o uso de recursos (node.js)

27
1

Upload: 4linuxbr

Post on 26-Jun-2015

485 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

1

Page 2: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

2

Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de

recursos (Node.js)

Thiago Henrique de Oliveira

Page 3: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

3

Introdução

“A Nuvem,além da Infraestrutura.“

(Rodrigo Gazzaneo)

Page 4: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

4

Introdução

Qual Sistema

Gerenciador de

Banco de

Dados utilizar?

Qual Linguagemutilizar?

Page 5: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

5

Introdução

tudo fica mais simples!

Quando podemos

prever a quantidade de acessos...

Page 6: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

6

Introdução

Mas... e quando esse número não é preciso?

Page 7: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

7

Use Case

Que tal conhecermos o “use case” dessa palestra...

Pizzaria?

Taxi?

Petshop?

Cinemas?

Sistema de monitoramento?

Farmácia?

Page 8: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

8

Use Case

Baseando-se em um projeto real em fase de desenvolvimento pela 4Linux.

Foi criado um protótipo especialmente para o CloudConf,

seguindo os pré-requisitos do projeto e os testes de homologação que foram realizados.

Por questões de confidencialidade, o nome da empresa e os detalhes do projeto não podem ser divulgados.

Page 9: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

9

Use Case

1º) Atendimento médico;2º) Prescrição médica;3º) Onde localizar o medicamento?

Page 10: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

10

Use Case

Através de um serviço online de consulta, o sistema indica qual unidade possui os medicamentos da prescrição.

100%

75%

75%

75%

50%

50%25%

0%

0%

Page 11: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

11

O problema a ser solucionado

Temos nosso ambiente

determinado

A linguagem é

o menor dos problemas!

Mas, e a capacidade de processamento de

requisições simultâneas?

Page 12: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

12

Entendendo o problema

webservice_rest.php?id=12

JSON

● Para cada requisição:● Uma thread é criada (~ 2Mb de RAM);● Com 5.000 requisições simultâneas,

seria necessário 10Gb de RAM.● Agravante, as requisições são bloqueantes!

Page 13: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

13

Simulando o problema(resultados obtidos)

Em “testes de stress”, foi obtido os seguintes resultados:

Document Path: /CloudConf/homol_php.phpDocument Length: 0 bytes

Concurrency Level: 200Time taken for tests: 298.898 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 2110000 bytesHTML transferred: 0 bytes

Requests per second: 33.46 [#/sec] (mean)

Time per request: 5977.967 [ms] (mean)Time per request: 29.890 [ms] (mean, across all concurrent requests)Transfer rate: 6.89 [Kbytes/sec] received

Page 14: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

14

O que fazemos agora?

Como melhorar essa estatística?

Escalabilidade vertical?

Ou, escalabilidade horizontal?

Page 15: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

15

Que tal um novo paradigma?

E se passarmos a pensar de uma nova forma?

● E/S não bloqueantes;

● Single thread;

● E/S assincronas.

Page 16: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

16

E quem faz esse trabalho para nós?

(http://www.nodejs.org)

Page 17: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

17

O que é ?

Resumidamente, essa tecnologia nos permite:

● Alta escalabilidade da aplicação desenvolvida;

● Desenvolvimento server-side em javascript.

Page 18: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

18

Como o foi construído?

O Node.js, foi desenvolvido utilizando:

● C/C++ e Javascript;

● Funciona baseado em “Event Loop”, ou seja, a aplicação se mantém em espera, aguardando a entrada de dados para ai sim, realizar um processamento.

Page 19: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

19

Chega de teoria, e vamos para prática?

Page 20: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

20

O em ação

webservice_node.php?id=12

JSON(ou xml)

Page 21: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

21

Performance da nossa nova arquitetura

Fazendo uso do node.js, obtemos a seguinte estatística:

Document Path: /CloudConf/homol_node.phpDocument Length: 0 bytes

Concurrency Level: 200

Time taken for tests: 60.513 seconds

Complete requests: 10000Failed requests: 0Write errors: 0Total transferred: 2110000 bytesHTML transferred: 0 bytes

Requests per second: 165.25 [#/sec] (mean)

Time per request: 1210.269 [ms] (mean)Time per request: 6.051 [ms] (mean, across all concurrent requests)Transfer rate: 34.05 [Kbytes/sec] received

Page 22: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

22

Comparação das duas soluçõesApache/PHP5 vs Node.js

Document Path: /CloudConf/homol_node.phpDocument Length: 0 bytes

Concurrency Level: 200

Time taken for tests: 60.513 seconds

Complete requests: 10000Failed requests: 0Write errors: 0Total transferred: 2110000 bytesHTML transferred: 0 bytes

Requests per second: 165.25 [#/sec] (mean)

Time per request: 1210.269 [ms] (mean)Time per request: 6.051 [ms] (mean, across all concurrent requests)Transfer rate: 34.05 [Kbytes/sec] received

Document Path: /CloudConf/homol_php.phpDocument Length: 0 bytes

Concurrency Level: 200

Time taken for tests: 298.898 seconds

Complete requests: 10000Failed requests: 0Write errors: 0Total transferred: 2110000 bytesHTML transferred: 0 bytes

Requests per second: 33.46 [#/sec] (mean)

Time per request: 5977.967 [ms] (mean)Time per request: 29.890 [ms] (mean, across all concurrent requests)Transfer rate: 6.89 [Kbytes/sec] received

~5 min 1min→

Page 23: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

23

No que aplicar o

Podemos desenvolver pequenos módulos de fácil manutenção em node.js para necessidades específicas, principalmente aquelas que tratam grandes números de requisições.

Page 24: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

24

Até onde vai o poder do ?

As requisições não param de crescer?

Page 25: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

25

Tranquilize-se

O node.js está preparado para isso...

Ele possui extensões que permitem o desenvolvimento

de aplicações em Cluster, dividindo a execução dos seus processos entre as CPU's disponíveis, de forma simples e automática.

Page 26: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

26

Conclusão

O Node.js, apesar de ser um paradigma recém-criado, com menos de 5 anos de existência, vem demonstrando ser um modelo de desenvolvimento extremamente funcional, e de simples utilização.

Apesar das simulações não terem sido realizadas em um “supercomputador”, mas sim, em um servidor de médio porte, os resultados foram muito animadores:

80% em ganho de performance!

Este ganho de performance, que é comprovado, tem chamado atenção do nosso mercado, e, já estamos trabalhando com essa nova demanda.

Page 27: Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso de recursos (Node.js)

27

Obrigado

Thiago Henrique de [email protected]

@4LinuxBR

/4linux