<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Nathalia Cosim on Medium]]></title>
        <description><![CDATA[Stories by Nathalia Cosim on Medium]]></description>
        <link>https://medium.com/@nathaliacosim?source=rss-f22f16250e82------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*qSBayJzOtEr7vJlS</url>
            <title>Stories by Nathalia Cosim on Medium</title>
            <link>https://medium.com/@nathaliacosim?source=rss-f22f16250e82------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 06 Jun 2026 10:00:37 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@nathaliacosim/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Evitando Cache Stampede em .NET com FusionCache]]></title>
            <link>https://medium.com/@nathaliacosim/evitando-cache-stampede-em-net-com-fusioncache-9a42a579c788?source=rss-f22f16250e82------2</link>
            <guid isPermaLink="false">https://medium.com/p/9a42a579c788</guid>
            <category><![CDATA[c-sharp-programming]]></category>
            <category><![CDATA[distributed-cache]]></category>
            <category><![CDATA[cache-memory]]></category>
            <category><![CDATA[dotnet]]></category>
            <dc:creator><![CDATA[Nathalia Cosim]]></dc:creator>
            <pubDate>Sat, 04 Oct 2025 13:39:30 GMT</pubDate>
            <atom:updated>2025-10-04T13:39:30.036Z</atom:updated>
            <content:encoded><![CDATA[<h3>Evitando Cache Stampede em .NET com FusionCache</h3><figure><img alt="Evitando Cache Stampede em dotnet com FusionCache" src="https://cdn-images-1.medium.com/max/1024/1*iW3ry_H_yhXaUbJ1-QaXvw.png" /></figure><p>Usar cache é uma das formas mais práticas de acelerar aplicações e deixá-las mais confiáveis. Mas se a estratégia não for bem planejada, o remédio pode virar veneno, trazendo dores de cabeça como o famoso <strong>Cache Stampede</strong>.</p><blockquote>Neste artigo, vamos analisar esse problema e mostrar como o <a href="https://github.com/ZiggyCreatures/FusionCache"><strong>FusionCache</strong></a> pode nos ajudar a evitá-lo de forma simples e eficiente em aplicações .NET!</blockquote><h3>🔎 O que é Cache Stampede?</h3><p>O Cache Stampede (também conhecido como <em>dog-pile effect</em>) acontece quando:</p><ol><li>Uma chave de cache expira.</li><li>Várias requisições simultâneas percebem que o valor não está mais disponível.</li><li>Todas tentam recalcular ou buscar a informação da fonte original ao mesmo tempo.</li></ol><blockquote><em>⚠️ Esse efeito pode causar sobrecarga em bancos de dados ou APIs externas, levando até mesmo à indisponibilidade da aplicação.</em></blockquote><h3>⚡ FusionCache: o cache inteligente para .NET</h3><p>O FusionCache é uma biblioteca open-source para .NET que combina MemoryCache com Distributed Cache (ex: Redis) e traz recursos avançados:</p><p>✨ Principais destaques:</p><ul><li>Evita Cache Stampede com <em>locking automático</em>.</li><li>Fail-Safe: em caso de erro, usa o último valor válido ainda disponível.</li><li>Background Refresh: atualiza o cache em segundo plano, sem travar requisições.</li><li>Expiração flexível: suporta <em>hard</em> e <em>soft</em> timeouts.</li><li>Observabilidade: suporta logs, métricas e eventos de cache.</li></ul><h3>🛠️ Exemplo prático: sem FusionCache</h3><p>Um caso simples: você quer armazenar a cotação do dólar em cache por 1 minuto usando MemoryCache.</p><pre>var valor = memoryCache.GetOrCreate(&quot;cotacao&quot;, entry =&gt;<br>{<br>    entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(1);<br>    return ObterCotacaoDoDolar();<br>});</pre><p>👉 Quando a chave expira, todas as requisições simultâneas chamam ObterCotacaoDoDolar(), sobrecarregando a fonte de dados.</p><h3>✅ Resolvendo com FusionCache</h3><p>Com o FusionCache, apenas uma requisição recalcula o valor enquanto as outras aguardam o resultado.</p><h3>📦 Instalação</h3><pre>dotnet add package ZiggyCreatures.FusionCache</pre><h3>🧑‍💻 Exemplo de uso</h3><pre>using ZiggyCreatures.Caching.Fusion;<br><br>var cache = new FusionCache(new FusionCacheOptions());<br><br>var valor = await cache.GetOrSetAsync(<br>    &quot;cotacao&quot;,<br>    async ct =&gt; await ObterCotacaoDoDolarAsync(),<br>    TimeSpan.FromMinutes(1)<br>);</pre><h3>🔄 O que mudou?</h3><ul><li>Apenas uma thread recalcula o valor quando o cache expira.</li><li>Outras requisições recebem o valor já atualizado.</li><li>Se a fonte falhar, o FusionCache pode retornar o último valor válido (Fail-Safe).</li></ul><h3>⚙️ Recursos avançados</h3><p>🔐 Fail-Safe automático</p><pre>var options = new FusionCacheOptions()<br>{<br>    EnableFailSafe = true,<br>    FailSafeMaxDuration = TimeSpan.FromHours(1)<br>};</pre><p>⏳ Background Refresh (Soft Timeout)</p><p>Entrega o valor antigo imediatamente e atualiza em segundo plano:</p><pre>await cache.GetOrSetAsync(<br>    &quot;cotacao&quot;,<br>    async ct =&gt; await ObterCotacaoDoDolarAsync(),<br>    TimeSpan.FromMinutes(1),<br>    options =&gt; options.SetSoftTimeout(TimeSpan.FromMilliseconds(200))<br>);</pre><p>☁️ Integração com Redis</p><p>FusionCache pode ser combinado com Redis para cache distribuído:</p><pre>services.AddFusionCache()<br>        .WithDistributedCache(redisCache);</pre><pre>var cache = new FusionCache(options)<br>    .SetupDistributedCache(redisCache, new FusionCacheSerializer());</pre><pre>// Uso<br>var valor = await cache.GetOrSetAsync(<br>    &quot;cotacao&quot;,<br>    async ct =&gt; await ObterCotacaoDoDolarAsync(),<br>    options.DefaultEntryOptions.Duration<br>);</pre><h3>🏗️ Arquitetura interna do FusionCache</h3><p>O FusionCache funciona em duas camadas de cache:</p><ol><li>Cache local em memória (rápido, por processo).</li><li>Cache distribuído (ex: Redis, compartilhado entre instâncias).</li></ol><p>Fluxo básico:</p><ul><li>Quando você busca uma chave, ele tenta primeiro no cache local.</li><li>Se não encontrar, consulta o cache distribuído.</li><li>Se não encontrar, executa a factory function (ex: busca no banco).</li><li>Em paralelo, mantém locks para evitar <em>stampede</em> e atualiza em background.</li></ul><h3>📈 Casos de uso recomendados</h3><ul><li>🌍 APIs públicas de alta demanda: evita sobrecarga em endpoints críticos.</li><li>🏦 Integrações com serviços externos pagos: reduz custo de chamadas desnecessárias.</li><li>📊 Relatórios pesados: evita que múltiplos usuários gerem cálculos caros simultaneamente.</li><li>🛒 E-commerce: preços, promoções ou inventário com atualização periódica.</li></ul><h3>🎯 Conclusão</h3><p>Evitar o Cache Stampede é essencial para manter aplicações .NET performáticas e estáveis em cenários de alta concorrência.</p><p>O FusionCache oferece uma solução prática e poderosa, com recursos adicionais como <em>Fail-Safe</em>, <em>Background Refresh</em>, observabilidade e integração com Redis.</p><p>👉 Se você ainda não usa, vale a pena experimentar e medir o impacto em sistemas que dependem de chamadas caras a APIs externas ou bancos de dados pesados.</p><p>📌 Referências:</p><ul><li><a href="https://github.com/ZiggyCreatures/FusionCache">FusionCache no GitHub</a></li><li><a href="https://www.geeksforgeeks.org/system-design/cache-stempede-or-dogpile-problem-in-system-design/">Cache Stampede</a></li><li><a href="https://learn.microsoft.com/en-us/azure/architecture/best-practices/caching">Caching Best Practices — Microsoft Docs</a></li></ul><p>Obrigada por acompanhar até o final! Seu comentário é muito bem-vindo, pode ser uma dúvida, sugestão ou até uma experiência que você já teve com cache em .NET. 🚀</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9a42a579c788" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Como obter um bom resultado na AZ-204? ]]></title>
            <link>https://medium.com/@nathaliacosim/como-obter-um-bom-resultado-na-az-204-915e1f869794?source=rss-f22f16250e82------2</link>
            <guid isPermaLink="false">https://medium.com/p/915e1f869794</guid>
            <category><![CDATA[azure-certification]]></category>
            <category><![CDATA[az-204-exam]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[az-204]]></category>
            <category><![CDATA[microsoft-certification]]></category>
            <dc:creator><![CDATA[Nathalia Cosim]]></dc:creator>
            <pubDate>Fri, 26 Sep 2025 15:09:43 GMT</pubDate>
            <atom:updated>2025-09-26T15:09:43.138Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*RWz46y4xrRDYYE83" /><figcaption>Photo by <a href="https://unsplash.com/@amstram?utm_source=medium&amp;utm_medium=referral">Scott Graham</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>A famosa AZ-204… confesso que ela me deu frio na barriga! 😅 Eu também precisei enfrentar essa certificação e, olha, não é só decorar conteúdos: é estratégia, prática e foco.</p><p>Quando comecei meus estudos, percebi que era fácil se perder no volume de informações. Então criei um método que funcionou muito bem pra mim: estudar de forma prática, aplicar conceitos no Azure, resolver muitos exercícios e revisar com frequência. 💻✨</p><p>Além disso, participei de simulados, revisei anotações e aprendi a administrar meu tempo durante a prova — super importante para não entrar em pânico! ⏱️</p><p>Se você está se preparando para a AZ-204, aqui vão algumas dicas essenciais para aumentar suas chances de sucesso:</p><p><strong>📘 Estudo oficial</strong><br>Ler e praticar todo o material do <strong>Microsoft Learn</strong>: <a href="https://learn.microsoft.com/pt-br/training/courses/az-204t00">Conteúdo Oficial</a></p><p><strong>🎓 Curso super recomendado</strong><br>Este curso fez toda a diferença na minha jornada. Tem flashcards no final de cada módulo e dicas valiosas sobre a prova: <a href="https://www.udemy.com/course/az-204-certificacao/?couponCode=MT250923G3">Curso Udemy Atualizado</a></p><p><strong>🃏 Revisão rápida</strong><br> Um site com flashcards que ajudam bastante na fixação: <a href="https://az204fast.com/">AZ 204 Fast</a></p><p>📝 <strong>Simulados para praticar<br></strong>👉 <strong>Learn</strong> — Ótimo ponto de partida para começar seus estudos. [<a href="https://learn.microsoft.com/pt-br/credentials/certifications/azure-developer/practice/assessment?assessment-type=practice&amp;assessmentId=35&amp;practice-assessment-type=certification">Acesse aqui</a>]<br> 👉 <strong>Whizlabs</strong> — Bem completo, perfeito para dominar todo o conteúdo da prova. [<a href="https://www.whizlabs.com/learn/course/microsoft-azure-certification-az-204/300">Acesse aqui</a>]<br> 👉 <strong>Udemy</strong> — Na minha opinião, é o simulado que mais se aproxima das questões reais da AZ-204. Excelente para testar conhecimento e se familiarizar com o formato da prova. [<a href="https://www.udemy.com/course/developing-solutions-for-azure-az-204-practice-test-exams/?couponCode=MT250923G3">Acesse aqui</a>]</p><p>🎥 <strong>Dica extra</strong><br>Este vídeo mostra como usar o MS Learn durante a prova — uma ferramenta que me ajudou bastante. [<a href="https://www.youtube.com/watch?v=lMqN1FVfB9I">Acesse aqui</a>]</p><p>🚀 Espero que essas dicas ajudem quem também está nessa jornada de estudos!</p><p>Obrigada por ler até o final. 😁</p><p>Conecte-se comigo: <a href="https://www.linkedin.com/in/nathalia-cosim/">LinkedIn Nath</a></p><p>#certificationazure #microsoftazure #azure204 #az204 #azuredevelop #microsoftlearn #learnazure</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=915e1f869794" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vibe Coding — Microsoft Week ]]></title>
            <link>https://medium.com/@nathaliacosim/vibe-coding-microsoft-week-25ecf63df93a?source=rss-f22f16250e82------2</link>
            <guid isPermaLink="false">https://medium.com/p/25ecf63df93a</guid>
            <category><![CDATA[microsoft]]></category>
            <category><![CDATA[azure-devops]]></category>
            <category><![CDATA[ai-agent]]></category>
            <dc:creator><![CDATA[Nathalia Cosim]]></dc:creator>
            <pubDate>Fri, 26 Sep 2025 14:40:29 GMT</pubDate>
            <atom:updated>2025-09-26T14:40:29.900Z</atom:updated>
            <content:encoded><![CDATA[<h4>Vibe Coding — Microsoft Week 🚀</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0bCMIUAXBuLoxjt3" /><figcaption>Photo by <a href="https://unsplash.com/@vladimir_d?utm_source=medium&amp;utm_medium=referral">Volodymyr Dobrovolskyy</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Participei de uma série de aulas incríveis sobre <strong>Agents AI no Azure DevOps</strong>, explorando como a Inteligência Artificial pode automatizar e monitorar Pull Requests, Pipelines e Deploy 💻✨.</p><p>Foram três encontros super ricos, mostrando na prática como usar <strong>IA + DevOps</strong> para acelerar o ciclo de desenvolvimento e aumentar a qualidade das entregas:<br>🎯 <strong>Aula 1 — Introdução e PRs</strong>: <a href="https://www.youtube.com/live/jBSiGhEkBj8">Link live aula 1</a><br>⚡ <strong>Aula 2 — Pipelines Automatizados:</strong> <a href="https://www.youtube.com/live/uJPp_ZbHTC4">Link live aula 2</a><br>🔎 <strong>Aula 3 — Deploy e Monitoramento:</strong> <a href="https://www.youtube.com/live/QlK7a0udSDE">Link live aula 3</a></p><p>👉 E o melhor: este conteúdo e muito mais está disponível na <a href="https://dio.me/">Plataforma DIO</a>, que conecta profissionais de tecnologia a grandes oportunidades de aprendizado e carreira!</p><p>Obrigada por ler até o final! 😁</p><p>Conecte-se comigo: <a href="https://www.linkedin.com/in/nathalia-cosim/">https://www.linkedin.com/in/nathalia-cosim/</a></p><p>#vibecoding #azuredevops #aiagents #azure #microsoft #microsoftweek</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=25ecf63df93a" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>