.NET

Cloud Native e Cloud Agnostic

para rodar .NET em qualquer Cloud
ou sem Cloud sempre de forma profissional!

Últimas publicações

Aqui estão os últimos 12 posts de mais de 500…

Sobre MediatR

Sobre MediatR

Nos últimos anos, o MediatR tornou-se amplamente utilizado na comunidade .NET. Muitos projetos são construídos a partir de templates que o incorporam, resultando em uma adoção generalizada. No entanto, poucas pessoas questionam a necessidade real de sua utilização. Em algumas ocasiões, fui...

ler mais
Oragon.RabbitMQ 1.1 – Reduzindo Alocações

Oragon.RabbitMQ 1.1 – Reduzindo Alocações

Então esse foi o dia que queimei a lingua! Uma das criticas que faço às publicações que falam sobre ganhos absurdos de 50%, 80% e até mais de 100% de performance onde todas as variáveis se mantiveram as mesmas, é que afinal: Ganhamos 100% ou deixamos de perder 50%? Como o velho ditado "A...

ler mais
Implementando Delay no RabbitMQ com Oragon.RabbitMQ sem Delayed Exchange

Implementando Delay no RabbitMQ com Oragon.RabbitMQ sem Delayed Exchange

Um assunto recorrente quando falamos de RabbitMQ é a implementação de delay. Embora tenhamos o delayed exchange, existem questões relacionadas a cluster que precisam ser consideradas e por isso não é algo que aborde, além de ser algo instalado à parte. Existem muitos motivos para evitarmos esse...

ler mais

Fique por dentro e não perca nada

Menos de 10% da audiência recebe o conteúdo publicado

A newsletter é o meio mais eficiente de furar o bloqueio dos algoritmos das redes sociais e fazer o conteúdo chegar até você.

Assim evitamos poluir as comunidades com chamadas para eventos e lives.

Essa é forma mais eficiente de receber meu conteúdo.

Somos mais de 6k inscritos

Projetos Open Source

projetos ativos e projetos antigos disponíveis para estudo

Nenhum resultado encontrado

A página que você solicitou não foi encontrada. Tente refinar sua pesquisa, ou use a navegação acima para localizar a postagem.

Entender | Analisar | Projetar | Desenvolver | Implantar | Manter

A segurança que você busca não está em um tutorial

Para entender uma tecnologia é importante entender o que influenciou sua criação, o que ela faz de fato, como ela faz. Para que então se sinta seguro e confiante a respeito das decisões que está prestes a tomar.

De um lado precisamos compreender o que está sendo feito por baixo dos panos para descobrir como extrair o máximo de uma tecnologia ou, ao menos, não atrapalhar o bom funcionamento dela.

O Cloud Native .NET é uma jornada de descoberta sobre tecnologias e patterns que fazem parte da maioria dos softwares que usamos, que somos usuários e que suportam e toleram altas cargas de trabalho, de forma eficaz, eficiente e sustentável.

 

É primeiro entendendo o que eles fazem, que podemos descobrir oportunidades e evoluir no que fazemos…

Conteúdo

Implementando Delay no RabbitMQ com Oragon.RabbitMQ sem Delayed Exchange

Implementando Delay no RabbitMQ com Oragon.RabbitMQ sem Delayed Exchange

Um assunto recorrente quando falamos de RabbitMQ é a implementação de delay. Embora tenhamos o delayed exchange, existem questões relacionadas a cluster que precisam ser consideradas e por isso não é algo que aborde, além de ser algo instalado à parte. Existem muitos motivos para evitarmos esse...

ler mais
A fábrica de engrenagens

A fábrica de engrenagens

Estava escrevendo sobre .NET Aspire, porém, no meio do texto fui tomado por um acesso de raiva ao retratar o caminho que nós, como comunidade técnica e como sociedade, estamos tomando. Quero compartilhar essa reflexão, pois a forma fragmentada como desenvolvedores querem ser responsáveis por cada...

ler mais
6 Semanas com .NET Aspire

6 Semanas com .NET Aspire

Estamos na semana 43 de 2024, faltam 9 semanas para o réveillon. Desde a semana 38 estou trabalhando com ASPIRE e quero falar sobre essa experiência. Contexto O primeiro ponto para a contextualização é que o Academia Pay não é um projeto para ser comercializado, vendido, ou ter clientes reais,...

ler mais

Conheça nosso Podcast

DevShow Podcast

Em 2019 resolvemos criar um podcast, o DevShow Podcast, desde lá são mais de 40 episódios com muito assunto legal, sempre com essa pegada pessoal, falando coisas sérias, mas sem o menor compromisso com a formalidade.

Saiba mais...

.NET

O marketing dos benchmarks

O marketing dos benchmarks

