Processando dados com Node.js,
AWS Lambda e Kinesis Streams
Dificuldades em processamento em larga escala
● Tolerância a falhas
● Recursos computacionais limitados
● Tempo limitado
● Alocação de recursos
AWS Kinesis Streams
• Engine de processamento de Streams em Tempo Real
• Semelhante ao Apache Kafka
• Processamento de dados facilmente escalável através do número de shards
• Leitura de dados rápida (cerca de 300 ms)
Produtor
Kinesis Stream
Shard 1
Shard 2
...
AWS Lambda
KCL Apps
Outros
consumidores
AWS Lambda
• Executa funções sem servidores ("Serverless", "Function as a Service")
• Acionamento através de eventos, escalando a medida que eles são disparados
• Atualmente suporta Node.js (4.3.2 e 6.10.2), Python (3 e 2.7), Java 8 e C# (.Net Core 1.0.1)
Evento Função Resultado
Integração - Lambda e Kinesis Streams
● A leitura do Kinesis é feita por um único Lambda por shard
● É possível definir o número de registros a ser lido por um único lambda
● Caso haja erro na leitura, o ponteiro do Kinesis congelará nos registros com erro
até os dados serem lidos corretamente ou expirarem (1 ou 7 dias)
Produtor
Kinesis Stream
Shard 1
Shard 2
...
AWS Lambda 1
AWS Lambda 2
AWS Lambda ...
Code Samples
O Primeiro
Caso de Uso
AWS
RDS
EC2 INSTANCES
plataforma
SQS
BATCH
PRODUCER
( WINDOW COVERAGE )
KINESISMEMCACHED LAMBDA ELASTIC
EVENT
PRODUCER
KINESIS
CONSUMER
BATCH
PRODUCER
AWS SERVICE
NODE JS APP
SPRINKLR ITEM DISPATCHER
SPRINKLR ITEM DISPATCHER
TOTAL DE MENÇÕES:
713.426.525
TOTAL DE OPERAÇÕES POR DIA:
2.000.000
TOTAL DE MENÇÕES POR DIA:
400.000
Obrigado !
danielbpdias@gmail.com
joao.h.a.santos@gmail.com
https://github.com/danielbdias/nodebr-meetup-lambda-kinesis-demo
Open source @ Sprinklr
Conheça os nossos projetos em https://github.com/scup
● Speck - Entidades de domínio com validações reativas
● Nodebase - boilerplates de NodeJS da Sprinklr
● kinesis-interface - exemplos de uso do KCL
● Speck Sequelize Repository - modelos de repositório de acesso a dados com o
Speck

Processamento de dados com Node.js, AWS Lambda e Kinesis Streams

  • 1.
    Processando dados comNode.js, AWS Lambda e Kinesis Streams
  • 2.
    Dificuldades em processamentoem larga escala ● Tolerância a falhas ● Recursos computacionais limitados ● Tempo limitado ● Alocação de recursos
  • 3.
    AWS Kinesis Streams •Engine de processamento de Streams em Tempo Real • Semelhante ao Apache Kafka • Processamento de dados facilmente escalável através do número de shards • Leitura de dados rápida (cerca de 300 ms) Produtor Kinesis Stream Shard 1 Shard 2 ... AWS Lambda KCL Apps Outros consumidores
  • 4.
    AWS Lambda • Executafunções sem servidores ("Serverless", "Function as a Service") • Acionamento através de eventos, escalando a medida que eles são disparados • Atualmente suporta Node.js (4.3.2 e 6.10.2), Python (3 e 2.7), Java 8 e C# (.Net Core 1.0.1) Evento Função Resultado
  • 6.
    Integração - Lambdae Kinesis Streams ● A leitura do Kinesis é feita por um único Lambda por shard ● É possível definir o número de registros a ser lido por um único lambda ● Caso haja erro na leitura, o ponteiro do Kinesis congelará nos registros com erro até os dados serem lidos corretamente ou expirarem (1 ou 7 dias) Produtor Kinesis Stream Shard 1 Shard 2 ... AWS Lambda 1 AWS Lambda 2 AWS Lambda ...
  • 7.
  • 8.
  • 9.
    AWS RDS EC2 INSTANCES plataforma SQS BATCH PRODUCER ( WINDOWCOVERAGE ) KINESISMEMCACHED LAMBDA ELASTIC EVENT PRODUCER KINESIS CONSUMER BATCH PRODUCER AWS SERVICE NODE JS APP SPRINKLR ITEM DISPATCHER
  • 10.
    SPRINKLR ITEM DISPATCHER TOTALDE MENÇÕES: 713.426.525 TOTAL DE OPERAÇÕES POR DIA: 2.000.000 TOTAL DE MENÇÕES POR DIA: 400.000
  • 11.
  • 12.
    Open source @Sprinklr Conheça os nossos projetos em https://github.com/scup ● Speck - Entidades de domínio com validações reativas ● Nodebase - boilerplates de NodeJS da Sprinklr ● kinesis-interface - exemplos de uso do KCL ● Speck Sequelize Repository - modelos de repositório de acesso a dados com o Speck