<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cache Archives - Leonardo Nascimento | Engenheiro de Software</title>
	<atom:link href="https://leonardonascimento.dev/tag/cache/feed/" rel="self" type="application/rss+xml" />
	<link>https://leonardonascimento.dev/tag/cache/</link>
	<description>Especializado em backend, APIs e sistemas escaláveis. Experiência em arquitetura de sistemas, integrações, mensageria, performance e aplicações de alta disponibilidade.</description>
	<lastBuildDate>Thu, 29 Jan 2026 16:54:19 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://leonardonascimento.dev/wp-content/uploads/2021/05/cropped-programming-32x32.png</url>
	<title>cache Archives - Leonardo Nascimento | Engenheiro de Software</title>
	<link>https://leonardonascimento.dev/tag/cache/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arquitetura de uma API REST em Laravel preparada para produção</title>
		<link>https://leonardonascimento.dev/blog/arquitetura-de-uma-api-rest-em-laravel-preparada-para-producao/</link>
					<comments>https://leonardonascimento.dev/blog/arquitetura-de-uma-api-rest-em-laravel-preparada-para-producao/#respond</comments>
		
		<dc:creator><![CDATA[Leonardo]]></dc:creator>
		<pubDate>Wed, 28 Jan 2026 22:44:00 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[Dicas & Truques]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[api rest]]></category>
		<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[autenticação api]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[ci/cd]]></category>
		<category><![CDATA[clean architecture]]></category>
		<category><![CDATA[desenvolvimento backend]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[docker compose]]></category>
		<category><![CDATA[documentação api]]></category>
		<category><![CDATA[engenharia de software]]></category>
		<category><![CDATA[github actions]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[laravel sanctum]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[projeto para portfólio]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[repository pattern]]></category>
		<category><![CDATA[service layer]]></category>
		<category><![CDATA[swagger]]></category>
		<category><![CDATA[testes automatizados]]></category>
		<guid isPermaLink="false">https://leonardonascimento.dev/?p=2358</guid>

					<description><![CDATA[<p>Em processos seletivos técnicos, não basta entregar código funcional. Cada vez mais, empresas avaliam arquitetura, decisões técnicas, organização do projeto, automação e capacidade de escalar a solução. Este artigo detalha a arquitetura de uma API REST desenvolvida em Laravel para gerenciamento de tarefas, criada como parte de um teste técnico, mas estruturada como um projeto [&#8230;]</p>
<p>The post <a href="https://leonardonascimento.dev/blog/arquitetura-de-uma-api-rest-em-laravel-preparada-para-producao/">Arquitetura de uma API REST em Laravel preparada para produção</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Em processos seletivos técnicos, não basta entregar código funcional. Cada vez mais, empresas avaliam <strong>arquitetura, decisões técnicas, organização do projeto, automação e capacidade de escalar a solução</strong>.</p>



<p>Este artigo detalha a arquitetura de uma <strong><a href="https://leonardonascimento.dev/blog/como-monitorar-aplicacao-e-servidor-pelo-whatsapp-logs-erros-e-alertas/" type="post" id="2290">API REST</a> desenvolvida em Laravel para gerenciamento de tarefas</strong>, <a href="https://github.com/leonardop21/laravel-task" type="link" id="https://github.com/leonardop21/laravel-task" target="_blank" rel="noreferrer noopener nofollow">criada como parte de um teste técnico,</a> mas estruturada como um projeto <strong>pronto para produção</strong>, seguindo boas práticas amplamente utilizadas em ambientes corporativos.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-visao-geral-da-solucao">Visão geral da solução</h2>



<p>A aplicação consiste em uma <strong>API RESTful para gerenciamento de tarefas</strong>, com suporte a:</p>



<ul class="wp-block-list">
<li>Autenticação via Bearer Token (Laravel Sanctum)</li>



<li>CRUD completo de tarefas</li>



<li>Marcação de tarefas como concluídas</li>



<li>Cache de consultas com Redis</li>



<li>Banco de dados PostgreSQL</li>



<li>Documentação interativa via Swagger</li>



<li>Ambiente Dockerizado (dev, test e prod)</li>



<li>Testes automatizados</li>



<li>Pipeline de CI/CD com GitHub Actions</li>
</ul>



<p>O foco não foi apenas “fazer funcionar”, mas <strong>pensar a aplicação como um produto escalável e previsível</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-decisao-arquitetural-api-stateless-e-autenticacao">Decisão arquitetural: API stateless e autenticação</h2>



<p>A API foi construída como <strong>stateless</strong>, utilizando <strong>Bearer Token via Laravel Sanctum</strong>.</p>



<h3 class="wp-block-heading" id="h-beneficios-dessa-abordagem">Benefícios dessa abordagem:</h3>



<ul class="wp-block-list">
<li>Facilidade de integração com frontends (SPA, mobile, terceiros)</li>



<li>Independência de sessão</li>



<li>Escalabilidade horizontal</li>



<li>Compatibilidade com gateways, load balancers e proxies</li>
</ul>



<p>A autenticação é desacoplada do fluxo de negócio, o que facilita manutenção e evolução futura.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-postgresql-como-banco-principal">PostgreSQL como banco principal</h2>



<p>A escolha do <strong>PostgreSQL</strong> não foi aleatória. Ele é amplamente utilizado em ambientes corporativos por oferecer:</p>



<ul class="wp-block-list">
<li>Confiabilidade transacional</li>



<li>Suporte avançado a índices</li>



<li>Tipos de dados ricos</li>



<li>Excelente desempenho em cenários complexos</li>
</ul>



<p>Isso torna a aplicação preparada para crescer sem precisar trocar a base de dados no curto ou médio prazo.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-redis-como-camada-de-cache">Redis como camada de cache</h2>



<p>Para reduzir carga no banco e melhorar tempo de resposta, foi implementado <strong>cache com Redis</strong>, com TTL de 120 segundos nas consultas mais comuns.</p>



<h3 class="wp-block-heading" id="h-beneficios-diretos">Benefícios diretos:</h3>



<ul class="wp-block-list">
<li>Redução de queries repetitivas</li>



<li>Menor latência</li>



<li>Melhor desempenho sob carga</li>



<li>Escalabilidade em leitura</li>
</ul>



<p>Essa abordagem demonstra preocupação com <strong>performance real</strong>, não apenas com lógica funcional.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-arquitetura-limpa-repository-pattern-service-layer">Arquitetura limpa: Repository Pattern + Service Layer</h2>



<p><a href="https://leonardonascimento.dev/blog/php-alem-do-crud-como-escrever-codigo-que-nao-vira-problema-em-producao/" type="post" id="2348">A aplicação segue princípios de <strong>Clean Architecture</strong></a>, separando responsabilidades de forma clara:</p>



<ul class="wp-block-list">
<li><strong>Controllers</strong>: recebem requisições e retornam respostas</li>



<li><strong>Services</strong>: concentram regras de negócio</li>



<li><strong>Repositories</strong>: isolam o acesso a dados</li>



<li><strong>Models</strong>: representam as entidades</li>
</ul>



<h3 class="wp-block-heading" id="h-vantagens-dessa-separacao">Vantagens dessa separação:</h3>



<ul class="wp-block-list">
<li>Código mais legível</li>



<li>Facilidade de testes</li>



<li>Menor acoplamento</li>



<li>Evolução segura do domínio</li>
</ul>



<p>Essa estrutura é comum em times maduros e projetos de longo prazo.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-docker-como-base-do-ambiente">Docker como base do ambiente</h2>



<p>Toda a aplicação roda em <strong>Docker</strong>, com ambientes bem definidos:</p>



<h3 class="wp-block-heading" id="h-desenvolvimento">Desenvolvimento</h3>



<ul class="wp-block-list">
<li>Código em volume</li>



<li>Hot reload</li>



<li>PostgreSQL + Redis + Nginx</li>



<li>Testes executados automaticamente</li>
</ul>



<h3 class="wp-block-heading" id="h-producao">Produção</h3>



<ul class="wp-block-list">
<li>Build otimizado</li>



<li>Código embutido na imagem</li>



<li>Assets compilados no build</li>



<li>Sem dependência de volume</li>
</ul>



<p>Essa separação reduz o clássico problema de “funciona na minha máquina” e aproxima o ambiente local da produção.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-testes-automatizados-como-parte-do-fluxo">Testes automatizados como parte do fluxo</h2>



<p>A aplicação conta com <strong>testes unitários e de feature</strong>, executados de três formas:</p>



<ul class="wp-block-list">
<li>Localmente no ambiente dev</li>



<li>Isoladamente via Docker</li>



<li>Automaticamente no CI/CD</li>
</ul>



<p>Isso garante:</p>



<ul class="wp-block-list">
<li>Segurança para refatorações</li>



<li>Detecção precoce de bugs</li>



<li>Confiança na entrega contínua</li>
</ul>



<p>Testes não são tratados como opcional, mas como <strong>parte da arquitetura</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-ci-cd-com-github-actions">CI/CD com GitHub Actions</h2>



<p>Cada push ou pull request dispara um workflow que:</p>



<ol class="wp-block-list">
<li>Sobe toda a stack Docker (app, banco, cache)</li>



<li>Executa migrations</li>



<li>Roda a suíte completa de testes</li>



<li>Bloqueia o merge em caso de falha</li>
</ol>



<p>Esse processo simula um pipeline real de empresas que operam com <strong>entrega contínua e qualidade de código como requisito</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-documentacao-com-swagger">Documentação com Swagger</h2>



<p>A API possui <strong>documentação interativa via Swagger</strong>, acessível após subir a aplicação.</p>



<p>Isso permite:</p>



<ul class="wp-block-list">
<li>Testes manuais rápidos</li>



<li>Onboarding mais fácil</li>



<li>Comunicação clara entre backend e frontend</li>



<li>Uso por terceiros sem dependência de documentação externa</li>
</ul>



<p>Documentação é tratada como parte do produto, não como etapa posterior.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-beneficios-dessa-arquitetura-em-um-contexto-profissional">Benefícios dessa arquitetura em um contexto profissional</h2>



<p>Essa abordagem entrega vantagens claras em ambientes reais:</p>



<ul class="wp-block-list">
<li>Código organizado e previsível</li>



<li>Facilidade de manutenção</li>



<li>Escalabilidade técnica</li>



<li>Padronização de ambientes</li>



<li>Menor risco em deploys</li>



<li>Base sólida para crescimento</li>
</ul>



<p>Não se trata apenas de uma API de tarefas, mas de <strong>um modelo replicável para aplicações reais</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-o-que-esse-projeto-demonstra-tecnicamente">O que esse projeto demonstra tecnicamente</h2>



<p>Esse projeto evidencia competências como:</p>



<ul class="wp-block-list">
<li><a href="http://leonardonascimento.dev/categoria/laravel">Domínio de Laravel além do básico</a></li>



<li>Conhecimento de arquitetura backend</li>



<li>Uso consciente de cache e banco</li>



<li>Experiência com Docker e ambientes reais</li>



<li>Cultura de testes</li>



<li>Automação de CI/CD</li>



<li>Pensamento orientado a produto e escala</li>
</ul>



<p>São exatamente esses pontos que diferenciam um desenvolvedor <strong>pleno/sênior</strong> em processos seletivos.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-conclusao">Conclusão</h2>



<p>Mais do que cumprir um teste técnico, o objetivo deste projeto foi demonstrar <strong>capacidade de pensar sistemas como um todo</strong>, indo além do CRUD simples.</p>



<p>Arquitetura, automação, testes e previsibilidade são o que tornam uma aplicação sustentável — e é isso que empresas buscam quando contratam profissionais para projetos de longo prazo.</p>



<p></p>



<p><a href="https://github.com/leonardop21/laravel-task" target="_blank" rel="noreferrer noopener nofollow">Link do teste prático</a></p>
<p>The post <a href="https://leonardonascimento.dev/blog/arquitetura-de-uma-api-rest-em-laravel-preparada-para-producao/">Arquitetura de uma API REST em Laravel preparada para produção</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://leonardonascimento.dev/blog/arquitetura-de-uma-api-rest-em-laravel-preparada-para-producao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Erros comuns ao usar Redis em aplicações Laravel</title>
		<link>https://leonardonascimento.dev/blog/erros-comuns-ao-usar-redis-em-aplicacoes-laravel/</link>
					<comments>https://leonardonascimento.dev/blog/erros-comuns-ao-usar-redis-em-aplicacoes-laravel/#respond</comments>
		
		<dc:creator><![CDATA[Leonardo]]></dc:creator>
		<pubDate>Sun, 11 Jan 2026 10:47:00 +0000</pubDate>
				<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[concorrência]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[produção]]></category>
		<category><![CDATA[redis]]></category>
		<guid isPermaLink="false">https://leonardonascimento.dev/?p=2282</guid>

					<description><![CDATA[<p>Redis costuma entrar no projeto como sinônimo de performance. E, de fato, quando bem usado, ele resolve muita coisa. O problema é que em aplicações Laravel — principalmente quando começam a crescer — Redis também vira fonte de bugs difíceis, inconsistências e comportamentos estranhos quando é usado sem critério. A maioria desses problemas não vem [&#8230;]</p>
<p>The post <a href="https://leonardonascimento.dev/blog/erros-comuns-ao-usar-redis-em-aplicacoes-laravel/">Erros comuns ao usar Redis em aplicações Laravel</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Redis costuma entrar no projeto como sinônimo de <a href="https://leonardonascimento.dev/tag/performance/" type="post_tag" id="209">performance</a>. E, de fato, quando bem usado, ele resolve muita coisa. O problema é que em aplicações Laravel — principalmente quando começam a crescer — Redis também vira fonte de bugs difíceis, inconsistências e comportamentos estranhos quando é usado sem critério.</p>



<p>A maioria desses problemas não vem do Redis em si, mas da forma como ele é integrado à aplicação. A seguir estão erros que aparecem com frequência em produção e o que aprender com eles.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Um dos erros mais comuns é <strong>tratar Redis como banco de dados principal</strong>. Redis é rápido, mas não é fonte de verdade. Dados em memória podem ser perdidos por restart, eviction ou falha de infraestrutura. Quando o sistema depende do Redis para manter estado crítico, qualquer limpeza vira incidente. Em aplicações maduras, Redis é sempre camada auxiliar; o banco relacional continua sendo a referência.</p>



<p>Outro problema recorrente é <strong><a href="https://leonardonascimento.dev/blog/quando-usar-cache-e-quando-ele-so-complica-o-sistema/" type="post" id="2251">cachear dados sem estratégia clara de invalidação</a></strong>. No começo, tudo parece funcionar: menos queries, respostas mais rápidas. Com o tempo, começam a aparecer dados desatualizados, comportamentos inconsistentes e bugs que “somem sozinhos”. Cache sem invalidação bem definida vira dívida técnica. Toda entrada em cache precisa ter resposta clara para três perguntas: quando expira, quem invalida e o que acontece se falhar.</p>



<p>Também é comum <strong>usar TTL genérico para tudo</strong>. Definir o mesmo tempo de expiração para dados completamente diferentes ignora o contexto. Dados quase estáticos podem ficar horas em cache; dados sensíveis a mudanças podem precisar de expiração curta ou invalidação ativa. TTL não é detalhe de configuração, é parte da regra de negócio.</p>



<p>Em projetos com filas e jobs, aparece bastante o erro de <strong>usar Redis sem pensar em concorrência</strong>. Dois workers acessando e alterando a mesma chave ao mesmo tempo geram condição de corrida. Incrementos, flags e estados intermediários precisam ser atômicos ou protegidos por lock. Ignorar isso funciona em teste, mas quebra sob carga.</p>



<p>Outro ponto crítico é <strong>usar Redis como solução para idempotência sem persistência complementar</strong>. Locks e flags em Redis ajudam, mas não garantem segurança total. Se o Redis reiniciar, o controle some. Para efeitos colaterais críticos (pagamento, notificação, integração externa), o controle final precisa estar no banco, com constraint ou registro explícito de processamento.</p>



<p>Muitos projetos também caem no erro de <strong>não separar namespaces ou prefixos de chave</strong>. Em aplicações maiores, isso gera colisão, dificuldade de debug e limpeza perigosa. Padronizar prefixos por domínio ou tipo de dado facilita manutenção e evita apagar cache errado.</p>



<p>Há ainda o uso excessivo de Redis para <strong>resolver problemas que não são de cache</strong>. Guardar lógica de negócio, estados complexos ou fluxos longos em memória costuma deixar o sistema frágil. Redis é ótimo para acelerar acesso, coordenar concorrência e compartilhar estado temporário, mas não substitui modelagem correta.</p>



<p>Outro erro que só aparece em produção é <strong>ignorar política de eviction e limites de memória</strong>. Quando a memória acaba, o Redis começa a remover chaves de acordo com a política configurada. Se isso não foi considerado no design, o sistema passa a perder cache crítico aleatoriamente, causando degradação inesperada. Monitorar uso de memória e entender eviction é obrigatório.</p>



<p>Também é comum <strong>não monitorar Redis como dependência crítica</strong>. Quando ele fica lento ou indisponível, a aplicação sofre. Sem métricas, alertas e logs específicos, o diagnóstico demora. Redis precisa estar no radar de observabilidade tanto quanto banco e API externa.</p>



<p>Por fim, um erro sutil: <strong>acoplar demais o código ao Redis</strong>. Quando a aplicação assume que Redis sempre está disponível, qualquer fallback vira difícil. Código mais saudável trata Redis como otimização opcional: se falhar, o sistema continua funcionando, mesmo que mais lento.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Redis é uma ferramenta poderosa, mas exige disciplina. <a href="https://leonardonascimento.dev/categoria/laravel/" type="category" id="44">Em aplicações Laravel</a>, ele deve acelerar, proteger e coordenar — nunca sustentar a lógica principal do sistema. Quando tratado como camada auxiliar, com invalidação clara, controle de concorrência e observabilidade, ele entrega o que promete. Quando usado como atalho, cobra o preço em produção.</p>
<p>The post <a href="https://leonardonascimento.dev/blog/erros-comuns-ao-usar-redis-em-aplicacoes-laravel/">Erros comuns ao usar Redis em aplicações Laravel</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://leonardonascimento.dev/blog/erros-comuns-ao-usar-redis-em-aplicacoes-laravel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Quando usar cache (e quando ele só complica o sistema)</title>
		<link>https://leonardonascimento.dev/blog/quando-usar-cache-e-quando-ele-so-complica-o-sistema/</link>
					<comments>https://leonardonascimento.dev/blog/quando-usar-cache-e-quando-ele-so-complica-o-sistema/#respond</comments>
		
		<dc:creator><![CDATA[Leonardo]]></dc:creator>
		<pubDate>Sat, 03 Jan 2026 16:47:00 +0000</pubDate>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[arquitetura de software]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[performance]]></category>
		<guid isPermaLink="false">https://leonardonascimento.dev/?p=2251</guid>

					<description><![CDATA[<p>Cache costuma entrar na conversa sempre que alguém fala em performance. A ideia é simples: “se está lento, coloca cache”. O problema é que, na prática, cache mal aplicado resolve um problema e cria outros. Não é raro ver sistemas que até funcionam bem sem cache, mas ficam difíceis de manter depois que ele entra [&#8230;]</p>
<p>The post <a href="https://leonardonascimento.dev/blog/quando-usar-cache-e-quando-ele-so-complica-o-sistema/">Quando usar cache (e quando ele só complica o sistema)</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Cache costuma entrar na conversa sempre que alguém fala em performance. A ideia é simples: “se está lento, coloca cache”. O problema é que, na prática, cache mal aplicado resolve um problema e cria outros.</p>



<p>Não é raro ver sistemas que até funcionam bem sem cache, mas ficam difíceis de manter depois que ele entra sem critério.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cache não é ponto de partida</h2>



<p>Antes de pensar em cache, vale responder uma pergunta básica:<br><strong>onde o sistema está lento?</strong></p>



<p>Muitas vezes o problema não é falta de cache, mas:</p>



<ul class="wp-block-list">
<li>query mal escrita;</li>



<li>lógica duplicada;</li>



<li>processamento desnecessário;</li>



<li>excesso de chamadas externas.</li>
</ul>



<p>Colocar cache sem entender o gargalo real só esconde o problema por um tempo.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Quando cache realmente faz sentido</h2>



<p>Cache funciona bem quando você tem:</p>



<ul class="wp-block-list">
<li>dados lidos muitas vezes;</li>



<li>dados que mudam pouco;</li>



<li>custo alto de processamento ou consulta.</li>
</ul>



<p>Configurações, listas estáticas, resultados agregados e respostas de APIs externas são bons candidatos. Nesse cenário, o cache reduz carga e melhora tempo de resposta de forma consistente.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">O problema começa na invalidação</h2>



<p>Cache quase nunca dá problema na criação. Ele dá problema na invalidação.</p>



<p>Quando não fica claro:</p>



<ul class="wp-block-list">
<li>quando o cache expira;</li>



<li>quem invalida;</li>



<li>o que acontece se falhar;</li>
</ul>



<p>o sistema começa a servir dado errado. E dado errado em produção costuma ser pior que erro explícito.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cache que vira dependência</h2>



<p>Um sinal claro de problema é quando o sistema <strong>depende</strong> do cache para funcionar corretamente.</p>



<p>Se desligar o cache quebra tudo, isso indica que:</p>



<ul class="wp-block-list">
<li>a lógica base não está saudável;</li>



<li>o cache está mascarando problemas estruturais;</li>



<li>o código ficou acoplado demais a essa camada.</li>
</ul>



<p>Cache deveria acelerar, não sustentar o sistema.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cuidado com cache em dados muito voláteis</h2>



<p>Cache em dados que mudam o tempo todo geralmente gera:</p>



<ul class="wp-block-list">
<li>inconsistência;</li>



<li>comportamento estranho;</li>



<li>bugs intermitentes.</li>
</ul>



<p>Quanto mais volátil o dado, maior o custo mental e técnico para manter o cache correto. Em muitos casos, o ganho de performance não compensa a complexidade introduzida.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cache também tem custo</h2>



<p>Cache não é gratuito.</p>



<p>Ele consome memória, adiciona mais uma camada ao sistema e aumenta a complexidade de debug. Quando algo dá errado, você precisa verificar:</p>



<ul class="wp-block-list">
<li>código;</li>



<li>banco;</li>



<li>cache;</li>



<li>estratégia de expiração.</li>
</ul>



<p>Cada camada extra aumenta o esforço para entender o que está acontecendo.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Uma regra simples que ajuda</h2>



<p>Uma regra prática que costuma funcionar bem:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Primeiro, faça o sistema funcionar corretamente sem cache.<br>Depois, use cache para otimizar pontos específicos e bem entendidos.</p>
</blockquote>



<p>Isso evita decisões precipitadas e mantém o sistema mais previsível.</p>



<h2 class="wp-block-heading">Bancos de cache, CDN e cache em borda: onde cada um faz sentido</h2>



<p>Quando se fala em cache, muita gente mistura tudo como se fosse a mesma coisa. Na prática, existem <strong>camadas diferentes de cache</strong>, cada uma com um papel específico. Entender isso evita decisões erradas e expectativas irreais.</p>



<h2 class="wp-block-heading">Cache em memória (Redis, Memcached)</h2>



<p>Bancos de cache em memória, como Redis, são muito usados no backend porque são rápidos e flexíveis. Eles fazem sentido quando você precisa:</p>



<ul class="wp-block-list">
<li>reduzir acesso ao banco de dados;</li>



<li>compartilhar cache entre múltiplos processos;</li>



<li>armazenar dados temporários com expiração controlada;</li>



<li>lidar com alta concorrência.</li>
</ul>



<p>Redis funciona muito bem para:</p>



<ul class="wp-block-list">
<li>resultados de queries pesadas;</li>



<li>locks e controle de concorrência;</li>



<li>sessões;</li>



<li>dados derivados de outras fontes.</li>
</ul>



<p>O erro comum aqui é transformar o Redis em “banco principal”. Cache não é fonte de verdade. Se os dados do Redis forem perdidos, o sistema precisa continuar funcionando.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cache de aplicação ≠ cache de infraestrutura</h2>



<p>Cache dentro da aplicação resolve problemas diferentes de cache na borda.</p>



<p>Cache de aplicação (Redis, cache local, etc):</p>



<ul class="wp-block-list">
<li>reduz custo de processamento;</li>



<li>protege banco e serviços internos;</li>



<li>atua no backend.</li>
</ul>



<p>Já cache de infraestrutura atua <strong>antes</strong> da requisição chegar no servidor.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">CDN e cache em borda</h2>



<p>CDN (Content Delivery Network) e cache em borda são ideais para:</p>



<ul class="wp-block-list">
<li>conteúdo estático;</li>



<li>respostas públicas;</li>



<li>páginas que não mudam com frequência.</li>
</ul>



<p>Nesse cenário, o cache:</p>



<ul class="wp-block-list">
<li>reduz latência;</li>



<li>diminui carga no servidor;</li>



<li>melhora experiência do usuário.</li>
</ul>



<p>Cloudflare, por exemplo, atua nesse nível, servindo conteúdo direto da borda sem que a requisição chegue no backend.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cloudflare não substitui cache de backend</h2>



<p>Um erro comum é achar que, usando Cloudflare ou outra CDN, não é mais necessário cache no backend. Isso não é verdade.</p>



<p>Cloudflare:</p>



<ul class="wp-block-list">
<li>ajuda muito com páginas públicas;</li>



<li>protege contra picos de acesso;</li>



<li>reduz tráfego direto no servidor.</li>
</ul>



<p>Mas ele não resolve:</p>



<ul class="wp-block-list">
<li>lógica pesada no backend;</li>



<li>chamadas internas;</li>



<li>processamento de regras de negócio;</li>



<li>APIs autenticadas.</li>
</ul>



<p>As camadas se complementam, não se substituem.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Combinar camadas de cache com consciência</h2>



<p>Em sistemas mais maduros, é comum ter:</p>



<ul class="wp-block-list">
<li>cache em Redis no backend;</li>



<li>cache HTTP para respostas públicas;</li>



<li>CDN para conteúdo estático;</li>



<li>regras claras de expiração e invalidação.</li>
</ul>



<p>O ponto crítico é não perder controle. Quanto mais camadas, maior a necessidade de saber:</p>



<ul class="wp-block-list">
<li>onde o dado está sendo cacheado;</li>



<li>por quanto tempo;</li>



<li>quem invalida.</li>
</ul>



<p>Sem isso, debug vira loteria.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cache certo no lugar certo</h2>



<p>Não existe “o melhor cache”. Existe cache adequado ao problema.</p>



<p>Usar Redis para tudo, Cloudflare para tudo ou cachear tudo geralmente leva a soluções frágeis. Cada camada resolve um tipo de problema específico, e ignorar isso gera sistemas difíceis de operar.</p>



<h2 class="wp-block-heading">Um exemplo prático de cache bem aplicado em alto volume</h2>



<p>Em um projeto onde trabalhei, o sistema recebia mais de <strong>30 milhões de visualizações por mês</strong>. O volume era alto, os picos eram imprevisíveis e qualquer erro de arquitetura aparecia rápido.</p>



<p>A solução não foi um único tipo de cache, mas a <strong>combinação correta de camadas</strong>, cada uma resolvendo um problema específico.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Cache no backend</h3>



<p>No backend, utilizávamos cache em memória para reduzir acesso ao banco e evitar processamento repetido. Consultas mais pesadas e dados derivados eram armazenados com tempo de vida bem definido.</p>



<p>Esse cache não era tratado como fonte de verdade. Se fosse limpo ou reiniciado, o sistema continuava funcionando normalmente, apenas com impacto temporário de performance.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Cache no servidor web</h3>



<p>No nível do servidor web, respostas públicas eram cacheadas diretamente, evitando que requisições idênticas chegassem até a aplicação.</p>



<p>Isso reduzia drasticamente:</p>



<ul class="wp-block-list">
<li>consumo de CPU;</li>



<li>execução de código desnecessário;</li>



<li>abertura de conexões com o backend.</li>
</ul>



<p>Para grande parte do tráfego, a aplicação nem chegava a ser executada.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Cache em servidor de borda</h3>



<p>Além disso, havia cache em servidores distribuídos geograficamente, entregando conteúdo diretamente próximo ao usuário final.</p>



<p>Essa camada absorvia picos de acesso e reduzia latência, principalmente em horários de maior tráfego. Em muitos casos, a requisição nem chegava ao servidor de origem.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">O ponto mais importante: controle</h3>



<p>O que fez essa estratégia funcionar não foi o volume de cache, mas o <strong>controle sobre ele</strong>.</p>



<p>Cada camada tinha:</p>



<ul class="wp-block-list">
<li>regras claras de expiração;</li>



<li>critérios bem definidos de cache e bypass;</li>



<li>invalidação consciente quando o conteúdo mudava.</li>
</ul>



<p>Nada era “cacheado por padrão”.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">O resultado prático</h3>



<p>Com essa abordagem:</p>



<ul class="wp-block-list">
<li>o sistema se manteve estável mesmo em picos;</li>



<li>o backend ficou protegido;</li>



<li>o banco deixou de ser gargalo;</li>



<li>a operação ficou previsível.</li>
</ul>



<p>Cache não foi usado como remendo, mas como parte da arquitetura.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Lição aprendida</h3>



<p>Cache funciona quando é pensado como <strong>estratégia</strong>, não como solução emergencial. Em sistemas de alto volume, separar responsabilidades entre backend, servidor web e borda faz toda a diferença.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Conclusão</h2>



<p>Cache é uma ferramenta poderosa, mas perigosa quando usada sem critério. Ele melhora performance quando aplicado com consciência, e cria problemas quando entra apenas como “solução rápida”.</p>



<p>Entender quando <strong>não usar cache</strong> é tão importante quanto saber usá-lo.</p>
<p>The post <a href="https://leonardonascimento.dev/blog/quando-usar-cache-e-quando-ele-so-complica-o-sistema/">Quando usar cache (e quando ele só complica o sistema)</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://leonardonascimento.dev/blog/quando-usar-cache-e-quando-ele-so-complica-o-sistema/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Hospede seu site em um servidor Cloud por menos de R$ 11 Mês</title>
		<link>https://leonardonascimento.dev/blog/hospede-seu-site-em-um-servidor-cloud-por-menos-de-r-11-mes/</link>
					<comments>https://leonardonascimento.dev/blog/hospede-seu-site-em-um-servidor-cloud-por-menos-de-r-11-mes/#respond</comments>
		
		<dc:creator><![CDATA[Leonardo]]></dc:creator>
		<pubDate>Sun, 20 Oct 2024 23:55:15 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[acesso remoto]]></category>
		<category><![CDATA[acesso SSH]]></category>
		<category><![CDATA[anti-spam]]></category>
		<category><![CDATA[aplicações]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[balanceador de carga]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[como configurar um servidor web]]></category>
		<category><![CDATA[compartilhada]]></category>
		<category><![CDATA[configuração]]></category>
		<category><![CDATA[consumo]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[CronJob]]></category>
		<category><![CDATA[disco]]></category>
		<category><![CDATA[downgrade]]></category>
		<category><![CDATA[e-mails]]></category>
		<category><![CDATA[editor de arquivos]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[gerenciador de banco de dados]]></category>
		<category><![CDATA[GitLab]]></category>
		<category><![CDATA[hospedagem]]></category>
		<category><![CDATA[hospedagem boa e barata 2023]]></category>
		<category><![CDATA[hospedagem laravel barata]]></category>
		<category><![CDATA[hospedagem wordress barata]]></category>
		<category><![CDATA[Hostoo]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[Linode]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[melhor hospedagem de 2022]]></category>
		<category><![CDATA[melhor hospedagem de 2023]]></category>
		<category><![CDATA[migração]]></category>
		<category><![CDATA[onde hospedar meu site]]></category>
		<category><![CDATA[painel de controle]]></category>
		<category><![CDATA[PHPMyAdmin]]></category>
		<category><![CDATA[qual o melhor lugar pra hospedar site]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[recarga]]></category>
		<category><![CDATA[restauração]]></category>
		<category><![CDATA[revenda]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[servidor barato]]></category>
		<category><![CDATA[servidor cloud barato]]></category>
		<category><![CDATA[servidor php barato]]></category>
		<category><![CDATA[servidor vps barato]]></category>
		<category><![CDATA[servidor web configurado]]></category>
		<category><![CDATA[servidor web configurável]]></category>
		<category><![CDATA[servidor wordpress barato]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[suporte]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[tráfego]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[valor]]></category>
		<guid isPermaLink="false">https://leonardonascimento.dev/?p=251</guid>

					<description><![CDATA[<p>Não tem conhecimento de como configurar um servidor Cloud ou simplesmente não quer ter dores de cabeça para gerenciar um Servidor? Calma que...</p>
<p>The post <a href="https://leonardonascimento.dev/blog/hospede-seu-site-em-um-servidor-cloud-por-menos-de-r-11-mes/">Hospede seu site em um servidor Cloud por menos de R$ 11 Mês</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Seja para quem é iniciante ou dinossauro na área de tecnologia, sempre fica aquela dúvida, qual o melhor e mais barato serviço de hospedagem atualmente? Hospedagem Cloud ou compartilhada? (Compartilhada não quero mais nem de graça). Se você já tem um certo conhecimento, claro que compensa muito mais <a rel="noreferrer noopener" href="http://bit.ly/3gfVBud" data-type="URL" data-id="http://bit.ly/3gfVBud" target="_blank">configurar seu próprio servidor</a> e alocar seus clientes, a desvantagem é que você fica responsável por praticamente tudo, configurar gerenciador de hospedagem, e-mails, quedas de serviços entre outros, neste caso, recomendo a <a rel="noreferrer noopener" href="http://bit.ly/3gfVBud" data-type="URL" data-id="http://bit.ly/3gfVBud" target="_blank">Linode, sem medo de errar.</a></p>



<p>Porém, todavia, entretanto, contudo, se você não tem um grande conhecimento em gerenciamento de hospedagens, ou simplesmente não quer se incomodar em prestar suporte para o seu cliente, <a href="https://bit.ly/3f83PxE" data-type="URL" data-id="https://bit.ly/3f83PxE" target="_blank" rel="noreferrer noopener">poderá muito bem optar por um Cloud 100% configurado com:</a></p>



<ul class="wp-block-list">
<li>Servidor Cloud individual (Apenas o seu site hospedado no Cloud)</li>



<li>E-mails ilimitados</li>



<li>SSL grátis</li>



<li>Firewall</li>



<li>Tráfego ilimitado</li>



<li>Banco de dados ilimitados</li>



<li>Backup grátis</li>



<li>Acesso SSH</li>



<li>Software anti-spam para e-mails</li>



<li>Upgrade/Downgrade de plano direto pelo painel, sem precisar abrir ticket e sem downtime</li>



<li>Suporte grátis</li>



<li>Instalações de aplicações com poucos cliques</li>



<li>Revenda de  hospedagem</li>



<li>Plugin de cache (WordPress)</li>



<li>Editor de arquivos</li>



<li>FTP</li>



<li>Deploy pelo GitLab em breve Github e Bitbucket</li>



<li>Restauração de backup em poucos cliques</li>



<li>Gerenciador de banco de dados (PHPMYADMIN)</li>



<li>Acesso remoto ao banco de dados</li>



<li>Escolher entre Mysql e PostgreSQL</li>



<li>Balanceador de carga</li>



<li>Escolher versões do PHP (5.4 até &gt;= 8.0) </li>



<li>CronJob direto pelo painel</li>



<li>Logs de erro do PHP e do servidor</li>



<li>Migração dos seus dados gratuitamente (Consulte)</li>



<li>Hospedagem individualizada, sem compartilhamento de CPU e memória com outros sites</li>



<li>Sem fidelidade (cancele quando quiser)</li>



<li><strong>A partir de R$ 10,90</strong></li>
</ul>



<p>Lembrando que o valor de R$ 10,90 é a configuração inicial, se você precisar de mais poder de processamento, poderá efetuar upgrade da sua instância, com valores adicionais.</p>



<p><strong>Sem surpresas na conta</strong></p>



<p>Você está no controle da sua hospedagem, no painel de controle, é possível verificar uma estimativa de quantos créditos você ainda possuí e quanto tempo ele irá durar. </p>



<p>Você pode optar por deixar a recarga automática através de cartão de crédito, também é possível inserir créditos através de boleto bancário, Pix ou mercado pago.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="324" height="96" src="https://leonardonascimento.dev/wp-content/uploads/2022/11/image-1.png" alt="" class="wp-image-253" srcset="https://leonardonascimento.dev/wp-content/uploads/2022/11/image-1.png 324w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-1-300x89.png 300w" sizes="(max-width: 324px) 100vw, 324px" /><figcaption class="wp-element-caption">Estimativa de valor e duração do crédito em dias</figcaption></figure>



<p><strong>Você no controle</strong></p>



<p>Com a <a rel="noreferrer noopener" href="https://bit.ly/3f83PxE" data-type="URL" data-id="https://bit.ly/3f83PxE" target="_blank">hostoo</a> você está no controle e não precisa ser expert em servidores, é possível efetuar upgrade e downgrade de servidor com poucos cliques e sem deixar o seu site offline. Instale e configure aplicações em poucos cliques. Gosta do WordPress? Plugin de cache gratuito para acelerar ainda mais o carregamento do seu site.</p>



<p>No print abaixo, podemos notar o domínio do site, versão do PHP, SSL ativo, detalhes do plano, detalhes de consumo de CPU, RAM, disco e outras configurações da hospedagem.</p>



<figure class="wp-block-image size-large"><a href="https://bit.ly/3f83PxE"><img fetchpriority="high" decoding="async" width="1024" height="479" src="https://leonardonascimento.dev/wp-content/uploads/2022/11/image-2-1024x479.png" alt="" class="wp-image-254" srcset="https://leonardonascimento.dev/wp-content/uploads/2022/11/image-2-1024x479.png 1024w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-2-300x140.png 300w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-2-768x359.png 768w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-2.png 1362w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><a href="https://bit.ly/3f83PxE" data-type="URL" data-id="https://bit.ly/3f83PxE" target="_blank" rel="noreferrer noopener">PAINEL DE CONTROLE HOSTOO</a></figcaption></figure>



<p><strong>Precisa de mais?</strong></p>



<p>Além de ter servidores nos Estados Unidos, também é possível hospedar seus sites em clouds aqui no Brasil, claro, por um valor adicional. Com a<a rel="noreferrer noopener" href="https://bit.ly/3f83PxE" data-type="URL" data-id="https://bit.ly/3f83PxE" target="_blank"> Hostoo você pode fazer upgrade de plano facilmente</a>. Suponhamos que durante o dia, você teve visitas atípicas em seu website, resultando em um consumo máximo de CPU e RAM, e agora o que fazer? Em poucos cliques, você pode efetuar upgrade do seu plano, contratando um cloud melhor, pagando por hora utilizada, e posteriormente, retornar ao plano original, você está 100% no controle.</p>



<p><strong>Suporte que não te deixa 48h esperando</strong></p>



<p>Estou com a <a rel="noreferrer noopener" href="https://bit.ly/3f83PxE" data-type="URL" data-id="https://bit.ly/3f83PxE" target="_blank">Hostoo há mais de 1 ano</a> e diferente de outros serviços de hospedagem, o suporte é muito rápido e definitivamente resolve seus problemas. Até o momento, precisei abrir apenas 1 ticket de site fora do ar, onde ficou constatado que o problema não era na hospedagem e sim no servidor dns que eu estava utilizando como proxy, o outro ticket? Foi aberto pela própria empresa, quando me deparei com um erro 500 no painel de hospedagem. Tempo da primeira resposta &lt; 22 minutos.</p>



<figure class="wp-block-image size-large"><a href="https://bit.ly/3f83PxE" target="_blank" rel="noreferrer noopener"><img decoding="async" width="1024" height="305" src="https://leonardonascimento.dev/wp-content/uploads/2022/11/image-3-1024x305.png" alt="" class="wp-image-258" srcset="https://leonardonascimento.dev/wp-content/uploads/2022/11/image-3-1024x305.png 1024w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-3-300x89.png 300w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-3-768x229.png 768w, https://leonardonascimento.dev/wp-content/uploads/2022/11/image-3.png 1364w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><a href="https://bit.ly/3f83PxE" data-type="URL" data-id="https://bit.ly/3f83PxE" target="_blank" rel="noreferrer noopener">Painel de suporte Hostoo</a></figcaption></figure>



<p>Sem dúvidas, foi um grande achado que estou compartilhando com você! <a href="https://bit.ly/3f83PxE" target="_blank" rel="noreferrer noopener">https://hostoo.io</a></p>
<p>The post <a href="https://leonardonascimento.dev/blog/hospede-seu-site-em-um-servidor-cloud-por-menos-de-r-11-mes/">Hospede seu site em um servidor Cloud por menos de R$ 11 Mês</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://leonardonascimento.dev/blog/hospede-seu-site-em-um-servidor-cloud-por-menos-de-r-11-mes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