Já faz algum tempo que os benchmarks deixaram de ser apenas uma ferramenta técnica e passaram a ocupar espaço central no marketing de produtos e tecnologias. De linguagens de programação a frameworks web, de modelos de LLM a placas de vídeo, benchmarks são utilizados como argumentos de venda — e com razão: números impressionam.

Mas como todo dado isolado, os benchmarks contam apenas parte da história. Os números são reais, mas o contexto em que esses números são obtidos está longe da realidade da maioria dos sistemas em produção. E é justamente aí que mora o problema.

ler mais…
Mitigando os custos de Reflection

Mitigando os custos de Reflection

Reflection oferece um mecanismo sofisticado para inspeção e manipulação de metadados de tipos, métodos e propriedades em tempo de execução. No entanto, essa flexibilidade vem acompanhada de custos elevados, que penalizam desempenho e eficiência de qualquer aplicação.

Sempre que podemos evitar, evitamos seu uso, mas e quando não podemos? Como podemos tratar ou mitigar esses prejuízos em desempenho?

Hoje vou apresentar uma abordagem que usei recentemente em um projeto recente.

ler mais…
O custo real das exceptions – 02 –  Estamos olhando para o lugar certo?

O custo real das exceptions – 02 – Estamos olhando para o lugar certo?

Sem sombra de dúvidas, o principal argumento que sustenta a ideia de que exceptions são ruins é o custo. Afinal, ninguém quer colar em si uma placa dizendo que “optou pelo caminho mais lento“.

Ao mesmo tempo, as discussões acaloradas transformam o debate em uma rinha onde cada qual adota uma postura que desqualifica toda e qualquer opinião contrária.

Mas afinal, quanto custa uma exception?

Este artigo não pretende fornecer respostas definitivas, mas levantar questionamentos importantes:

Será que estamos ignorando alguma peça fundamental nessa discussão? A aversão às exceptions é justificada por dados concretos ou apenas uma tendência emergente sem embasamento empírico suficiente?

ler mais…
O custo real das exceptions – 01 – A série

O custo real das exceptions – 01 – A série

O uso de exceptions no .NET tem sido um tópico de debates acalorados na comunidade. Para alguns, exceptions representam um custo desnecessário, um vestígio de práticas antiquadas que poderiam ser substituídas por abordagens mais eficientes. Para outros, são um pilar essencial para a robustez e previsibilidade do software moderno.

Se exceptions realmente fossem um problema significativo, por que ainda são adotadas de forma unilateral, em todo lugar, principalmente nos componentes centrais do ecossistema .NET, no ASP.NET, no Entity Framework e em diversas bibliotecas e fundações da própria Microsoft?

Será que há questões que não estamos considerando?

Antes de abraçar qualquer lado, é fundamental analisar a questão de forma técnica e pragmática.

Esta série de artigos pretende fornecer respostas, e levantar questionamentos importantes.

ler mais…
Vai criar um IConfiguration? Não esqueça as variáveis de ambiente!

Vai criar um IConfiguration? Não esqueça as variáveis de ambiente!

Quando construímos aplicações em .NET (especialmente .NET Core e posteriores), temos acesso a um pipeline de configuração bastante poderoso, que permite combinar diversas fontes de configuração: arquivos JSON, variáveis de ambiente, User Secrets, Azure Key Vault, entre outras.

Entretanto, não é tão raro esbarrar projetos que utilizem exclusivamente arquivos appsettings.json (e suas variações, como appsettings.Development.json, appsettings.Production.json, etc.) e inadvertidamente não só se ignorem o uso de variáveis de ambiente, mas também impossibilitem sua utilização.

O inferno tem um lugar especial para quem faz isso intencionalmente.

ler mais…

Arquitetura

Mitigando os custos de Reflection

Mitigando os custos de Reflection

Reflection oferece um mecanismo sofisticado para inspeção e manipulação de metadados de tipos, métodos e propriedades em tempo de execução. No entanto, essa flexibilidade vem acompanhada de custos elevados, que penalizam desempenho e eficiência de qualquer aplicação.

Sempre que podemos evitar, evitamos seu uso, mas e quando não podemos? Como podemos tratar ou mitigar esses prejuízos em desempenho?

Hoje vou apresentar uma abordagem que usei recentemente em um projeto recente.

ler mais…
Voltando do .NET Aspire para o Docker Compose

Voltando do .NET Aspire para o Docker Compose

Já faz algum tempo que publiquei um post contando sobre minha experiência com o .NET Aspire. Depois de mais de 14 semanas com .NET Aspire chegou a hora de dizer “até logo”.

Neste texto, vamos discutir a viabilidade de usar o .NET Aspire em projetos baseados em Docker Compose e também mostrar o processo de migração do .NET Aspire de volta para o Docker Compose.

ler mais…
Oragon.RabbitMQ 1.1 – Reduzindo Alocações

