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

9 erros que desenvolvedores Node.js cometem (Me...

9 erros que desenvolvedores Node.js cometem (Mercado Pago)

Esta talk foi originalmente apresentada em um Meetup da comunidade Node.js Rio em meados de 2019, porém ao chegar no Mercado Pago e entrar no circuito interno de talks do time de Plugins and Partners, vi que seria muito útil apresentá-la novamente agora para outro público deveras interessado no tema Node.js.

Avatar for Fernando Henriques

Fernando Henriques

February 17, 2020
Tweet

More Decks by Fernando Henriques

Other Decks in Programming

Transcript

  1. Nome da empresa 1 1. Não utilizar development tools 1.2

    Automatic browser refresh ◦ Três steps: 1) Watch; 2) Enviar mensagem para os clientes conectados; 3) Page reload. ◦ Libs úteis ▪ watch - to watch for file changes ▪ sendevent - server-sent events ▪ uglify-js - for minifying the client-side JavaScript files
  2. • Se você não está trabalhando com workers (>12), o

    Node.js é single thread (usa um core de CPU) • Exemplos de como você pode ocupar a sua thread inteira e, assim, bloquear o evento loop acidentalmente: ◦ Parsear um json gigante com JSON.parse; ◦ Imprimir um output muito grande de uma só vez. 2. Bloquear o event loop
  3. • Soluções possíveis: ◦ Monitorar o event loop ▪ https://www.npmjs.com/package/blocked

    ◦ Entender e respeitar as limitações do Node.js ◦ Rodar sua aplicação em mais de um core ◦ Estudar worker e worker pool 2. Bloquear o event loop
  4. • Existem inúmeras libs que podem nos ajudar a logar:

    ◦ Morgan (log de requisições http) ◦ Bunyan ◦ Winston ◦ Bugsnag (serviço pago) 6. Logging pobre
  5. • Escrever testes automatizados com JavaScript e Node.js não tem

    custo alto (é fácil começar a testar); • Existem muitas ferramentas e muito conteúdo na internet mostrando como testar com Node.js; ◦ Exemplo de tutorial “getting started” de como testar com Node.js: TDD com Node.js + Mocha + Chai 7. Não escrever testes
  6. • Ferramentas de testes mais utilizadas pelo mercado e pela

    comunidade open-source: ◦ Testing frameworks: Mocha, Jest, Jasmine… ◦ E2E testing libraries: Selenium, Cypress, Puppeteer... ◦ Assert libraries: Chai, Expect, Should.js... ◦ Factories: Faker.js, Factory Girl... ◦ Code coverage: Istanbul 7. Não escrever testes
  7. • Vantagens da lib debug: ◦ Reaproveitamento de debug ◦

    Environment DEBUG ($ export DEBUG=* & node app.js) ◦ Controlar o que é debugado através do valor passado em DEBUG 9. Debugar com console.log