Trilha NodeJS
Índice
- 1 Conteúdo disponibilizado pelos palestrantes
- 2 Resumo
- 2.1 Geral
- 2.2 Desenvolvendo BOTs com Telegram e Javascript
- 2.3 Programação Reativa Funcional com Observables
- 2.4 Comunicação em tempo real com Node.js
- 2.5 Asterisk + Node = Apps de R$ 7.000,00 por mês
- 2.6 Serious nodeJS applications
- 2.7 Deixando o V8 otimizar sua aplicação Node
- 2.8 Você não conhece o Node.js
Conteúdo disponibilizado pelos palestrantes
Palestra | Palestrante |
Desenvolvendo BOTs com Telegram e Javascript (material não disponível) | Erick Wendel Gomes da Silva |
Programação Reativa Funcional com Observables (material não disponível) | Felipe Rohde |
Comunicação em tempo real com Node.js (material não disponível) | Vinicius Mussak |
Asterisk + Node = Apps de R$ 7.000,00 por mês (material não disponível) | Marcelo Lomonaco |
Serious nodeJS applications (material não disponível) | Guilherme de Souza |
Deixando o V8 otimizar sua aplicação Node (material não disponível) | Talysson de Oliveira Cassiano |
Você não conhece o Node.js (material não disponível) | William Grasel Martins |
Resumo
Geral
...
Desenvolvendo BOTs com Telegram e Javascript
Desenvolveu-se uma aplicação para demonstrar a utilização de BOT em um sistema de troca de mensagens, utilizando conceitos de Inteligência Artificial para analisar e identificar padrões textuais, respondendo à perguntas de maneira autônoma.
A primeira etapa foi o desenvolvimento do chat, que utilizou a API do Telegram, demonstrando o envio e recebimento de mensagens. A segunda etapa demonstrou a analise das mensagens de maneira autônoma utilizando um framework de Inteligência Artificial da IBM, o Watson Tone Analyser e Language Translation que conseguiu traduzir as mensagens do inglês para o português e identificar padrões respondendo as mensagens de maneira autônoma.
Programação Reativa Funcional com Observables
A palestra abordou de uma forma mais teórica conceitos de programação reativa. Citou um caso de uso da empresa Netflix, que vem recentemente utilizando Node.js para tratar a escalabilidade de seu back-end, com um sistema reativo a cargas e falhas e utilizando programação baseado em streams (fluxo constante de dados ordenados por uma linha de tempo).
Ficou claro que utilizar programação imperativa para lidar com problemas assíncronos torna a aplicação cada vez mais complexa e menos escalável, por isso, mecanismos como callbacks, promisses e eventos são muito utilizadas em linguagens assíncronas como Jvascript em Node.js. Porém com a necessidade de lidarmos cada vez mais com concorrência de dados, esses mecanismos apresentam sérias deficiências, deixando aplicações mais frágeis e improdutivas.
Uma solução apresentada como a melhor maneira para tratar códigos assíncronos foi a utilização de Observables, que se utilizado de maneira correta, poderá trazer muitos benefícios a aplicação, como uma maior tolerância a falhas, mais agilidade, menos consumo e maior escalabilidade.
Apresentou e demonstrou alguns exemplos da biblioteca RxJS, que é uma das mais conhecidas para implementação de programação reativa.
Comunicação em tempo real com Node.js
Iniciou-se a palestra expondo a necessidade da comunicação em tempo real que vem fazendo com que grandes produtos como Google Drive, slack, facebook, twitter, globoesporte.com utilizem uma ferramenta disponível no mercado, conhecida como socket, que torna possível essa comunicação em tempo real.
Socket permite que exista uma comunicação bidirecional baseado em eventos. Um exemplo prático na web: uma API tem a necessidade de comunicar-se com o cliente da aplicação e vice-versa, mas ao invés de usarmos uma comunicação http, utilizamos uma lib de socket tanto no cliente quanto no servidor, que abre um 'canal' de comunicação entre eles, no qual se comunicam através de mensagens, permitindo o tráfego de informações bidirecionalmente.
Alguns exemplos de aplicações potencialmente úteis para a utilização de sockets: chats, sistema de notificações e jogos.
O palestrante mostrou na prática um simples exemplo de um chat utilizando socket utilizando Node JS no lado do servidor.
Asterisk + Node = Apps de R$ 7.000,00 por mês
A palestra teve ênfase no mercado de call center. Mostrou-se alguns métodos utilizado pelo palestrante em projetos pessoais, que tornou possível a integração de seus sistemas com Asterisk (software livre que possibilita a criação de uma central telefônica por intermédio de um computador). Como desenvolvedor desses sistemas, o palestrante contou sua experiência de anos, utilizando diversas linguagens back-end até chegar atualmente na plataforma Node JS, que vem atendendo muito bem às necessidades de seus projetos.
Serious nodeJS applications
A proposta da palestra foi demonstrar padrões de arquiteturas necessárias para tornar uma aplicação Node escalável. Apenas quando é feita a separação das camadas da regra de negócio da aplicação conseguimos manter uma escalabilidade em nossa solução. Para isso foi demonstrado alguns frameworks que facilitam a estrutura MVC (Model View Controller) em aplicações Node JS. O mais popular utilizado atualmente é o Sailsjs, dentre outros, estão Adonis e Locomotive.
O palestrante é um membro muito ativo da comunidade open source, possui vários repositórios próprios de código aberto em seu github, que utilizam Javascript no client e server.
Deixando o V8 otimizar sua aplicação Node
Iniciou-se a palestra com uma explicação básica mais baixo nível de como funciona o interpretador Javascript v8 (uma ferramenta de código aberto desenvolvida em C++). A proposta do v8 é acelerar o desempenho de uma aplicação compilando o código Javascript para o formato de máquina. Nesse fluxo, o compilador denominado "Crankshaft compiler" é responsável por fazer otimizações no código Javascript para C++, porém, dependendo de como o Javascript é escrito, essa otimização pode falhar, gerando um processo denominado "Bail out", fazendo com que a aplicação perca o desempenho.
Após a explicação desse processo, a palestra mostrou exemplos práticos de como podemos evitar que o "Bail out" ocorra em nossas aplicações.
A proposta da palestra foi demonstrar padrões de arquiteturas necessárias para tornar uma aplicação Node escalável. Abstraindo toda a camada de regra de negócio da aplicação,
Você não conhece o Node.js
A importância de pensar na escalabilidade em aplicações Node JS ainda na etapa arquitetural do projeto foi o foco dessa palestra. O título faz relação com um cenário muito visto atualmente no mercado, no qual desenvolvedores utilizam exemplos práticos de frameworks em Node JS para usar em produção, sem pensar que são apenas exemplos e que na maioria das vezes deverão ser adaptados arquiteturalmente para garantir a evolução e escalabilidade do projeto. Enfatizou-se que utilizar frameworks é algo benéfico, mas que fazer um exemplo prático de algo já pronto não é suficiente para que um desenvolvedor esteja apto à programar em Node Js, pois ao contrário do que muitos pensam, Node não é uma ferramenta fácil, um dos motivos disso é o controle do processo da aplicação (tratamento de erros, manipulação do ciclo de vida, etc.) que fica à cargo da aplicação, não existindo assim nenhum gerenciador que manipule esse processo, como temos em outras aplicações back-end cujo controle desses processos fica à cargo de gerenciadores como Apache, IIS e Ngix, por exemplo.