Pular para o conteúdo principal

Postagens

Desenvolvimento e Tecnologia da Informação · desde 2008

Programação, tecnologia e outras conversas.

Cache-aside com FastAPI e Redis: invalidação e requisições simultâneas

Todo mundo que já colocou uma API em produção conhece o filme: o endpoint de leitura é simples, mas a consulta por trás dele é cara, e a mesma linha é pedida centenas de vezes por minuto. Aí alguém sugere "põe um Redis na frente". Funciona, mas o difícil não é gravar no cache, é decidir quando ler, quando invalidar e o que fazer quando dez requisições chegam juntas e o cache está vazio. Neste post eu montei um exemplo pequeno com FastAPI e Redis usando o padrão cache-aside, e dei atenção a esses dois pontos chatos: invalidação e requisições simultâneas. Tudo roda com docker compose e os testes não precisam de um Redis de verdade. A ideia: cache-aside No cache-aside quem manda é a aplicação, não o cache. O fluxo de leitura é sempre o mesmo: pergunta ao Redis; se tem, devolve; se não tem, busca na fonte de verdade, grava no Redis com um TTL e devolve. Na escrita, a gente muda a fonte e apaga a chave do cache, deixando a próxima leitura repovoar. É menos esperto que write-...
Postagens recentes

Agentes que não esperam você pedir: o preço da privacidade e da computação

Durante anos, assistente de IA foi uma coisa que ficava esperando você digitar. Você pergunta, ele responde, fim. A virada que está acontecendo agora é outra: agentes que ficam ligados o tempo todo, olham sua caixa de entrada, aprendem seus objetivos e saem fazendo coisas sem que ninguém peça. Em tese é ótimo. Na prática, abre uma conversa que a gente que trabalha com tecnologia precisa ter antes de liberar acesso a tudo. O que aconteceu No DevDay de 29 de setembro, a OpenAI apresentou os "Dots", agentes que ela descreve como sempre ligados. Cada um tem o seu próprio computador na nuvem, com navegador, e se conecta a milhares de aplicativos por plugins. Dá para conversar com ele pelo ChatGPT ou pelo Slack e pelo Teams, e ele toca vários projetos em paralelo. O primeiro Dot vem incluído nos planos Pro e Business Premium, e no plano Pro o recurso ainda não chegou ao Espaço Econômico Europeu, à Suíça e ao Reino Unido. Há uma camada de controle: regras para quando agir sozi...

Rate limiting em Minimal APIs com o middleware nativo do .NET

Toda API exposta na internet, mais cedo ou mais tarde, recebe um cliente que resolve chamar o mesmo endpoint mil vezes por segundo. Pode ser um bug num loop de retry, um script mal escrito ou alguém testando a sorte. Se você não tem nenhum limite, quem paga a conta é o banco, o CPU e os outros usuários. A boa notícia é que, desde o .NET 7, o rate limiting vem pronto no framework. Não precisa de pacote extra nem de biblioteca de terceiros. Neste post eu monto um exemplo pequeno com Minimal APIs, limite por IP, resposta 429 com Retry-After e testes de integração. A ideia central O middleware trabalha com dois conceitos: o limiter (o algoritmo: janela fixa, janela deslizante, token bucket ou concorrência) e a partição (quem está sendo limitado). Sem partição, o limite é global, e um cliente abusivo derruba o serviço para todo mundo. Particionando por IP, cada cliente tem o seu próprio balde. Você registra uma policy com nome e depois aplica nos endpoints que precisam. Endpoints...

Black October: a IA acelerou a caça às falhas, e a conta chegou

Outubro é, oficialmente, o Mês da Conscientização em Cibersegurança. Em 2026, ele ganhou um apelido bem menos simpático: Black October . Em poucos dias, a gente viu uma falha crítica no PHP descoberta com ajuda de IA, uma autoridade certificadora saindo do mercado por causa de chaves privadas que dava para adivinhar e uma biblioteca popular de IA distribuindo malware pelo PyPI. Se você trabalha com software e não precisou atualizar nada nas últimas semanas, ou teve muita sorte ou não olhou direito. O que aconteceu O episódio mais barulhento foi o PHP2Shell . Pesquisadores da Wiz, com apoio da OpenAI e da Calif, encontraram falhas de segurança de memória no núcleo do PHP, ligadas ao jeito como a linguagem lida com erros fatais, principalmente estouro de memória. Uma requisição que falha pode deixar um estado interno corrompido, que outra requisição reaproveita depois. O resultado é execução remota de código sem autenticação, com nota de severidade até 9.2. O detalhe que mais chama a...

Aplicação Flask usando Nginx e Gunicorn

Aplicação Flask usando Nginx e Gunicorn Se você já desenvolveu uma aplicação Flask básica, sabe que o servidor de desenvolvimento embutido não é ideal para produção. Ele não é projetado para lidar com altos volumes de tráfego ou conexões simultâneas. Para tornar sua aplicação Flask mais robusta e pronta para produção, podemos usar o Gunicorn como servidor de aplicação e o Nginx como proxy reverso. Neste artigo, vamos adaptar o exemplo anterior ( Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker ) para incluir o Nginx e o Gunicorn. O que são Nginx e Gunicorn? Gunicorn O Gunicorn (Green Unicorn) é um servidor de aplicação WSGI que roda aplicações Python como o Flask. Ele é eficiente e simples de configurar, lidando com múltiplas requisições ao mesmo tempo, algo que o servidor embutido do Flask não faz bem. Nginx O Nginx é um servidor web que atua como um proxy reverso. Ele recebe requisições HTTP e as encaminha ao Gunicorn. Além disso, o Nginx pode: Servir arquivos ...

Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker

Criando uma Aplicação CRUD com Flask, PostgreSQL e Docker Neste guia, vamos criar uma aplicação básica que acessa um banco de dados PostgreSQL e realiza operações CRUD (Create, Read, Update, Delete). Vamos usar Flask e executar tudo com Docker. Sem estilos ou extras, apenas o essencial. Estrutura do Projeto crud-app/ |-- app/ | |-- app.py | |-- templates/ | | |-- index.html | | |-- edit.html |-- Dockerfile |-- requirements.txt |-- docker-compose.yml Passo 1: Dependências Crie um arquivo requirements.txt com as seguintes linhas: Flask==2.2.2 Flask-SQLAlchemy==3.0.2 psycopg2-binary==2.9.3 Werkzeug==2.2.2 Passo 2: Aplicação Flask Arquivo app/app.py : from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # Configuração do banco de dados app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@db:5432/crud_db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db...

Criando sua Primeira Aplicação Web com Python e Docker

  Criando sua Primeira Aplicação Web com Python e Docker Hoje vamos fazer algo prático: criar uma aplicação web simples em Python usando Flask e executá-la dentro de um contêiner Docker. Se você não sabe exatamente o que é Docker ou Flask, não se preocupe! Vou explicar tudo de forma simples para que você consiga acompanhar sem problemas. O que é Docker? Docker é uma ferramenta que permite empacotar aplicações e suas dependências em contêineres, garantindo que elas funcionem da mesma forma em qualquer ambiente. Em outras palavras, com o Docker, você cria um ambiente isolado e padronizado para rodar suas aplicações. Como instalar o Docker Acesse o site oficial do Docker . Baixe e instale a versão apropriada para o seu sistema operacional (Windows, macOS ou Linux). Após a instalação, verifique se está tudo funcionando abrindo um terminal e executando: docker --version Se o Docker estiver instalado corretamente, ele vai exibir a versão instalada. O que é Flask? Flask é um m...