Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tribulações e aprendizados: como estou desbravando o mundo do Javascript/Node

Tribulações e aprendizados: como estou desbravando o mundo do Javascript/Node

Palestra apresentada na Trilha Javascript e Node JS do TDC Recife 2020

Alessandro Dias

October 29, 2020
Tweet

Other Decks in Technology

Transcript

  1. pen4education Trilha – Javascript e Node Alessandro Dias Engenheiro de

    Software / Aluno x Professor / e tantas outras coisas...
  2. Tribulações e aprendizados: como estou desbravando o mundo do Javascript/Node

    Alessandro Dias • TDC Recife • Outubro de 2020
  3. pen4education Pai da Maria Clara 25+ anos em projetos de

    TI Cientista da computação Sempre curti programação / arquitetura Mas também pessoas / processos Psicólogo Professor em cursos de TI e UX Mestre em Administração e Negócios Música, RPGs, video games e boardgames
  4. pen4education Agenda • Uma jornada inicia com um (re)começo •

    Quem sou • Onde estou • O que já vi • Os anos Java • O que ando vendo • Os anos JS • Os projetos atuais • E o futuro?
  5. pen4education 1998 → Primeiro contato com Java 2000 → Primeiro

    contato com Javascript - muita bobagem e brincadeiras com o navegador 2001 → Primeiro uso propriamente dito - validação de coisas no front-end feito em Java Servlets 2002 → Uso extenso, agora em Java Server Pages - gerador de CRUD’s em Java também gerava código JS
  6. pen4education 2006 → Uso de Ajax na mão, sem frameworks

    de apoio - era terrível, mas funcionava !!! 2008 → Uso de frameworks em aplicações Java JSF - jQuery
  7. pen4education 2017 → Conheci o Vue.js e “trabalhei com JS”

    - testes com Jasmine e um pouco de Jest 2018 → Projeto com front-end em Angular - foi sofrido, mas foi uma baita experiência 2020 → Me coloquei em uma enrascada - novo desafio, projeto IoT com muito JS (Node e React ) e um pouco de Java no meio, literalmente
  8. pen4education 2020 → Primeiras tarefas - manutenção e criação de

    pequenas coisas em React 2020 → Primeiro grande desafio - serviço de sanitização de dados 2020 → Segundo grande desafio - trabalhar com React de forma efetiva em uma SPA para gerenciar os dados de uma plataforma de IoT
  9. pen4education Serviço de sanitização de dados Cenário Plataforma IoT →

    Alto input de dados diários MongoDB e ElasticSearch → mais de 30Tb de dados históricos
  10. pen4education Serviço de sanitização de dados Requisitos - Escalável -

    Falível - Separação de responsabilidades - Inversão de controle - Assincronia com persistência - Testes unitários - Clean code - Boas práticas
  11. pen4education Serviço de sanitização de dados Solução - Uso de

    MQs para persistência dos candidatos - Microserviços em Node.js rodando em nodes no Heroku - um ou mais jobs (producers) - um ou mais workers (consumers) - Uso de Promises - necessidade de assincronia, melhor error handling, código mais limpo - Uso de técnicas de inversão de controle - TDD sempre que preciso
  12. pen4education Serviço de sanitização de dados Bibliotecas usadas - Agenda

    - agendamento do job de busca de candidatos - Amqplib - conexão com RMQs - Awilix - evita um monte de requires pra tudo que é lado - Bluebird - implementação de Promises - foco em desempenho - Bunyan - logging - Elasticsearch Client - conexões Elastic - Mongoose - conexões MongoDB
  13. pen4education SPA com dados de plataforma IoT Cenário Criação de

    novas funcionalidades Necessidade de manter a separação das coisas Novos componentes
  14. pen4education SPA com dados de plataforma IoT Requisitos - Separação

    de responsabilidades - Assincronia - non-blocking - Testes unitários - Clean code - Boas práticas
  15. pen4education SPA com dados de plataforma IoT Bibliotecas usadas -

    Axios - HTTP client com Promises - Cogo-toast - Moment - Prop-types - React Google Maps - Stepzilla - wizard-like component - HarversterJS - JSON REST API
  16. pen4education Maiores aprendizados - Entendimento sobre o Event loop -

    Aprofundamento sobre Callbacks - Async/await e Promises - Como testar de forma efetiva - Como deixar de lado vícios da OO e do Java - Usar Hooks de forma efetiva
  17. Que eu aprendi com o Node (e com o JS

    em geral) Fácil de começar Ótimo para prototipagem e desenvolvimento ágil Pode ser aplicado para construir serviços super-rápidos e altamente escaláveis Codamos duas vezes mais rápido que o Java ( e com menos pessoas )
  18. No geral, o Node usa 33% menos linhas de código

    e 40% menos arquivos, em comparação com Java Node.js dobra o número de solicitações atendidas por segundo, enquanto diminui o tempo médio de resposta em 35% Mesma linguagem no front e no back <3 Que eu aprendi com o Node (e com o JS em geral)
  19. O Node usa o maior ecossistema de bibliotecas de código

    aberto disponível Ambiente orientado a eventos e non-blocking Leve e eficiente, legal para aplicativos em tempo real que usam muitos dados Que eu aprendi com o Node (e com o JS em geral)
  20. Que eu aprendi com o React Fácil de aprender Separação

    de responsabilidades Reuso de componentes Grandes ferramentas Grande ecossistema Facilmente testável
  21. pen4education Pra onde vou? - TypeScript - investir em converter

    serviços básicos - Cypress - testes funcionais automatizados - Micro Frontends - avaliar com POC’s