Série Node.js: A estratégia para TypeScript é… não usar.

Olá!

[English Version]

Este post faz parte da minha série Node.js, para saber mais, verifique as postagens anteriores .

Indo direto ao assunto, quando você começar a mergulhar no mundo do javascript e do Node.js, especialmente se tiver uma cultura .Net na sua empresa, você se deparará com o TypeScript.

O TypeScript é uma iniciativa da Microsoft para trazer recursos mais avançados para o javascript, garantindo a compatibilidade entre sistemas operacionais e navegadores, como eles dizem no site: “Qualquer navegador. Qualquer host. Qualquer sistema operacional. Opensource”. Parece uma boa idéia, só que o que eles estão tentando fazer é resolver um problema que existe principalmente por causa da, bem, Microsoft!

Javascript é a linguagem mais antiga disponível na web, juntamente com HTML e CSS [referência] e tem provado ao longo dos anos ser uma das linguagens de evolução mais veloz, um ponto que pode ser verificado acessando o MDN Network onde você encontrará documentados todos os recursos extensivos que o javascript tem e como ele evolui quase diariamente, dominando o jogo de codificação assíncrona como muitas linguagens modernas só podem simular. No entanto, a Microsoft ainda hoje falha em acompanhar essa velocidade, um ponto que pode ser facilmente comprovado com a instalação da extensão compat-report no seu navegador firefox como você vê no exemplo printscreen abaixo.


Captura de tela de 2018-08-24 09-22-34

A estratégia que o TypeScript traz não é nova nem desnecessária quando se trata de web design, já que existem outras ferramentas como o React.js que também compilará seu código em javascript puro, liberando-o do fardo da codificação extensa, mas quando você estiver falando sobre server-side, seu código terá de atendender padrões de alto desempenho e a adição de geradores de código à sua solução resultará em uma solução inchada que exige altos recursos para executar e torna a depuração muito mais misteriosa.

Uma estratégia muito mais simples e ainda muito negligenciada é realmente se familiarizar com as ferramentas que o próprio Node.js lhe dá lendo a documentação na versão escolhida e mantendo-se atualizado com os recursos de javascript atuais e mais recentes no MDN Network.

Além disso, digamos que sua estratégia no TypeScript seja, na verdade, para fins serverless. Nesse caso, você deveria considerar se familiarizar com o Serverless Framework , uma opção muito mais viável.

Advertisements

Node.js Series: TypeScript strategy is… don’t use it.

Hi there!

[Versão em Português]

This is part of my Node.js Series, to know more, make sure you check out the previous posts.

So, once you start diving into the javascript and Node.js world, especially if you have a .Net culture in your company, you will stumble upon TypeScript.

TypeScript is a Microsoft initiative to bring more advanced features to javascript while making sure it keeps compatible throughout operation systems and browsers, like they say on their on website: “Any browser. Any host. Any OS. Opensource.”. It really seems like a good idea, only that what they are trying to do is solving a problem that exists mainly because of, well, Microsoft!

Javascript is the oldest web-ready language out there, together with HTML and CSS [reference] and has proven through the years to be one of the fastest evolving languages, a point that you can verify by accessing the MDN network where you will find documented all the extensive features javascript has and how it evolves nearly on a daily basis, dominating the asynchronous coding game like still many modern languages can only simulate. Microsoft however still today fails on keeping up with this speed, a point that can be easily proven by installing the compat-report extension on your firefox browser like you see on the example printscreen below.


Captura de tela de 2018-08-24 09-22-34

The strategy TypeScript brings is however not new and not at all unnecessary when dealing with web design, as there are other tools like React.js that will also compile your code into plain javascript releasing you from the burden of extensive coding, but when you are talking about server-side, your code will have high performance standards and adding code generators to your solution will result into bloated solution that demands high resources to run and makes debugging much more mysterious.

A much simpler and still highly overlooked strategy is to actually get familiar with the tools Node.js itself gives you by reading the documentation on your chosen release and staying up to date with the current and latest javascript features on the MDN network.

