<?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>Forem: Ramon Xavier</title>
    <description>The latest articles on Forem by Ramon Xavier (@ramonxavier).</description>
    <link>https://forem.com/ramonxavier</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%2F806498%2Fa4366a33-d40f-43c3-be2f-1a7791c1440c.jpeg</url>
      <title>Forem: Ramon Xavier</title>
      <link>https://forem.com/ramonxavier</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ramonxavier"/>
    <language>en</language>
    <item>
      <title>Dicas para o próximo nível como desenvolvedor/líder técnico</title>
      <dc:creator>Ramon Xavier</dc:creator>
      <pubDate>Wed, 11 Dec 2024 13:22:03 +0000</pubDate>
      <link>https://forem.com/ramonxavier/dicas-para-o-proximo-nivel-como-desenvolvedorlider-tecnico-1k1k</link>
      <guid>https://forem.com/ramonxavier/dicas-para-o-proximo-nivel-como-desenvolvedorlider-tecnico-1k1k</guid>
      <description>&lt;p&gt;😱Você como desenvolvedor ou líder técnico precisa dar atenção nisso urgentemente!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr08tj465uqq83l5zsr6g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr08tj465uqq83l5zsr6g.jpg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No dia a dia do desenvolvimento de software, é comum resolvermos problemas, corrigirmos bugs e criarmos soluções. Mas será que estamos pensando além das entregas e resultados imediatos?👀 &lt;/p&gt;

&lt;p&gt;Muitos desenvolvedores deixam de lado aspectos técnicos fundamentais para alcançar o próximo nível de maturidade profissional. Vamos falar sobre isso?&lt;/p&gt;

&lt;p&gt;👉🏽 Escalabilidade: Sair da abordagem tradicional de consumo de APIs e consultas a bancos de dados pode ser essencial em sistemas que crescem rapidamente em uso, clientes e dados.&lt;/p&gt;

&lt;p&gt;Imagine que seu sistema envia 1k de notificações por minuto para seus usuários em sua aplicação. O uso de API talvez seja menos válido que o uso de uma mensageria com consumidores escaláveis agindo de forma assíncrona.🤔&lt;/p&gt;

&lt;p&gt;👉🏽 Testes: Para garantir um melhor funcionamento das regras de negócio, você precisa fazer testes. Inicialmente comece aplicando testes de unidade. Mas não deixe de se aventurar em testes de integração.&lt;/p&gt;

&lt;p&gt;👉🏽 Logs: Não há nada pior do que lidar com um bug sem saber onde ele está acontecendo. Com isso, utilize logs em sua aplicação. &lt;/p&gt;

&lt;p&gt;Se sua empresa ainda não utiliza logs, essa pode ser sua chance de se destacar! Proponha uma POC e comece a aplicar boas práticas.&lt;/p&gt;

&lt;p&gt;Algumas ferramentas ótimas de logs: Elasticsearch, Logstash e Kibana.&lt;/p&gt;

&lt;p&gt;👉🏽 Observabilidade: Ser passivos em relação a problemas e mudanças de comportamentos em softwares em geral pode ser um verdadeiro tiro no pé. Em muitos produtos é chegado o momento de ser altamente ativo em entender o estado interno de nossas aplicações. Assim você pode saber se algum recurso está consumindo muito mais que o esperado, ou até mesmo tempo de processamento em algumas etapas do seu projeto.&lt;/p&gt;

&lt;p&gt;👉🏽 Código bem escrito: Eis o ponto que falamos sobre deixar de ter um código verde, e amadurecer ele! &lt;/p&gt;

&lt;p&gt;✅Code Reviews: Revise e peça revisões para garantir qualidade.&lt;/p&gt;

&lt;p&gt;✅Simplicidade e eficiência: Escreva código que seja fácil de entender e manter.&lt;/p&gt;

&lt;p&gt;✅Manutenibilidade: Um código bem estruturado facilita a escrita de testes e reduz problemas a longo prazo.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>career</category>
      <category>development</category>
    </item>
    <item>
      <title>Você sabe o que é Message Broker?</title>
      <dc:creator>Ramon Xavier</dc:creator>
      <pubDate>Sat, 16 Nov 2024 18:36:44 +0000</pubDate>
      <link>https://forem.com/ramonxavier/voce-sabe-o-que-e-message-broker-ngj</link>
      <guid>https://forem.com/ramonxavier/voce-sabe-o-que-e-message-broker-ngj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmsri5cp4tufo713kn4w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmsri5cp4tufo713kn4w.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Message Brokers são sistemas que visam facilitar a troca de mensagens &lt;br&gt;
entre sistemas ou componentes de software. &lt;/p&gt;

&lt;p&gt;Eles atuam como intermediários, recebendo mensagens de um &lt;br&gt;
remetente e encaminhando-as para seus receptores, garantindo que a comunicação ocorra de forma confiável e assíncrona.&lt;/p&gt;

&lt;p&gt;Geralmente, são usados em arquiteturas de software distribuídas &lt;br&gt;
para desacoplar componentes e permitir a comunicação entre eles &lt;br&gt;
sem que eles precisem se conhecer diretamente. Alguns exemplos de Message Brokers populares incluem RabbitMQ, Apache &lt;/p&gt;

&lt;p&gt;Kafka e Redis (dentre vários outros). Cada um desses sistemas tem suas próprias características e pode ser melhor adequado para diferentes tipos de cenários de comunicação.&lt;/p&gt;

