<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pedro Soares</title>
    <description>The latest articles on DEV Community by Pedro Soares (@soares_pedro).</description>
    <link>https://dev.to/soares_pedro</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1708392%2Ff3d21f61-b351-47b7-b411-5601c9e3b8ed.jpeg</url>
      <title>DEV Community: Pedro Soares</title>
      <link>https://dev.to/soares_pedro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/soares_pedro"/>
    <language>en</language>
    <item>
      <title>O que aprendi sobre Monitoramento de Aplicações Front-End nos últimos meses.</title>
      <dc:creator>Pedro Soares</dc:creator>
      <pubDate>Sun, 30 Jun 2024 21:32:44 +0000</pubDate>
      <link>https://dev.to/soares_pedro/o-que-aprendi-sobre-monitoramento-de-aplicacoes-front-end-nos-ultimos-meses-18ol</link>
      <guid>https://dev.to/soares_pedro/o-que-aprendi-sobre-monitoramento-de-aplicacoes-front-end-nos-ultimos-meses-18ol</guid>
      <description>&lt;p&gt;Acredito que todo Programador Front-End já se deparou com algum bug reportado pelo cliente e teve dificuldades para tentar reproduzir.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O usuário não conseguiu baixar uma planilha. &lt;/li&gt;
&lt;li&gt;A tela de detalhes de pedido ficou em branco. &lt;/li&gt;
&lt;li&gt;O botão de adicionar ao carrinho não funcionou como deveria. &lt;/li&gt;
&lt;li&gt;O carregamento da página está muito lento.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bugs e issues são coisas comuns no dia a dia de qualquer Engenheiro de Software e identificar e diagnosticar esses problemas rapidamente, ou até mesmo antes de um ticket ser aberto é algo crucial.&lt;/p&gt;

&lt;p&gt;O monitoramento da performance e da saúde da aplicação junto com o uso de ferramentas de logs facilitam muito no diagnóstico de issues de performance, erros e outros problemas que impactam a experiência do usuário. Pensando nisso, vou deixar algumas dicas e boas práticas baseadas na minha experiência e no Livro &lt;a href="https://largeapps.dev/" rel="noopener noreferrer"&gt;BUILDING LARGE SCALES WEB APPS&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use uma solução centralizada de Logs
&lt;/h2&gt;

&lt;p&gt;Usar uma ferramenta centralizada de logs ajuda a coletar e armazenar logs de várias partes da sua aplicação. Isso vai facilitar a pesquisa e a análise dos logs, o que é essencial para as depurações e monitoramento da sua aplicação. Existem várias ferramentas populares hoje no mercado, incluindo o &lt;a href="https://www.splunk.com/" rel="noopener noreferrer"&gt;Splunk&lt;/a&gt;, &lt;a href="https://www.datadoghq.com/" rel="noopener noreferrer"&gt;Datadog&lt;/a&gt; e &lt;a href="https://sentry.io/welcome/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;. Usarei o &lt;strong&gt;Datadog&lt;/strong&gt; para alguns exemplos a seguir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Faça o upload dos Source Maps
&lt;/h2&gt;

&lt;p&gt;De forma resumida, aplicações modernas feitas em &lt;strong&gt;Angular&lt;/strong&gt;, &lt;strong&gt;Next&lt;/strong&gt; ou qualquer outra ferramenta moderna passam por um processo de build, que serve basicamente para transformar o código que você desenvolveu utilizando uma dessas Frameworks para um código que o browser consegue interpretar, além de outros processos como &lt;strong&gt;minificação&lt;/strong&gt; de arquivos, &lt;strong&gt;otimização&lt;/strong&gt; de assets e agrupamento (&lt;strong&gt;Bundling&lt;/strong&gt;) da aplicação. Durante o processo de build, também é possível gerar os &lt;a href="https://web.dev/articles/source-maps?hl=pt-br" rel="noopener noreferrer"&gt;Sources Maps&lt;/a&gt;, que são arquivos que mapeiam o código fonte original para o código transpilado, minificado ou agrupado que está sendo executado no navegador. É possível fazer o &lt;a href="https://docs.datadoghq.com/real_user_monitoring/guide/upload-javascript-source-maps/?tab=webpackjs" rel="noopener noreferrer"&gt;upload dos sources maps&lt;/a&gt; para ferramentas de monitoramento com o intuito de desofuscar diferentes &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stack" rel="noopener noreferrer"&gt;stack traces&lt;/a&gt; em erros. Para qualquer tipo de erro, você pode acessar o caminho do arquivo, o número da linha e o snippet do código onde o erro aconteceu. &lt;/p&gt;

&lt;h2&gt;
  
  
  Inclua contextos nos seus logs
&lt;/h2&gt;

&lt;p&gt;Suponha  que você esteja monitorando um &lt;a href="https://blog.rocketseat.com.br/desenvolvimento-de-saas-conceito-e-exemplos-de-softwares/" rel="noopener noreferrer"&gt;SaaS&lt;/a&gt;. que é dividido entre várias organizações e quer encontrar um log para uma determinada organização. Se nos seus logs não foram incluídos nenhuma informação relacionada a organização, você vai provavelmente tentar aplicar filtros de horários para tentar encontrar o problema mais rapidamente, porém esse processo pode ainda continuar sendo bastante custoso. &lt;a href="https://docs.datadoghq.com/logs/log_collection/javascript/#usage" rel="noopener noreferrer"&gt;Contextos&lt;/a&gt; servem para incluir mais informações nos seus logs, como por exemplo o &lt;strong&gt;ID da organização&lt;/strong&gt;, &lt;strong&gt;ID do usuário&lt;/strong&gt;, &lt;strong&gt;versão da aplicação&lt;/strong&gt;, entre outras informações que sejam relevantes para o seu contexto. Isso vai ajudar a encontrar a raiz do problema muito mais rápido, pois vai ser possível filtrar os logs pelos atributos que foram adicionados no contexto. Apenas tenha em mente considerações de privacidade e segurança nas informações contidas no contexto&lt;/p&gt;

&lt;h2&gt;
  
  
  Por último, monitore seus logs
&lt;/h2&gt;

&lt;p&gt;Monitorar seus logs em tempo real podem ajudar  a encontrar problemas rapidamente antes que eles tenham um impacto significativo na experiência do usuário. Isso inclui também a criação de &lt;strong&gt;alertas&lt;/strong&gt; para comportamentos não esperados no uso da sua aplicação e análise da &lt;strong&gt;performance&lt;/strong&gt; da aplicação quando uma nova release for feita. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>monitoring</category>
      <category>javascript</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
