.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…
.NET ASPIRE Dashboard Standalone como Container
Nessa sexta-feira dia 16 foi lançado o Dashboard do ASPIRE como uma implementação OTLP standalone, em uma imagem docker, pronta para uso. Entenda as novidades nesse post. Novidade no .NET ASPIRE, habemus dashboard para todos! Ontem, dia 16, David Fowler postou uma nova feature do .NET ASPIRE....
Microsoft Artifact Registry (MAR) – Descobrindo imagens e tags
Ao longo da jornada de containers do novo .NET desde sua primeira versão (.NET Core), temos o docker hub e posteriormente o MCR servindo imagens docker para nossas aplicações e servidores. Sempre foi chato buscar as tags disponíveis, nos fazendo voltar às documentações e papers que descrevem...
OCR Minimal API | .NET 8
Já pensou subir um serviço, com um simples docker run e ter um OCR ilimitado disponível para seu sistema? Você pode usar, comercializar, e fazer absolutamente qualquer coisa com o OCR. Você pode usar para leitura de documentos, validação de prints, e muito mais. Pois bem, hoje falarei sobre um...
Logs Estruturados – Correlacionando Dados Técnicos com Eventos de Negócio
Introdução Em um mundo onde dado é o novo petróleo, a habilidade de extrair informações valiosas de um mar de dados é crucial. No contexto da observabilidade em arquiteturas de software, os logs estruturados desempenham um papel central. Eles não são apenas ferramentas para trace, debug ou...
Comece sempre com 2 instâncias
Subir uma única instância de qualquer componente, seja uma API, um Worker ou um Job, pode parecer suficiente em fases iniciais. No entanto, a verdadeira eficiência e capacidade de resposta de uma aplicação só são testadas quando operam em múltiplas instâncias. Iniciar com duas instâncias desde o...
Cloud Native .NET com .NET Aspire – Primeiras Impressões
Um dos lançamentos do .NET Conf foi o .NET Aspire. Ele é um orquestrador de recursos (containers ou não), é um conjunto de building blocks para inicialização resiliente e observável dos principais recursos que sua aplicação pode depender. Diferente de tudo que já vimos, hoje começamos a desvendar...
Keyed DI services e Como o uso de tipos como identidade penaliza o design
Nos últimos anos vimos muitas implementações que usam Tipos (classes ou interfaces) como discriminador único em diversos contextos. Essa é uma decisão prejudicial que torna o design mais burocrático, eleva a complexidade desnecessariamente. Como veremos nesse post o resultado é que temos um código...
Uma nova arquitetura não é páreo para velhos hábitos — Parte 1 — Requisitos não funcionais são objetivos estratégicos de negócio
Então é hora de remodelar todo o projeto, partindo de uma nova arquitetura. A nova arquitetura tem sob seus ombros muita responsabilidade. Principalmente a de conduzir o projeto à dias melhores. A partir da nova arquitetura, gerentes, arquitetos, desenvolvedores, testers e clientes, todos serão...
RabbitMQ e .NET – Usar ou não usar bibliotecas?
Nesse post detalho meus argumentos para que você não use nenhuma abstração e use o cliente nativo do RabbitMQ feito para .NET. Contexto RabbitMQ é o Message Broker mais usado do mercado, uma solução open source e amplamente difundida. O projeto adota AMQP 0.9.X enquanto Azure Service Bus, Apache...
Filas exclusivas e autodelete
Nem sempre as demandas exigem filas que durem aos restarts da sua aplicação. Há casos de uso significativos em que você quer que a fila nasça com a instância da sua aplicação e morra junto com ela. Embora seja um conceito trivial, em mais de 10 anos usando RabbitMQ, essa foi a primeira vez que...
Dev ou Ops, de quem é a responsabilidade?
Muitas e muitas vezes me envolvi em discussões sobre responsabilidades sobre serviços de suporte e tudo que está ao redor das nossas aplicações, como Proxy Reverso, API Gateway, Cache Server, Mensageria, Vault, Plataforma e por aí vai. Afinal, quem é o Owner dessas tecnologias e ferramentas? Será...
Quais dados, logs estruturados precisam ter?
Eu estava escrevendo sobre logs estruturados, em especial sobre o Enterprise Application Log, e resolvi quebrar meus argumentos em frações menores para poder isolar as ideias. Aqui hoje quero falar sobre o que um bom log deve ter. Nos primeiros anos de 2010, a evolução na gestão de logs começou a...
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 tutorialPara 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
Keyed DI services e Como o uso de tipos como identidade penaliza o design
Nos últimos anos vimos muitas implementações que usam Tipos (classes ou interfaces) como discriminador único em diversos contextos. Essa é uma decisão prejudicial que torna o design mais burocrático, eleva a complexidade desnecessariamente. Como veremos nesse post o resultado é que temos um código...
Uma nova arquitetura não é páreo para velhos hábitos — Parte 1 — Requisitos não funcionais são objetivos estratégicos de negócio
Então é hora de remodelar todo o projeto, partindo de uma nova arquitetura. A nova arquitetura tem sob seus ombros muita responsabilidade. Principalmente a de conduzir o projeto à dias melhores. A partir da nova arquitetura, gerentes, arquitetos, desenvolvedores, testers e clientes, todos serão...
RabbitMQ e .NET – Usar ou não usar bibliotecas?
Nesse post detalho meus argumentos para que você não use nenhuma abstração e use o cliente nativo do RabbitMQ feito para .NET. Contexto RabbitMQ é o Message Broker mais usado do mercado, uma solução open source e amplamente difundida. O projeto adota AMQP 0.9.X enquanto Azure Service Bus, Apache...
Filas exclusivas e autodelete
Nem sempre as demandas exigem filas que durem aos restarts da sua aplicação. Há casos de uso significativos em que você quer que a fila nasça com a instância da sua aplicação e morra junto com ela. Embora seja um conceito trivial, em mais de 10 anos usando RabbitMQ, essa foi a primeira vez que...
Dev ou Ops, de quem é a responsabilidade?
Muitas e muitas vezes me envolvi em discussões sobre responsabilidades sobre serviços de suporte e tudo que está ao redor das nossas aplicações, como Proxy Reverso, API Gateway, Cache Server, Mensageria, Vault, Plataforma e por aí vai. Afinal, quem é o Owner dessas tecnologias e ferramentas? Será...
Quais dados, logs estruturados precisam ter?
Eu estava escrevendo sobre logs estruturados, em especial sobre o Enterprise Application Log, e resolvi quebrar meus argumentos em frações menores para poder isolar as ideias. Aqui hoje quero falar sobre o que um bom log deve ter. Nos primeiros anos de 2010, a evolução na gestão de logs começou a...
Como descrever um roadmap de arquitetura de forma clara
Em um mundo cada vez mais voltado para a tecnologia, a arquitetura de soluções desempenha um papel crucial na orientação de como as organizações desenvolvem e implementam suas estratégias digitais. No entanto, a maneira como apresentamos e comunicamos essas arquiteturas pode muitas vezes ser um...
GPT para Desenvolvedores .NET
Nos últimos meses venho experimentando o ChatGPT e a API dos modelos GPT 3.5-turbo e GPT 4.0. Como sempre esse assunto foi compartilhado na mentoria, e naturalmente consigo encontrar dúvidas que não me pareciam óbvias. Esse é um guia que pode te ajudar a pensar nas possibilidades e também permite...
10 anos com RabbitMQ — O que aprendi sobre – parte 1
Uma das ferramentas que mudou minha carreira foi sem dúvidas o RabbitMQ. RabbitMQ, embora tenha Coelho no nome, se comporta mais como um cavalo selvagem e arisco. Mensageria, Aplicações assíncronas e Aplicações distribuídas são mais complexas, mas dão um poder que poucos no mercado conseguem...
Entendendo o poder do WASM + WASI
Quando se fala em WebAssembly no universo .NET, é comum pensar imediatamente no Blazor, não é mesmo? No entanto, para mim, a imagem que surge é a revolução que o WebAssembly no backend pode desencadear. Imagina mudar completamente a maneira como construímos, encapsulamos, hospedamos e gerenciamos...
Do Microsserviço para o Monolito — Amazon Prime Video
Hoje pela manhã me deparei com uma postagem que me chamou a atenção. Uma compartilhamento de um post que trazia um comentário sobre a Amazon Prime Video, contanto como eles estavam voltando de Microsserviços /Serverless para um Monolito. Como se não bastasse, fui conferir o post e a headline diz:...
Discord — Nossa nova casa!
Acontecimentos recentes se desdobraram em bloqueio do telegram. Desde a noite de quarta-feira estamos sem Telegram em todo o território nacional. Assim, o mensageiro deixou de ser uma opção para nossas comunidades de alunos. E com isso fomos obrigados a abandonar o Telegram para ir para o Discord....
Conheça nosso Podcast
DevShow PodcastEm 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.
.NET
.NET ASPIRE – Criando databases no PostgreSQL e aplicando Migrations com FluentMigrator
No .NET ASPIRE existe uma forma de você expressar para o Orquestrador, um database dentro do ASPIRE para que o serviço de service discovery entregue uma conexão corretamente para nossas aplicações.
O problema é que o .NET Aspire não cria esse banco de dados, então é isso que vamos abordar hoje.
ler mais…
Oragon.RabbitMQ – A relação entre Minimal API’s e Agnostic Services
Oragon.RabbitMQ está no forno!
Dando continuidade à nossa série, abordarei a ideia central pelo qual adoto Minimal API’s e por que elas tem tanto poder na modelagem.
É hora de abrir a caixa de pandora e falar sobre modelagem de API’s agnósticas.
ler mais…
Oragon.RabbitMQ – A relação entre Ack e Resiliência
Oragon.RabbitMQ está no forno!
Hoje começamos uma série que trata dos argumentos para a criação desse projeto.
Começamos pela relação entre a escolha entre Ack Manual e Ack Automático e por que ack automático remove o benefício da resiliência no consumo de mensagens do RabbitMQ.
ler mais…
Habemus .NET ASPIRE
Estamos no último dia do Microsoft Build e sem sombra de dúvidas o maior lançamento dessa edição é o .NET ASPIRE.
É hora de falar tudo que você precisa saber sobre a história recente que nos remete à criação do projeto e suas ambições.
ler mais…
Quando fazer upgrade da minha aplicação .NET?
Muitas vezes aparece a dúvida sobre quando fazer o upgrade de uma versão do .NET.
Será que vale a pena pular de LTS em LTS ou vale a pena pegar as STS’s no meio do caminho?
Empresas burocráticas, devem mudar suas políticas ou não?
Hoje vamos tratar desse assunto, com os meus argumentos, mostrando as recomendações que faço mais ou menos desde 2017~2018.
ler mais…Arquitetura
Oragon.RabbitMQ – A relação entre Ack e Resiliência
Oragon.RabbitMQ está no forno!
Hoje começamos uma série que trata dos argumentos para a criação desse projeto.
Começamos pela relação entre a escolha entre Ack Manual e Ack Automático e por que ack automático remove o benefício da resiliência no consumo de mensagens do RabbitMQ.
ler mais…
Habemus .NET ASPIRE
Estamos no último dia do Microsoft Build e sem sombra de dúvidas o maior lançamento dessa edição é o .NET ASPIRE.
É hora de falar tudo que você precisa saber sobre a história recente que nos remete à criação do projeto e suas ambições.
ler mais…
.NET ASPIRE Dashboard Standalone como Container
Nessa sexta-feira dia 16 foi lançado o Dashboard do ASPIRE como uma implementação OTLP standalone, em uma imagem docker, pronta para uso.
Entenda as novidades nesse post.
ler mais…
Cloud Native .NET com .NET Aspire – Primeiras Impressões
Um dos lançamentos do .NET Conf foi o .NET Aspire. Ele é um orquestrador de recursos (containers ou não), é um conjunto de building blocks para inicialização resiliente e observável dos principais recursos que sua aplicação pode depender.
Diferente de tudo que já vimos, hoje começamos a desvendar o .NET Aspire e seus recursos.
ler mais…
RabbitMQ e .NET – Usar ou não usar bibliotecas?
Nesse post detalho meus argumentos para que você não use nenhuma abstração e use o cliente nativo do RabbitMQ feito para .NET.
ler mais…Containers
RabbitMQ e Kubernetes | Rivais ou Aliados?
Se, ambos, RabbitMQ e Kubernetes promovem um melhor uso de sua infraestrutura, trazem resiliência, escalabilidade, performance, será que eles não seriam concorrentes? Como eles concorrem? Eles podem colaborar?
ler mais…
Tutorial: Trabalhando com Secret Files no Jenkins Pipeline
Você já se perguntou como usar arquivos de configurações sensíveis em pipelines de CI/CD sem que isso crie uma vulnerabilidade no seu servidor ou no seu repositório GIT?
Afinal, como lidar com arquivos de configuração sensíveis em pipelines Jenkins?
ler mais…
Enterprise Application Log v4
Hoje chegamos à versão 4 do nosso stack de observabilidade. Contamos com o upgrade para a versão 7.13.0 de todos os recursos da Elastic e a adição de novos componentes entre eles o Application Performance Monitoring (APM).
ler mais…
Entrypoint vs CMD – v2 – Conteinerizando o Kubectl
Se você precisa interagir com um cluster kubernetes, você já deve ter ouvido falar do Kubectl (o Cube Control). Hoje eu vou abordar os conceitos de Entrypoint e CMD, e vou mostrar como eu conteinerizei o Kubectl em uma imagem docker, vou explicar o porquê e vou te mostrar o repositório do github com todo esse rolê.
ler mais…
Habemus Kubernetes
Hoje eu estou muito feliz por fazer esse anúncio por aqui. Oficialmente estamos subindo as primeiras aulas de Kubernetes no Docker Definitivo, hoje também temos live no canal .NET, falando do Hub de Eventos e em breve teremos conteúdo aqui no gaGO.io que abordam direta ou indiretamente o tema também.
ler mais…Mensageria
RabbitMQ Clustering #2 | As 2 métricas vitais para o RabbitMQ
Se você usa RabbitMQ ou pretende usar, é importante saber o que é um ofensor para seu deployment RabbitMQ. Aquilo que fará seu servidor RabbitMQ parar.
Aqui apresento 2 métricas que ajudam a prever e prevenir quedas.
ler mais…
RabbitMQ Clustering #1
Você já deve ter visto que o RabbitMQ é usado para entregar resiliência, disponibilidade e confiabilidade.
Eu já mostrei isso algumas vezes nos últimos anos.
Talvez já tenha descoberto como pode reduzir a pressão de um volume intenso de trabalho sob seus sistemas, sua infra e seu banco, fazendo com que seja possível tolerar cargas de trabalho vezes maiores do que de fato seu parque consegue tolerar, sem precisar escalar seus sistemas.
Mas afinal, e se o RabbitMQ falhar? O que acontece? Como lidar com isso caso aconteça? Como contornar?
Essa série de posts RabbitMQ Clustering – Publish & Consumer Recovery aborda a criação de clusters, seus principais comportamentos e como aplicações .NET podem se recuperar de falhas com pouco ou nenhum esforço.
Usamos Docker e Docker Compose em exemplos de código que são feitos com C# e .NET 7. Divirta-se.
ler mais…
RabbitMQ – Trabalha em memória?
Já não é tão comum, mas ainda existe quem diga que RabbitMQ é rápido porque não tem banco de dados.
Essa é uma MEN-TI-RA!!
Ele entrega resiliência e performance, por outros motivos.
É sobre isso que vamos falar hoje!
ler mais…
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…
RabbitMQ Operators | RabbitMQ Cluster Operator for Kubernetes – Tutorial PT-BR
E se eu dissesse para você que você pode, com apenas 1 comando, criar um cluster RabbitMQ dentro do seu Kubernetes, de forma segura e prática?
Hoje é a vez de criarmos o seu cluster RabbitMQ com a ajuda do RabbitMQ Cluster Operator for Kubernetes.
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
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.


