&lt;p&gt;⚙Seu funcionamento tem como fundamento a possibilidade de um ou vários publishers publicarem suas mensagens no broker, e então ele as atribui uma ou várias filas baseado em um identificador publicado com a mensagem.&lt;/p&gt;

&lt;p&gt;Com isso, os consumidores, possuem uma configuração baseada em quais filas precisam ser inscritos. Assim, quando eles se inscrevem em uma fila específica, o broker envia/empurra mensagens para estes consumidores em load-balanced ou fan-out style.&lt;/p&gt;

&lt;p&gt;Um comportamento padrão dos brokers é ter suas mensagens deletadas uma vez que os serviços as tenham consumido. Além disso, a ordem de processamento de mensagens na fila não é garantida e pode ser alterada.&lt;/p&gt;

&lt;p&gt;✅O uso destes sistemas de mensageria pode trazer vários benefícios, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Desacoplamento: Permitem que os aplicativos enviem e recebam mensagens de forma desacoplada.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Escalabilidade: Escalam melhor que a comunicação síncrona.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tolerância a falhas: possuem mecanismos para recuperação de dados em caso de falha de algum consumidor. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Garantia de entrega: garantem que as mensagens sejam armazenadas e entregues de forma confiável. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suporte a diferentes modelos de mensagens: suportam diferentes modelos de mensagens. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Facilidade de comunicação: facilitam a comunicação entre diferentes partes do sistema. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  mensageria #programacao #development #developer #desenvolvimento #programa #codigo #tecnologia #arquiteturadesoftware
&lt;/h1&gt;

</description>
      <category>dotnet</category>
      <category>webdev</category>
      <category>architecture</category>
      <category>devops</category>
    </item>
    <item>
      <title>💣A comunicação assíncrona irá elevar o nível de sua aplicação!</title>
      <dc:creator>Ramon Xavier</dc:creator>
      <pubDate>Wed, 13 Nov 2024 14:53:57 +0000</pubDate>
      <link>https://forem.com/ramonxavier/a-comunicacao-assincrona-ira-elevar-o-nivel-de-sua-aplicacao-1fgm</link>
      <guid>https://forem.com/ramonxavier/a-comunicacao-assincrona-ira-elevar-o-nivel-de-sua-aplicacao-1fgm</guid>
      <description>&lt;p&gt;Em sistemas complexos, a comunicação assíncrona se destaca como uma solução eficaz para garantir que nenhuma ação seja perdida ou deixada de lado.&lt;/p&gt;

&lt;p&gt;😨 Por que isso é importante?&lt;br&gt;
Pense em um exemplo onde uma clínica de estética permite que usuários façam agendamentos online.&lt;/p&gt;

&lt;p&gt;Imagine que um cliente esteja realizando seu agendamento. Ao confirmar, o sistema imediatamente registra esse pedido como "pendente". Ao invés de tentar processar tudo em tempo real, o sistema usa uma fila (queue) para armazenar a requisição, processada por outros serviços em segundo plano. &lt;/p&gt;

&lt;p&gt;🚀Isso é feito por meio de um message broker, um intermediário que distribui as mensagens para diversos consumidores (serviços), cada um responsável por uma tarefa específica.&lt;/p&gt;

&lt;p&gt;🎓Neste exemplo, como funcionaria o fluxo?&lt;br&gt;
👉🏽Produção do Evento: O agendamento é criado e registrado na fila (queue) como uma mensagem.&lt;/p&gt;

&lt;p&gt;👉🏽Distribuição e Processamento: Essa mensagem é enviada para diferentes filas, cada uma destinada a uma operação específica (ex.: envio de e-mails, atualização de agendamento, faturamento/emissão de nota fiscal, ...).&lt;/p&gt;

&lt;p&gt;👉🏽Consumidores Assíncronos: Cada consumidor processa a mensagem de forma independente. Assim, enquanto o faturamento é validado, o serviço de atualização de agendamento pode realizar sua tarefa sem atrasar o processo geral.&lt;/p&gt;

&lt;p&gt;👉🏽Rastreamento e Transparência: O usuário pode ser notificado em cada etapa, recebendo atualizações sobre o progresso do agendamento, o que aumenta a transparência e a satisfação.&lt;/p&gt;

&lt;p&gt;🤗Quais os benefícios disso tudo?&lt;br&gt;
✅Escalabilidade: Cada tarefa é gerida de forma independente, permitindo que o sistema lide com grandes volumes de requisições sem sobrecarregar um único serviço.&lt;/p&gt;

&lt;p&gt;✅Resiliência: Em caso de falha, a mensagem permanece na fila, garantindo que nenhuma requisição seja perdida.&lt;/p&gt;

&lt;p&gt;✅Experiência do Usuário: O usuário é informado do progresso sem precisar esperar o processamento em tempo real, o que gera uma experiência mais fluida.&lt;/p&gt;

&lt;p&gt;Esse tipo de arquitetura assíncrona é um grande diferencial para sistemas em grande crescimento que necessitam de garantia em seus processos e satisfação na experiência do usuário.&lt;/p&gt;

&lt;h1&gt;
  
  
  programacao #arquiteturadesoftware #software #engineer #mensageria #backend #code #program #dev
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8unmpy1ymvzgo7v3pqc.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8unmpy1ymvzgo7v3pqc.jpeg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>backend</category>
      <category>development</category>
      <category>architecture</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