Furthermore, let’s say your strategy on TypeScript is actually for serverless purposes, in this case you should really consider getting familiar with Serverless Framework, a much more viable option.

Série Node.js: Rodando suave…

Olá!

[English Version]

Esta é a parte 5 da minha série Node.js, dê uma olhada nos posts anteriores!

Até agora na série, determinamos que há muitas vantagens em migrar para o Node.js, desde a facilidade de adoção da equipe de programadores até o desempenho, mas ele precisa de algumas ferramentas.

Ao executar seu código diretamente do node ou do do npm, como acontece em qualquer outra linguagem, ocorrerão erros, e você não quer que seus serviços sejam interrompidos sempre que alguém esquecer de tratar alguma exceção. Você também desejará fornecer continuamente atualizações de código sem que os clientes experimentem o tempo fora do ar ou a redução do desempenho.

Para conseguir isso, você deveria verificar o PM2 , da Keymetrics.

Essa ferramenta não apenas manterá seu código em execução, mas também fornecerá ferramentas profissionais para monitorar, gerenciar e até mesmo debugar seu código de execução.

Se você já tem o Node.js instalado, tudo o que você precisa fazer é executar isso no seu console:

npm install pm2 -g

Uma vez que você o tenha, é fácil rodar o seu primeiro código, se você tiver um arquivo javascript que roda com o Node, digamos que seja chamado myservice.js, você pode iniciá-lo executando o código abaixo. Para este exemplo, estou usando o código que eu postei anteriormente, dê uma olhada!

pm2 start myservice.js

Se o seu console retornar algo assim, você está no caminho certo:

[PM2] Starting /myservice.js in fork_mode (1 instance)
[PM2] Done.
⇆  PM2+ activated | Web: https://app.pm2.io/#/r/MY_ID | Server: vrsbrazil | Conn: Axon
PM2+ on-premise link: root.keymetrics.io
┌───────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┬──────────┐
│ App name  │ id │ mode │ pid  │ status │ restart │ uptime │ cpu │ mem       │ user     │ watching │
├───────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┼──────────┤
│ myservice │ 0  │ fork │ 7398 │ online │ 0       │ 0s     │ 0%  │ 12.8 MB   │ vrsbrazil│ disabled │
└───────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────────┴──────────┘
 Use `pm2 show ` to get more details about an app

Então essa é a parte em que fica interessante. Se você fizer olhar a linha 3, você verá uma URL, o ID aqui está obviamente alterado, mas uma vez que você o execute em sua máquina e acessar este link, você chegará à página de monitoramento em nuvem, que se parecerá com isto:

Captura de tela de 2018-08-02 11-43-21

Como você pode ver, este é obviamente um recurso pago, mas pode realmente melhorar a sua vida. Se você tem até 4 processos, você pode usar a versão gratuita e, na verdade, há muito a fazer com ela, o monitoramento em tempo real oferecido é bastante útil, mas há muitos recursos que você pode obter com o pago.

Captura de tela de 2018-08-02 11-59-15

De volta ao console, como eu mencionei no começo, você vai querer ter seu serviço à prova de falhas e este é um dos recursos pré-construídos, caso seu código falhe, o PM2 irá reiniciar automaticamente para você. É claro que é necessário ter uma maneira de garantir que seus processos sejam iniciados automaticamente, caso você precise reiniciar o servidor. Para fazer isso, tudo o que você precisa fazer é executar isso em seu console:

pm2 startup

O console retornará o próximo comando que você precisa para executar, a fim de permitir que ele inicie em tempo de boot, no meu caso, é isso que eu recebi:

[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /home/vrsbrazil/.npm-global/lib/node_modules/pm2/bin/pm2 startup systemd -u vrsbrazil --hp /home/vrsbrazil

Garanta que você rodou o comando sugerido e tudo deverá funcionar bem.

Bem, é isso para este post. Espero que você goste e, se puder, deixe-me saber o que você está construindo nos comentários.

Ainda há muito o que falar nessa série do Node.js, então, por favor, siga-me no twitter @vrsbrazil para que você possa ser notificado no próximo post.

Muito obrigado!