Oragon.RabbitMQ 1.1 – Reduzindo Alocações

Então esse foi o dia que queimei a lingua!

Uma das criticas que faço às publicações que falam sobre ganhos absurdos de 50%, 80% e até mais de 100% de performance onde todas as variáveis se mantiveram as mesmas, é que afinal: Ganhamos 100% ou deixamos de perder 50%?

Como o velho ditado “A estatística é a arte de torturar os números até que eles confessem o que você quer demonstrar”.

Bem, eu não passei batido à minha própria critica! Hoje vou falar sobre a redução nas alocações de respostas.

ler mais…
Microsserviços vs Componentes

Microsserviços vs Componentes

Uma dúvida frequente na adoção de microserviços é sobre a diferenciação entre o “microserviços” e os “componentes” que ele pode conter.

Muitas pessoas imaginam que um microserviço seja apenas uma API, implementada em um projeto monolítico, mas a realidade (e a prática) mostram que ele pode sim ser composto por diversos elementos internos (como APIs, workers, jobs em segundo plano etc.) desde que todos compartilhem o mesmo propósito de negócio/bounded context.

ler mais…

Containers

RabbitMQ Operators | RabbitMQ Messaging Topology Operator for Kubernetes – Tutorial PT-BR

RabbitMQ Operators | RabbitMQ Messaging Topology Operator for Kubernetes – Tutorial PT-BR

No último post sobre Operators, eu falei sobre o RabbitMQ Cluster Operator for Kubernetes, o papel dele é construir um cluster. Uma vez que o cluster está ativo e em operação, é hora de começar a usar esse cluster. Virtual Host, Exchanges, Filas e Binds, afinal quem e quando eu deveria criar esses recursos?

Eles devem ser criados previamente durante a construção do cluster?

Ou durante o deployment da aplicação?

Ou especificamente pela aplicação?

ler mais…
Perdemos 17 anos por não entender redes Docker

Perdemos 17 anos por não entender redes Docker

Somos 6390 pessoas no grupo de Docker do telegram. Se cada um de nós perdeu ao menos 1 dia tentando fazer 2 contêineres conversarem então juntos perdemos mais de 17 anos!

Esse é um guia prático de redes docker que ajudará a entender esse universo.

A missão desse post é trazer os principais conceitos para evitar sofrimento. São conceitos ridiculamente simples, mas que vão poupar horas, dias ou até semanas de cada indivíduo que ler esse post.

Como sei isso?

Bom, eu ajudo a comunidade docker desde 2016, todo dia, várias vezes por dia.

ler mais…

Mensageria

Mensageria .NET for Architects Day | Sábado, 05 de outubro

Mensageria .NET for Architects Day | Sábado, 05 de outubro

Nesse sábado vai rolar o Mensageria .NET for Architects Day, um evento que gostaria de ter realizado há muito tempo!

Mensageria não é disruptivo apenas pela natureza assíncrona. Tampouco pela lavagem cerebral que sofremos ao aprendermos a programar, que nos faz esquecer da natureza caótica do dia-a-dia. Mensageria nos devolve o caos, agora nos eventos assíncronos disparados por cada ator simultaneamente.

A parte ruim é que muitos ficam pelo caminho, muitos profissionais, projetos, e a parte legal é que de certa forma: é desafiador e divertido!

Nesse evento, que acontecerá no sábado vamos dar vazão aos últimos conteúdos do Mensageria .NET for Architects, e finalizar essa entrega que dura alguns anos.

ler mais…

Conteúdo e Posicionamento

.NET + Cloud Native + Cloud Agnostic

.NET | DevOps | Microservices | Containers | Continuous Delivery

.NET muito além do .NET

O mínimo de infra que todo dev e/ou arquiteto deveria saber

Aplicações distribuídas e comunicação entre serviços (RabbitMQ / gRPC)

Containers, Docker e Kubernetes

+

RabbitMQ e Mensageria e comunicação assíncrona entre aplicações e serviços

Arquitetura de Software e Arquitetura de Solução com foco no melhor aproveitamento em projetos .NET

Nossos números

Desde 2002 trabalhando com desenvolvimento de software

Desde 2002 ajudando outros devs

Desde 2010 trabalhando exclusivamente como arquiteto

Contas atingidas no telegram/facebook

Alunos

Microsoft MVP

2018-2020

2020-2021

2021-2022

2022-2023

2023-2024

2024-2025

Conteúdo Gratuito

Tudo que está aqui no gaGO.io é conteúdo gratuito, feito para ajudar desenvolvedores dos mais variados níveis.

Cursos

Tenho também alguns programas de acompanhamento. Esses programas tem a função de ajudar desenvolvedores em áreas específicas ou de forma mais abrangente na jornada do arquiteto.