Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # gaGO.io Developer, Architect, Blogger, Speaker... ## Sitemaps - [XML Sitemap](https://gago.io/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Attention Queue: processamento sob demanda para filas granulares](https://gago.io/blog/attention-queue-pattern-ptbr/) - Um padrão para consumir milhares de filas específicas sem manter milhares de consumidores ativos. O problema Imagine uma plataforma de e-commerce chamada MarketHub. Ela integra milhares de lojas com marketplaces como Amazon, Mercado Livre, Shopee e outros canais de venda. Cada loja precisa sincronizar pedidos, estoque, preço, catálogo, notas de envio e eventos de pós-venda. - [Attention Queue: on-demand processing for granular queues](https://gago.io/blog/attention-queue-pattern-enus/) - Consume thousands of specific queues without keeping thousands of active consumers. The Problem Imagine an e-commerce platform called MarketHub. It integrates thousands of stores with marketplaces such as Amazon, eBay, Walmart Marketplace, and other sales channels. Each store needs to synchronize orders, inventory, prices, catalog data, shipping updates, and post-sale events. Most of the time, - [Circular Buffer, Ring Buffer, ObjectPool e Objects Pools Elásticos](https://gago.io/blog/circularbuffer-ringbuffer-objectpool-elasticobjectpool/) - Segunda-feira, 14h. Pico de tráfego. Sua aplicação .NET começa a derreter conexões com o RabbitMQ. Você abre o Grafana, vê 800 conexões abertas contra um broker que aguenta confortavelmente 50, e a hipótese imediata é "vamos limitar o pool". Alguém sobe um SemaphoreSlim, faz deploy, e na quarta-feira o problema inverte: as conexões caem para - [Otimizando consumo de recursos em aplicações .NET com RingBuffer](https://gago.io/blog/2024-01-ringbuffer/) - Frequentemente nos deparamos com desafios relacionados ao gerenciamento eficiente de recursos limitados, como conexões de banco de dados, sockets e serviços como RabbitMQ e Redis. Para solucionar esses desafios, um conceito fundamental e poderoso entra em cena: o Ring Buffer ou Circular Buffer. Este artigo explora o conceito, os benefícios e as aplicações do Ring - [Tokenmaxxing não é histeria](https://gago.io/blog/2026-04-tokenmaxxing/) - É arbitragem temporal sobre um ativo subprecificado. A imprensa generalista pegou o fenômeno do Vale do Silício e fez o que sabe fazer: transformou em pauta de saúde mental, produtividade tóxica e crítica ao culto da hiperperformance. É leitura confortável, vende cliques e tranquiliza quem não está usando IA com a mesma intensidade. O problema - [Agent Skill - O elo que faltava para entregar precisão aos code agents](https://gago.io/blog/agent-skill-01/) - Você já viu dezenas de vídeos sobre Agent Skills. Leu posts, explorou repositórios, talvez até tenha criado uma ou duas. E mesmo assim, na hora de usar num projeto real, o resultado continua genérico, impreciso, frustrante. O problema não é o conceito. O problema é que a maioria do conteúdo que existe sobre Agent Skills - [Event-driven Architecture: você está reaproveitando eventos ou mentindo para o seu próprio sistema?](https://gago.io/blog/event-driven-architecture-reaproveitamento-equivocado-eventos/) - Quantos eventos no seu sistema são emitidos em situações onde o fato que eles representam simplesmente não aconteceu? Um PedidoCriado disparado por uma rotina de correção. Um PagamentoConfirmado emitido por um job de reprocessamento. Um UsuarioCadastrado lançado por uma migração de base legada. O fato não aconteceu, mas o evento foi emitido assim mesmo — - [A corrida dos humanos](https://gago.io/blog/corrida-dos-humanos/) - Existe uma versão da corrida dos ratos que não vejo ninguém discutindo. Na versão original, a "corrida dos ratos" é um conceito popularizado por Robert Kiyosaki no livro Rich Dad Poor Dad. A metáfora descreve um ciclo em que a pessoa trabalha mais para ganhar mais, gasta mais porque ganha mais, e precisa trabalhar ainda - [Notification Pattern - Estão te vendendo um conceito errado](https://gago.io/blog/2019-04-28-notification-pattern/) - Notification Pattern prevê uma forma permissiva que troca exceptions por notificações em um determinado contexto, no entanto embora a maioria das publicações a respeito falem em não lançar exceptions, veremos que isso não é bem assim. Esse post é uma retaliação resposta ao post Não lance Exceptions em seu Domínio… Use Notifications! publicado pelo Wellington - [OA03 - Fazemos o que precisa ser feito e arcamos com as consequências das decisões que tomamos](https://gago.io/blog/oa03-fazer-o-que-precisa-ser-feito-sem-atalhos/) - Seu time quer publicar pacotes NuGet mas não quer manter um NuGet Server. Quer rodar containers mas não quer contratar um Container Registry. Quer processar mensagens assíncronas mas acha que uma tabela com coluna status no PostgreSQL resolve. A pergunta que ninguém faz é: por que você está adotando uma solução cujo custo operacional mínimo - [OA02 - Governança Arquitetural e Open Architecture- Você não pode esperar proatividade, muito menos de quem não tem acesso](https://gago.io/blog/oa02-governanca-arquitetural-e-open-architecture/) - As 7 regras que uso para governar componentes arquiteturais em projetos .NET de grande porte — e filtrar quem realmente está pronto para evoluir a arquitetura. Existe uma expectativa velada em muitos times de desenvolvimento: a de que bons desenvolvedores simplesmente "se envolvem" com a arquitetura. Que eles naturalmente vão questionar decisões, propor melhorias e - [OA01 - Por mais discriminadores de comportamento e menos enums](https://gago.io/blog/oa01-por-mais-discriminadores-de-comportamento-e-menos-enums/) - Existe um vício oculto em projetos .NET que poucos questionam: usar enums para representar status, tipos e categorias, e depois espalhar if e switch por toda a base de código com base em deduções de regras implícitas. if (grupo.Tipo == TipoGrupo.Administrador) { // pode acessar tudo } else if (grupo.Tipo == TipoGrupo.Operador) { // pode - [Oragon.RabbitMQ 1.6 - Welcome .NET 10](https://gago.io/blog/oragon-rabbitmq-1-6/) - Desde a versão 1.1.0 (janeiro/2025), o Oragon.RabbitMQ passou por 6 releases com mais de 70 commits, resultando em +3.894 linhas adicionadas e -1.245 removidas ao longo de 112 arquivos. A seguir, um resumo das principais novidades. O que mudou de v1.1 para v1.6 Suporte a .NET 10 A partir da v1.6.0, o projeto passou a - [Oragon.RabbitMQ 1.1 - Reduzindo Alocações](https://gago.io/blog/oragon-rabbitmq-1-1/) - 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 - [Agnostic Services, Hexagonal Architecture SEM DDD](https://gago.io/blog/agnostic-services-hexagonal-architecture-sem-ddd/) - Esta semana, me deparei com críticas à arquitetura Hexagonal (Ports and Adapters) fundamentadas na suposição equivocada de que seu uso está condicionado à aplicação de Domain-Driven Design (DDD). Como se fosse um privilégio reservado apenas a sistemas que alcançaram um suposto "grau de maturidade arquitetural". Essa ideia, infelizmente, afasta bons profissionais de algumas das abordagens - [RabbitMQ: Filas efêmeras](https://gago.io/blog/rabbitmq-filas-efemeras/) - Ao pensar em filas, é comum pensarmos em filas com um ciclo de vida muito longo, filas que existem enquanto a aplicação existir. É comum pensarmos em filas como recursos estáticos que fazem parte dos requisitos de funcionamento da aplicação, nascendo quando a aplicação é implantada em produção pela primeira vez e somente deixando de - [Respondendo: Até que ponto isolamento de Bases de Dados em Microsserviços faz sentido?](https://gago.io/blog/microsservico-ate-que-ponto-isolar-dados/) - Recentemente, um aluno questionou no nosso fórum interno sobre abordagens como Database-server-per-service, Database-per-service, Schema-per-service e Private-tables-per-service no contexto de microsserviços. Esse é um tema recorrente quando o assunto é microsserviços e não há resposta satisfatória. A resposta para essa pergunta sempre será uma pedra no calcanhar. Ao primeiro olhar, parece exagero, um tipo de purismo - [Simulando I/O limitado com Docker: como testar aplicações sob restrições realistas](https://gago.io/blog/docker-simulando-io/) - Testar aplicações é um desafio recorrente e complexo na engenharia de software. Porém, quando o cenário envolve restrições específicas de I/O — como latência de disco, throughput de leitura/escrita reduzido ou limitação de operações por segundo — o desafio ganha outra dimensão. Nesse contexto, a capacidade de simular gargalos de I/O torna-se uma ferramenta poderosa - [O perigo silencioso das conexões stateful: por que respeitar o ciclo de vida importa?](https://gago.io/blog/perigo-conexoes-stateful/) - APIs HTTP dominam por décadas o paradigma de comunicação entre aplicações, é fácil cair na armadilha de tratar qualquer conexão como se fosse apenas mais uma requisição stateless, principalmente conexões stateful "sob HTTP". Mas nem toda conexão é igual. E conexões de longa duração merecem muito mais respeito. O erro de subestimar o gRPC Quantos - [O marketing dos benchmarks](https://gago.io/blog/benchmarks-mentem/) - 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 - [Mitigando os custos de Reflection](https://gago.io/blog/2025-03-reflection-cache/) - 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 - [Implementando Delay no RabbitMQ com Oragon.RabbitMQ sem Delayed Exchange](https://gago.io/blog/delay-oragon-rabbitmq/) - 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 tipo de exchange e na apresentação do Clayton - [Mininal API para RabbitMQ - Oragon.RabbitMQ 1.0 foi lançado!](https://gago.io/blog/oragon-rabbitmq-1-0-0/) - Na noite do dia 25 de Dezembro lancçamos a versão 1 do Oragon.RabbitMQ, uma implementação de Minimal Api's para o consumo de filas do RabbitMQ. Com ele temos a mesma experiência de minimal api's para o consumo de filas. Contexto RabbitMQ é um projeto incrível, seu client dá um suporte de primeiro nível para o - [Oragon.RabbitMQ - A relação entre Minimal API's e Agnostic Services](https://gago.io/blog/oragon-rabbitmq-a-relacao-entre-minimal-apis-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. Contexto Quando comecei a desenvolver minhas primeiras Web API's, lá por volta de - [Oragon.RabbitMQ - A relação entre Ack e Resiliência](https://gago.io/blog/oragon-rabbitmq-relacao-ack-e-resiliencia/) - 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. Se olharmos os tutoriais por aí vamos ver que a - [O custo real das exceptions – 02 – Estamos olhando para o lugar certo?](https://gago.io/blog/custo-real-das-exceptions-02-escala/) - 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 - [O custo real das exceptions - 01 - A série](https://gago.io/blog/custo-real-das-exceptions-01-a-serie/) - 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 - [Vai criar um IConfiguration? Não esqueça as variáveis de ambiente!](https://gago.io/blog/iconfiguration-envvar/) - 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, - [Sobre MediatR](https://gago.io/blog/mediatr-intocavel/) - 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 questionado sobre os motivos para não usar MediatR. Para muitos desenvolvedores, sua presença - [Resiliência - Tolerância a Falhas (Fault Tolerance)](https://gago.io/blog/define-resiliencia/) - Tolerância a falhas é a capacidade de um sistema continuar operando corretamente mesmo quando uma ou mais de suas componentes falham. Em vez de interromper ou degradar o serviço, um sistema tolerante a falhas é projetado para lidar com falhas, mantendo o funcionamento normal ou próximo ao normal. A tolerância a falhas é um aspecto - [Monorepo vs Multirepo?](https://gago.io/blog/2025-monorepo-vs-multirepo/) - Gerenciar configurações em projetos de software vai muito além de uma simples questão técnica — é algo que realmente faz diferença na maturidade da equipe e na eficiência do desenvolvimento. Se você já trabalhou com repositórios cheios de serviços diferentes, sabe bem que decidir como implantar, versionar e coordenar tudo é o que separa um - [Voltando do .NET Aspire para o Docker Compose](https://gago.io/blog/from-dotnet-aspire-to-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 - [Docker Definitivo - Turma de Abril/2021](https://gago.io/blog/docker-definitivo-turma-de-abril-2021/) - Afinal é para dev? É para DevOps? É para Ops? O que é essa bagaça? Vamos falar sobre isso hoje. Não é nem um pouco novidade que eu cuido do Docker Definitivo e hoje estou 100% dedicado a esse projeto. Mas o que é o Docker Definitivo? Bom, vamos começar pelo nome: Docker Definitivo. Docker - [Há momentos em que é preciso dizer NÃO para o negócio](https://gago.io/blog/alguem-precisa-dizer-nao-para-o-negocio/) - No cenário atual de desenvolvimento de sistemas, especialmente em ambientes de alta demanda, a realidade se impõe: nem sempre é possível atender a todas as solicitações do negócio sem alterar a base técnica. Em diversas situações, é necessário que o arquiteto exerça a maturidade de saber quando dizer “NÃO” para o negócio – mesmo diante - [Entendendo o poder do WASM + WASI](https://gago.io/blog/2023-05-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 sistemas, criando uma interoperabilidade inédita. Não me refiro ao - [Microsserviços vs Componentes](https://gago.io/blog/microsservico-vs-componente/) - 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, - [A anatomia de um JenkinsFile para projeto .NET](https://gago.io/blog/anatomia-jenkinsfile-dotnet/) - Segundo a JetBrains, o Jenkins continua relevante, ocupando a primeira posição na categoria Team Tools > Continuous integration (CI) system, portanto, mesmo não envelhecendo muito bem, por mais caquético que pareça, continua ocupando 50% do mercado corporativo. Vale lembrar que a JetBrains possui o IntelliJ IDEA, uma IDE para Java, assim como o RIDER, o - [Comece sempre com 2 instâncias](https://gago.io/blog/comece-com-2-instancias/) - 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 começo do projeto não é apenas uma medida - [Jornada ACADEMIA PAY — O desafio de construir um gateway de pagamento do zero](https://gago.io/blog/2024-set-jornada-academia-pay-01/) - Imagine-se diante de uma tela em branco e do lado seu Visual Studio, onde o primeiro repositório ainda não foi criado e a primeira linha de código é apenas uma ideia. Você está prestes a iniciar uma jornada ambiciosa: construir, do zero, uma plataforma de meios de pagamento. Não há legado para se preocupar, nenhum - [A fábrica de engrenagens](https://gago.io/blog/a-fabrica-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 vez menos e como empresas usam isso para tirar - [Mensageria .NET for Architects Day | Sábado, 05 de outubro](https://gago.io/blog/mensageria-net-for-architects-day-2024-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 - [6 Semanas com .NET Aspire](https://gago.io/blog/aspire-6semanas/) - 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, nada disso. O foco também - [.NET ASPIRE - Criando databases no PostgreSQL e aplicando Migrations com FluentMigrator](https://gago.io/blog/dotnet-aspire-postgresql-bootstrapping/) - 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. Contexto Aqui na Academia - [Níveis de Maturidade SaaS e Gestão do Crescimento da Infraestrutura](https://gago.io/blog/niveis-maturidade-saas/) - No contexto do crescimento exponencial das soluções SaaS (Software as a Service), a compreensão dos diferentes níveis de maturidade em arquiteturas multitenant e do impacto que estes têm no consumo de infraestrutura é essencial para qualquer arquiteto de software ou líder técnico. Neste artigo, exploramos os quatro principais níveis de maturidade SaaS, destacando suas características - [Projetando um Chat Server para a escala com .NET](https://gago.io/blog/projetando-chat-server-para-a-escala/) - Arquitetura é estratégia. Projetar uma arquitetura envolve muito mais do que escolher tecnologias, implica em compreender como os conectar pontos e principalmente como lidar com limitações e restrições. Em um mundo utópico, sem escassez, não precisaríamos nos preocupar com arquitetura, toda estratégia seria válida, poderíamos escolher absolutamente qualquer estratégia e tudo magicamente funcionaria perfeitamente. A - [NordVPN - 1 a 3 meses grátis](https://gago.io/blog/nordvpn-meses-gratis/) - A segurança e a privacidade online são mais importantes do que nunca. Com o aumento dos ataques e das restrições a determinados serviços, é essencial contar com ferramentas que protejam nossos dados e garantam o acesso livre à internet. Um dos serviços que uso com frequência para esse propósito é a VPN. Por que escolhi - [RabbitMQ e .NET - Usar ou não usar bibliotecas?](https://gago.io/blog/rabbitmq-dotnet-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 QPID, e diversos outros concorrentes utilizam - [Cache-Aside Wins](https://gago.io/blog/cache-aside-wins/) - O uso de caching em sistemas distribuídos tornou-se uma prática essencial para melhorar a performance e a escalabilidade de aplicações. A escolha da estratégia de caching adequada é um desafio que muitos enfrentam. Com diversas abordagens disponíveis, é fácil se perder entre as opções e acabar implementando uma solução que, apesar de parecer eficiente inicialmente, - [SRP - Single Responsability Principle não é sobre fazer apenas 1 coisa](https://gago.io/blog/srp-nao-eh-sobre-fazer-apenas-uma-coisa/) - Não faz muitos anos que me deparei com uma apresentação do Uncle Bob em que ele falava de SRP e dava uma explicação completamente diferente do que é a compreensão comum sobre o tema. SRP não é sobre um módulo ter apenas uma responsabilidade, nem por fazer apenas uma coisa. Isso foi assustador porque eu - [Concorrência e Race Condition com Cache Distribuído: O Workflow correto](https://gago.io/blog/concorrencia-e-race-condition-com-cache-distribuido-o-workflow-correto/) - Se você está vendo cache distribuído pela primeira vez, talvez tenha deduzido qual é a forma adequada de trabalhar com ele. A pergunta que fica é: Você levou em conta a concorrência?. A questão é que quando o cache expira, devemos usar o recurso "lento" para produzir o dado que será cacheado. Mas se estamos - [The Microservices Journey – S2E2: Tipos de Independência](https://gago.io/blog/microservices-journey-s2e2-tipos-independencia/) - Quando se fala em independência de um microsserviço, o que de fato está sendo dito? A independência tem função de viabilizar com que roadmaps de um microsserviço, ou microsserviços de uma time/equipe, tenham capacidade de evoluir sem atrito, sem afetar ou interferir nos microsserviços dependentes ou equipes relacionadas. Se somarmos microsserviços a micro-frontends teremos a - [Não estude por tutoriais](https://gago.io/blog/nao-estude-por-tutoriais/) - A polêmica continua, e essa aqui é uma dica que vale ouro. A galera da mentoria sempre fica "chateada" quando eu digo isso, mas é a pura verdade para mim. Hoje abordamos muitos assuntos, mas não abordamos métodos para estudar, eu vou contar o que faço. Afinal, o que são posts, e tutoriais? Posts e - [Obrigado 2013 – Que venha 2014](https://gago.io/blog/obrigado-2013-que-venha-2014/) - Agradecer é algo que não praticamos com muita freqüência, no entanto devemos nos dedicar um pouquinho mais e nos ocuparmos com os agradecimentos, afinal, se você está lendo esse texto, no mínimo você está vivo e com acesso à internet. Muito nos questionamos sobre a qualidade da vida que vivemos, sem aquela balela de “qualidade - [IOC / DI – Você está fazendo isso errado!](https://gago.io/blog/ioc-di-voce-esta-fazendo-isso-errado/) - Olá, agora vou tocar em um assunto que parece uma ferida para muitos, mas considero bem básico. Infelizmente, acredito haja quem confunda estes conceitos, e por ter encontrado pela estrada alguns projetos com tais problemas relacionados à compreensão de IoC e DI, venho escrever esse post. É um tema tão cotidiano que hoje está disponível também - [SOLID](https://gago.io/blog/solid/) - Olá, já temos conteúdo suficiente indexado pelo Google falando de SOLID. Minha intenção é criar um debate sobre SOLID e não definí-lo para você. Single responsibility principleOpen/closed principleLiskov substitution principleInterface segregation principleDependency inversion principle Ao longo desses muitos anos desenhando soluções tenho algumas dicas para facilitar a vida de quem está vendo S.O.L.I.D. pela primeira vez. Aos - [[deprecated] Oragon Architecture Now On GitHub](https://gago.io/blog/oragon-architecture-now-on-github/) - [deprecated] Bom galera, movi meu projeto pessoal o Oragon Architecture para o GitHub ( https://github.com/luizcarlosfaria/Oragon.Architecture.git ). A intenção é estar mais próximo da comunidade, permitindo melhor integração com todo mundo que usa de alguma forma o projeto. O Oragon Architecture me acompanha a muitos anos e pretendo fazer bastante material sobre ele. Espero que gostem! CheckOut It - [Como definir a Arquitetura de um Software](https://gago.io/blog/como-definir-arquitetura-de-software/) - Esse post nasceu de uma thread em um grupo de discussão antigo. Com o passar dos anos, passei a usar esse post como um guia sobre os tradoffs inerentes à escolha e definição da arquitetura de um software. Representa uma visão de meados de 2008, que virou post em 2014 e vem sendo amadurecida no - [Spring.Net - HandOn Vídeo - Injeção de Dependência](https://gago.io/blog/spring-net-handon-video-injecao-de-dependencia/) - Olá, Nesse vídeo, temos o setup de uma nova solução, contendo um novo projeto console. Nela adicionamos as referências para o Spring.Net e realizamos criamos um exemplo bem básico de Injeção de Dependência. [youtube=http://www.youtube.com/watch?v=plnYdi3TDn8] - [[deprecated]Oragon Architecture disponível no NuGet](https://gago.io/blog/oragon-architecture-disponivel-no-nuget/) - [deprecated] Bom, admito que já faz algum tempo que tenho pensado em migrar as referências do Oragon Architecture para o NuGet. A direita está a lista completa de referências, armazenadas na pasta [References], uma prática bem antiga, mas extremamente eficiente. Por diversos motivos, incluindo retrocompatibilidade, venho sofrendo com a vontade e concomitantemente com a preguiça - [Microsoft® "Roslyn" e um futuro muito interessante](https://gago.io/blog/microsoft-roslyn-futuro-interessante/) - Para quem ainda não conhece, Microsoft "Roslyn" demonstra a próxima geração de modelos de objeto de linguagem, para geração de código, análise e refactoring, e terá suporte para scripting e interatividade com C# e VB.NET. A proposta inicial é bem interessante, segue o disclaimer em inglês: Traditionally, compilers are black boxes – source code goes in - [Future Plans for C# - Null Propagation](https://gago.io/blog/future-plans-for-csharp-null-propagation/) - No artigo Future Plans for C# de InfoQ Internacional, temos um ponto que acho bem interessante de ser ressaltado: Null Propagation Esse assunto já foi tema de muita discussão no DotNetArchitects em um post sobre Null Object Pattern. When working with messy data, developers often have to write a series of null checks before reading a - [[deprecated] Oragon Architecture - A evolução e os novos desafios](https://gago.io/blog/oragon-architecture-a-evolucao-e-os-novos-desafios/) - [deprecated] Para quem trabalhou comigo no BTG Pactual viu no Oragon Architecture o início do Oragon Architecture Services, que consistia em uma camada de abstração para a criação de serviços baseados em WCF, ainda configurado side-by-side com a configuração de WCF do .Net Framrwork. Para atender às demandas da B2W Viagens, não tivemos muita evolução, - [Legado Versus Design - Database First e Code First](https://gago.io/blog/legado-versus-design-database-first-e-code-first/) - Bom, quem acompanha o Oragon Architecture ao longo dos anos, mesmo que de forma despretensiosa, em algum momento me questiona sobre algumas decisões tomadas. Vou tentar ser breve para relatar alguns dos problemas e soluções que motivaram minhas decisões. Nesse tópico, vou falar de gestão de base de dados, Code First e Database First. Esse - [Redis, MongoDB, RabbitMQ, Sentry e muito mais que o mundo Linux pode oferecer para aplicações .Net](https://gago.io/blog/redis-mongodb-rabbitmq-sentry-e-muito-mais-que-o-mundo-linux-pode-oferecer-para-aplicacoes-net/) - Se você não conhece nenhuma dessas soluções, vou fazer um breve apanhado sobre as capacidades de cada uma delas. Redis ( http://redis.io/ ) Redis é um Key-Value Storage. Basicamente um tipo de NoSQL baseado em chave-valor. Nele armazenamos objetos complexos. É uma solução muito útil para cache, entre outras abordagens. Se você já usou SharedCache, Memcached, e outras - [Coisas úteis que um dev nunca deve deixar de ter](https://gago.io/blog/coisas-uteis-que-um-dev-nunca-deve-deixar-de-ter/) - Bom, isso aqui anda meio parado. Ando estudando um milhão de coisas simultaneamente: File System Distribuído, Performance em NoSQL, escalabilidade, OWIN, Katana, ASP.NET MVC 5. Está realmente complicado de dar uma passadinha aqui para escrever. Mas vendo um artigo do Elemar, me lembrei de algumas coisas interessantes que podem ajudar muitos. Todo dev que se - [Contratos são garantias - JSON Schema](https://gago.io/blog/contratos-sao-garantias-json-schema/) - Não faz muito tempo que apanhei horrores em uma discussão no DNA sobre Json Schemas, mas para minha sorte e daqueles que estão ao meu lado nessa empreitada, saiu no dia 10/Abril no blog .NET Web Development and Tools o artigo Intellisense for JSON Schema in the JSON Editor, que ao meu ver é extremamente interessante. Bom, - [Roadmap de Arquitetura - Um exemplo real](https://gago.io/blog/roadmap-de-arquitetura-um-exemplo-real/) - As vezes sou questionado sobre meus desenhos de arquitetura e porque criar tantas abstrações, tanta configuração e tantas dependências e frameworks de terceiros, alguns que só eu e um tibetano conhecemos. No post Como definir Arquitetura de Software, cito quais são os pensamentos primários necessários para se desenhar um arquitetura, mas vamos aplicar isso a um - [[deprecated]Oragon Architecture - Por que? Pra que?](https://gago.io/blog/oragon-architecture-por-que-pra-que/) - [deprecated] Olá, tudo bom? Vou falar um pouco do meu projeto pessoal o Oragon Architecture. Se você me acompanha, sabe que falo bastante dele, e vou aproveitar para responder algumas perguntas que já me fizeram nos últimos dias. Já fui questionado algumas vezes porque criar um framework de aplicação, uma arquitetura relativamente gorda, baseada - [Integrações, XML`s e NoSQL](https://gago.io/blog/integracoes-xmls-e-nosql/) - Olá, tudo bom? Nesse post gostaria de abordar uma solução que usei no iMusica e que pode também te ajudar com integrações baseadas em XML ou qualquer formato unquerable(neologismo). Antes de falar da solução, vou falar do problema. Nossas integrações no iMusica geralmente se dão por meio de troca de arquivos, contendo pacotes com mídia - [Stack e Queue também são seus amigos](https://gago.io/blog/stack-e-queue-tambem-sao-seus-amigos/) - Olá, tudo bom com você? Espero que sim! Estou aqui para falar rapidamente de Pilhas e Filas. Bom, o C# possui no namespace System.Collections.Generic, duas classes genéricas, bem úteis, mas muito ignoradas: Stack e Queue. O que você precisa saber de Queues e Stacks: Queues implementas FIFO (First in, First Out), enquanto Stacks implementa LIFO (Last in, First Out). Métodos - [A saga de estar up-to-date com as novidades da plataforma .Net](https://gago.io/blog/a-saga-de-estar-up-to-date-com-as-novidades-da-plataforma-net/) - Olá, tudo bom com você? Eu espero que sim! Nesse post vou abordar minha saga para conseguir me manter atualizado com as tecnologias e lançamentos do mercado. Antes de qualquer coisa, é preciso entender meu trabalho para compreender a demanda. Sou arquiteto de software, arquiteto de soluções e coordenador de uma equipe de desenvolvimento. Trabalho no - [[deprecated]Roadmap da Reestruturação do Oragon Architecture](https://gago.io/blog/roadmap-da-reestruturacao-do-oragon-architecture/) - [deprecated] Olá, como vai você? Espero que esteja tudo bem! Nesse post vou falar das mudanças previstas para o Oragon Architecture nas próximas semanas. No post Oragon Architecture - A evolução e os novos desafios eu falo da evolução ao longo dos anos e do que pretendemos fazer focando no big picture do projeto. Agora é hora de - [[deprecated]Oragon Architecture - Application Hosting](https://gago.io/blog/oragon-architecture-application-hosting/) - [deprecated] Olá, como foi sua páscoa? Espero que tenha sido muito boa, com muitos doces e família. Já por aqui essa páscoa teve muito doce e muito trabalho. Consegui implementar algumas mudanças no Oragon Architecture, espero que goste! Nesse post vou falar um pouco sobre o novo host de aplicações, o subsistema Application Hosting. Muita coisa mudou nessa - [[deprecated]Oragon Architecture - Application Hosting - Criando uma nova aplicação baseada em Spring.Net](https://gago.io/blog/oragon-architecture-application-hosting-criando-uma-nova-aplicacao-baseada-em-spring-net/) - [deprecated] Olá, como vai você? Por aqui tudo bem! No post anterior fiz um overview do Oragon Architecture Application Hosting, falando no que foi feito, agora vou demonstrar como hospedar aplicações baseadas em Spring.Net. Criando o projeto 1) Criar um projeto Class Library 2) Referencie Oragon.Architecture, Oragon.Architecture.ApplicationHosting, Oragon.Architecture.ApplicationHosting.SpringFramework e Spring.Core 3) Programar uma classe qualquer que implemente IInitializingObject - [[deprecated]Oragon Architecture - Application Hosting - Suporte para Nijnect e SimpleInjector e qualquer outro container](https://gago.io/blog/oragon-architecture-application-hosting-suporte-para-nijnect-e-simpleinjector-e-qualquer-outro-container/) - [deprecated] Bom, tenho escrito o bastante para nem precisar perguntar como você está! Né?! Já estamos íntimos e agora vou contar uma novidade! Implementei o suporte a dois containers bem conceituados no mercado e simplifiquei o modelo para que você possa implementar facilmente uma nova extensão para qualquer IoC container que tenha o interesse de trabalhar. - [I`m not dead, Código e um pouco de música](https://gago.io/blog/im-not-dead-codigo/) - Bom, acho de bom tom dar notícias e falar um pouco, ainda que de forma superficial, de algumas coisas pessoais que vem afetando minhas atividades rotineiras e é possível que você seja uma das pessoas que busca por respostas. Primeiro, estou ausente de diversos círculos por conta de crises de ansiedade, que estão atrapalhando demais meu - [Microservices - Buzzword da vez](https://gago.io/blog/microservices-buzzword-da-vez/) - Olá, como vai você? Bom, embora eu tenha citado Microservices nos posts Oragon Architecture - Application Hosting e Roadmap da Reestruturação do Oragon Architecture, acho que é hora de entrar um pouco no detalhe do que vem a ser este "novo velho mundo". Bom, às vésperas de lançar o projeto Oragon Aaron, onde encontramos o Oragon Architecture Application Server - [[deprecated]Apresentação Oragon Architecture](https://gago.io/blog/apresentacao-oragon-architecture/) - [deprecated] Olá, como vai você? Bom, espero que nesse dia das mães não esteja enfurnado no computador. Bom, do meu lado a minha fica distante de mais, em muitos os sentidos, portanto, lá vamos nós! Hoje não vou falar muito, vou compartilhar apenas uma apresentação que fiz sobre algumas features do Oragon Architecture. A maioria - [Uma parte do que você precisa saber sobre o Microsoft vNext](https://gago.io/blog/vpast-vcurrent-e-vnext-untouched-review/) - [EDITADO] Olá, como vai você? Espero que esteja tão excitado com as novidades da Microsoft quanto eu, mas se não estiver, vou tentar mostrar um pouquinho da revolução que estamos vivendo em nossa plataforma. Nessa semana rolou o TechEd North America 2014 e nele muita coisa legal foi apresentada. Aqui faço um compilado da história da plataforma e dos - [Open Source, algumas ferramentas que irão te ajudar](https://gago.io/blog/open-source-algumas-ferramentas-que-irao-te-ajudar/) - Bom, a ideia desse post é ser rápido e simples e curto. Portanto você está bem!!! rs! huboard.com O que é? Kanban para as issues do GitHub Excelente! Se seus projetos são open source, então não há limites. Para repositórios fechados há um valor a ser pago. $24/Mês para empresas ou $7/Mês por usuário - [Escalando Horizontalmente com Oragon Architecture Application Server](https://gago.io/blog/escalando-horizontalmente-com-oragon-architecture-application-server/) - Olá, como vai você? Espero que bem, espero também que esteja em uma posição confortável, pois pretendo falar sobre como podemos escalar aplicações e serviços horizontalmente com o Oragon Architecture. Bom, com a implantação dos novos processos no iMusica, muita coisa aconteceu. Muitos problemas e demandas de negócio ganharam vida, mas a arquitetura em si - [vNext - AppDomain](https://gago.io/blog/vnext-appdomain/) - Bom, não sei se você está bem, mas por aqui eu estou completamente atordoado com um papo que rolou no Jabbr. Conversando com o David Fowler, criador do SignalR e membro da equipe do ASP.NET, recebi a informação de que não haveria mais AppDomain no vNext, isso explodiu minha cabeça. Alguém conseguiria confirmar isso? - [Instalação Offline do Chocolatey](https://gago.io/blog/instalacao-offline-do-chocolatey/) - Olá, como vai você? Por aqui as coisas andam bem agitadas! Mas estão bem. Estou muito empolgado com o projeto que estou para lançar, falamos nisso depois. Hoje vou falar do Chocolatey, diferente do material que se encontra por aí, vou ser um pouco mais objetivo. Vou falar em como instalá-lo em sua infra, quando - [3 em 1: SignalR, INTRODUCING: The Future of .NET on the Server e DEEP DIVE: The Future of .NET on the Server](https://gago.io/blog/3-em-1-signalr-introducing-the-future-of-net-on-the-server-e-deep-dive-the-future-of-net-on-the-server/) - Olá, como vai você? Nos vimos um post qualquer do passado em que ao final deixei a dica de 3 sessões do TechEd que são imperdíveis! Aqui estão! SignalR: Building Real-Time Applications with ASP.NET SignalR INTRODUCING: The Future of .NET on the Server DEEP DIVE: The Future of .NET on the Server Por hoje não é - [Conheça os detalhes da atualização Update 2 do Visual Studio 2013](https://gago.io/blog/conheca-os-detalhes-da-atualizacao-update-2-do-visual-studio-2013/) - No link em purtuguês, temos uma lista com todas as features do Visual Studio 2013 Update 2. Fique ligado, tem muita coisa interessante! - [[deprecated]Oragon.BuildTools.NugetTools - Utilitário de linha de comando para sincronizar arquivos NuSpec](https://gago.io/blog/oragon-buildtools-nugettools-utilitario-de-linha-de-comando-para-sincronizar-arquivos-nuspec/) - [deprecated] Olá, como vai você? a partir da seguintes demandas, criei um executável utilizável de linha de comando que ajuda na atualização de Nuspec files. Premissas Minha solution tem uns 25 projetos e são todas bibliotecas publicáveis no NuGet. Se tentar gerar os pacotes com base no CSPROJ, faltam metadados (assemblyInfo) para preencher todos os campos - [[deprecated]Be welcome, now boarding, Oragon Architecture 7](https://gago.io/blog/be-welcome-now-boarding-oragon-architecture-7/) - [deprecated] Bom, a freqüência de posts está bem reduzida, e isso acontece em virtude da refatoração que estou fazendo no projeto. Nem lancei a release 7, e as features solicitadas já sugerem uma grande reestruturação. What's new Reestruturação dos metadados de troca de mensagem para tornar mais flexível e dinâmico. Permite estender a interface de - [#Fail - As histórias de insucesso que precederam o sucesso!](https://gago.io/blog/fail-as-historias-de-insucesso-que-precederam-o-sucesso/) - Bom, se você não conhece Bel Pesce, deveria conhecer, ela é A Menina do Vale (do silício). Se isso não diz nada, Bel estudou no Massachusetts Institute of Technology (MIT). Durante a faculdade, trabalhou na Microsoft, Google e Deutsche Bank, e terminou vários cursos: Engenharia Elétrica, Ciências da Computação, Administração, Economia e Matemática, além de fazer - [As dificuldades de profissionalizar as soluções de software de uma Startup](https://gago.io/blog/as-dificuldades-de-profissionalizar-as-solucoes-de-software-de-uma-startup/) - Olá, tudo bem com você? Então comigo anda tudo caminhando, o stress que anda me matando, no mais, a vida segue. Hoje vou falar um pouco sobre as dificuldades de um dia-a-dia de uma empresa que quer se tornar uma ex-startup. As primeiras dificuldades que você encontra estão relacionadas à falta de verbas que é comum nos primeiros - [O que eu uso?](https://gago.io/blog/o-que-eu-uso/) - Olá, como vai você? As polêmicas Do lado de cá, continuo me metendo em polêmicas e mais polêmicas nos grupos de discussões nacionais, e nesse final de semana decidi sair desses grupos. A discussão por aqui não é muito produtiva, leva-se tempo para que as pessoas foquem no foco de uma discussão enquanto, outros fazem agressões - [IoC e Dependency Injection - Os erros comuns](https://gago.io/blog/ioc-e-dependency-injection-os-erros-comuns/) - Olá, tudo bem? Que copa né?! Sermos batidos por 7x1, em casa, não é nada legal, mas poderia ser pior, em vez da Alemanha, a Argentina! Bom, independente do resultado da copa, esse assunto aqui pode realmente tirar seu sono. É comum entrar em discussões eternas sobre o erro de usar IoC e DI, e quero - [The Presentation Secrets of Steve Jobs](https://gago.io/blog/the-presentation-secrets-of-steve-jobs/) - Bom, sem delongas, esse é mais um vídeo da Bel Pesce, nesse aqui ela fala de um livro bem legal. [youtube=http://www.youtube.com/watch?v=KRNnd1PRpHA] Os 3 atos! Criar uma História Entregar uma experiência Refinar e Praticar The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience - [Alguns videos para animar essa segunda-feira!](https://gago.io/blog/alguns-videos-para-animar-essa-segunda-feira/) - Bom, é segunda-feira, e você acordou desmotivado. Levante já da cama, a copa acabou e o ano começou. Mesmo que em pleno Julho de 2014, feliz ano novo! Se você é como eu, de alguma forma sempre se sentirá incomum. Assista esse vídeo, nós podemos não ser um deles, mas de qualquer forma há um conforto nisso - [#Fail - Sidnei Oliveira](https://gago.io/blog/fail-sidnei-oliveira/) - Sidnei Oliveira se apresenta na FazINOVA, da Bel Pesce, falando no #Fail, histórias de insucesso que precederam o sucesso! Fique de olho nessa playlist é absolutamente sensacional! [youtube=https://www.youtube.com/watch?v=q-fGv-kAuUg&list=PLjIhqe5hH3aTD2oR7OCG6uWzk2jhTCb4h] - [[deprecated] Oragon Architecture - Retomando os trabalhos](https://gago.io/blog/oragon-architecture-retomando-os-trabalhos/) - [deprecated] Bom, talvez você tenha notado que o projeto deu uma esfriada. O motivo dessa esfriada no dia-a-dia de posts e commits é que estou no meio de uma reestruturação no iMusica. A primeira demanda para remodelar o Oragon Architecture era justamente para mudar a dinâmica de hospedagem de aplicações, permitindo a hospedagem dinâmica de - [Pragmatismo nunca é demais](https://gago.io/blog/pragmatismo-nunca-e-demais/) - As empresas cada vez mais tornam-se especialistas em suas áreas, demandando cada vez mais complexidade de seu parque tecnológico. Enquanto no início de suas atividades poucos sistemas davam conta de todo o negócio. Com o passar dos anos, áreas especializadas na criação de novos negócios encontram novas formas de monetizar suas companhias. Independente da forma - [[deprecated]Oragon Architecture News - Dez/2014](https://gago.io/blog/oragon-architecture-news-dez-2014/) - [deprecated] Olá, como vai você. O novo período de hibernação se deu pela necessidade de esperar os novos direcionamentos da Microsoft se solidificarem e agora com o RC do ASP.NET vNext, há muito a rever e repensar no Oragon Architecture. Oragon Architecture em 2014 A versão 7 do Oragon Architecture está em produção desde Junho desse ano - [Logs Estruturados](https://gago.io/blog/logs-estruturados/) - Então, meses sem escrever nada mas hoje estou aproveitando o domingo para escrever algumas coisas sobre o que tenho vivido no último ano. Olhando projeções para o próximo ano, vejo alguns pontos relevantes relacionados ao que posso contribuir com o dia-a-dia de vocês. Você sabe o que são logs estruturados? Logs estruturados, diferente dos logs de aplicação, comuns, - [[deprecated]NugetTools](https://gago.io/blog/leve-3-pague-0-nugettools/) - [deprecated] As demandas mais comuns na hora de publicar NuGet packages Você já tentou publicar algum projeto no NuGet? Se não foi uma tentativa isolada, só para testar você deve passar pelo seguinte problema: Novas referências são lançadas Você realiza o update das referências, atualizando seu package.config Mas seu arquivo NuSpec permanece desatualizado Na hora de publicar... inconsistência! - [[deprecated]AssemblyInfoVersionManager](https://gago.io/blog/leve-3-pague-0-assemblyinfoversionmanager/) - [deprecated] Muitas vezes usando Jenkins para CI/CD, você deseja alterar as informações do AssemblyInfo. Nos meus projetos, sempre tenho um AssemblyInfo Global, e durante o processo de build, é mesclado com o AssemblyInfo local. Dessa forma, informações comuns a todos os projetos são mantidas em um ponto centralizado, enquanto o que compete a cada projeto, fica - [WebAPI não é bala de prata](https://gago.io/blog/webapi-nao-e-bala-de-prata/) - O tema Pessoal, faz alguns dias que assisti um debate interessante e muito produtivo com o tema "Serviços na plataforma .NET: WCF ou WebAPI?". Quem conduziu o debate foi a galera do AspNetCast‬, com a presença do Evilásaro Alves. Bom, não vou debater a respeito do cast que está aqui, minha intenção é debater sobre o assunto. - [Windows Nano Server](https://gago.io/blog/windows-nano-server/) - Olá galera, tudo bom? Dessa vez vou falar um pouco do Windows Nano Server. A nova Microsoft Nos últimos anos vemos a Microsoft repensando sua estratégia de mercado e repensando seus produtos. É incrível ver como esse gigante está conseguindo se reposicionar de forma assertiva junto ao mercado e principalmente junto à comunidade. Mas nem tudo foi projetado para ser - [Tutorial - Windows Nano Server para o VirtualBox](https://gago.io/blog/tutorial-windows-nano-server-para-o-virtualbox/) - 16/11/2015 Atenção, este post foi feito no momento do lançamento do Technical Preview 2. Estou trabalhando no Technical Preview 3 para poder gerar conteúdo e apresentar alguns detalhes de como configurar e usar o Nano Server no dia-a-dia. Olá pessoal, saem aos poucos alguns artigos a respeito do Windows Nano Server, mas ninguém fala nada a - [Video Tutorial - Nano Server no VirtualBox em 13 minutos](https://gago.io/blog/video-tutorial-nano-server-no-virtualbox-em-13-minutos/) - Video Tutorial No post Windows Nano Server falei um pouco sobre o Windows Nano Server , já no Tutorial – Windows Nano Server para o VirtualBox explico como criar o disco virtual de sua Virtual Machine. Nesse post eu quero demonstrar com um vídeo bem sucinto (12:36) como criar sua primeira máquina virtual com o Nano Server. O vídeo trás os procedimentos - [Por onde andei, andei frustrado](https://gago.io/blog/por-onde-andei-andei-frustrado/) - O mundo está cheio de pessoas felizes, sorridentes, as redes sociais estão abarrotadas por todos os lados de adoradores de potássio(1). Acho que é hora de falar do mundo real, e de algumas frustrações. A minha ausência se dá a um caso bem complexo na carreira, quando após entregar uma plataforma inteira, completamente escalável, altamente - [TypeScript + Classic ASP ... Why not?](https://gago.io/blog/typescript-classicasp-why-not/) - As vezes algumas limitações impostas por clientes, times de arquitetura e empresas atrapalham nossas vidas. Não é fácil, nos dias de hoje, se sentir confortável em desenvolver algo com ASP Clássico. ASP pode ser facilmente considerado o cobol da Web. Com TypeScript você pode usar os recursos de uma linguagem tipada e todos os recursos de - [[deprecated]Oragon Architecture - estratégia para 2016](https://gago.io/blog/oragon-architecture-estrategia-para-2016/) - [deprecated] Quem segue esse blog conhece o Oragon Architecture, sabe pelo menos do que se trata e o que ele faz. Então vou encurtar as apresentações, pois já fiz isso em diversos posts. De fato as mudanças, no desenvolvimento de software em si, nunca foram tão drásticas e disruptivas. Não há nada de ruim nisso, mas - [MonolithFirst @ Fowler, artigo comentado](https://gago.io/blog/monolithfirstfowler-artigo-comentado/) - Olá pessoal, hoje vou falar um pouco sobre um padrão detalhado pelo Fowler meses depois da minha saída do iMusica. Por sinal, há algo de interessante com esse padrão, pois era algo que alguns membros do meu time reclamavam e consideravam um anti-pattern. Vou aproveitar esse post vou tentar usar uma linguagem ainda mais informal que a - [DockerFile - Ubuntu + SSH + WebMin](https://gago.io/blog/dockerfile-ubuntu-ssh-webmin/) - [PT-BR]Não faça isso! Esse foi meu primeiro texto sobre docker, tem erros monumentais e essa não é uma boa prática. São muitas responsabilidades em um só container. Não há "depende", esse post é um ERRO CONCEITUAL, e só está presente aqui ainda para que eu lembre das besteiras que um dia escrevi! [EN-US] Do not - [Docker - Novas imagens prontas](https://gago.io/blog/docker-novas-imagens-prontas/) - Você já pensou como ficaria o WordPress no php7, ou tem uma ao ou site e queria colocar um cache varnish? Que tal então, passar um otimizador na sua aplicação, reduzindo o Loader, fazendo minify, e ajustes com a tecnologia do Google? As imagens estão prontas, falta apenas documentar. Assim que concluir a documentação e - [Novas tecnologias - Alguns motivos para você pensar nelas!](https://gago.io/blog/novas-tecnologias-alguns-motivos-para-voce-pensar-nelas/) - Ao longo dos últimos anos, venho trabalhando escalabilidade e performance de uma forma bem intensa. Já fiz algumas implantações de Jenkins para CI, uma de MongoDB que ficou muito interessante, algumas outras de RabbitMQ, ElasticSearch + LogStash + Kibana e Redis. Na maioria dos times onde realizei essas implantações, os times estavam tecnologicamente defasados, mas o mais relevante é que não era incomum - [Como Docker pode influenciar sua vida hoje](https://gago.io/blog/como-docker-pode-influenciar-sua-vida-hoje/) - Se você usa ou pretende usar Redis, RabbitMQ, WordPress, MySql/MariaDB, Postgres, Memcached, MongoDB, ElasticSearch, LogStash, Kibana, e outras soluções, plataformas ou ferramentas e não sabe como Docker vai obrigatoriamente mudar sua vida nos próximos anos, preste bem atenção. Sendo Docker ou um sucessor, a utilização de containers está aí para ficar e já está mudando a - [Docker Images - Dicas e Truques](https://gago.io/blog/docker-images-dicas-e-truques/) - Você já criou suas primeiras imagens, mas algo não ficou bom e teve muito trabalho? Periódicas atualizações fizeram com que gastasse um tempo não previsto para atualizar imagens?! Deseja criar imagens mas não sabe como criar imagens de forma eficiente e de acordo com as melhores práticas. Esse post é para você. Você pode encontrar imagens para os mais variados - [Introdução ao Docker @ Canal .NET](https://gago.io/blog/introducao-docker/) - No início do mês, o Renato Groffe organizou um hangout do Canal .NET onde batemos um papo superlegal sobre Docker. Renato Groffe, Gustavo Zimmermann e eu, discutimos um pouco sobre Docker, contamos um pouco da história dos containers e traçamos um guia para que você entenda mais sobre como usar o Docker nos mais diversos cenários para desenvolvimento e - [Simplificando tudo](https://gago.io/blog/simplificando-tudo/) - Esse é um post rápido, uma crítica a aqueles que querem sempre simplificar tudo, de forma indiscriminada, e no final criam frankensteins conceituais. A ideia que refuto é: Vamos implantar SCRUM, mas sem ... pq não precisamos. Vamos usar RUP, mas sem... pq não é necessário. Vamos implementar SOA, mas vamos simplificar... pq é too much. Vamos - [Docker de A a Z - Primeiros vídeos em fase de produção](https://gago.io/blog/docker-de-a-z-primeiros-videos-em-fase-de-producao/) - Há semanas anunciei o início de uma série de vídeos sobre Docker. Após muito atraso, alguns vídeos estão entrando na esteira de produção. Os primeiro dois vídeos apresentam o setup de máquinas. Ubuntu Server 16.04 LTS tanto no VirtualBox quanto na Amazon EC2. Nestes dois casos, a intenção é trazer tutoriais, apresentando quais são os principais cuidados - [Windows Subsystem for Linux - O que é?](https://gago.io/blog/windows-subsystem-for-linux/) - Windows Subsystem for Linux Esse é o nome da recém lançada feature do Windows que permite executarmos pacotes e binários nativos do Linux em um ambiente Windows. A Microsoft está investindo pesado em Open Source e na interoperabilidade. As novidades surgem a cada dia, como o ASP.NET Core, já rodando em Linux e Mac OS, o SQL Server, já - [Desconto - Curso ASP NET Core (ASP NET 5) + MVC 6 + Angular2 + EF na Udemy](https://gago.io/blog/desconto-curso-asp-net-core-asp-net-5-mvc-6-angular2-ef-na-udemy/) - Pessoal, buscando algumas notícias sobre ASP.NET Core, encontrei dois cupons de desconto para um curso super legal na Udemy, esses cupons dão 50% e 100% de desconto em um curso que a princípio parece ser bem interessante. [UPDATE 18/07 01:30] O cupom de 100% não está funcionando mais. O cupom de 50% continua funcionando. [/UPDATE] - [Todo WebDev deveria saber: Infraestrutura](https://gago.io/blog/todo-webdev-deveria-saber-infraestrutura/) - Nós trabalhamos com projetos web, serviços, apis, conversamos e definimos soluções, desenhamos projetos pequenos, médios, mas e quando o bicho pega e você precisa de algo maior? Estar pronto para administrar e resolver problemas do dia-a-dia no desenvolvimento web, consiste em conhecer também infraestrutura. Você precisa conhecer com certo nível de profundidade tudo o que você - [DevOps & Tests Hack Nights - Microsoft Fakes](https://gago.io/blog/devops-tests-hack-nights-microsoft-fakes/) - Pessoal, daqui a pouco 19 horas vou falar sobre Microsoft Fakes no Canal .Net. Para quem não conhece, Microsoft Fakes é uma infraestrutura de Mocking que suporta teste de artefatos "intestáveis", seja comportamentos do .Net Framework ou métodos estáticos, esse recurso é extremamente útil quando trabalhamos com legados ou construção de frameworks de baixo nível. Não percam, - [Docker - de A a Z - 02 - Criando a máquina virtual com VirtualBox](https://gago.io/blog/docker-az-02-criando-maquina-virtual-com-virtualbox/) - Pessoal, nesse vídeo vamos criar a máquina virtual com VirtualBox. https://youtu.be/BfpOsraeT4A - [Docker - de A a Z - 03 - Ubuntu Server 16.04 no VirtualBox](https://gago.io/blog/docker-az-03-instalando-o-ubuntu-server-16-04-lts-no-virtualbox/) - Nesse post vamos fazer o setup do Ubuntu Server 16.04 LTS na máquina virtual que criamos no vídeo anterior! https://youtu.be/aKqOYxZZJJA - [Docker - de A a Z - 04 - Instalação Docker no Ubuntu Server 16.04 LTS](https://gago.io/blog/docker-az-04-instalacao-docker-no-ubuntu-server-16-04-lts/) - Pessoal, já temos a máquina virtual com o SO, nos falta instalar o Docker, nesse vídeo vamos executar o procedimento de instalação do Docker no Ubuntu Server 16.04 LTS. https://youtu.be/44gecoWpUcs - [Docker - de A a Z - 06 - Docker Hub](https://gago.io/blog/docker-az-06-docker-hub/) - Pessoal, aqui vamos entender um pouquinho como funciona o Docker Hub e como usá-lo. https://youtu.be/F-GJkcyrZR0 - [Docker - de A a Z - 07 Microsof Azure](https://gago.io/blog/docker-az-07-microsof-azure/) - Pessoal, nesse vídeo vamos fazer o setup de uma máquina virtual com Docker no azure! https://youtu.be/lrGxTWimSr8 - [Docker - de A a Z - 08 Amazon AWS EC2](https://gago.io/blog/docker-az-08-amazon-aws-ec2/) - Pessoal, aqui o papo já é sobre o setup de uma instância no EC2 da Amazon. https://youtu.be/YB6J4-MK1-k - [Docker - de A a Z - 09 Docker For Windows](https://gago.io/blog/docker-az-09-docker-for-windows/) - Pessoal, muita gente ainda tem dúvida sobre o Docker for Windows, aqui vai uma ajudinha para quem quer conhecer mais sobre o Docker for Windows. https://youtu.be/M4ZPSUw_RO8 - [Docker - de A a Z - 10 - Demo Nginx no Docker](https://gago.io/blog/docker-az-10-demo-nginx-no-docker/) - Docker e NGINX que tal? Uma excelente combinação que vou abordar, ainda que superficialmente em uma demo nesse vídeo. https://youtu.be/joJYBhG-cwY - [Docker - de A a Z - 11 - Demo MySQL e MariaDB no Docker](https://gago.io/blog/docker-az-11-demo-mysql-e-mariadb-no-docker/) - Quando se fala em banco de dados no docker, não é incomum esbarrarmos nesses 2 aqui: MySQL e MariaDB é uma das demos mais pedidas durante esse tempo, então vamos aos dois. Demo em dobradinha: MySQL e MadiaDB com Docker! https://youtu.be/NH5nBZESo2Y O MariaDB surge como um fork do MySQL quando a Oracle comprou a Sun - [Docker - de A a Z - 12 - Demo MongoDB no Docker](https://gago.io/blog/docker-az-12-demo-mongodb-no-docker/) - Pessoal, uma das demos mais pedidas, MongoDB no Docker. Nessa demo vou apresentar o setup do MongoDB com e sem autenticação. Ficou muito legal! https://youtu.be/wpz8zUZW3kk O MongoDB se destaca com um dos bancos NoSQL mais utilizados no mundo, em projetos das mais distintas naturezas. É um projeto robusto, eficiente, repleto de demonstrações, exemplos e tutoriais, - [Docker - de A a Z - 13 - Bridge Network](https://gago.io/blog/docker-az-13-bridge-network/) - Olá pessoal, nesse vídeo vou abordar as diferenças entre Default Bridge Network e redes User Defined Bridge Networks, as redes que geralmente criamos para nossos containers. As diferenças entre as redes bridge padrão e as que você cria é a capacidade de realizar descoberta de containers com base em seu nome. Isso significa que se você tem o container A - [Docker Images - Nginx & Google PageSpeed](https://gago.io/blog/docker-images-nginx-google-pagespeed/) - A internet como vemos hoje exige cada vez mais performance e cada vez melhor usabilidade. Nunca tivemos tanto apreço à experiência do usuário, assim produtos, ferramentas, serviços e frameworks são bem vindos para ajudar a entregar performance. Com o aumento nos recursos de interface, e a facilidade com que conseguimos hardware, chegamos em um momento em que a - [Microsoft Virtual Academy - Microservices](https://gago.io/blog/microsoft-virtual-academy-microservices/) - Uma boa dica para quem quer conhecer MicroServices sob o ponto de vista da Microsoft é o MVA - Introdução à Microsserviços (em inglês). O conteúdo foi lançado dia 09/Junho e conta com os seguintes tópicos: Introdução a Arquiteturas de Serviço Introdução a Containers Azure Compute Platform e Conjuntos de escalabilidade de Máquinas Virtuais O que - [Docker - de A a Z - 15 - RabbitMQ, ElasticSearch , LogStash e Kibana](https://gago.io/blog/docker-de-z-15-rabbitmq-logstash-elsticseach-e-kibana-com-docker-compose/) - Durante a série Docker de A a Z, esse foi um dos Stacks entregues para facilitar a compreensão de como docker pode nos ajudar a unir soluções complexas, colaborando para criar stacks com diversos projetos e produtos. Esse stack serviu para a apresentação, mas também virou projeto e hoje é mantido e atualizado, por mim - [Windows Server 2016 - Overview](https://gago.io/blog/windows-server-2016-overview/) - Desde que a Microsoft passou da era Steve Ballmer para a era Satya Nadella encontramos uma nova Microsoft. Muito mais flexível, muito mais competitiva, muito mais livre, sem rótulos e/ou bandeiras, mais madura e por fim, uma Microsoft definitivamente mais atraente ao olhar do mercado e da comunidade. Os novos rumos com o Windows 10 já movimentaram - [Docker - de A a Z - 16 - SQL Server for Linux](https://gago.io/blog/docker-de-az-16-sql-server-for-linux/) - Pessoal, aqui vai mais um vídeo da série, e dessa vez uma demo, super simples e super rápida sobre o SQL Server for Linux. Vale lembrar que esse SQL Server on Linux é compatível com os providers e ferramentas que conhecemos e usamos no da-a-dia em qualquer aplicação, sua limitação está nos designers do SQL Server Management - [.NET Core - Estratégias de Deploy - Parte 1](https://gago.io/blog/net-core-estrategias-de-deploy-1-de-2/) - Olá pessoal, já faz algum tempo que não escrevo sobre .NET. Tenho me dedicado aos vídeos sobre Docker, mas escolhi um tema muito divertido para falar: Novas estratégias de deploy com .NET Core. Quem vem acompanhando os novos rumos da Microsoft, deve estar compreendendo que estamos diante de uma magnífica e imensa mudança de paradigma, que trás consigo não apenas - [.NET Core - Estratégias de Deploy - Parte 2](https://gago.io/blog/net-core-estrategias-de-deploy-2-de-2/) - O post estava ficando grande demais então dividi em dois. O que era para ser um só, acabou virando 2 posts sobre .NET Core. O post anterior aborda o contexto necessário para que entenda quais são as estratégias de deploy. Nesse vamos efetivamente abordá-las. Estratégias de Deploy Agora que os principais aspectos novos estão minimamente esclarecidos, podemos falar - [Dev Week 2016 @ Canal .NET](https://gago.io/blog/dev-week-2016-canal-net/) - Pessoal, essa semana está rolando o Dev Week 2016: São 5 dias, 16 palestras, todas as noites! A de segunda-feira já passou, mas isso não é um problema, todo o material fica disponível no Canal .NET, lá no youtube. A propósito, eu fecho a agenda da quarta-feira com o tema Arquitetura X Infraestrutura: O que todo desenvolvedor - [WSO2 - Open Source SOA Suite](https://gago.io/blog/wso2-open-source-soa-suite/) - E você vai passando pelas empresas, vai ganhando experiência, acaba vendo problemas recorrentes e em algum momento pode passar o seguinte pensamento: Putz, esse problema aqui se resolveria de forma super simples com um API Manager, ou um ESB, e quem sabe essa infinidade de API's de consulta poderiam ser criadas com uma ferramenta. Hoje - [NGINX Automation](https://gago.io/blog/nginx-automation/) - Se você usa o NGINX em produção, como Reverse Proxy, já se perguntou se seria possível criar algum tipo de automação. Essa é uma demanda pois quanto mais apps passando por ele, mais endereços, mais configurações serão necessárias. Se você usa todo o potencial do NGINX, aí com toda certeza você ficará interessado na automação. - [NGINX Automation + WebMin](https://gago.io/blog/nginx-automation-webmin/) - No post NGINX Automation eu falei sobre como criar uma automação que lhe facilite na gestão do NGINX. Agora vou abordar, em forma de tutorial, como usar essa solução no webmin. O primeiro passo é configurar corretamente o script de automação, na medida que ele estiver corretamente configurado, você pode usá-lo no webmin. Já no webmin, - [Docker - Images vs Layers](https://gago.io/blog/docker-images-vs-layers/) - Sempre que fazemos um build de uma imagem docker, estamos criando novas layers a cada comando do dockerfile. A última layer de cada build é a layer que identifica aquela imagem, é sob ela que o Docker aplica a tag quando usamos o parâmetro -t {imagename:tagname}, para dar nomes semanticamente eficientes. Abaixo trago um vídeo - [Agora também estou no programa MTAC](https://gago.io/blog/agora-tambem-estou-no-programa-mtac/) - Pessoal, nota rápida! Hoje saiu a aprovação e fui um dos selecionados para o programa MTAC - Multi Platform Technical Audience Contributor. O programa visa o engajamento da comunidade técnica em ações para a comunidade técnica. Estou muito feliz de ter sido aceito, agradeço à indicação do Renato Groffe. [dt_quote type="blockquote" font_size="big" animation="none" background="plain"]O que isso significa? - [What's new for .NET Core and Visual Studio 2017](https://gago.io/blog/whats-new-net-core-visual-studio-2017/) - Para a maioria daqueles que estão aqui, o .NET Core representa um dos mais relevantes lançamentos da Microsoft nos últimos anos. Então nada mais justo que um post dedicado a endereçar esse conteúdo! https://www.youtube.com/watch?v=96v_VRZj4fo Quais foram suas impressões? - [Como a segment.com economizou US$ 1 milhão por ano em sua conta da AWS](https://gago.io/blog/como-segment-economizou-1-milhao-de-dolares-por-ano-de-aws/) - Veja como a Segment economizou US $ 1 milhão por ano em sua conta da AWS em três meses. Seus esforços de investigação são interessantes e detalhados, há muito para aprender com eles. Provavelmente não deveria ser uma surpresa que a AWS não facilite a descoberta de onde há oportunidades de economizar. Processo Analisar cada recurso em sua conta - [A anatomia de um chatbot](https://gago.io/blog/anatomia-de-um-chatbot/) - Vendo bots com uma visão mais profissional, pude estudar muito e principalmente: experimentar muito. Fiz diversos testes implementando chatbots com C# e Microsoft Bot Framework, sob o .NET Framework, mas também fiz bots em NodeJS, e alguns construídos direto em plataformas web. Testei inúmeras plataformas, implementei diversos fluxos de negócio e apresentei diversos exemplos para comitês, fiz - [Google Cloud Next - 2017](https://gago.io/blog/google-cloud-next-2017/) - Google Cloud Platform enviou na semana passada um email falando sobre o Google Cloud Next e há muita coisa interessante para falar. Um dos principais aspectos que devo abordar aqui estão centrados nas novas aquisições da google e novos produtos, features e free tier que encontramos no Google Cloud Platform. Ao pensarmos em cloud, é mais natural - [Microsoft Bot Framework no .NET Core - Alpha](https://gago.io/blog/microsoft-bot-framework-no-net-core-alpha/) - Ao começar esse post estava disposto apenas a apresentar novos packages do Microsoft Bot Framework no .NET Core, que endereçam o desenvolvimento de bots com .NET Core 1.1 e .NET Standard 1.4 e 1.6, já disponíveis em versão alpha no Nuget.org, no entanto como está no meu roadmap reconstruir, já pela 4ª vez, minha infraestrutura de bots, aproveitei - [SmtpClient dá lugar a MailKit e MimeKit](https://gago.io/blog/smtpclient-da-lugar-mailkit-e-mimekit/) - No InfoQ foi noticiada a mudança de estratégia em relação ao uso do SmtpClient que aparentemente está descontinuado. Em substituição a Microsoft recomenda os pacotes jstedfast/MailKit e jstedfast/MimeKit. Pela segunda vez, a Microsoft marcou oficialmente uma classe .NET como sendo substituída por uma biblioteca open source. A documentação para SmtpClient agora diz: "Obsolete(" SmtpClient seus tipos foram mal projetados, recomendamos - [Windows Subsystem for Linux & Docker](https://gago.io/blog/docker-on-windows-subsystem-linux/) - Ao longo de 2016 fiz uma série de vídeos sobre docker, da qual devo retomar nas próximas semanas. Nesse post vou abordar exclusivamente Docker e Windows Subsystem for Linux. Acho que vai ajudar a esclarecer! Docker no Windows Docker e Windows ainda gera uma série de dúvidas, sobre diversos aspectos, desde a utilização do Hyper-v, utilização - [NodeJS Everywhere](https://gago.io/blog/nodejs-everywhere/) - No Microsoft Build 2017 muita coisa legal rolou, fiz uma lista com o que considerei mais interessante, mas aqui vai um vídeo super interessante sobre as capilaridades do NodeJS, e onde e como ele está presente no nosso dia-a-dia. Então, vamos ao vídeo! https://www.youtube.com/watch?v=FqickVjXddM - [Contract Package - Uma excelente alternativa ao Service Reference](https://gago.io/blog/wcf-contract-package-vs-service-reference/) - Falar de WCF em meados de 2017 parece algo sem sentido, no entanto considero relevante tornar públicas soluções e alternativas que muitas vezes só apresentava dentro dos times por onde passei. São soluções, ideias, conceitos que ajudam no desenvolvimento e tornam o dia-a-dia de desenvolvimento mais fácil para quem está ciente dos conceitos ao redor da - [Uma PoC de Sucesso](https://gago.io/blog/uma-poc-de-sucesso/) - Esse post não tem o intuito de falar de boas práticas, de abordar padrões, técnicas mirabolantes, ou nada disso. É sobre fazer concessões para obter um resultado, levando em conta recursos disponíveis como know how, equipe e principalmente tempo. Parece familiar? Ok, mas também não é e nem passa perto de ser uma sugestão para - [Docker - de A a Z - 17 - Build and running WSO2 Identity Server](https://gago.io/blog/docker-az-17-build-image-of-wso2-identity-server/) - Um dos recursos mais comuns em aplicações corporativas é a gestão de identidade. Ou você implementa na aplicação, ou você utiliza um serviço externo como Auth0, Azure Active Directory ou outros. Quem está próximo das tecnologias Microsoft já ouviu falar do Identity Server (outro projeto), no entanto é importante conhecer outras soluções e a WSO2 possui uma: O WSO2 Identity Server, e é sobre - [Exception Handling](https://gago.io/blog/exception-handling/) - Pessoal, rolou hoje no Software em Contexto um bate papo sobre Exception Handling muito legal. Nesse papo abordamos exceptions quando lançar, quando não lançar, falamos diversas formas de tratar exceptions, apresentamos códigos e refletimos sobre o que é ou não uma exceção. Qual conclusão chegamos? Assiste aê, tire a sua conclusão e retorne com sua opinião. Live - [Progressive Web Apps - Coloque no seu roteiro de estudo](https://gago.io/blog/progressive-web-apps-coloque-no-seu-roteiro-de-estudo/) - Você já se viu tomando decisões simples a respeito de instalar ou não (novamente ou não) um determinado app no seu celular. Os que você menos usa, são os mais eletivos a serem ignorados quando você troca de dispositivo, ou mesmo quando precisa recuperar algum espaço na memória do aparelho. Esse é um comportamento comum, e - [(((((NodeJS + TypeScript + TSLint + Restify) + MongoDB) + Docker) + VSCode ) + Yeoman) = Uma experiência de desenvolvimento incrível!](https://gago.io/blog/nodejs-typescript-tslint-restify-mongodb-docker-vscode-yeoman-uma-experiencia-de-desenvolvimento-incrivel/) - Esse post foi movido para /blog/projetos/yeoman-generator-node-api-docker-1st-class-experience/ - [.NET Core 2.0 e .NET Standard 2.0 Hangout @ Canal.NET](https://gago.io/blog/net-core-2-0-e-net-standard-2-0-hangout/) - Pessoal, dia 7 de Julho vou participar novamente de um hangout no Canal.NET, desa vez o tema é .NET Core 2.0 e .NET Standard 2.0. O lançamento do .NET Core 2.0, do ASP.NET Core 2.0 e do .NET Standard 2.0 está previsto para os últimos 4 meses de 2017. Acompanhe este hangout para ficar por dentro das - [Docker - de A a Z - 18 - NodeJS API com MongoDB](https://gago.io/blog/docker-de-a-a-z-18-nodejs-api-com-mongodb/) - Nesse vídeo damos continuidade à série Docker de A a Z e vou abordar o desenvolvimento com NodeJS, TypeScript, Restify, TSLint, MongoDB e VSCode usando Docker para release e debug, além permitir rodar serviços adicionais como MongoDB entre outros. https://youtu.be/LK9ruCQdBz0 O projeto do gerador de código é melhor detalhado no post (((((NodeJS + TypeScript + TSLint - [docker-gallery/EnterpriseApplicationLog - v3.0](https://gago.io/blog/docker-gallery-enterprise-application-log-v3-0/) - Em outubro no post Docker - de A a Z - 15 - RabbitMQ, LogStash, ElasticSearch e Kibana com Docker Compose eu apresentei um modelo interessante de Log, com uma abordagem diferente. Ficou muito simples para trabalhar com o stack, no entanto a Elastic.co mudou muita coisa no meio do caminho e foi necessário readaptar o - [.NET Core - de 2.0.0-preview2 para 2.0.0 - Atualizando projetos e Dockerfiles](https://gago.io/blog/net-core-de-2-0-0-preview2-para-2-0-0-atualizando-projetos-e-dockerfiles/) - Vamos direto ao ponto: A intenção desse post é apresentar como migrar seus projetos do .NET Core 2.0-preview2 pra o .NET Core 2.0 RTM. Sim, esse é um tutorial, e visa apresentar o que é necessário para fazê-lo. O .NET Core 2 foi anunciado no dia 14 de agosto e para quem estava usando o 2.0-preview2 - [.NET Core - Configurações específicas por SO](https://gago.io/blog/net-core-configuracoes-especificas-por-so/) - Que o .NET Core roda no Windows e no Linux isso é mais que sabido. Mas você pode precisar de configurações específicas por tipo de SO. Paths necessários para executar alguma tarefa podem divergir, e esse é o caso do docker. O endereço da API do Docker Daemon é diferente no Windows e no Linux. No - [JWT no ASP.NET Core - Standalone](https://gago.io/blog/jwt-no-asp-net-core-standalone/) - Após o hangout que rolou nessa sexta estávamos discutindo JWT no ASP.NET Core (JSon Web Tokens) e ao apresentar um dos meus projetos cheguei a ficar envergonhado, pois eu havia dado uma certa volta para evitar a utilização de criptografia simétrica e acabei fazendo uma implementação de ISecurityTokenValidator o que é uma imensa volta para - [Escassez de documentação, entenda como as coisas funcionam](https://gago.io/blog/escassez-de-documentacao-como-entender-como-as-coisas-funcionam/) - Se você não é capaz de entender uma implementação lendo código, é bom começar. Mesmo que por hobby, ler código lhe fará entender melhor como as coisas funcionam, ou pelo menos lhe dar mais opções na hora de avaliar alguma implementação. Há inúmeros projetos Open Source bem documentados, no entanto quando se depara com algo - [Docker - de A a Z - 14 - ASP.NET Core from Scratch to Production with docker & jenkins (pt-BR)](https://gago.io/blog/docker-de-z-14-aspnet-core-from-scratch-to-production-with-docker-jenkins-pt-br/) - Apresento aqui um projeto ASP.NET Core, desde sua criação até sua chegada a produção, com jenkins. Começamos apresentando as opções de criação do projeto, depois habilitamos a integração com o Docker for Windows. Em seguida adicionamos mongodb ao projeto e começamos a desenhar o build de produção, ainda na máquina de desenvolvimento. Ao concluir o - [Consul - DNS - Visão Geral](https://gago.io/blog/consul-dns-visao-geral/) - Service Discovery é a capacidade que trata da descoberta de serviços em uma rede. É um elemento fundamental no dia-a-dia de quem trabalha com MicroServices, mas também pode ser usado por qualquer um que precise de algum dinamismo na descoberta de serviços. Além do Consul, que abordarei hoje, temos etcd, ZooKeeper. Mas escolhi falar um pouco sobre - [Windows-native Docker Engine - Nativo?](https://gago.io/blog/windows-native-docker-engine-nativo/) - O post é simples, rápido mas ajuda a entender o que significa esse tumulto a respeito do suporte nativo a Docker e Linux Containers no Windows 2016 Server. Complexidade do Docker Primeiro, é importante ressaltar que se fosse de fato possível rodar Linux Containers no Windows, sem virtualização, deveríamos ter um anúncio do tamanho do - [MongoDB - Importantes features pouco comentadas](https://gago.io/blog/mongodb-importantes-features-pouco-comentadas/) - O que é o MongoDB? um banco de dados NoSQL baseado em documentos e disparado um dos mais usados no mundo! Essa resposta está certa, embora incompleta. Há uma infinidade de recursos legais que deveriam ser levados em consideração na hora de explicar o projeto/produto. Nesse post, que tentarei fazê-lo bem curto, vou apontar diversos - [Redis - Importantes features pouco comentadas](https://gago.io/blog/redis-importantes-features-pouco-comentadas/) - O que é o REDIS? Um banco de dados NoSQL baseado em chave/valor e disparado um dos mais usados no mundo! Essa resposta está certa, embora incompleta. Há uma infinidade de recursos legais que deveriam ser levados em consideração na hora de explicar o projeto/produto. Nesse post, que tentarei fazê-lo bem curto, vou apontar diversos - [Docker - de A a Z - 19 - Youtube Downloader - o projeto](https://gago.io/blog/docker-az-19-youtube-downloader/) - Olá, esse é o vídeo de número 19 da série e vamos abordar um tema incomum: Pizza! Oops brincadeira! Youtube Downloader! A escolha desse projeto se dá pela necessidade de utilizar paralelismo para processar as requisições de download, tratar-se de um projeto não convencional, e precisar de cuidados ortogonais quanto ao design da solução em - [Docker - de A a Z - 19 - Youtube Downloader - Novidades #01](https://gago.io/blog/youtube-downloader-news-01/) - Pessoal, esse é o primeiro pacote com novidades sobre o projeto. Nosso diagrama de causa-efeito-ação chega a sua 5a versão com muitas novidades, incluindo:Adição do MongoDB, agora fazendo encoding de MP3 com FFMPEG, possibilitando o download de MP3 que já está em dev, além de stream parcial (que permite utilizar o controle de tempo da - [Predições para 2018](https://gago.io/blog/predicoes-2018/) - 2017 foi um ano fantástico, e 2018 será melhor! Vivemos em uma transformação constante do mercado, que ao mesmo tempo aprende, testa, erra e acerta muito. Nunca produzimos tanto e nunca fomos tão cobrados por estar a par das transformações e revoluções do nosso mercado. Hoje para virarmos dinossauros não é exigido muito esforço, basta - [Messaging Patterns - Pipelines Elásticos](https://gago.io/blog/pipelines-elasticos/) - Pipelines Elásticos quebram processamentos em pipes que por sua vez podem ser escalados individualmente. Atuando com grandes cargas de trabalho, oferece flexibilidade, melhor consumo de recursos e melhora no tempo de resposta com o aumento de paralelismo. A dinâmica peculiar aos processos de longa duração exige sempre algum tipo de reengenharia e algum nível de - [Spring.NET o Renascimento](https://gago.io/blog/spring-net-o-renascimento/) - Quem me acompanha, principalmente já viu ou participou de alguma solução minha na última década, sabe que o Spring.NET é meu fiel escudeiro. Há motivos de sobra para não me desapegar do projeto, no entanto recorrentemente testo novas alternativas. Entretanto, mais de uma década após os primeiros flertes, ainda é meu container favorito, e por - [Chakra on .NET Core with Docker](https://gago.io/blog/microsoft-chakra-netcore-docker/) - Scripting pode não ser uma demanda corriqueira, mas há momentos em que sua flexibilidade faz jus à sua utilização. Seja para deixar alguma pequena parte de sua aplicação mais flexível ou para poder suportar extensibilidade, há cenários bons para seu uso. Hoje vou abordar como usar o JSRT (Javascript Runtime) da Microsoft, motor do Microsoft - [RESTHeart - The Web API for MongoDB](https://gago.io/blog/restheart-web-api-for-mongodb/) - Esse post é super rápido já que perdi um bom tempo documentando o projeto no github. Então vamos lá! Trata-se de uma web api para o MongoDB. Eu já falei sobre isso no passado quando citei o que eu usei em Uma PoC de Sucesso. Agora que estamos às vésperas do Hangout sobre Docker Compose, aproveitei - [Docker Compose: simplificando o deployment de aplicações](https://gago.io/blog/2018-canal-dotnet-docker-compose/) - O Docker Compose é um serviço do próprio Docker voltado à criação e execução conjunta dos múltiplos containers de uma aplicação. Tal capacidade contribui para facilitar o deployment de um projeto em diferentes ambientes. Além disso, o Docker Compose é considerado uma alternativa extremamente útil em cenários que envolvam a implementação de uma arquitetura de microsserviços. Esta tecnologia foi abordada - [Cloud Native Computing Foundation](https://gago.io/blog/cloud-native-computing-foundation/) - A CNCF ou Cloud Native Computing Foundation é uma fundação que aglomera um conjunto significativo de projetos relevantes: Kubernetes, Prometheus, RKT, gRPC, Fluentd, ContainerD e outros, como CoreDNS, linkerd, envoy, notary fazem parte da fundação. A lista de membros conta com dezenas dos mais importantes nomes/marcas do momento nos segmentos de cloud, containers, telecomunicações, sistemas - [Message Broker & .Net Core - Introdução ao RabbitMQ](https://gago.io/blog/message-broker-net-core-introducao-ao-rabbitmq/) - Pessoal, no dia 15/Fev batemos um papo no Canal .NET com o título Message Broker & .Net Core - Introdução ao RabbitMQ. Nesse bate-papo apresentamos RabbitMQ como Message Broker, mas com foco no AMQP, que por sua vez desponta como principal standard, amplamente utilizado e implementado por diversos serviços, projetos e produtos, oferecendo maior flexibilidade - [Free e-book / Site Reliability Engineering](https://gago.io/blog/free-ebook-site-reliability-engineering/) - A SRE (Site Reliability Engineering) é uma disciplina que incorpora aspectos da engenharia de software e a aplica a problemas de operações de TI. Os principais objetivos são criar software altamente escaláveis e altamente confiáveis. De acordo com Ben Treynor, fundador da Equipe de Confiabilidade do Site do Google, o SRE é "o que acontece - [Oragon Architecture Is Dead](https://gago.io/blog/oragon-architecture-is-dead/) - Estamos no finalzinho de abril de 2018, vésperas do Microsoft Build e estou retomando meus trabalhos no Oragon Architecture. O projeto foi muita coisa, teve muitas ambições, mas agora é hora de revisitar todos os assuntos do projeto, passar por um momento de introspecção para dar um novo formato e rumo à solução. Portanto, a - [5 atitudes infalíveis para fracassar em um projeto de software](https://gago.io/blog/5-atitudes-infaliveis-para-fracassar-em-um-projeto-de-software/) - Você já deve ter lido 5 formas de obter sucesso em blablabla, mas com uma quantidade tão de grande de projetos fracassados, não fracassar é um bom começo. A propósito, existem milhares de atitudes infalíveis para se obter o fracasso, a pior é não fazer nada! Mas se você chegou até aqui, você não é - [Oragon.Spring](https://gago.io/blog/oragon-spring/) - Se você caiu de paraquedas aqui e não entendeu nada do assunto, calma eu vou explicar. O Spring.NET é um container IoC super robusto, mas não caiu na graça da comunidade. Uns reclamam de lentidão, outros reclamam do xml outros reclamam por ter sido inspirado no Spring do java. Eu gosto e defendo sua abordagem, - [API Load Testing com artillery](https://gago.io/blog/api-load-testing-com-artillery/) - Qual é o throughput médio de minha API? Será que essa nova implementação está consumindo mais ou menos recursos? Há algum memory leak? Bom, algumas informações só podem ser vistas quando você roda um tipo específico de testes, o teste de carga. Artillery te ajuda a executar cargas de trabalho intensivas em sua API, e isso pode - [Tenha um Cluster Docker Swarm por quase um almoço!](https://gago.io/blog/cheap-docker-swarm-on-scaleway/) - Se você estudou docker, já pensou em criar um cluster para fazer alguns testes. Se você desistiu por que achou caro, seus problemas acabaram! Por € 11,97 (R$ 53,51) por mês, você pode ter um cluster swarm modesto, composto por 4 nós, cada um com as seguintes specs: SO: [dt_tooltip title="Ubuntu Xenial"]Esse tutorial fala exclusivamente - [Novidades - Q3/2018 - Oragon Spring.NET, AOP, Open ALM](https://gago.io/blog/novidades-q3-2018/) - Bom, galera, muita coisa está acontecendo. Vamos às novidades de Q3/2018, vou precisar enumerá-las para deixar as coisas às claras. Estou tocando um projeto pequeno do time de delivery e isso me permite meter a mão em um assunto muito legal: Oragon Architcture. Sob a nova alcunha de Oragon, estou quebrando a parte que diz - [Modelagem de software como Pequenas peças de lego](https://gago.io/blog/pequenas-pecas-de-lego/) - Talvez você não concorde com essa visão, já vi isso acontecer antes. Mas algo que você nunca poderá negar é a experiência alheia. E nesse caso a minha experiência década-após-década com esse tipo de abordagem vem mostrando resultados fantásticos. SOLID não é só um conjunto de regras aleatórias de qualidade, elas proporcionam real reaproveitamento, e - [O breakeven dos projetos Docker - Sem docker é mais caro](https://gago.io/blog/o-breakeven-dos-projetos-docker/) - Docker já faz parte de muitos projetos que tenho assistido e participado, e está cada vez mais no dia-a-dia de mais gente. Uma vez superada a curva de aprendizado, você rapidamente se vê com super poderes, compondo suas aplicações com os mais variados serviços, e eliminando assim a necessidade de construção e setup extenso de - [Underwater - Construindo Libraries .NET Standard Profissionais](https://gago.io/blog/underwater-construindo-libraries-net-standard-profissionais/) - Então você quer lançar uma library no Nuget.Org? Nesse post vou abordar Github Organization (Org), a integração do Org inteiro com seu Jenkins. No Jenkins vou falar de testes unitários, build, deploy, de projetos .NET Core usando Jenkins Pipeline/Jenkinsfile e publicação dos seus pacotes no MyGet e Nuget. Vou abordar cobertura de código e análise - [Troque números mágicos por discriminadores de comportamento](https://gago.io/blog/discriminadores-de-comportamento/) - Você já deve ter ouvido algum requisito assim: Caso seja maior que 80%, deve executar A(), caso contrário B(), em ambos os casos precisa executar C(). Do meu lado estou aqui torcendo para você não ter seguido essa regra ao pé da letra. É sobre isso que falaremos hoje. Esse assunto é dos mais básicos - [[EBOOK] Designing Distributed Systems by Brendan Burns](https://gago.io/blog/designing-distributed-systems/) - Com o subtítulo "Rapidly develop reliable, distributed systems with the patterns and paradigms in this free e-book" o livro Designing Distributed Systems de autoria de Brendan Burns, Distinguished Engineer at Microsoft, works on Azure and is cofounder of the Kubernetes project. Apesenta uma visão geral sobre sistemas distribuídos sob a ótica de containers e orquestração de - [Diário de Bordo - Dezembro 2018](https://gago.io/blog/diario-de-bordo-2018-12/) - Olá pessoal, trago novidades interessantes que vou compartilhar com vocês. Oragon Saiu a versão 1.5.0 do Oragon.Contexts. Oragon.Contexts aglutina os aspectos AOP que dão suporte à Exception Handling e contextos NHibernate. As maiores adições acontecem nos contextos NHibernate que agora suportam: SQL Server MySQL Oracle DB2 PostgreSQL NOVO SQLite NOVO Além das adições, o projeto - [Qual o melhor momento para atualizar o perfil do LinkedIn?](https://gago.io/blog/qual-o-melhor-momento-para-atualizar-o-perfil-do-linkedin/) - Bom, esse não é um tema que você verá aqui com freqüência alguma. Mas em 2018 passei a usar o Linkedin para validar os perfis daqueles que se candidatam para participar do grupo de arquitetura de software (link na home do site). A intenção é simples, criar um grupo de profissionais que trabalham com .NET - [NHibernate no .NET Core - Visão Geral](https://gago.io/blog/devweek2018-nhibernate-no-net-core-visao-geral/) - No início de dezembro rolou o DevWeek do Canal .NET. onde falei sobre NHibernate no .NET Core - Uma visão geral. A intenção foi apresentar as principais features do projeto e mostrar quais os meus argumentos me levam a escolhê-lo como meu ORM padrão, ou mesmo primeira opção. Apresentação A apresentação está disponível no slideshare. - [Booking.com - Shipper - BlueGreen e Canary Deployents no Kubernetes](https://gago.io/blog/booking-shipper/) - A Booking.com publicou no dia 9/Dezembro/2018 o código fonte do Shipper. Shipper é um projeto de open source que oferece rollouts avançados e personalizados para um ou vários Clusters Kubernetes. Shipper usa gráficos Helm e conceitos nativos do Kubernetes para facilitar a configuração de blue/green ou canary deployments em seus aplicativos. A versão atual usa a versão padrão - [Natal Nerd 2018 - Workshop sobre Docker](https://gago.io/blog/docker-natal-nerd-2018/) - Pessoal, para quem não está sabendo vai rolar hoje o treinamento de Docker Online (Docker de Ponta a Ponta - do Desenvolvimento à Nuvem). O Renato Groffe irá ministrar e eu vou ajudar na organização e moderação. Docker de Ponta a Ponta - do Desenvolvimento à Nuvem Este workshop sobre Docker é uma ação conjunta - [Feedback 2018 - Roadmap 2019](https://gago.io/blog/feedback-2018-roadmap-2019/) - 2018 chega ao fim, e 2019 vem dando as caras. Mas afinal, o que eu posso dizer de 2018? 2018 foi incrível em diversos aspectos, foi um ano pessoalmente muito gratificante, e profissionalmente cheio de realizações e feitos importantes. Mas esse não é um momento para que eu fale das minhas conquistas, esse é um momento no - [Jornada DevHero 2019 - 1ª Edição](https://gago.io/blog/jornada-devhero-2019-1a-edicao/) - Uma minoria de devs nunca se questionaram a respeito das suas conquistas, dos seus objetivos e das suas realizações. Fato é que a maioria vive esse dilema, principalmente no início da carreira. Alguns tentam usar toda a sua malandragem para queimar etapas e o mercado sorrateiramente "lhe passa uma banda" anos depois, deixando-o no chão. - [Estratégia Técnica](https://gago.io/blog/estrategia-tecnica/) - Meio a tantos incentivos e pressões para gerarmos ciclos de entrega cada vez mais curtos, não passam despercebidas as oportunidades de entregar código de baixa qualidade para agradar um chefe, um gerente, um cliente, ou quem quer que esteja interessado na data da entrega, mas nenhum interesse no resultado da entrega. O tema de hoje - [Modelagem - Conectando os pontos](https://gago.io/blog/modelagem-conectando-os-pontos/) - Já faz muito tempo que gosto de modelar os elementos de uma arquitetura como componentes reaproveitáveis, em geral abstrações que me proporcionem a qualquer consumidor simplesmente usá-la, e para isso há algum esforço na modelagem para abstrair aspectos que são peculiares às suas demandas de negócio. Em conjunto com um bom Container de IoC/DI, é - [Riscos Técnicos: Tomar ou Declinar?](https://gago.io/blog/riscos-tecnicos-tomar-ou-declinar/) - Então você se deparou com a necessidade de tomar decisões e está inseguro? Será que alguém já fez aquilo que você está pensando? Será que sua decisão é uma gambiarra ou não? Bom, eu já me questionei sobre isso diversas vezes, e algumas decisões difíceis de fato já tomei com meus times ou sozinho em - [[Workshop] [Online] [Pago] - Docker + Bancos de dados #NaPrática](https://gago.io/blog/workshop-online-pago-docker-bancos-de-dados-na-pratica/) - Você deve ter ouvido falar que Docker não serve para executar seus bancos de dados de produção, eu concordo, mas talvez você não saiba que essa não é a única forma de usar docker para aumentar sua capacidade de entregar projetos com Bancos de Dados. Docker pode te ajudar a entregar ambientes locais, na máquina - [Código Paranormal - Um fenômeno conhecido](https://gago.io/blog/codigo-paranormal-um-fenomeno-conhecido/) - É mais comum do que você imagina, pessoas considerarem programação algo quase mediúnico, cheio de eventuais efeitos e manifestações paranormais. O que é uma abominação, visto que se de fato fosse algo de outro mundo, o Stack Overflow poderia ser considerado um site paranormal! Na prática se você não está vendo o que está acontecendo - [Oragon.Spring no ASP.NET Core - Get Started Tutorial (PT-BR)](https://gago.io/blog/oragon-spring-no-asp-net-core-get-started-tutorial-pt-br/) - Quem trabalhou de perto nos meus projetos sabe que tenho uma opinião bem radical a respeito da maioria dos frameworks de injeção de dependência. Aliás, compartilhando contigo minha opinião: Eles fazem injeção de dependência, mas pouco sobre IoC, e podem, diversas vezes ser encarados meramente como Service Locators, o que na minha opinião deixa pobre - [RabbitMQ & AMQP - #1 - Prefácio](https://gago.io/blog/rabbitmq-amqp-1-prefacio/) - Todas as semanas, algumas semanas mais, outras menos, me questionam sobre RabbitMQ. Sua utilidade, se vale a pena ou não aprender ou usar, ou até se não é mais adequado criar uma tabelinha no banco para controlar o que foi processado e o que não foi. Na prática a zona de conforto faz com que - [RabbitMQ & AMQP – #2 – Pra que Mensageria?](https://gago.io/blog/rabbitmq-amqp-2-pra-que-mensageria/) - Embora fosse a hora de falar do standard, acho que é preciso definir mensageria antes. Vamos aos principais pontos. Mensageria É pra mim? Talvez você já tenha se perguntado a respeito do sentido de usar uma solução de filas, mensageria, enfim um message broker como RabbitMQ. Será que faz algum sentido? Ou esse pessoal deve - [RabbitMQ & AMQP – #3 – Conceitos](https://gago.io/blog/rabbitmq-amqp-3-conceitos/) - Agora é o momento de falarmos brevemente sobre cada elemento do AMQP. Nesse post ainda estamos tratando com superficialidade, mas é importantíssimo passar por aqui para progredirmos nessa jornada. Standard vs Implementação Standard que trata de mensageria. No AMQP não temos termos como Exchanges, Queues e Binds, vemos termos como Transport, Source e Target, portanto - [Forçar IP's nos Containers Docker - Erro de Principiante](https://gago.io/blog/ddt-forcar-ips-nos-containers-docker/) - Se você tem um background de infra grande e está acostumado a entregar IP's para suas máquinas virtuais, é super natural que você considere essa a solução ideal para containers. Não é! Se sua resposta foi sim, você não poderia estar mais errado! Em um ambiente com containers, não queremos que os containers tenham IP's - [RabbitMQ & AMQP – #4 – Perguntas e Respostas](https://gago.io/blog/rabbitmq-amqp-4-qna/) - Vamos às principais perguntas e respostas sobre RabbitMQ e mensageria em geral. Fugirei das formalidades e serie mais raso nas argumentações. A tentativa é de deixar as respostas mais claras. Como eu pego uma mensagem na fila? Esse nem é uma dúvida, é um erro de principiante mesmo, natural, comum, típico, mas muito nocivo. - [RabbitMQ & AMQP – #5 – Management UI, Filas e Exchanges](https://gago.io/blog/rabbitmq-amqp-5-management-ui-filas-e-exchanges/) - Vamos começar? Que tal de fato olharmos para o RabbitMQ para nos acostumarmos com ele, e dar vida ao que falamos até agora? Subindo RabbitMQ com docker Há diversas formas de subir uma instância do RabbitMQ, uma delas é com Docker, e está aqui um exemplo com Docker Compose. A propósito, ela vem do tutorial - [RabbitMQ & AMQP – #6 – Show me the code](https://gago.io/blog/rabbitmq-amqp-6-show-me-the-code/) - No post anterior eu mostrei como as coisas acontecem na interface de gerenciamento do RabbitMQ. Agora é hora de mostrar as principais iterações com o RabbitMQ via código. Naturalmente, privilegiarei C# aqui, mas você pode usar as principais tecnologias para realizar as tarefas a seguir. O objetivo desse post é lhe ambientar, já que estamos - [Insights da Atlassian - The future of software development](https://gago.io/blog/2019-insights-da-atlassian-the-future-of-software-development/) - Saiu na Atlassian um report com alguns indicadores muito legais. Uma pesquisa feita com um público controlado de 500 profissionais apontou: 73% of software development teams spend 10% – 50% of their time on updates and upgrades to their self-hosted software. Who knew "business as usual" meant 20-40 hours/week? When teams aren't in maintenance mode, they're hunting for - [Containers no Ambiente de Desenvolvimento #MVPConf](https://gago.io/blog/mvpconf-2019-euvou/) - Pessoal acabou de sair a confirmação da minha palestra no MVPConf na trilha #DevOps. Você que ainda não comprou seu ingresso saiba, corre lá no MVPConf.com.br e compre seu ingresso! Todo MVP e principalmente os MVP's Community Leaders (que lideram comunidades técnicas) poderão suportar você e auxiliar caso você tenha alguma dificuldade ou tenha tido - [RabbitMQ & AMQP – #7 – Pipelines & Youtube Downloader](https://gago.io/blog/rabbitmq-amqp-7-pipelines-youtube-downloader/) - No finalzinho de 2017 eu falei de um projeto chamado youtube downloader, um projeto de exemplo, experimental, que emprega o uso de filas para fazer todo o processo de download e encoding de mídias, a partir do youtube. Mesmo tendo o propósito de exclusivamente falar de RabbitMQ em um pipeline de processamento, natural desse tipo - [Dev Desktop .NET Core: Windows ou Linux?](https://gago.io/blog/dev-desktop-dotnet-core-windows-ou-linux/) - Esse post fala sobre ambiente de desenvolvimento. O lugar onde você está escrevendo código, compilando, rodando, debugando, e testando o que está produzindo. Aqui vão recomendações para quem está começando. Essas recomendações são amparadas pela minha experiência acompanhando e ajudando/suportando a comunidade e grupos de discussão. TL;DR; Desenvolva no Windows (use o windows no host, - [RabbitMQ & AMQP – #8 – Redis, um Message Broker?](https://gago.io/blog/rabbitmq-amqp-8-redis/) - Então você já usa Redis no seu stack, e optou por usá-lo também para publicar mensagens de um lado para outro em sua aplicação. Talvez seu amigo tenha dito que "não precisa de RabbitMQ", ou que "é um canhão para matar uma formiga". A começar pela pergunta: Você busca resiliência nesse papel? Se a resposta - [IntelliCode no Visual Studio 2019](https://gago.io/blog/intellicode-no-visual-studio-2019/) - Em menos de 6 minutos nesse vídeo vemos, como habilitar, como treinar seu primeiro modelo, como compartilhar com seu time e como importar um modelo criado por outra pessoa. Além, de claro, mostrar a diferença e o impacto em produtividade no dia-a-dia! Não perca esse vídeo, é curtinho, mas incrível. Nesse vídeo você encontra: Como - [MVPConf 2019](https://gago.io/blog/mvpconf-2019/) - Apesar dos mais de 2000 participantes, sempre tem gente que não faz ideia do que está acontecendo. São os perdidos! Não tem problema, vou te contar o que rolou. Dias 12(sexta) e 13(sábado) de Abril rolou o MVPConf LATAM 2019, um evento organizado pelos Microsoft MVP's das Américas destinado à todos da comunidade técnica: Inclusive - [Abstrações - Tradeoffs e co-responsabilidade](https://gago.io/blog/abstracoes-tradeoffs-e-coresponsabilidade/) - Embora a prática seja linda, é hora de falarmos de algo abstrato: as próprias Abstrações. Primeiro preciso lembrar que essa é uma opinião pessoal, fruto das diversas experiências, criando ou consumindo abstrações das mais diversas em projetos de todos os tamanhos. O que é uma abstração? Uma abstração é em geral um conjunto de classes/componentes/serviços - [Don’t Do That – One size fits all](https://gago.io/blog/ddt-one-size-fits-all/) - Não! Uma solução ou decisão não serve para todos os casos! Com base nas discussões da semana e muita farpa trocada em grupos de discussão, vejo cada vez mais jovens buscando uma solução única para os problemas de arquitetura e design. Seja ao modelar um domínio, ao desenhar a arquitetura de um projetinho simples, ou - [MVP Conf 2019 - Avaliação da Audiência](https://gago.io/blog/mvp-conf-2019-avaliacao-da-audiencia/) - Pessoal, tenho uma notícia muito boa e gostaria de compartilhar, mas também de agradecer. Dia 12-13 / Abril rolou o MVPConf. Não está sabendo? Eu conto um pouquinho aqui 👇 Bom para minha felicidade saiu o resultado do evento e da minha palestra com nota e feedback e não poderia ser melhor. Feedbacks Agradeço os - [Feedback da Comunidade](https://gago.io/blog/feedback-da-comunidade/) - Nem todo mundo gosta de ouvir verdades, eu particularmente gosto. Por mais dura que seja, eu me sinto à vontade para pedir feedback e compartilhar com vocês o resultado. Feedback, pra que? Já faz 2 anos que rodo pelo menos 2 vezes por ano um feedback com a comunidade, eu posto nos grupos que administro, - [Adeus MobyLinux - WSL 2 Suportará Docker sem a necessidade de máquinas virtuais no Windows](https://gago.io/blog/adeus-mobylinux-wsl-2-suportara-docker-sem-a-necessidade-de-maquinas-virtuais-no-windows/) - São tantos títulos possíveis para esse post: Windows embarca Kernel Linux real (v4.19) WSL suporta Docker sem VM's São muitos títulos possíveis para um só anúncio, e por mim um dos mais esperados para esse ano (na verdade espero isso desde a primeira release do WSL). Até então Para quem não está familiarizado com a - [Diário de Bordo - Poltys - #1](https://gago.io/blog/diario-de-bordo-poltys-1/) - Talvez se lhe perguntarem como você anda de bicicleta ou como dirige possa lhe deixar constrangido(a). Pode até parecer uma pergunta quase impossível de se responder. Fato é que quanto mais habituados com a forma de lidar com alguma situação, menos pensamos sobre o processo que naturalmente realizamos. Uns chamam esse fenômeno de masterização, já - [Diário de Bordo - Poltys - #2](https://gago.io/blog/diario-de-bordo-poltys-2/) - Esse é um post complementar que endereça algumas dúvidas da galera que viu esse post e me chamaram para tirar suas dúvidas. Desde já vou chamar esse Controller/Scheduler/Manager de CSM, isso porque até então todos esses nomes são compatíveis com seus comportamentos (scheduler talvez não). Mas ficará como CSM até poder batizá-lo de forma decente. - [Envoy ganha novo amigo: Consul](https://gago.io/blog/envoy-consul/) - Essa é uma notícia que poderia passar despercebida, mas não, é muito relevante para nós. Se você pensa em aplicações cloud native, muito provavelmente terá contato com essas soluções com com similares nos próximos anos. Há possibilidades de estar planejando usar alguma delas sem sequer saber disso. Envoy Proxy, é um proxy muito robusto, alicerce - [gRPC no ASP.NET Core - Guia Introdutório](https://gago.io/blog/grpc-no-asp-net-core-guia-introdutorio/) - Há inúmeros bons argumentos para deixarmos de usar HTTP + JSON para boa parte de nossos serviços, gRPC é uma boa alternativa a esse modelo. Cross platform, Open Source e Universal, gRPC foi originalmente desenvolvido pelo google agora é parte da CNCF, Cloud Native Computer Foundation. Afinal pra que pensar em algo diferente de http? - [Global DevOps Bootcamp @ Le Wagon & Coders In Rio](https://gago.io/blog/global-devops-bootcamp-le-wagon-coders-in-rio/) - Vai rolar amanhã o Global DevOps Bootcamp na Le Wagon - Sábado, 15 de Junho 2019 - 10 às 17h REGISTRATION PAGE!! PESSOAL FAÇAM O REGISTRO NO EVENTBRITE DO EVENTO https://www.eventbrite.com/e/global-devops-bootcamp-le-wagon-coders-in-rio-tickets-61031261145 AGENDA DO EVENTO 09:00 - ABERTURA DO EVENTO - KEYNOTE RUN IT!!10:00 - GESTÃO ÁGIL COM AZURE DEVOPS - RAFAEL CRUZ11:00 - EMPOWERED DEVELOPMENT - [Oragon - Princípios de Design - Complexidade Reside na Arquitetura](https://gago.io/blog/como-eu-gerencio-complexidade/) - Alguns poucos lembram, pois alguns poucos estavam lá, mas quando comecei minha carreira profissional. Uma das coisas que me projetou rápido na Petrobras foi a capacidade de identificar padrões e automatizar via abstrações e componentes a escrita de código repetitivo e burocrático. Ainda no ASP Clássico, em 2002, já havia criado alguns componentes, seja com - [Eu tentei, tentei muito e falhei](https://gago.io/blog/eu-tentei-tentei-muito-e-falhei/) - Pessoal, vou contar um pouco da minha história, mais especificamente um subset, acho importante mostrar como algumas coisas se desenharam ao longo desses anos, e acredito que esteja perto de algo muito, muito grandioso. Esse post trata da minha história com Linux, com Docker e com todo o processo que culminou no que chamo hoje - [Oragon Design Guide - Agnostic Services](https://gago.io/blog/oragon-design-guide-agnostic-services/) - Seu serviço deve rodar sob qualquer host, ou sem host (como uma dependência de library), com qualquer tecnologia, e não deve precisar de modificações quando novas tecnologia são lançadas. Óbvio que estamos falando de algo a perseguir e não uma regra absoluta e/ou intransigente. História Embora a esmagadora maioria dos meus leitores talvez sequer tenha - [DevHero - Resumo](https://gago.io/blog/devhero-resumo/) - Pessoal, carreira dev nunca foi a menina dos olhos e nunca foi um tema que eu tivesse interesse de abordar, mas alguns pedidos me chamam a atenção então vou fazer um mega resumo do que do DevHero 2019. Para quem não faz ideia do que é o DevHero, o evento foi um evento de 1 - [Sobre Formula 1 e Microsserviços](https://gago.io/blog/sobre-formula-1-e-microservicos/) - A busca pelo Santo Graal, agora personificado nos microsserviços, causa uma euforia semelhante ao que víamos nas filas de pessoas dando voltas em quadras, em véspera de lançamento do iPhone. Hoje microsserviços virou uma febre, o que é intuitivo e natural, mas nem de longe é racional. Antes de falar de Microsserviços propriamente, preciso fazer - [Isso não é microsserviço!](https://gago.io/blog/isso-nao-e-microsservico/) - No post passado eu introduzi uma analogia sobre o automobilismo profissional, e como os avanços tecnológicos chegam ao nosso dia-a-dia como consumidores de automotivos, carros de passeio. Preambulo A ideia foi contrastar duas realidades: Early Adopters com dinheiro infinito e nós, mundanos com orçamentos apertados. Esse contraponto tenta trazer para a luz da discussão a - [Desenvolvimento de Software: Não deixe seu código-fonte contar mentiras para outros programadores](https://gago.io/blog/seu-codigo-mente/) - No telegram fazendo suporte à comunidade, acabei me deparando com um exemplo que me chamou muita a atenção. Um código que mentia. E vamos às minhas colocações sobre a questão: Sobre as abstrações Eu citei abstrações em Abstrações – Tradeoffs e co-responsabilidade, também falei sobre a absorção de complexidade pela arquitetura em Oragon – Princípios - [O fim do IIS](https://gago.io/blog/o-fim-do-iis/) - Talvez você esteja acostumado com o Internet Information Services, talvez conheça-o, assim como eu, desde o tempo do Personal Web Server. Entre amor e ódio o IIS ajudou muita gente, mas seus dias de apogeu estão chegando ao fim. TL;DR; IIS morreu ou vai morrer? Não! Mas você precisa abrir os olhos para outras possibilidades, - [Entendendo Docker](https://gago.io/blog/entendendo-docker/) - Afinal, o que é essa sopa de letrinhas? Docker, dockerd / daemon, Docker Toolbox, Docker for Windows, Docker Desktop, céus, é tanto nome! Windows Containers, Linux Containers, Windows Subsystem for Linux (WSL), WSL2 e o Kernel linux embarcado no windows, lightweight virtual machines, docker machine. Isso tudo pode parecer confuso ao primeiro olhar, mas vou - [Dev Desktop - Fresh Setup - Windows Features & Tools](https://gago.io/blog/dev-desktop-fresh-setup-windows-features-tools/) - As vezes me peguntam sobre meu setup. Bom, nessa última semana por conta das ferramentas de produção e gravação de vídeos acabei por optar por formatar meu desktop principal. Para quem, como eu, instala e testa muita coisa, realizar um fresh install e configurar o ambiente do zero é uma tarefa que eu fazia 2 - [Azure na Prática](https://gago.io/blog/azure-na-pratica/) - Bom, você não está aqui à toa, você me conhece. Muito provavelmente você também conhece essa galera que está montando um treinamento focado em Azure, o Azure na Prática. O Azure na Prática surgiu de necessidades observadas pelos palestrantes e Microsoft MVPs Ericson da Fonseca, Milton Camara Gomes e Renato Groffe ao longo de diversos - [Docker - de A a Z - 20 - Volume TMPFS - o poder do file system em memória](https://gago.io/blog/docker-de-a-z-20-tmpfs/) - Uma das coisas lindas do Linux é a separação volumes e file system. E você não faz ideia do que dá para fazer com file system em memória!!!? No windows quando escrevemos no C: sabemos que estamos escrevendo em um disco ou no máximo em um raid. Não importa qual path seja. No linux, não - [Consciência Crítica vs Comportamento de Manada](https://gago.io/blog/consciencia-critica/) - Tomar decisões implica, ou deveria implicar, em conhecimento prévio somado ao discernimento e ponderação a respeito dos impactos e reflexos de cada decisão. Se você não está ponderando sobre suas próprias decisões, alguém está fazendo por você. Direta ou indiretamente. Nos resta saber se estamos falando de influência ou manipulação. Assim com base em uma - [The Microservices Journey - S1E1](https://gago.io/blog/the-microservices-journey-s1e1/) - Ainda não estruturei como uma jornada, portanto o começo dessa jornada é um brainstorm. Como toda jornada onde sabemos o destino, mas temos um caminho desconhecido, vamos buscando do horizonte curto para o distante e do horizonte distante para o curto, aproximando e reduzindo a área de incompreensão. Eu já havia dedicado algum tempo a - [The Microservices Journey - S1E2](https://gago.io/blog/the-microservices-journey-s1e2/) - No post passado eu citei alguns elementos que precisam ser levados em conta, e não detalhei muita coisa. Só narrei causa e efeito. Hoje eu vou listar o material que já produzi que tem alguma ligação com o tema. Direta ou indiretamente, são elementos que vão ajudar a esclarecer como essa jornada, e mostrar como - [Proxy Reverso: Pra quê? Por quê?](https://gago.io/blog/proxy-reverso/) - Você já nos viu falando de Proxy Reverso, em geral usamos NGINX nessa tarefa, mas afinal? Pra quê isso? Por que "isso" é necessário? Para que fique claro, precisamos voltar no tempo e revisitar alguns assuntos. Vou dar uma pincelada em assuntos como DHCP, DNS, e alocação de portas. É fundamental para conseguirmos chegar no - [Oragon Spring 2.0](https://gago.io/blog/oragon-spring-2-0/) - Finalmente trago o Spring.NET em seu fork Oragon.Spring para o .NET Standard 2.1 e ASP.NET Core 3.0. Nos últimos anos tenho me dedicado a falar mais de arquitetura de solução do que arquitetura de software em si. Cada vez que peso os estudos em uma das duas direções, me afasto da outra. E assim vamos - [Post Resposta: POR QUE ADOTAR KAFKA PARA MENSAGERIA?](https://gago.io/blog/post-resposta-por-que-adotar-kafka-para-mensageria/) - Esse é um post resposta ao post POR QUE ADOTAR KAFKA PARA MENSAGERIA? do Elemar JR no site da Eximia, sua empresa. A resposta estava ficando longa demais, e resolvi transformar em post. Principalmente por se tratar de um conteúdo (RabbitMQ) que está no meu toolset, assim como Kafka está para entrar. Vou aproveitar para - [Open Application Model](https://gago.io/blog/open-application-model/) - 2019 tem sido um ano intenso, cheio de novidades e muitos novos padrões e standards. Kubernetes já se consolidou como plataforma de orquestração default há alguns anos e agora o movimento que vemos é na linha de criação de standards sobre o Kubernetes. Por outro lado, essa nova leva de padrões e especificações oferece um - [CNAB - Cloud Native Application Bundle](https://gago.io/blog/cnab-cloud-native-application-bundle/) - No post anterior eu falei sobre Open Application Model (OAM) o que me leva a falar de CNAB comparando-o com OAM. Sobre uma perspectiva de empacotamento e nascendo um pouco antes do OAM, a Docker, HashiCorp, e Bitnami criaram a CNAB - Cloud Native Application Bundle (que agora conta também com Pivotal, Intel e Datadog), - [OSBAPI - Open Service Broker API](https://gago.io/blog/open-service-broker-api/) - Em um mundo conectado, com cada vez mais soluções SaaS e PaaS. Há uma boa tendência e convergência em iniciativas que visam criar marketplaces de soluções. Compondo serviços dos mais variados estendendo as capacidades de nuvens públicas e privadas. Ao mesmo tempo, nunca estivemos tão conectados e nunca conectamos tantos serviços a tantos provedores de - [Dapr - Distributed Application Runtime - Primeiras Impressões](https://gago.io/blog/dapr-distributed-application-runtime-primeiras-impressoes/) - Nessa quarta-feira a Microsoft anunciou no Open Source Blog um projeto curioso chamado Dapr. Entre os principais pontos, o que me chama a atenção é que tem muita cara de servidor de aplicação/componente. E isso de certa forma me chama a atenção pelas possibilidades. Na versão alpha, versão atual, vemos alguns building blocks muito interessantes, - [Docker Definitivo - Janela de Inscrição Aberta!](https://gago.io/blog/docker-definitivo-turma-1-janela-inscricao-aberta/) - Na tarde desse domingo, dia 27/out alcançamos o limite de alunos.As inscrições para a primeira turma estão encerradas!Cadastre-se para receber notícias, link das lives e para participar do grupo do facebook. Em 2015 eu conduzi um projeto de refactoring daqueles complicados. Ao todo foram quase 10 meses com um time dedicado ao refactoring desse projeto. - [Microsoft Orleans 3.0](https://gago.io/blog/microsoft-orleans-3-0/) - Sobre esse lançamento vemos algumas novidades, mas eu não abordarei elas. Referenciarei alguns posts e apresentarei o projeto de demonstração que criei no github. Ainda é cedo para aprofundar no tema e lançar um texto profundo sobre Orleans. Além disso acabaria floodando o assunto pois já tem uma galera atuando em Actor Models. Actor models - [DevWeek 2019 | Canal .NET](https://gago.io/blog/devweek-2019-canal-net/) - O Canal .NET apresenta pelo 5° ano consecutivo o DevWeek. O evento começa hoje, segunda-feira e termina nessa quarta. Convidados São 4 convidados que falarão sobre Desenvolvimento Móvel, ASP.NET Core, Blazor e Prometheus! Canal .NET #completo Dessa vez, nosso time do Canal .NET está completo, sem desfalques! Uhuuuuu!!! Aqui fica meu convite, se inscreva pelo - [Comprometa-se a tomar a melhor decisão](https://gago.io/blog/comprometa-se-a-tomar-a-melhor-decisao/) - Todos os dias, ou quase todos, no suporte à comunidade vemos um estereótipo: Muita informação para absorver, muitos assuntos para estudar, pouco conhecimento e a busca pela "a solução ideal" em busca de um atalho para o sucesso. Essa ideia se pauta na esperança de que se fizer a escolha certa, a respeito de tecnologia, - [Rebranding](https://gago.io/blog/rebranding/) - Hora de acertar a casa, rever os nomes, marcas, páginas, perfis, grupos, tudo! Fim de ano chega e está na hora de rever o que está certo, o que está errado, hora de planejar o próximo ano. No meu caso também errei e também fiz uma lambança com marcas, projetos. Impulsionei alguns, negligenciei outros. Está - [Habilidades do futuro?](https://gago.io/blog/habilidades-futuro/) - De um lado as guerras dos frameworks e tecnologias, de outro as guerras de skills e culturas. Cultura DevOps, Agile. Então serverless ou containers? Fullstack é um pato que não corre bem, não nada bem, e não voa bem? Aproveitei essa noite para reler as pesquisas que eu faço anualmente, onde coleto opiniões, críticas e - [Angular + Docker no Heroku](https://gago.io/blog/angular-docker-no-heroku/) - Heroku é um daqueles serviços de hospedagem à frente do seu tempo. É pioneiro em desenhar um modelo com foco total no desenvolvedor. Uma Heroku é uma plataforma que te dá a possibilidade de hospedar aplicações a um preço muito competitivo. Exploramos o uso de Docker no heroku para mostrar como percorremos todo o caminho. - [Troubleshooting Comentado - Docker - ASP.NET Core - NGINX](https://gago.io/blog/troubleshooting-comentado-docker-asp-net-core-nginx/) - Já faz muito tempo que eu queria fazer esse formato. Documentar uma ação qualquer de troubleshooting na comunidade para poder transformar em conteúdo, fazendo pausas didáticas e interrupções para poder contextualizar no formato de quebra da 4ª parede. O Felipe Bossolani, que também é moderador de alguns grupos nossos no telegram, estava estudando NGINX, postou - [Docker Definitivo - Janela de Inscrição - JAN/2020](https://gago.io/blog/docker-definitivo-2020-01/) - Todo os dias tomamos decisões das mais variadas. Dormir mais 5 minutos, pegar o celular antes de dar bom dia, fazer café? Será que dá tempo? Tomar café na rua? Ah! Maldito café de máquina! Que caminho tomar? Carro, metro, trem ou ônibus? Prestar atenção na paisagem ou ler um livro? Escutar uma música, assistir - [Sobre 1° de Agosto e o Fim do Hangouts On Air - Como resolvemos com Docker, NGINX e RTMP no Azure Container Instances](https://gago.io/blog/o-fim-do-hangouts-on-air-nginx-rtmp-docker-azure-container-instances/) - 1° de agosto de 2019 foi um dia agitado. Fomos surpreendidos com a ausência do Google Hangouts On Air, mas logo reagimos às mudanças com uma solução baseada em Azure Container Instances, NGINX, Docker para fazer streaming a 60FPS em 1080p!!! Streaming gamer para live de código 😎!!! Confira o vídeo no Youtube ou no - [Do WCF para ASP.NET Core Web API com Docker no Linux 1/2](https://gago.io/blog/do-wcf-para-asp-net-core-web-api-com-docker-no-linux-1-2/) - [Vídeo] + [Código] + [Post] demonstrado uma migração de um projeto WCF para ASP.NET Core Web API. - [Do WCF para ASP.NET Core Web API com Docker no Linux 2/2](https://gago.io/blog/do-wcf-para-asp-net-core-web-api-com-docker-no-linux-2-2/) - [Vídeo] + [Código] + [Post] demonstrado uma migração de um projeto WCF para ASP.NET Core Web API. - [O dado é do usuário, não é seu, nem do sistema!](https://gago.io/blog/o-dado-e-do-usuario-nao-e-seu-nem-do-sistema/) - Parece um conceito banal, mas vou contar uma história atual, muito recente e vou contar o reflexo disso operacionalmente. É mais um daqueles casos em que a "boa vontade" é traduzida em processo e procedimentos equivocados que geram mais problemas do que soluções. O contexto Recentemente lancei um curso online. Resolvi abstrair toda a complexidade - [Docker Definitivo - Updates](https://gago.io/blog/docker-definitivo-updates/) - Esse aqui é um post para quem está interessado no curso e têm perguntado a respeito do treinamento. Docker Definitivo emerge do Docker de A a Z. Enquanto no Docker de A a Z eu uso para falar de coisas que gosto e estou vendo no dia-a-dia do uso de Docker, percebi que a galera - [.NET no Linux, vale a pena?](https://gago.io/blog/net-no-linux-vale-a-pena/) - A gente está a tanto tempo nessa batida, que nem nos questionamos mais, mas há muita gente que ainda tem dúvidas ou precisa de argumentos. Enquanto de um lado sequer cogitamos fazer deploy de aplicações .NET Core no Windows, por outro há quem ainda tenha medo de sair do windows. Uma carreira baseada no Windows - [Jornada DevHero - REPRISE](https://gago.io/blog/jornada-devhero-reprise/) - Em janeiro de 2019 produzi um evento chamado Jornada Dev Hero. A jornada do desenvolvedor, mostrando o caminho que eu e diversos amigos trilhamos para chegar onde chegamos. Eu achei o conteúdo tão rico e tão importante em termos de mensagem e capacidade de transformação que tinha reais planos de transformar em produto. Mas o - [Live Coding - Coravel Application Framework](https://gago.io/blog/live-coding-21-03-2230/) - Pessoal, vamos animar essa quarentena? Essa é a primeira vez que vamos fazer isso e vamos construir essa dinâmica juntos. Eu preciso da sua participação e sua ajuda para definir o roadmap, mas por hora vamos falar sobre tecnologia e ver no que dá! Não tem pauta definida, vamos ver no que vai dar! A - [A mecânica das decisões](https://gago.io/blog/a-mecanica-das-decisoes/) - Chegou a hora de avaliarmos o mercado, a situação na qual estamos e entender quais movimentos são possíveis. Entender friamente o que pode acontecer e quais são os movimentos possíveis nesse tabuleiro, nos permite antecipar ações para minimizar os efeitos de sermos atingidos de surpresa. Esse texto estava sendo escrito para dar suporte a uma - [Docker Definitivo - Gravação de Aula](https://gago.io/blog/docker-definitivo-gravacao-de-aula/) - Meus queridos, preciso gravar aulas para a turma do Docker Definitivo, estamos na reta final. Algumas delas serão gravadas online com transmissão no youtube, porém, não serão gravadas. Por conta da qualidade, e do modelo, será apenas uma transmissão sem chat. - [Tesseract OCR + ASP.NET Core](https://gago.io/blog/tesseract-aspnet-core/) - Esse projeto nasceu de uma iniciativa de combate a SPAM. Spammers no telegram usam novas táticas todos os dias e corrida de gato-e-rato nos faz usar tecnologia para sanar e bloquear as iniciativas desses spammers. Eu particularmente sou extremamente ativo no telegram, e lidero alguns vários grupos. Nesses grupos temos problemas com SPAM. São em - [Enfim Generally Available do WSL2 que chega ao Windows 10 na versão 2004](https://gago.io/blog/wsl2-ga/) - A maior expectativa que eu tinha nos últimos anos era esse lançamento: WSL2 em Generally Available. Ficou fantástico! Antes de falarmos de WSL2 precisamos falar de WSL e do WSL1 e sua história na Microsoft. Um pouco da história do WSL WSL1 chega no Microsoft Build 2016 para explodir a cabeça de todos. A foto - [Docker no WSL² - Walkthrough](https://gago.io/blog/docker-wsl2-walkthrough/) - No post anterior eu contei um pouco da história do projeto, mas agora é hora de olharmos para ele de fato. Que tal um passeio no parque com o WSL2? Esse texto era parte do post anterior Enfim Generally Available do WSL2 que chega ao Windows 10 na versão 2004. Resolvi quebrar para entregar aqui - [Comunidade Solidária Microsoft](https://gago.io/blog/comunidade-solidaria-microsoft/) - Tudo bem aí? Tá sabendo da Semana Nacional de Tecnologia? Nessa segunda-feira começou a Semana Nacional de Tecnologia. Sob o slogan "Usando conhecimento para transformar o mundo". Antes de mais nada, o que vem a ser esse evento? É gratuitoÉ onlineTransmitido via Microsoft TeamsMais de 30 horas de palestrasPromovido por mais de 11 comunidades As - [Dockerfiles: Entrypoint vs CMD?](https://gago.io/blog/entrypoint-vs-command/) - Você viu Entrypoint e CMD em algum lugar, seja em um dockerfile ou em um docker run, mas não faz a ideia do que seja? Vem comigo, é mais simples do que você imagina. Esse é o típico cenário em que a resposta é mais idiota do que você possa imaginar. É algo que não - [Azure Functions + Containers (Parte 1/2)](https://gago.io/blog/azure-functions-containers-1-2/) - Certa vez rolou uma discussão sobre Function as a Service (FaaS) e Containers questionando se um suplantaria o outro, ou se seríamos capazes de ignorar um em função do outro. Minha resposta curta e objetiva é: Não! Functions e Containers se complementam. Sempre que olharmos para Function as a Service, o Lock-in bate à sua - [Azure Functions + Containers (Parte 2/2)](https://gago.io/blog/azure-functions-containers-2-2/) - No post passado o foco estava nos Agnostic Services e no uso de containers. Agora é hora de olharmos outra questão mais braçal. Rodar Azure Functions 3 com Containers, uma tarefa que deveria ser trivial, mas não é. Nossa jornada começa com o tutorial Criar uma função no Linux usando um contêiner personalizado, onde no - [MVP | Developer Technologies | 2020-2021](https://gago.io/blog/mvp-developer-technologies-2020-2021/) - Em Outubro de 2018 eu recebi o primeiro prêmio Microsoft Most Valuable Professional! Como faltava pouco para a renovação (maio, com resultado em 1° de julho) minha renovação havia sido marcada para 2020. E agora estou aqui para contar um pouco sobre o programa e essa a renovação. A primeira coisa que precisa estar clara - [Ring Buffer - Antecipe, otimize e evite custos excessivos](https://gago.io/blog/ring-buffer-quase-um-uber/) - [et_pb_section admin_label=”section”] [et_pb_row admin_label=”row”] [et_pb_column type=”4_4″][et_pb_text admin_label=”Text”]Ring Buffer, também chamado de Circular Buffer é uma estrutura de dados muito poderosa. Seu nome já traz o spoiler e entrega o ouro, afinal não deixa de ser um buffer, só que trabalhando em formato de anel/circular. Se você não faz ideia do que seja, vem comigo nessa - [Enterprise Application Log + Access Log NGINX](https://gago.io/blog/enterprise-application-log-access-log-nginx/) - Embora esse tutorial trate detalhadamente de configurações do NGINX e LogStash, no lugar do NGINX você pode usar qualquer aplicação que produza log em textos e que seja possível manipular o formato dos logs. Passo 1 - Escrever o log em formato JSON Nesse passo vamos editar o arquivo de configuração para editar o formato - [Como perder mensagens com RabbitMQ](https://gago.io/blog/como-perder-mensagens-com-rabbitmq/) - É comum falarmos sobre receitas de sucesso e como resolver problemas, mas será que você está fazendo essas coisas, está perdendo mensagens e vai culpar o RabbitMQ por isso? Se liga nessas dicas, pois se você está perdendo mensagens com RabbitMQ, a culpa é totalmente sua! E vou mostrar como você pode perder mensagens para - [Register/Resolver e suas implicações para a modelagem e reaproveitamento](https://gago.io/blog/register-resolver-e-suas-implicacoes-para-a-modelagem-e-reaproveitamento/) - Você já notou que desde a chegada do .NET Core, consistentemente reaproveitamos menos nossas classes, principalmente de infraestrutura. Escrevemos mais classes e cada vez reaproveitamos menos nosso código? Bom se você não notou isso, então ao invés de 1 problema, temos 2! Quando você desenha uma classe ela está ali para prover funcionalidade para quem - [Be Welcome .NET 5](https://gago.io/blog/be-welcome-net-5/) - É incrível ver que mesmo diante do dilema de uma mudança abrupta de rotina, o calendário de Releases do .NET 5 se manteve intacto. Temos uma mudança incrível na plataforma e enfim chegou o .NET 5! O Release Candidate 2 do .NET 5 já é SUPORTADO EM PRODUÇÃO pela Microsoft. Daniel Roth, Principal Program Manager, - [Abstrações e seu ciclo evolutivo](https://gago.io/blog/abstracoes-ciclo-evolutivo/) - Uma das ideias que tenho amadurecido ao longo dos últimos anos está ligado às implementações de mecanismos arquiteturais e abstrações. Em Abstrações – Tradeoffs e co-responsabilidade eu falei sobre o que são abstrações boas, abstrações ruins, ponderei sobre quando criá-las e o que ela tem de ter para ser considerada eficiente e eficaz. Ao mesmo - [Abstrações duplicadas, quem nunca?](https://gago.io/blog/abstracoes-duplicadas-quem-nunca/) - Quando uma abstração está exercendo seu papel, seu código tende a cada vez parecer mais simples. Ao olhar desatento pode parecer até simplista. O problema é que essa simplicidade ao mesmo tempo que aumenta a produtividade, produz ansiedade e afeta quem depende de complexidade para programar. No post anterior, Abstrações e seu ciclo evolutivo, eu - [Service Mesh vs API Gateway vs Proxy Reverso](https://gago.io/blog/servicemesh-apigateway-reverseproxy/) - O ponto principal é abstrair a complexidade de lidar com endpoints, roteamento, composição e adicionar uma camada de observabilidade não para o processo, mas para tudo que entra e sai do processo. O service mesh entra como mediador do tráfego inbound e outbound, e isso permite conectar a outro service mesh de outro endpoint que - [Kubernetes sem Docker! É o fim do docker?](https://gago.io/blog/eol-dockershim/) - Ontem a comunidade parou diante da notícia de que o Kubernetes não daria mais suporte ao Docker como Container Runtime. Mas afinal, qual o impacto real dessa decisão na sua vida? Como isso influencia seu dia-a-dia? Para produzir alguma explicação minimamente consistente, precisamos entender quais recursos cada um tem, para depois podemos analisar o que - [Docker Definitivo - Última turma 2020](https://gago.io/blog/docker-definitivo-ultima-turma-2020/) - Quando eu idealizei o Docker Definitivo eu me propus a resolver, em escala, um problema que eu havia encontrado diversas vezes, em diversos times, em diversas restruturações: Só conhecer aplicação web e banco de dados. Como já dizia o ditado, para quem só sabe usar martelo, todo problema é um prego! O dilema das bolhas - [RabbitMQ - Guia de Estudo Gratuito 2021](https://gago.io/blog/rabbitmq-guia-estudo-gratuito-2021/) - RabbitMQ é simples e incrível. São apenas 4 componentes. Relativamente simples, mas cada um tem detalhes que escondem ouro. Se você conhece estruturas de filas, pode pensar que já sabe do que se trata. E é aí que mora o engano. O RabbitMQ não é simplesmente uma infraestrutura de filas, é um Message Broker. Essa - [O CÓDIGO - QUINTA - 14/JAN](https://gago.io/blog/o-codigo-2021-jan-14/) - 8:30 - Poltys - Decisões de Arquitetura de um Web Crawler. Hoje eu vou detalhar algumas decisões e seus argumentos para que eu não usasse simplesmente o selenium grid e como fiz um desenho para um cliente. Esse projeto está em andamento. 14:30 - hub.gago.io - Um hub de webhooks. Principais decisões e meus argumentos. - [Kubernetes em C#, seria possível?](https://gago.io/blog/kubernetes-em-c-seria-possivel/) - Você já pensou em criar seu próprio Kubernetes em C#? Hoje eu vou mostrar como você pode dar os primeiros passos nessa direção. Introdução O Docker, assim como o Containerd possuem API´s. Essas API´s permitem que você lide com containers da forma que bem entender. Você tanto pode criar containers, dropar containers, reiniciar containers e - [O CÓDIGO - SEXTA - 15/JAN](https://gago.io/blog/o-codigo-2021-jan-15/) - 8:30 - Dicionário Docker - Entendendo esses nomes novos Container, Imagem, Kubernetes, Docker, Kernel, Distribuição, DNS, Proxy Reverso, Container Registry... afinal, o que é isso? 14:00 - Containers vs PaaS Vamos comparar e analisar as possibilidades com Containers e com PaaS. 20:00 - Resumo da Semana Dessa vez em formato light, vamos para o instagram - [A Jornada DEV PRO](https://gago.io/blog/a-jornada-dev-pro-2102/) - Ao longo dos últimos anos eu vi muitos desenvolvedores batendo cabeça, cada do seu jeito. Não foram nem uma, nem duas, nem três vezes em que vi profissionais desdenhando de projetos com Redis, RabbitMQ, Kong, Keycloak, ELK Stack e diversas outras tecnologias, eles dizem: "É um canhão para matar uma formiga". Eu acredito que essa - [Publish com VS em produção: Impactos e Consequências](https://gago.io/blog/publish-visual-studio/) - A Microsoft sem sombra de dúvidas é uma empresa com um foco incrível no desenvolvedor. Diariamente recebemos algum tipo de update, feature, novo produto ou projeto para ajudar no nosso dia-a-dia. O Visual Studio é uma dessas IDE's incríveis, que fazem tudo por você. E se você já me viu criando um projeto com Docker - [.NET Microservices Architecture Guidance | 3 Ebooks Gratuitos](https://gago.io/blog/dotnet-microservices-architecture-guidance-3-ebooks-gratuitos/) - A abundância de conteúdo descentralizado e a velocidade com que o mercado avança gera desconforto em qualquer um. Encontrar guias que levem de um ponto A a um ponto B é o desavio de livros, blogs, produtores de conteúdo gratuito e pago. E eu me incluo nisso. Aqui apresento 3 ebooks que ajudam nessa jornada. - [MongoDump e MongoRestore com Docker](https://gago.io/blog/mongodump-mongorestore-docker/) - Recentemente produzi a Jornada Dev Pro e foi um evento que teve uma aplicação de suporte. Embora funcionalmente não tenha atendido minhas expectativas, o projeto atendeu bem à seu propósito. Agora é hora de migrar essa infra para outro servidor, e aí? Como lidar com backup/restore do mongodb? Audiência Esse post serve a todos que - [Hub de Eventos](https://gago.io/blog/hub-de-eventos/) - Na quinta-feira, dia 18/Março/2021 vamos falar do Hub de eventos que produzi para atender uma demanda particular. Eu não precisava de extrema performance e redundância, mas e se precisasse? Um assunto que eu estava abordando em Janeiro era o Hub, que agora vira conteúdo no Docker Definitivo. Mas também vira conteúdo aqui fora, claro que - [Habemus Kubernetes](https://gago.io/blog/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. Quando eu comecei o Docker - [Entrypoint vs CMD - v2 - Conteinerizando o Kubectl](https://gago.io/blog/entrypoint-cmd-v2-kubectl-aleluia/) - 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 - [Arquitetura de Software - 10 anos de Facebook](https://gago.io/blog/arquitetura-de-software-10-anos/) - No dia 1° de Abril de 2011 eu fundei um grupo de arquitetura que amanhã, no último dia 1° completou 10 anos. É sobre essa história que vou falar hoje. O ano era 2010, e eu já estava cansado dos mesmos assuntos, do bairrismo. Entrar na comunidade naquela época foi um desafio. Os assuntos estavam - [EasyNetQ em perspectiva](https://gago.io/blog/rabbitmq-easynetq-em-perspectiva/) - Abstrações são desenhadas para resolver problemas e abstrair um ou mais aspectos de uma implementação. Uma abstração pode entregar redução de complexidade, maior coesão, configuração facilitada, adaptação e até mesmo suprimir aquilo que não nos é relevante quando um novo padrão emerge do seu próprio uso. Hoje o debate é sobre o EasyNetQ, uma abstração - [Enterprise Application Log v4](https://gago.io/blog/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). Motivador Monitoramento sempre foi um desafio. E cenários on premise ou baseados em IaaS são mais desafiadores ainda. - [Tutorial: Trabalhando com Secret Files no Jenkins Pipeline](https://gago.io/blog/jenkins-pipeline-secret-files/) - 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? METAEsse post é direcionado para quem tem a demanda de trabalhar com secrets e arquivos de - [Entendendo RabbitMQ #1 - Reduzindo e/ou Eliminando Acoplamento](https://gago.io/blog/rabbitmq-1-desacoplamento/) - Ao esbarrar com uma nova tecnologia, você pode se perguntar: Será que é para mim? Com RabbitMQ não é diferente. Mas será que RabbitMQ é para o teu projeto? Nesse post eu vou mostrar minha visão sobre esse questionamento, mostrando os benefícios e quais são os dilemas a respeito do uso de RabbitMQ. Disclaimer - - [Você sabe se escolheu o data center certo?](https://gago.io/blog/escolha-datacenter-enterprise-application-log/) - Na jornada de criar aplicações globais, o arquiteto precisa prover dados que guiem as estratégias de crescimento de qualquer negócio. Esses dados interferem na forma como projetamos disponibilidade, cache, e recursos específicos para atender regiões específicas do globo. Mas e aí, você sabe de onde está vindo o acesso às suas aplicações e serviços? Você - [Entendendo RabbitMQ #2 – Caso de Estudo - Envio de Emails](https://gago.io/blog/entendendo-rabbitmq-2-caso-email/) - Essa segunda série de posts sobre RabbitMQ visa mostrar como podemos usar RabbitMQ em cenários que não demandam escala. É para explodir a cabeça de quem diz que RabbitMQ é um canhão para matar uma formiga. Na série anterior eu abordei em mais de 11 posts sobre RabbitMQ com foco nos mais variados campos de - [SQL Server 2017 e 2019 +Automações | Update JUN/2021](https://gago.io/blog/sqlserver-mssql-2017-2019-release-jun-2021/) - Desde julho de 2018 quando produzi a primeira versão dessa imagem, muita coisa aconteceu. Eu imaginava que em alguns meses ou no máximo em um ano, esse trabalho pudesse se tornar desnecessário. Por isso hoje estou lançando um update nessa imagem, trazendo SQL Server 2017 e 2019. A imagem oficial da Microsoft traz consigo o - [MVP | Developer Technologies | 2021-2022](https://gago.io/blog/mvp-developer-technologies-2021-2022/) - A terceira nomeação chegou!!!! É sempre um momento de muita gratidão. É sempre momento de olhar para o que construímos nesse último ano. No ano passado falei como foi minha primeira renovação. Agora começamos um novo ciclo, e quero compartilhar algumas coisas com você. Uma bandeira clara O primeiro passo é compartilhar minhas bandeiras e - [RabbitMQ para Aplicações .NET - a MasterClass virou Curso](https://gago.io/blog/2021-07-01-rabbitmq-curso/) - Em 2013 eu tinha o desafio de processar milhões de músicas. Eu não tinha uma restrição de tempo, poderia levar um dia ou uma semana. Mas eu precisava assegurar que os 4 consumidores planejados, não concorressem processando os mesmos álbuns. Também precisava assegurar que se o processamento fosse interrompido, eu pudesse retomar de onde parei. - [Kafka vs RabbitMQ](https://gago.io/blog/kafka-vs-rabbitmq/) - Vamos direto ao ponto: São coisas diferentes, se você está comparando ambos ou está querendo decidir entre eles, você não entendeu algum deles ou não entendeu nenhum dos dois. Mentiras ditas sobre RabbitMQ Ao longo dos últimos anos eu ouvi barbaridades, das coisas mais descabidas possíveis e imagináveis. Nessa parte eu quero trabalhar essa desinformação - [Streams no RabbitMQ](https://gago.io/blog/streams-no-rabbitmq/) - Uma novidade que vai deixar aqueles que ficavam comparando RabbitMQ e Kafka mais perdidos ainda. No dia 9 de julho saiu um o RabbitMQ 3.9.0 RC que conta com suporte a Streams. A comparação direta era descabida até então: Enquanto o Kafka trabalha com streams o RabbitMQ lida com filas. Alguns comportamentos fundamentais nunca foram - [RabbitMQ é Resiliente? [video]](https://gago.io/blog/rabbitmq-e-resiliente/) - [et_pb_section fb_built=”1″ _builder_version=”4.9.10″ _module_preset=”default” hover_enabled=”0″ sticky_enabled=”0″ background_color=”#000000″][et_pb_row _builder_version=”4.9.10″ _module_preset=”default”][et_pb_column type=”4_4″ _builder_version=”4.9.10″ _module_preset=”default”][et_pb_text _builder_version=”4.9.10″ _module_preset=”default” text_font_size=”18px” hover_enabled=”0″ text_text_color=”#FFFFFF” sticky_enabled=”0″] Será que o RabbitMQ de fato é seguro? O que acontece quando ele cai? O que acontece se minha aplicação cai? Será que o RabbitMQ persiste os dados no disco? Ou o RabbitMQ trabalha somente com dados - [RabbitMQ e Kubernetes | Rivais ou Aliados?](https://gago.io/blog/rabbitmq-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? Entendendo o papel de cada um RabbitMQ RabbitMQ é um message broker. O papel dele é receber uma mensagem, armazená-la de forma segura, para que imediatamente ou - [Docker FAQ by gaGO.io](https://gago.io/blog/docker-faq-by-gago-io/) - Se você está dando seus primeiros passos com Docker ou quer começar, esse é um post de "boas vindas". Eu conheci docker em 2015, comecei a estudar de fato em dezembro desse mesmo ano. Logo em janeiro de 2016 comecei uma série de conteúdos sobre Docker. Principalmente destinado à comunidade .NET. Docker aqui era um - [EDA - Event Driven Architecture: Não confunda eventos com comandos](https://gago.io/blog/mensageria-event-driven-architecture-eventos-comandos/) - A diferenciação entre eventos e comandos foi um tema discutido dentro do grupo de arquitetura do Docker Definitivo, e como um tema que gera confusão e ceticismo em alguns aspectos, é hora da gente sair da discussão sobre a parte visível desse iceberg e aprofundarmos na execução e nos cuidados a respeito do tamanho de - [Mensageria já existia quando Jesus nasceu...](https://gago.io/blog/mensageria-jesus/) - Até hoje eu consigo me surpreender com quão "novo" é o conceito de filas e troca de mensagens assíncronas para programadores. Hoje eu vou mostrar como esse conceito já está presente na nossa sociedade desde antes do nascimento de Jesus Cristo e você não percebeu ainda. Mensagens Assíncronas Na nossa sociedade moderna, mensagens assíncronas acontecem - [Certificado, TLS, SSL, como funciona?](https://gago.io/blog/certificado-tls-ssl/) - Você já deve ter ouvido em algum lugar que precisa colocar um certificado, ou habilitar o SSL em algum lugar, certo? A intenção é tornar esse assunto menos abstrato com a intenção de trazer clareza sobre como as coisas funcionam. Você já dever ter vivenciado, como protagonista ou mero espectador de cenários onde tudo parou - [Docker Desktop pago? Agora é o fim! Só pode! Será mesmo?](https://gago.io/blog/docker-desktop-pago/) - Toda notícia ao redor da Docker Inc gera um transtorno absurdo. A equipe de comunicação e marketing está de parabéns! Com uma gestão imagem que beira o nulo. Na vez passada o não suporte ao dockershim, pela equipe do Kubernetes, respingou sobre a Docker como se o Kubernetes perdesse suporte à containers, ou como se - [DESCONTINUADO | 10 domínios para você usar à vontade... só no localhost](https://gago.io/blog/dominios-localhost-127-0-0-1/) - Se você quer validar um proxy reverso, hospedar diversas aplicações no IIS para testar, enfim, estou compartilhando com vocês 10 domínios que apontam para 127.0.0.1. NOTA Esses endereços foram descontinuados, por favor utilize o nip.io https://nip.io/ A ideia original Respectivamente: localhost1.gago.iolocalhost2.gago.io localhost3.gago.io localhost4.gago.io localhost5.gago.io localhost6.gago.io localhost7.gago.io localhost8.gago.io localhost9.gago.io localhost10.gago.io Ao realizar uma requisição para localhost6.gago.io, - [RabbitMQ Streams com TypeScript e NodeJS](https://gago.io/blog/rabbitmq-streams-typescript-nodejs/) - Em Julho o RabbitMQ ganhou suporte a Streams. De um lado aproxima o RabbitMQ do Kafka já que possui a mesma estrutura de dados, mas por outra ótica se isola completamente sendo provavelmente o único produto da categoria com suporte a ambos. Mas você sabia que a diferença entre Streams e Queues são enormes? Ao - [Porque Injeção de Dependência importa?](https://gago.io/blog/porque-injecao-de-dependencia-e-importante/) - Algumas coisas são feitas no automático, e se você não entendeu porque o ASP .NET usa Injeção de Dependência by default, você deveria ler esse post. O que vamos entender hoje é porque Injeção de Dependência é importante, e as implicações em não usá-la. Engraçado que esse assunto deveria ser óbvio para os mais velhos - [Resiliência: Polly vs RabbitMQ](https://gago.io/blog/resiliencia-polly-vs-rabbitmq/) - A intenção desse post é poder trazer de forma consistente uma visão que ajude a trazer clareza, Bora falar de resiliência de forma séria. - [17 ações que você pode fazer hoje, para fracassar seu projeto amanhã](https://gago.io/blog/17-acoes-fail/) - Hoje vamos de dicas para o caos e a destruição. É a atitude pessimista que dá emprego para mais gente no mercado, produz mais trabalho, assim produzimos um ciclo vicioso de projetos ruins, recuperações de projetos, refatorações e posteriormente reconstruções dos mesmos projetos! Essas dicas vão ajudar você empurrar qualquer projeto ladeira à baixo! 1) - [O que aprendi acompanhando projetos sem arquitetos](https://gago.io/blog/projetos-sem-arquitetos/) - Esse é um relato dos meus 20 anos no mercado. Por sorte e até ironia do destino, eu vi o papel do arquiteto desde o dia 1 de minha jornada de trabalho. Isso me possibilitou entender que arquitetos e desenvolvedor possuem interesses diferentes. Aqui vou mostrar o que esses anos vendo e ajudando projetos me - [Messaging Patterns: RPC - Remote Procedure Call](https://gago.io/blog/rabbitmq-messaging-patterns-rpc/) - RPC pode parecer sofisticado demais, mas que tal Request/Response? Agora "SOA" familiar? Nem só de total assincronismo vive o mundo da mensageria, há momentos em que precisamos de uma resposta. RPC é a forma mais prática de adotar mensageria, mas é preciso entender as consequências dessa abordagem. Revisão 2 O que vou mostrar aqui é - [RPC sob AMQP seduz enquanto mata... sua implantação de mensageria](https://gago.io/blog/rabbitmq-rpc-cantodasereia/) - Se você viu meu último post e se animou por acreditar que usar RPC sob AMQP seja uma ideia incrível, calma que lá vem um balde de água fria! Com toda certeza eu não vou falar bem da abordagem! E se você resolveu que não vai ler, e ainda vai adotar RPC sob AMQP assim - [NHibernate em 2022 - Será que faz sentido?](https://gago.io/blog/nhibernate-2022/) - Se você já me viu falar de persistência, você talvez já saiba do que eu estou falando, mas talvez não entenda os argumentos. A história do NHibernate NHibernate é um full featured ORM que nasceu em 2005 como um port do Hibernate do Java aqui na plataforma .NET. O Hibernate do Java nasceu em 2001, - [Docker Definitivo - Inscrições dias 11 e 12 de Novembro](https://gago.io/blog/docker-definitivo-inscricoes-dias-11-e-12-de-novembro/) - Após um longo inverno, teremos mais uma janela de inscrição para o Docker Definitivo! Esse é o momento em que você poderá se inscrever para fazer parte da nossa tribo! Um dia eu disse que eu acreditava que Docker mudaria a forma como enxergamos a hospedagem de aplicações. Um dia sonhei que talvez pudéssemos experimentar - [Enterprise Application Log - A origem das decisões](https://gago.io/blog/enterprise-application-log-a-origem-das-decisoes/) - Inúmeras vezes eu apresento o Enterprise Application Log e instantaneamente aparece alguém tentando "defender" o Application Insights, como se de alguma forma eu estivesse cometendo uma heresia ao propor qualquer outra coisa. O mais curioso é que essa comparação é superficial e infundada. Hoje vamos entender a estratégia por trás do Enterprise Application Log, vamos - [Overengineering, BDUF, Complexidade Acidental? Por que estamos usando tantas ferramentas, tecnologias etc?](https://gago.io/blog/overengineering-bduf-complexidade-acidental-por-que-estamos-usando-tantas-ferramentas-tecnologias-etc/) - Se você está nesse planeta ativo em alguma comunidade deve ter percebido que todo dia surge uma nova solução que dizem que devemos usar. Docker, Kubernetes, Redis, Jaeger, Helm, RabbitMQ, Kafka, ELK, Kong, NGINX, Traefik, Keycloak, Jenkins, SonarQube... onde isso vai parar? Como deixamos chegar nisso? Isso é para vender cloud? Para vender curso? É - [Processamento Síncrono vs Assíncrono e Black Friday - Case Pan, Kabum e Pichau 2021](https://gago.io/blog/saga-blackfriday/) - Essa noite aconteceu uma coisa muito chata. Em plena Black Friday, eu saí frustrado por 2 problemas de arquitetura encadeados. De um lado um banco digital que fica offline todo dia durante a madrugada e pior, inclusive na Black Friday. Do outro, um e-commerce com o fluxo de pagamento síncrono, que perdeu uma venda de - [Além das 3 camadas | Iniciando os trabalhos](https://gago.io/blog/alem-das-3-camadas/) - Se um dia você se questionou sobre o que deveria estudar sobre projetos que vão além de uma Web App, uma API e um Banco de dados aqui vão minhas dicas. Eu separei 3 tecnologias que são matadoras porque ajudam projetos de todos os tamanhos. Dê uma olhada e me diga o que você achou! - [Além das 3 camadas | Ferramenta: Redis](https://gago.io/blog/alem-das-3-camadas-redis/) - Nessa série de posts estamos furando a bolha, saindo do desenho básico de 3 camadas, indo além. Hora vamos abordar práticas, hora vamos abordar ferramentas. Hoje vamos falar de uma ferramenta, o Redis. Ele pode ser seu aliado na hora de hospedar dados pré-processados. Disclaimer sobre a persistência do Redis Leia a página Redis Persistence. - [Além das 3 camadas | Prática: Reduzindo pressão sob a aplicação e banco](https://gago.io/blog/alem-das-3-camadas-reduzindo-pressao/) - Nessa série de posts estamos furando a bolha, saindo do desenho básico de 3 camadas, indo além. Hora vamos abordar práticas, hora vamos abordar ferramentas. Hoje vamos falar de uma prática: Reduzir a pressão sobre aplicação e banco de dados. Essa é uma prática super comum, mas negligenciada principalmente no período em que você está - [Além das 3 camadas | Componente: CDN e Cache](https://gago.io/blog/alem-das-3-camadas-cdn/) - Já falamos de práticas e tecnologias, agora vamos falar de um componente o CDN. Ele é fundamental para a internet como a conhecemos hoje. Da netflix que você assiste, ao gaGO.io, você vai encontrar CDN para reduzir a pressão sob as aplicações, e para reduzir a latência entre o conteúdo e você, melhorando sua experiência. - [Event Driven Or Not? Quando usar Event Driven e quando usar só usar mensageria](https://gago.io/blog/event-driven-or-not/) - Sempre que somos tocados por algum tipo de desenho ou arquitetura que demonstra significativo ganho em um determinado cenário, tendemos a tentar reaproveitar esse mesmo desenho mais pela memória do sucesso passado, do que pela necessidade efetivamente. Aqui está uma casca de banana, e é sobre isso que vamos discutir hoje. A proposta do EDA - [Cloud Native .NET - Um overview sobre as mudanças](https://gago.io/blog/docker-definitivo-cloud-native-net/) - É com muita felicidade e um frio na barriga que anuncio as mudanças para 2022 aqui no gaGO.io. A principal mudança por hora é o rebranding do Docker Definitivo que passa a se chamar Cloud Native .NET é só uma mudança no nome, mas significa muito no que ele transmite. Desde 2019 até agora construímos - [RabbitMQ | Eficiência | Como jogar dinheiro fora, case da Digital Ocean](https://gago.io/blog/rabbitmq-eficiencia-como-jogar-dinheiro-fora-digital-ocean/) - A Digital Ocean é um Cloud Provider famoso e muito usado no mundo todo, mas nem por isso deixaram de cometer o amadorismo de usar bancos de dados como filas. E pior, para atender um throughput pífio! Conclusão: Mesmo sendo owners de infraestrutura, ou seja, com dinheiro infinito para infra, sentiram na pele a dor - [RabbitMQ, .NET, OpenTelemetry, Distributed Tracing, Jaeger, Prometheus e Grafana](https://gago.io/blog/rabbitmq-professional-consumer-telemetry/) - Parece sopa de letrinhas aleatórias né? Mas isso fez algum sentido para você, e achou legal, deixa eu te contar o que fizemos aqui do lado de dentro. Uma das demandas que tenho no curso de RabbitMQ para Aplicações .NET, é trazer conforto e clareza sobre o desenvolvimento de fluxos assíncronos com mensageria. É primordial - [Além das 3 camadas | Containers](https://gago.io/blog/alem-das-3-camadas-containers/) - Docker está para o desenvolvimento de software como o IPOD esteve para a indústria da música. Não inventou a música portátil, mas revolucionou a experiência dos usuários. Se você trabalha com algum backend, java, .NET, node, python, ruby... e docker não está no teu radar, meu amigo... você tá ferrado! Se você nunca ouviu falar - [Os 6 níveis de maturidade no uso de Containers](https://gago.io/blog/docker-6-niveis-de-maturidade/) - Do usuário eventual ao heavy user, Docker consegue entregar diversas experiências de acordo com seu nível de maturidade e conhecimento. Se comparado com outras tecnologias, Docker e Containers em geral são assuntos pequenos, para poucas semanas de estudo. Mas embora a extensão do conhecimento não seja tão grande, a abrangência do seu uso beira o - [Event Driven Architecture - Lançamento de Módulo](https://gago.io/blog/rabbitmq-event-driven-architecture-modulo-novo/) - Enfim um dos mais esperados conteúdos do curso de RabbitMQ está no ar. Event Driven Architecture. Promessa desde 2021, o módulo de EDA Concept chega com novidades falando sobre EDA e desde os motivadores que conduziram as arquiteturas até chegar nesse estágio de desacoplamento. Event Driven Architecture pode ser encarado por diversas perspectivas. O nome - [Bloqueio do Telegram - SITREP 01 - Situação e Plano de ação](https://gago.io/blog/bloqueio-telegram-sitrep-01/) - O bloqueio do telegram está causando histeria na comunidade técnica e em grupos privados. Aqui vou abordar 2 temas. Comunidades técnicas e Grupos de Alunos. Contexto Decisão do supremo demanda bloqueio do Telegram no Brasil. Como é realizado o bloqueio? Quando um país bloqueia um serviço de terceiros, ele o faz enviando os endereços e/ou - [Bloqueio do Telegram - SITREP 02 - Quem vai pagar essa conta é você!](https://gago.io/blog/bloqueio-telegram-sitrep-02/) - Hoje somos dezenas de milhares de profissionais de tecnologia amontoados em grupos do telegram. Nós nos ajudamos e fazemos da vida do desenvolvedor, devops, infra mais fácil, na medida que ele conta com suporte da própria comunidade. Cada comunidade técnica é composta por um grupo de pessoas aleatórias e malucas que não tem mais nada - [Porque as empresas vão continuar buscando seniors ao invés de júniores?](https://gago.io/blog/formar-jr-vs-cooptar-sr/) - O apagão na TI é um fenômeno real, mas um fenômeno bem estranho do nosso mercado é a distância entre o JR e o estagiário, ou seja o profissional possível, e o profissional desejável. É sobre esses problemas que vamos discutir hoje. De um lado jovens querendo um emprego na TI, a nova mina e - [Cloud Native .NET - Janela de inscrição MAIO/2022](https://gago.io/blog/cloud-native-net-2022-maio/) - O que é a arquitetura? Eu defino como estratégias, táticas e elementos que definem um software. E quando jogo uma definição tão abrangente assim estou dizendo que:A escolha do banco de dados, é arquitetura.A escolha da forma como seu código acessa esse banco de dados, é arquitetura.A forma como você evita que esse banco seja - [Cloud Native | 1 - Definindo Cloud Native](https://gago.io/blog/cloud-native-1-definindo-cloud-native/) - Ao longo dos últimos anos Cloud Native tem estado em evidência. Há a oportunidade de retrocesso? É hype? Sempre teremos quem defenda que tudo é hype! Por quê com Cloud Native seria diferente? Na real, essas pessoas em geral adiam por anos o estudo por julgaram que algo é hype, até não conseguirem mais se - [RabbitMQ Operators | Entendendo Kubernetes Operators](https://gago.io/blog/rabbitmq-operators-1-entendendo-kubernetes-operators/) - Embora não seja comum ver conteúdo sobre o assunto, Operators está no coração do Kubernetes e esse definitivamente é um dos temas mais legais na minha opinião no que diz respeito ao projeto. Nessa série composta por 3 posts, vamos abordar step-by-step os 2 operators do RabbitMQ, mas hoje vamos primeiro elucidar o que são - [Cloud Native | 2 - A relação com Microservices](https://gago.io/blog/cloud-native-2-microservices/) - O que faz Microsserviços estar no coração do Cloud Native? Seria a forma de distribuir aplicações? Seria a forma de lidar com complexidade? Seria pela forma como usa recurso de cloud? Qual é a relação entre Microsserviços e Cloud Native? Hoje vamos abordar essa relação de proximidade! Não podemos falar da história dos Microsserviços sem - [RabbitMQ Operators | RabbitMQ Cluster Operator for Kubernetes - Tutorial PT-BR](https://gago.io/blog/rabbitmq-operators-2-rabbitmq-cluster-operator-kubernetes-tutorial/) - 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. Se você chegou até aqui se perguntando: Afinal, o que - [Perdemos 17 anos por não entender redes Docker](https://gago.io/blog/docker-network-faq/) - 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 - [Cloud Native | 3 - Continuous Delivery](https://gago.io/blog/cloud-native-3-continuous-delivery/) - Nós já vimos como Cloud Native está próximo de microsserviços. Agora é hora de pensar em colocar esses serviços em produção. Com fazemos isso? Tecnologias Cloud Native permite a criação de aplicações escaláveis, resilientes, observáveis, e modernas em um ambiente extremamente dinâmico. Podendo serem executadas em clouds públicas, privadas ou híbridas. O Stack Cloud Native - [Oficialmente: 20 anos de Carreira!](https://gago.io/blog/20-anos-de-carreira/) - No dia 1° de julho de 2002, por volta de 19 horas, momento em que esse post será publicado, eu estava chegando em casa do meu primeiro dia de trabalho na Petrobras. Hoje contarei um pouco desse início, os primeiros anos da minha carreira foram decisivos para o resto dessa jornada. O Brasil estava de - [MVP | Developer Technologies | 2022-2023](https://gago.io/blog/mvp-developer-technologies-2022-2023/) - A quarta nomeação chegou!!!! É sempre um momento de muita gratidão. É sempre momento de olhar para o que construímos nesse último ano. Hoje eu darei continuidade ao papo do ano passado, há exatos 1 ano eu falava de Lock-In e posicionamento, agora é hora de continuar essa conversa. No ano passado falei sobre o - [RabbitMQ Operators | RabbitMQ Messaging Topology Operator for Kubernetes - Tutorial PT-BR](https://gago.io/blog/rabbitmq-operators-3-rabbitmq-messaging-topology-operator-kubernetes-tutorial/) - 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 - [Cloud Native | 4 - DevOps](https://gago.io/blog/cloud-native-4-devops/) - Ao lado de Containers, Microsserviços e Entrega Contínua, DevOps está no alicerce do Cloud Native. Hoje desmistificaremos DevOps e espero acabar de uma vez por toda com essa ideia de que é coisa de infra. Antes de começarmos, preciso recorrer à sua própria memória recente. Preciso que você faça uma lista mental das empresas e - [Quiet Quiting - Problema ou Oportunidade?](https://gago.io/blog/quiet-quiting-problema-ou-oportunidade/) - Se você acredita que é responsável pelos seus próprios resultados e acredita que pode crescer pelo trabalho duro, disciplina e estudo, esse post é para você. Se você está disposto a sacrificar o hoje por um amanhã melhor, e acredita que tem de ralar para conseguir suas coisas, esse post é para você. Se você - [Sobre Ports and Adapters, Agnostic Services e modelagem de Serviços](https://gago.io/blog/sobre-ports-and-adapters-agnostic-services-e-modelagem-de-servicos/) - Se você busca flexibilidade e alguma versatilidade para escolher entre estratégias de deployment e distribuição de aplicações a qualquer momento do ciclo de vida do projeto. Desde o dia 1 até a véspera de uma implantação. Ou se você não está certo, mas quer poder trocar uma chamada HTTP por uma mensagem AMQP, ou gRPC - [Chiseled Ubuntu Images - O mais próximo que teremos de Imagens Distroless para .NET chega junto com o anúncio do .NET 6 no Ubuntu 22.04](https://gago.io/blog/chiseled-ubuntu-images-dotnet-6-ubuntu-22-04/) - No dia 16 de agosto de 2022, a Microsoft anunciou o resultado de sua parceria com a Canonical. Os frutos vão desde o .NET 6 instalável via APT, mas passam também pelas Chiseled Ubuntu Images. Imagens docker super enxutas. Claro que o anúncio não poderia deixar de falar sobre as novas imagens padrão e a - [Cloud Native .NET - 10 Curiosidades/Novidades que você não sabia](https://gago.io/blog/cloud-native-net-10-curiosidades-novidades-que-voce-nao-sabia/) - Se você já ficou sabendo sobre as novidades no Cloud Native .NET, quero que saiba que ainda tem muito mais chegando. Hoje vou contar 10 novidades sobre o que fazemos do lado de dentro, conteúdo e projeto gratuito do lado de fora e mais algumas curiosidades sobre esse projeto. 1) 3 anos de Cloud Native - [Depende!](https://gago.io/blog/depende/) - Sempre que uma pergunta técnica ou sobre system design, ou até mesmo arquitetura é respondida com "Depende!", há quem se questione se realmente estamos trabalhando com exatas. Afinal, se estamos no mundo das exatas, porque tudo depende? O que de fato faz os melhores profissionais responderem essas perguntas com um simples e singelo "Depende!". Será - [Rancher Longhorn no Kubernetes 1.25](https://gago.io/blog/rancher-longhorn-no-kubernetes-1-25/) - Recém lançado em agosto, Kubernetes 1.25 trouxe desafios para o longhorn. Há pouco mais de 10 dias foi liberada na master do projeto a versão que permite usá-lo no Kubernetes 1.25. Mas afinal, o que é Longhorn? Se você usa AKS, EKS, GKE, ou Microk8s e instalações das mais variadas de Kubernetes, já deve ter - [Todo sistema tem jeito? É possível recuperar qualquer projeto?](https://gago.io/blog/strategic-refactoring-1/) - Muitas vezes nos perguntamos se é ou não possível arrumar a casa, ou se devemos demolir e criar novamente tudo do zero, ou pelo menos de algo próximo disso. Hoje quero falar sobre algumas experiências que tive e falar sobre o framework que usei para tornar algumas experiências de recuperação de projetos em cases bem - [RabbitMQ - Trabalha em memória?](https://gago.io/blog/rabbitmq-possui-banco/) - 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! Essa semana recebi uma mensagem que dizia algo aproximadamente assim: Gago, como coloco um banco de - [Resolvendo caso de cochilos de 20s do Kong API gateway](https://gago.io/blog/kong-nap-20s/) - Um dos problemas que percebi com o Kong no docker é que em alguns momentos, principalmente na primeira requisição a ele, encontrei um delay de pontuais 20s. Como estava também usando-o para cache, suspeitei do plugin e estava errado. A intenção do post é evitar que você também passe por isso. Aqui no eShop Cloud - [Cloud Native - Pela perspectiva das big techs](https://gago.io/blog/cloud-native-big-techs/) - Ainda existe uma aura em torno do termo, mas com uma mensagem clara. Não basta só DevOps, não basta só Microsserviço, não basta só Nuvem. Cada uma dessas camadas de complexidade são complementares, e tem como objetivo aumentar a eficiência e eficácia de soluções projetadas para a nuvem. Aplicações Cloud Native vão muito além da - [RabbitMQ Clustering #1](https://gago.io/blog/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 - [RabbitMQ Clustering #2 | As 2 métricas vitais para o RabbitMQ](https://gago.io/blog/rabbitmq-clustering-2-metricas-vitais/) - 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. Acredito que a primeira dúvida que paire sob sua cabeça seja: É comum RabbitMQ cair? A resposta é: - [RabbitMQ Clustering #3 | RabbitMQ consome muita memória e disco?](https://gago.io/blog/rabbitmq-clustering-3-recursos/) - Será que o RabbitMQ consome demais? Se você pensava que ele consumia muita memória, está enganado. Ele só deixa em memória as mensagens que ele pretende entregar mais cedo para os consumidores. Então depende diretamente do throughput. Ele vai tentar balancear para não consumir muito, mas se o volume trafegado é intenso (chegada de mensagens - [RabbitMQ Clustering #4 | Como as mensagens são persistidas](https://gago.io/blog/rabbitmq-cluster-4-durability/) - RabbitMQ é um excelente aliado na hora de entregar alta disponibilidade, resiliência, confiabilidade, eficiência e escalabilidade. Mas não basta subir uma instância, e sair usando de qualquer forma. Um dos cenários mais comuns que já esbarrei em consultorias ou na comunidade, é a falta de atenção por total ignorância, produzindo como efeito, risco. Na ansia - [RabbitMQ Clustering #5 | Projetando para disponibilidade](https://gago.io/blog/rabbitmq-cluster-5-projetando-disponibilidade/) - Se você sabe que precisa de um cluster, então é hora de pensar em como desenhar esse projeto. No post 2 dessa série(As 2 métricas vitais para o RabbitMQ), abordamos as métricas que fazem o RabbitMQ cair. Já no post 3 (RabbitMQ consome muita memória e disco?) falamos sobre o consumo de recursos, que está - [RabbitMQ Clustering #6 | Formas de Configurar um cluster](https://gago.io/blog/rabbitmq-cluster-6-discovery/) - Agora vou te dar algumas estratégias diferentes para a construção do Cluster. Uma estática, outra baseada em peer discovery. Aí podemos usar K8S, Etcd, Consul ou o próprio EC2. No post passado No post passado eu falei sobre a quantidade ideal de nós de um cluster. Agora é hora de falar sobre quais estratégias estão - [MasterClass - Como um desenvolvedor .NET pode se destacar no mercado em 2023 apesar da crise](https://gago.io/blog/masterclass-2023-fev-9/) - Hoje vou abordar o que mudou no mercado e mostrar um tipo de skill, um tipo de profissional que continua escasso e possui vagas aqui no Brasil ou fora dele. Aprenda a construir um perfil de sucesso resiliente às volatilidades do mercado de tecnologia. O que você verá nesta Masterclass Situação & Perspectiva O que - [Minimal API's e Agnostic Services - Mais reaproveitamento e tolerância à mudanças](https://gago.io/blog/minimal-apis-agnostic-services/) - Hoje quero chamar a atenção para o poder das Minimal API's quando usadas em conjunto com Agnostic Services, um pattern já abordado aqui no gaGO.io. - [Como o GO Horse está se travestindo de Ágil: os perigos de uma adoção superficial de metodologias ágeis](https://gago.io/blog/gohorse-agil/) - Nos últimos anos, o uso de metodologias ágeis tem sido amplamente difundido no desenvolvimento de software e gestão de projetos, buscando entregar valor de forma mais rápida e eficiente. No entanto, uma tendência preocupante tem surgido: a utilização do Go Horse, uma abordagem informal e caótica, disfarçada de práticas ágeis. Neste post, vamos explorar como - [Resiliência de Microsserviços](https://gago.io/blog/microsservicos-resiliencia/) - Como construir microsserviços resilientes: dicas e estratégias para garantir a continuidade do seu serviço Você já ouviu falar em resiliência? No contexto de software, ela se refere à capacidade de um sistema ou aplicação lidar e se adaptar a problemas e situações adversas. Para microsserviços, a resiliência é fundamental, especialmente considerando que eles dependem de - [O PODER DO ASSÍNCRONO - 2 Episódios](https://gago.io/blog/devshow-poder-assincrono-pack/) - Você já se perguntou como empresas como Amazon, Google e Netflix garantem que suas aplicações estejam sempre disponíveis, resilientes, escaláveis, eficientes e confiáveis? Não há uma única resposta, mas uma delas é processamento assíncrono, especialmente com a utilização de mensageria e filas. Neste post, exploremos a importância desse recurso no cenário de negócios de alta - [Arquitetura Fria — Enfrentando reestruturações tecnológicas sem nenhum conhecimento sobre o negócio](https://gago.io/blog/arquitetura-fria-reestruturacoes-sem-negocio/) - Nesta semana, abordei o tema "Arquitetura Fria - Enfrentando reestruturações tecnológicas sem nenhum conhecimento sobre o negócio". Esse assunto é polêmico, principalmente aos olhos dos leitores de manchetes, portanto...já sabe né?! Vem comigo, que hoje eu vou destravar uma habilidade interessante e útil. Partindo do pressuposto de que a maioria das reestruturações de projetos ocorre - [Entendendo CORS](https://gago.io/blog/entendendo-cors/) - CORS é um daqueles assuntos que atrapalha de iniciante a veteranos. Considerando que toda nova aplicação poderá sofrer com erros de CORS e muitas vezes leva algum tempo para resolver, ou pior, muitas vezes resolvemos da forma errada, esse post vem para ajudar nesse assunto. Hoje abordaremos tudo que você precisa saber CORS, para economizar - [Adicionando ChatGPT na sua aplicação](https://gago.io/blog/chatgpt-dotnet/) - A primeira vez que ouvi falar em chatGPT fiquei empolgado com o avanço das IA's Generativas, mas nem passou pela minha cabeça que já fosse possível usar em uma aplicação real. Ao encontrar no ChatGPT inputs e outputs em texto livre, que hora traz texto normal, hora markdown, hora outros formatos, sem a capacidade de - [Discord — Nossa nova casa!](https://gago.io/blog/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. Assim que se confirmou, na manhã dessa - [Do Microsserviço para o Monolito — Amazon Prime Video](https://gago.io/blog/do-microsservico-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: Ampliação do serviço de monitoramento - [10 anos com RabbitMQ — O que aprendi sobre - parte 1](https://gago.io/blog/10-anos-com-rabbitmq-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 compreender, e hoje quero trazer um pouco dessa experiência acumulada - [GPT para Desenvolvedores .NET](https://gago.io/blog/chatgpt-dotnet2/) - Modelos GPT 3.5-turbo e GPT 4.0. Saiba como usar, entenda as possibilidades e dê os primeiros passos com GPT em C# em seus projetos e .NET - [Como descrever um roadmap de arquitetura de forma clara](https://gago.io/blog/diagrama-roadmap-arquitetura/) - 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 desafio. Tradicionalmente, a visão de desenhos arquiteturais têm se concentrado - [Quais dados, logs estruturados precisam ter?](https://gago.io/blog/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 tomar forma. Começávamos a - [Dev ou Ops, de quem é a responsabilidade?](https://gago.io/blog/dev-ou-ops-de-quem-e-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á que são de responsabilidade da galera de Operações? - [Filas exclusivas e autodelete](https://gago.io/blog/filas-exclusivas-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 - [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](https://gago.io/blog/nova-arquitetura-velhos-habitos-1/) - 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 felizes cumprindo suas demandas. Será mesmo? E se eu te dissesse - [Keyed DI services e Como o uso de tipos como identidade penaliza o design](https://gago.io/blog/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 mais caro e mais pobre. Esse fenômeno afeta o mecanismo de - [Cloud Native .NET com .NET Aspire - Primeiras Impressões](https://gago.io/blog/dotnet-aspire-primeiras-impressoes/) - 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. Projetos - [Logs Estruturados - Correlacionando Dados Técnicos com Eventos de Negócio](https://gago.io/blog/logs-estruturados-correlacionando-dados-tecnicos-com-eventos-de-negocio/) - 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 monitoramento, mas também uma mina de ouro para - [OCR Minimal API | .NET 8](https://gago.io/blog/dotnet-docker-ocr-minimal-api/) - 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 projeto que criei e pode - [Microsoft Artifact Registry (MAR) - Descobrindo imagens e tags](https://gago.io/blog/docker-microsoft-artifact-registry-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 migração. Hoje você descobrirá que o Microsoft Container - [.NET ASPIRE Dashboard Standalone como Container](https://gago.io/blog/dotnet-aspire-dashboard-standalone-docker/) - 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. "Agora você pode executar o dashboard do Aspire - [Quando fazer upgrade da minha aplicação .NET?](https://gago.io/blog/quando-fazer-upgrade-da-minha-aplicacao-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 - [Generalismo: Um trampolim para excelência ou um atalho para o fracasso?](https://gago.io/blog/generalismo-excelencia-fracasso/) - No mundo dinâmico do desenvolvimento de software, o debate entre especialização e generalismo é eterno. Com a rápida evolução das tecnologias, a pressão para que os desenvolvedores se adaptem e expandam suas habilidades é intensa. Mas, qual é a melhor abordagem: ser um especialista em uma área ou um generalista em muitas? Embora o generalismo - [Habemus .NET ASPIRE](https://gago.io/blog/habemus-dotnet-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. A conta não fecha Conforme havíamos sinalizado em 2022, com a análise - [The Microservices Journey – S2E1: Independência ou morte](https://gago.io/blog/microservices-journey-s2e1-independencia-ou-morte/) - Recentemente a discussão sobre microsserviços retornou das profundezas da escuridão, sob temas superados, e reforçados em inúmeras oportunidades ao longo dos últimos anos. Afinal, banco de dados compartilhado? Pode? E monorepo? Faz sentido? E o que Sam Newman diz sobre isso tudo? Será que ele mudou o discurso ao longo do tempo? Será que já ## Páginas - [Home](https://gago.io/) - Cloud Native e Cloud Agnóstic com .NET, Arquitetura de Software, Arquitetura de Soluções, Containers, Microsserviços, Mensageria e muito mais! - [Sobre](https://gago.io/whoami/) - [et_pb_section fb_built=”1″ custom_padding_last_edited=”on|phone” disabled_on=”off|off|off” admin_label=”Cabeçalho” _builder_version=”4.21.0″ use_background_color_gradient=”on” background_color_gradient_type=”circular” background_color_gradient_stops=”#303030 0%|#00070a 100%” background_color_gradient_start=”#303030″ background_color_gradient_end=”#00070a” background_image=”https://gago.io/wp-content/uploads/2020/07/geometric-bg-overlay-01.jpg” background_blend=”overlay” custom_padding=”100px|0px|100px|0px” custom_padding_tablet=”100px|0px|100px|0px” custom_padding_phone=”4px||||false|false” bottom_divider_height=”34px” animation_direction=”top” scroll_vertical_motion=”6|16|16|99|4|0|0″ da_disable_devices=”off|off|off” box_shadow_style=”preset2″ box_shadow_horizontal=”0px” box_shadow_vertical=”0px” box_shadow_spread=”11px” locked=”off” collapsed=”on” global_colors_info=”{}” da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on”][et_pb_row _builder_version=”4.16″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_margin=”|||” custom_width_px=”1280px” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.16″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_code admin_label=”CSS Cor Cabeçalho” _builder_version=”4.16″ _module_preset=”default” - [.NET](https://gago.io/dotnet/) - .NET Core em conjunto com projetos e soluções Open Source para Mensageria, Gestão de Identidade, Versionamento, CI & CD, ALM, DevOps e muito mais - [Blog](https://gago.io/blog/) - [et_pb_section fb_built=”1″ admin_label=”Blog 1″ _builder_version=”4.27.4″ _module_preset=”default” background_color=”#1e1e1e” background_enable_pattern_style=”on” background_pattern_style=”diagonal-stripes-2″ background_pattern_color=”rgba(0,126,211,0.18)” custom_margin=”0px|0px|0px|0px|false|false” da_disable_devices=”off|off|off” global_colors_info=”{}” da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on”][et_pb_row _builder_version=”4.16″ _module_preset=”default” width=”100%” max_width=”1637px” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.16″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.17.4″ _module_preset=”default” global_colors_info=”{}”] Blog [/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row _builder_version=”4.16″ _module_preset=”default” width=”100%” max_width=”1637px” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.16″ _module_preset=”default” global_colors_info=”{}”][et_pb_blog fullwidth=”off” posts_number=”600″ use_manual_excerpt=”off” excerpt_length=”600″ show_more=”on” show_author=”off” show_pagination=”off” disabled_on=”off|off|off” _builder_version=”4.27.4″ _module_preset=”default” - [Arquitetura de Software, Arquitetura de Soluções e System Design](https://gago.io/arquitetura/) - [et_pb_section fb_built=”1″ admin_label=”Hero” _builder_version=”4.27.4″ use_background_color_gradient=”on” background_color_gradient_stops=”#26c1ff 0%|#1883bc 100%” background_color_gradient_start=”#141414″ background_color_gradient_end=”#000000″ background_image=”https://gago.io/wp-content/uploads/2020/08/coding-background-texture.jpg” background_position=”bottom_center” background_repeat=”repeat” background_blend=”color-burn” animation_direction=”top” scroll_vertical_motion=”6|16|16|99|4|0|0″ hover_enabled=”0″ da_disable_devices=”off|off|off” locked=”off” global_colors_info=”{}” sticky_enabled=”0″ da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on”][et_pb_row _builder_version=”4.17.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.17.4″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.27.4″ _module_preset=”default” header_text_color=”#FFFFFF” header_font_size=”36px” header_2_font_size=”44px” hover_enabled=”0″ global_colors_info=”{}” sticky_enabled=”0″]Arquitetura de Software, Arquitetura de Soluções e System Design[/et_pb_text][et_pb_code _builder_version=”4.17.4″ _module_preset=”default” - [Tudo sobre RabbitMQ para .NET](https://gago.io/rabbitmq/) - RabbitMQ e .NET do Zero ao Especialista, grátis! Um dos maiores acervos de conteúdo sobre RabbitMQ do mundo. 100% dedicado ao desenvolvedor .NET que trabalha com C# - [Cursos e Formações](https://gago.io/inside/) - O que fazemos do lado de dentro? Do lado de dentro ajudamos de perto profissionais seniors a saírem da estagnação, ensinando a como se diferenciarem dos demais usando tecnologias que proporcionam saltos em seus projetos e consequentemente suas carreiras. - [Material para Publicações, Lives e Apresentações](https://gago.io/whoami/brand/) - Minibio v1 Luiz Carlos Faria é Dev, Empreendedor, Microsoft MVP 6 vezes, Docker Captain, responsável pelo gaGO.io, além de Software e Solution Architect. v2 Luiz Carlos Faria é Dev, Empreendedor, Microsoft MVP 6 vezes, Docker Captain, responsável pelo gaGO.io, além de Software e Solution Architect. Atuante no mercado desde 2002 exclusivamente com desenvolvimento de software. - [Docker](https://gago.io/docker/) - Docker para Desenvolvedores .NET! Tudo sobre a jornada do DEV .NET que precisa trabalhar com docker, Kubernetes, com ou sem cloud. - [Projetos](https://gago.io/oss/) - [et_pb_section fb_built=”1″ admin_label=”Hero” _builder_version=”4.9.6″ use_background_color_gradient=”on” background_color_gradient_start=”#757575″ background_color_gradient_end=”#a5a5a5″ background_image=”https://gago.io/wp-content/uploads/2020/07/geometric-bg-overlay-01.jpg” background_blend=”overlay” custom_padding=”100px|0px|14px|0px||” animation_direction=”top” scroll_vertical_motion=”6|16|16|99|4|0|0″ locked=”off”][et_pb_row column_structure=”1_2,1_2″ _builder_version=”3.25″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_margin=”|||” custom_width_px=”1280px”][et_pb_column type=”1_2″ _builder_version=”3.25″ custom_padding=”|||” custom_padding__hover=”|||”][et_pb_text _builder_version=”4.9.1″ header_font=”||||||||” header_text_color=”#FFFFFF” header_font_size=”42px” header_line_height=”1.3em” background_enable_color=”off” background_layout=”dark” custom_padding=”|||” header_font_size_last_edited=”off|desktop” locked=”off”] Projetos Open Source [/et_pb_text][et_pb_text _builder_version=”4.6.1″ text_text_color=”#ffffff” text_font_size=”20px” text_line_height=”1.9em” locked=”off”] Aqui está uma lista de projetos [/et_pb_text][et_pb_code _builder_version=”4.9.6″ _module_preset=”default”] [/et_pb_code][/et_pb_column][et_pb_column type=”1_2″ - [GFY](https://gago.io/gfy/) - [Jornada Docker de A a Z](https://gago.io/docker/jornada/) - [et_pb_section fb_built=”1″ fullwidth=”on” admin_label=”Hero Section” _builder_version=”4.16″ background_color=”#101535″ use_background_color_gradient=”on” background_color_gradient_stops=”#3d3fc7 0%|rgba(61,63,199,0) 100%” background_color_gradient_start=”#3d3fc7″ background_color_gradient_end=”rgba(61,63,199,0)” background_image=”https://gago.io/wp-content/uploads/2020/10/crypto_illustration_11.png” parallax=”on” custom_margin=”|||” custom_padding=”|||” da_disable_devices=”off|off|off” global_colors_info=”{}” da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on”][et_pb_fullwidth_header title=”Jornada Docker de A a Z” subhead=”A jornada Docker de A a Z foi encerrada!” text_orientation=”center” _builder_version=”4.25.2″ title_level=”h3″ title_font=”Aldrich||||||||” title_font_size=”50px” title_line_height=”1.5em” content_font=”||||||||” content_text_color=”#c4c4c4″ content_font_size=”14px” content_line_height=”2em” subhead_font=”||||||||” subhead_font_size=”22px” - [.NET Design Patterns](https://gago.io/arquitetura/dotnet-design-patterns/) - .NET Design Patterns by dofactory.com https://www.dofactory.com/net/design-patterns Design Patterns com exemplos em C# - [SOA Patterns](https://gago.io/arquitetura/soa-patterns/) - SOA Patterns by arcitura.com patterns.arcitura.com/soa-patterns This design patterns catalog is published by Arcitura Education in support of the SOA Certified Professional (SOACP) program. These patterns were developed for official SOACP courses that encompass service-oriented architecture and service technology. (Note that this site is still undergoing improvements. Please provide feedback or report issues to info@arcitura.com.) To learn - [Cloud Patterns](https://gago.io/arquitetura/cloud-patterns/) - Cloud Patterns by Microsoft https://docs.microsoft.com/pt-br/azure/architecture/patterns/ Esses padrões de design são úteis para a criação de aplicativos confiáveis, dimensionáveis e seguros na nuvem. Cada padrão descreve o problema ao qual o padrão se destina, as considerações para a aplicação do padrão e um exemplo com base no Microsoft Azure. A maioria dos padrões inclui exemplos de código - [Live](https://gago.io/live/) - [et_pb_section fb_built=”1″ admin_label=”Hero” _builder_version=”4.15.1″ use_background_color_gradient=”on” background_color_gradient_start=”#ea041b” background_color_gradient_end=”#910000″ background_image=”https://gago.io/wp-content/uploads/2020/07/geometric-bg-overlay-01.jpg” background_blend=”overlay” custom_padding=”100px|0px|100px|0px” animation_direction=”top” scroll_vertical_motion=”6|16|16|99|4|0|0″ hover_enabled=”0″ locked=”off” global_colors_info=”{}” sticky_enabled=”0″ da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on” da_disable_devices=”off|off|off”][et_pb_row column_structure=”1_2,1_6,1_6,1_6″ _builder_version=”4.15″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_margin=”|||” custom_width_px=”1280px” global_colors_info=”{}”][et_pb_column type=”1_2″ _builder_version=”4.15″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_code _builder_version=”4.15″ _module_preset=”default” global_colors_info=”{}”] [/et_pb_code][et_pb_text _builder_version=”4.15″ header_font=”|on|||” header_font_size=”42px” header_line_height=”1.3em” background_layout=”dark” custom_padding=”|||” header_font_size_last_edited=”off|desktop” locked=”off” global_colors_info=”{}”] Live [/et_pb_text][et_pb_text _builder_version=”4.15.1″ - [Connect](https://gago.io/connect/) - [et_pb_section fb_built=”1″ _builder_version=”4.16″ _module_preset=”default” custom_margin=”10px||10px||false|false” custom_padding=”0px||0px||false|false” da_disable_devices=”off|off|off” locked=”off” global_colors_info=”{}” da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on”][et_pb_row column_structure=”2_5,3_5″ _builder_version=”4.16″ _module_preset=”default” width=”95%” module_alignment=”center” custom_margin=”0px|10px|0px|10px|false|false” custom_padding=”0px|0px|0px|0px|false|false” global_colors_info=”{}”][et_pb_column type=”2_5″ _builder_version=”4.16″ _module_preset=”default” global_colors_info=”{}”][et_pb_image src=”https://gago.io/wp-content/uploads/2019/12/telegram-logo.png” title_text=”telegram-logo” url=”https://share.gago.io/telegram” url_new_window=”on” align=”center” _builder_version=”4.16″ _module_preset=”default” width=”60px” global_colors_info=”{}”][/et_pb_image][/et_pb_column][et_pb_column type=”3_5″ _builder_version=”4.16″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.16″ _module_preset=”default” text_orientation=”center” global_colors_info=”{}”] Insights e conteúdo em audio para ajudar ano - [Obrigado](https://gago.io/opt/) - [et_pb_section fb_built=”1″ _builder_version=”3.22″][et_pb_row _builder_version=”4.9.7″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” hover_enabled=”0″ sticky_enabled=”0″][et_pb_column type=”4_4″ _builder_version=”3.25″ custom_padding=”|||” custom_padding__hover=”|||”][et_pb_text _builder_version=”4.5.1″ background_size=”initial” background_position=”top_left” background_repeat=”repeat”] Obrigado, acabei de cadastrar sua escolha aqui. [/et_pb_text][et_pb_text _builder_version=”4.9.7″ _dynamic_attributes=”content” text_font_size=”22px” background_size=”initial” background_position=”top_left” background_repeat=”repeat” text_orientation=”center” hover_enabled=”0″ sticky_enabled=”0″]@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoiY3VycmVudF9kYXRlIiwic2V0dGluZ3MiOnsiYmVmb3JlIjoiRGF0YSBkYSByZXNwb3N0YTogIiwiYWZ0ZXIiOiIiLCJkYXRlX2Zvcm1hdCI6ImN1c3RvbSIsImN1c3RvbV9kYXRlX2Zvcm1hdCI6ImQgXFxkXFxlIEYgXFxkXFxlIFkgIiwiZW5hYmxlX2h0bWwiOiJvZmYifX0=@[/et_pb_text][et_pb_text _builder_version=”4.9.7″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” hover_enabled=”0″ sticky_enabled=”0″ module_id=”msg”] Sua escolha foi computada [/et_pb_text][et_pb_image src=”https://gago.io/wp-content/uploads/2018/07/logo-gago3-chumbo.png” title_text=”logo-gago3-chumbo” align=”center” _builder_version=”4.5.1″ _module_preset=”default”][/et_pb_image][et_pb_code _builder_version=”4.9.7″ _module_preset=”default” hover_enabled=”0″ sticky_enabled=”0″]function - [Eventos passados](https://gago.io/live/eventos-passados/) - [et_pb_section fb_built=”1″ admin_label=”Hero” _builder_version=”4.6.1″ use_background_color_gradient=”on” background_color_gradient_start=”#ea041b” background_color_gradient_end=”#910000″ background_image=”https://gago.io/wp-content/uploads/2020/07/geometric-bg-overlay-01.jpg” background_blend=”overlay” custom_padding=”100px|0px|100px|0px” animation_direction=”top” scroll_vertical_motion=”6|16|16|99|4|0|0″ locked=”off”][et_pb_row column_structure=”3_5,2_5″ _builder_version=”3.25″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_margin=”|||” custom_width_px=”1280px”][et_pb_column type=”3_5″ _builder_version=”3.25″ custom_padding=”|||” custom_padding__hover=”|||”][et_pb_code _builder_version=”4.6.1″ _module_preset=”default”] [/et_pb_code][et_pb_text _builder_version=”4.6.1″ header_font=”|on|||” header_font_size=”42px” header_line_height=”1.3em” background_layout=”dark” custom_padding=”|||” hover_enabled=”0″ header_font_size_last_edited=”off|desktop” locked=”off” sticky_enabled=”0″] Eventos passados [/et_pb_text][et_pb_text _builder_version=”4.6.1″ text_text_color=”#ffffff” text_font_size=”20px” text_line_height=”1.9em” hover_enabled=”0″ locked=”off” sticky_enabled=”0″] Já passou mas aqui você pode ver mais - [Política de Privacidade](https://gago.io/privacidade/) - TL;DR; Sua navegação é enviada para os 4 cantos da internet para ferramentas conceituadas, visando entender o comportamento e medir sua iteração com o conteúdo. Seus dados não são comercializados, mas são colocados em diversas ferramentas que produzem as mais variadas estatísticas. A inteligência de negócio produzida por essas estatísticas é o "pagamento" (em forma - [Galera - Comunidades e Grupos](https://gago.io/galera/) - [et_pb_section fb_built=”1″ inner_shadow=”on” admin_label=”Hero” _builder_version=”4.16″ background_color=”rgba(0,0,0,0)” background_image=”https://gago.io/wp-content/uploads/2020/01/people-taking-a-photo-1187086.jpg” parallax=”on” min_height=”800px” custom_padding=”100px|0px|100px|0px” animation_direction=”top” scroll_vertical_motion=”6|16|16|99|4|0|0″ da_disable_devices=”off|off|off” locked=”off” global_colors_info=”{}” da_is_popup=”off” da_exit_intent=”off” da_has_close=”on” da_alt_close=”off” da_dark_close=”off” da_not_modal=”on” da_is_singular=”off” da_with_loader=”off” da_has_shadow=”on”][et_pb_row _builder_version=”4.16″ _module_preset=”default” global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”4.16″ _module_preset=”default” global_colors_info=”{}”][et_pb_text _builder_version=”4.16″ _module_preset=”default” text_font=”Architects Daughter||||||||” text_text_color=”#000000″ header_font=”|800|||||||” header_text_color=”#ffffff” header_font_size=”50px” transform_scale=”103%|103%” transform_translate=”-111px|52px” text_orientation=”center” animation_style=”slide” animation_direction=”left” scroll_vertical_motion_enable=”off” scroll_horizontal_motion=”0|25|25|100|4|0|-4″ header_text_shadow_style=”preset1″ header_text_shadow_vertical_length=”-0.02em” header_text_shadow_blur_strength=”0.42em” header_text_shadow_color=”#e09900″ global_colors_info=”{}”] Grupos [/et_pb_text][et_pb_text _builder_version=”4.16″ _module_preset=”default” - [RabbitMQ para Aplicações .NET](https://gago.io/inside/rabbitmq-dotnet/) - RabbitMQ para Aplicações .NET um curso sobre Arquitetura de Mensageria ministrado online, gravado por Luiz Carlos Faria akka Gago! - [Divi Login Designer](https://gago.io/divi-login-designer/) - [et_pb_section admin_label=”section”] [et_pb_row admin_label=”row”] [et_pb_column type=”4_4″][et_pb_text admin_label=”Text”]This page is used for Divi Login Designer extension. It will not be visible to your readers. Do not delete it.[/et_pb_text][/et_pb_column] [/et_pb_row] [/et_pb_section] ## Depoimentos - [Rafael Caixeta](https://gago.io/blog/depoimento/rafael-caixeta/) - Sr. Solutions Architect na Amazon Web Services (AWS) Luiz is a very reliable architect to work with, always have great ideas and good solutions. Very nice person to work with, is always available to help coworkers and of course has a lot of experience in the area. - [Victor Sant' Anna, PMP](https://gago.io/blog/depoimento/victor-santanna/) - Luiz Carlos é um profissional extremament capaz e inovador capaz de propor soluções robustas para problemas diversos. No projeto em que tabalhamos juntos foi reesponsável pela arquitetura tendo uma importante parcela no resultado e no sucesso alcançado. - [Aderson Bastos](https://gago.io/blog/depoimento/aderson-bastos/) - CTO na Inmetrics Trabalhei com o Luiz Carlos em mais de uma oportunidade e o profissionalismo, o comprometimento e a capacidade técnica do Luiz Carlos foram de suma importância para o sucesso dos projetos nos quais trabalhamos. Ter o Luiz Carlos no time é certeza de ter dado um passo na direção certa para o - [Felipe Rezende](https://gago.io/blog/depoimento/felipe-rezende/) - Principal Solutions Architect na Zup Innovation Luiz é um profissional completo, com seu vasto conhecimento e dedicação, ele realiza suas tarefas com qualidade e eficiência. Tem minha total recomendação para Liderar ou ser Arquiteto da Equipe! Com ideias inovadoras e bem elaboradas trouxe grande melhoria ao projeto em que trabalhamos juntos. - [Gustavo Ribeiro](https://gago.io/blog/depoimento/gustavo-ribeiro/) - Arquiteto de Soluções na Sensedia Profissional com grande experiencia de mercado e grandes conhecimentos técnicos. Sempre apesentando as melhores soluções e o mais importante, passando o conhecimento para os profissionais com que trabalha. - [Petterson Amaral](https://gago.io/blog/depoimento/petterson-amaral/) - Luiz Carlos é um Arquiteto atento e detalhista que pensa em nas conexões de seus projetos com outras áreas. É uma pessoa dedicada, com visão holística, extremamente parceiro, envolvido em todas as fases, criativo, comprometido e responsável. Seu domínio técnico, agilidade e espírito colaborativo são de alto nível. Tive o enorme prazer em trabalhar com - [Leonardo Trindade - MCT - MBA](https://gago.io/blog/depoimento/leonardo-trindade-mct-mba/) - Luiz Carlos é um profissional dedicado, ícone de boas práticas técnicas, possui uma inteligência emocional ímpar e um relacionamento interpessoal indiscutível. Todo e qualquer momento está disponível para passar seu vasto conhecimento. É um jovem talento que toda equipe de sucesso precisa ter para alcançar seu objetivo de forma rápida e concreta. - [Petterson Amaral](https://gago.io/blog/depoimento/petterson-amaral-2/) - Tive um imenso prazer em trabalhar durante 4 anos com o Luiz. Ele é uma profissional extremamente competente, focado no trabalho, tem um ótimo relacionamento interpessoal com os parceiros de trabalho, sempre buscando a melhor forma de resolver ou ajudar a resolver problemas, muito comprometido, extremamente capaz e inteligente. O Luiz trabalha muito bem em - [Fernando Grimmer](https://gago.io/blog/depoimento/fernando-grimmer/) - Excelência técnica, ousadia, e criatividade aliadas a um incrível bom senso, grande responsabilidade, e muito comprometimento... O Luiz Carlos é definitivamente um profissional "fora da curva". Além disso é um amigo muito divertido, agregador em qualquer ambiente. Recomendo-o fortemente, principalmente em projetos críticos e desafiadores. - [Henrique Jacob](https://gago.io/blog/depoimento/henrique-jacob/) - CTO | Co-Founder Esta é a terceira vez que trabalho com o Luiz, grande pessoa e um arquiteto que se destaca, tem um conhecimento absurdo e amplo. Conhece muito de internet e sempre pensa fora da caixa. - [Paulo Ferreira](https://gago.io/blog/depoimento/paulo-ferreira/) - Tive o prazer de trabalhar com o Luiz no início da sua carreira profissional, onde naquele momento já mostrava que tinha um grande potencial. Hoje tenho o prazer de trabalhar novamente, agora com um Arquiteto de Software de alta capacidade técnica, extremamente envolvido com os projetos, buscando sempre as melhores soluções e possibilitando chegarmos ao - [Fabrício Veronez](https://gago.io/blog/depoimento/fabricio-veronez/) - Proprietário na Formação DevOps Pro O Luiz é um profissional excepcional, fui estagiário dele e posso falar que ter ele como orientador fez toda a diferença na minha vida profissional, hoje tenho o prazer de trabalhar com ele novamente e posso dizer que é uma pessoa que tem sempre a acrescentar a equipe, para mim - [Kleber Santos](https://gago.io/blog/depoimento/kleber-santos/) - Sócio | VP de Transformação Digital e Inovação | Transformando ideias em Experiências Digitais no Grupo FCamara Profissional muito prestativo e possui domínio das tecnologias que trabalha. Trabalha com foco em desempenho e produtividade. - [Nelson Mansur](https://gago.io/blog/depoimento/nelson-mansur/) - Principal Project Manager, PMP at Microsoft O Luiz é um profissional de mão cheia, daqueles que raramente um gestor de tecnologia cruza pela esquina. Ele é muito criativo e pró-ativo, capaz de imaginar e concretizar soluções com uma velocidade impressionante. Além disso, é uma pessoa de fácil trato, é leal, amigo e muito preocupado em - [Leonardo Miceli](https://gago.io/blog/depoimento/leonardo-miceli/) - Lead Integrations Developer at Herschel Supply Company Luiz Carlos is one of the best software architects that I had the opportunity to work with, he's a natural team leader and also havean impressive technical set of skills. - [Marcelo Matos](https://gago.io/blog/depoimento/marcelo-matos/) - Luiz é um profissional extremamente qualificado com um capacidade ímpar de absorver conhecimento e estruturar soluções para a arquitetura de sistemas. Com forte visão DevOps tem sempre como foco a otimização do tempo da equipe entregando para o projeto soluções de automação das tarefas construção e de entrega. - [Andresa Simões Franchi](https://gago.io/blog/depoimento/andresa-simoes/) - Senior QA Engineer Consultant - QA Lead, Quality Assurance MBA, SFC, SFPC Tenho o prazer de trabalhar com Luiz a mais de 2 anos na Ebix. Ele é um excelente profissional, competente, prestativo, de um vasto conhecimento técnico. Tem facilidade de encontrar soluções que agregam valor ao negócio da empresa, bem como do cliente. Se - [Felippe Mendonça](https://gago.io/blog/depoimento/felippe-mendonca/) - Trabalhei com o Luiz em um projeto crítico, e ele demonstrou ser um profissional com um perfil raro e valioso no mercado. Além de possuir um domínio técnico muito acima da média, é uma pessoa extremamente dedicada no entendimento e resolução de problemas e possui uma sólida visão estratégica para conduzir projetos no âmbito técnico. - [Elter Souza](https://gago.io/blog/depoimento/elter-souza/) - Luiz é um excelente profissional. Aprendi muito durante o períodoem que ele foi o coordenador da minha equipe. Ele é altamentecapacitado e o considero uma referência técnica. Foi um privilégiotrabalhar e aprender com ele. Desejo muito sucesso. Um grande abraço. - [Juliano Nicocelli](https://gago.io/blog/depoimento/juliano-nicocelli/) - Analista de sistemas, programador e arquiteto de software. Cara, só digo que tu é fodaaa! Parabéns pelo excelente trabalho no facebook, telegram, seu site e a constante participação nos canais do Youtube. Sabemos que todo esse conhecimento compartilhado custa tempo e dinheiro, abrindo mão de várias outras coisas. Parabéns novamente! - [Gustavo Bigardi](https://gago.io/blog/depoimento/gustavo-bigardi/) - Cara, vendo a forma como administra os grupos e lives tem servido como exemplo para que eu melhore muitas coisas em minha comunidade. Fora que tenho prazer de participar nos grupos que administra, devido a limpeza e foco do pessoal, da pra aproveitar muito sem passar por besteiras como em outros grupos. Trabalho sensacional, continue - [Tânia](https://gago.io/blog/depoimento/tania/) - Há algum tempo te acompanho em canais no YouTube e vejo conteúdo do seu site, seu conhecimento sobre tecnologia é inegável, mas te achava muito arrogante(e olha q eu não sou um doce e nem com muito mimimi), mas te achava sem paciência com juniors, nos últimos tempos no YouTube, principalmente te acompanhando pelo canais - [Italo Siqueira](https://gago.io/blog/depoimento/italo-siqueira/) - Você está sempre disponível e é sempre claro nas suas posições e respostas, está fazendo um ótimo trabalho. - [Tauan Santana](https://gago.io/blog/depoimento/tauan/) - IT Systems Specialist / Sinqia Luiz, tudo que você anda produzindo é de extrema qualidade. Penso que talvez seja legal também produzir conteúdos de carreira, boas práticas, troubleshooting em cenários problemáticos e etc. - [Flavio Canedo](https://gago.io/blog/depoimento/flavio-canedo/) - Dev. Senior | Asp Net Core | Design Pattern | Pagar.me Cara vc eu vejo que está mais preocupado com ajudar msm, já mandei msg para alguns e nem fui respondido, não generalizando mas acho que se faz parte de uma comunidade, grupos etc acredito que seja para apoiar, e não carregar nas costas, mas - [Ricardo Santos](https://gago.io/blog/depoimento/ricardo-santos/) - VP Engineering | Blockchain | Crypto | Web3 Luiz Carlos Faria é um excelente Arquiteto, criativo e focado. Realizou um otimo trabalho no Banco BTG Pactual ## Projetos Open Source - [EnterpriseApplicationLog](https://gago.io/blog/projetos/enterprise-application-log/) - Enterprise Application Log consiste é um stack pré-configurado que contém RabbitMQ e ELK Stack colaborando para entregar uma robusta plataforma de monitoramento, centralização e consolidação de logs. Nesse stack de log utilizo RabbitMQ, LogStash, ElasticSearch e Kibana com Docker Compose. São muitos elementos, mas esse desenho garante o máximo de performance para qualquer tipo de - [Oragon.AspNetCore.Hosting.AMQP](https://gago.io/blog/projetos/oragon-aspnetcore-hosting-amqp/) - Se olharmos com cuidado para o HTTP e AMQP conseguimos encontrar semelhanças das mais diversas. Headers, Body. Se olharmos sobre as implementações sob o HTTP que conhecemos, vemos também outras características comuns como Routing, parsing. Fato que usar a infraestrutura base do ASP.NET Core, com Model Binders, Routing, Controllers seria interessante, mas trabalhar com esses - [mssql-server-linux | SQL Server +Automações](https://gago.io/blog/projetos/mssql-server-linux/) - A mesma imagem do SQL Server no Linux, mas tão configurável quanto as consagradas imagens do MariaDB, MySQL e PostgreSQL. Quem precisa subir um banco de dados junto com a aplicação precisa de uma imagem que possibilite a criação de usuários, databases, inicialização via scripts. Esses recursos já estão presentes nas imagens do MariaDB, MySQL - [RabbitMQ Walkthrough v1](https://gago.io/blog/projetos/rabbitmq-walkthrough-v1/) - RabbitMQ - Demonstração de Comportamento padrão com Mensageria. Material complementar dos cursos: RabbitMQ para Aplicações .NETDocker Definitivo / O ROADMAP Objetivo 1) Demonstrar comportamento padrão quando: A) Temos uma carga de trabalho menor que nossa capacidade de processamentoB) Temos uma carga de trabalho igual à nossa capacidade de processamentoC) Temos uma carga de trabalho maior - [OpenIdConnect Mock Server - Identity Server fake](https://gago.io/blog/projetos/openidconnect-mock-server/) - Você já fez uma prova de conceito ou uma demonstração em que seria bem interessante testar com vários perfís, mas pensou duas vezes sobre o esforço de subir um Identity Server? Já se questionou quais alternativas teria e tentou de tudo não ter esse esforço? Pois bem, aconteceu comigo algumas vezes. Então saí em busca ## Categorias - [Oragon Architecture](https://gago.io/categoria/projetos/oragon-architecture/) - [Docker de A a Z](https://gago.io/categoria/trilhas/docker-az/) - Docker de A a Z é uma websérie destinada ao tema Docker. - [Desenvolvimento](https://gago.io/categoria/dev/) - [Trilhas](https://gago.io/categoria/trilhas/) - [Projetos](https://gago.io/categoria/projetos/) - [.NET de A a Z](https://gago.io/categoria/trilhas/dotnet-a-z/) - .NET Cross Platform apresenta conteúdo a respeito de .NET Core, ASP.NET Core, Mono e muito mais. A intenção é mostrar algumas coisas interessantes que podem ser feitas e o avanço de cada uma das tecnologias. - [Melhores Posts](https://gago.io/categoria/most/awesome-articles/) - Uma categoria dedicada aos melhores posts do blog. Seja pela audiência ou escolha própria, aqui está uma lista completa com os melhores posts! - [Open Source](https://gago.io/categoria/dev/open-source/) - Projetos Open Source - [Geral](https://gago.io/categoria/dev/geral/) - [.NET](https://gago.io/categoria/dev/dotnet/) - [Carreira Dev](https://gago.io/categoria/dev/carreira-dev/) - [Chatbots](https://gago.io/categoria/dev/chatbots/) - [Mais lidos](https://gago.io/categoria/most/mais-lidos/) - [Os mais](https://gago.io/categoria/most/) - [Novidades](https://gago.io/categoria/novidades/) - [RabbitMQ de A a Z](https://gago.io/categoria/trilhas/rabbitmq-a-z/) - [DevShow Podcast](https://gago.io/categoria/dev/devshow-podcast/) - Nosso podcast - [Arquitetura](https://gago.io/categoria/dev/architecture/) - [The Microservices Journey](https://gago.io/categoria/trilhas/the-microservices-journey/) - [Outros](https://gago.io/categoria/outros/) - [O CÓDIGO](https://gago.io/categoria/trilhas/o-codigo/) - [Inside](https://gago.io/categoria/inside/) - Conteúdo sobre o lado de dentro dos cursos, treinamentos e masterclasses - [Cloud Native .NET](https://gago.io/categoria/inside/cloud-native-net/) - [RabbitMQ para Aplicações .NET](https://gago.io/categoria/inside/rabbitmq-dotnet/) - [System Design](https://gago.io/categoria/system-design/) - [AI Coding Agents](https://gago.io/categoria/dev/ai-coding-agents/) ## Tags - [Dependency Injection](https://gago.io/tag/dependency-injection/) - [DI](https://gago.io/tag/di/) - [Factory](https://gago.io/tag/factory/) - [Inversion Of Control](https://gago.io/tag/inversion-of-control/) - [IoC](https://gago.io/tag/ioc/) - [Service Locator](https://gago.io/tag/service-locator/) - [Spring.Net](https://gago.io/tag/spring-net/) - [TopShelf](https://gago.io/tag/topshelf/) - [Dependency Inversion Principle](https://gago.io/tag/dependency-inversion-principle/) - [Interface Segregation Principle](https://gago.io/tag/interface-segregation-principle/) - [LIskov Substitution Principle](https://gago.io/tag/liskov-substitution-principle/) - [Open/Closed Principle](https://gago.io/tag/openclosed-principle/) - [Single Responsability Principle](https://gago.io/tag/single-responsability-principle/) - [SOLID](https://gago.io/tag/solid/) - [SRP](https://gago.io/tag/srp/) - [Software Architecture](https://gago.io/tag/software-architecture/) - [How To](https://gago.io/tag/how-to/) - [NuGet](https://gago.io/tag/nuget/) - [References](https://gago.io/tag/references/) - [Roslyn](https://gago.io/tag/roslyn/) - [Microsoft](https://gago.io/tag/microsoft/) - [NullPropagation](https://gago.io/tag/nullpropagation/) - [C#](https://gago.io/tag/c/) - [InfoQ](https://gago.io/tag/infoq/) - [Database First](https://gago.io/tag/database-first/) - [Redis](https://gago.io/tag/redis/) - [RabbitMQ](https://gago.io/tag/rabbitmq/) - [Sentry](https://gago.io/tag/sentry/) - [MongoDB](https://gago.io/tag/mongodb/) - [Linux](https://gago.io/tag/linux/) - [Oragon for Google App Scripts](https://gago.io/tag/oragon-for-google-app-scripts/) - [JavaScript](https://gago.io/tag/javascript/) - [Twitter](https://gago.io/tag/twitter/) - [JSON Schema](https://gago.io/tag/json-schema/) - [SOA](https://gago.io/tag/soa/) - [REST](https://gago.io/tag/rest/) - [Xsd2Code](https://gago.io/tag/xsd2code/) - [Integrations](https://gago.io/tag/integrations/) - [XSD Schema](https://gago.io/tag/xsd-schema/) - [Oragon Architecture Application Hosting](https://gago.io/tag/oragon-architecture-application-hosting/) - [MicroServices](https://gago.io/tag/microservices/) - [Oragon Architecture Application Server](https://gago.io/tag/oragon-architecture-application-server/) - [highscalability.com](https://gago.io/tag/highscalability-com/) - [vNext](https://gago.io/tag/vnext/) - [TechEd](https://gago.io/tag/teched/) - [RyuJIT](https://gago.io/tag/ryujit/) - [SignalR](https://gago.io/tag/signalr/) - [ASP.Net Web Forms](https://gago.io/tag/asp-net-web-forms/) - [ASP.Net Web API](https://gago.io/tag/asp-net-web-api/) - [KVM](https://gago.io/tag/kvm/) - [ASP.Net MVC](https://gago.io/tag/asp-net-mvc/) - [MyGet](https://gago.io/tag/myget/) - [JabbR.net](https://gago.io/tag/jabbr-net/) - [huboard.com](https://gago.io/tag/huboard-com/) - [AppDomain](https://gago.io/tag/appdomain/) - [PowerShell](https://gago.io/tag/powershell/) - [Chocolatey](https://gago.io/tag/chocolatey/) - [VisualStudio](https://gago.io/tag/visualstudio/) - [VirtualMachine](https://gago.io/tag/virtualmachine/) - [Oragon.BuildTools.NugetTools](https://gago.io/tag/oragon-buildtools-nugettools/) - [Continous Integration](https://gago.io/tag/continous-integration/) - [Release Management](https://gago.io/tag/release-management/) - [Empreendedorismo](https://gago.io/tag/empreendedorismo/) - [Startup](https://gago.io/tag/startup/) - [Livros](https://gago.io/tag/livros/) - [Steve Jobs](https://gago.io/tag/steve-jobs/) - [Sidnei Oliveira](https://gago.io/tag/sidnei-oliveira/) - [FazINOVA](https://gago.io/tag/fazinova/) - [#FAIL](https://gago.io/tag/fail/) - [Concept](https://gago.io/tag/concept/) - [ElasticSearch](https://gago.io/tag/elasticsearch/) - [LogStash](https://gago.io/tag/logstash/) - [Kibana](https://gago.io/tag/kibana/) - [ELK](https://gago.io/tag/elk/) - [Log](https://gago.io/tag/log/) - [Oragon.BuildTools.AssemblyInfoVersionManager](https://gago.io/tag/oragon-buildtools-assemblyinfoversionmanager/) - [WCF](https://gago.io/tag/wcf/) - [Windows Server](https://gago.io/tag/windows-server/) - [Nano Server](https://gago.io/tag/nano-server/) - [NodeJS](https://gago.io/tag/nodejs/) - [Google App Scripts](https://gago.io/tag/google-app-scripts/) - [Tools](https://gago.io/tag/tools/) - [Classic ASP](https://gago.io/tag/classic-asp/) - [TypeScript](https://gago.io/tag/typescript/) - [Docker](https://gago.io/tag/docker/) - [ASP.NET 5](https://gago.io/tag/asp-net-5/) - [Containers](https://gago.io/tag/containers/) - [Fowler](https://gago.io/tag/fowler/) - [MonolithFirst](https://gago.io/tag/monolithfirst/) - [DevOps](https://gago.io/tag/devops/) - [MySQL](https://gago.io/tag/mysql/) - [Postgres](https://gago.io/tag/postgres/) - [Memcached](https://gago.io/tag/memcached/) - [MariaDB](https://gago.io/tag/mariadb/) - [Wordpress](https://gago.io/tag/wordpress/) - [CoreOS](https://gago.io/tag/coreos/) - [Opinião](https://gago.io/tag/opiniao/) - [Windows Subsystem for Linux](https://gago.io/tag/windows-subsystem-for-linux/) - [Bash](https://gago.io/tag/bash/) - [ASP.NET Core](https://gago.io/tag/asp-net-core/) - [Udemy](https://gago.io/tag/udemy/) - [Descontos](https://gago.io/tag/descontos/) - [CDN](https://gago.io/tag/cdn/) - [DNS](https://gago.io/tag/dns/) - [Nginx](https://gago.io/tag/nginx/) - [Varnish](https://gago.io/tag/varnish/) - [TCP](https://gago.io/tag/tcp/) - [UDP](https://gago.io/tag/udp/) - [HTTP](https://gago.io/tag/http/) - [WAF](https://gago.io/tag/waf/) - [Cloud](https://gago.io/tag/cloud/) - [Virtualização](https://gago.io/tag/virtualizacao/) - [VirtualBox](https://gago.io/tag/virtualbox/) - [Ubuntu Server](https://gago.io/tag/ubuntu-server/) - [Microsoft Virtual Academy](https://gago.io/tag/microsoft-virtual-academy/) - [Docker Compose](https://gago.io/tag/docker-compose/) - [SQL Server](https://gago.io/tag/sql-server/) - [Windows Containers](https://gago.io/tag/windows-containers/) - [Hyper-v](https://gago.io/tag/hyper-v/) - [Server Core](https://gago.io/tag/server-core/) - [.NET Core](https://gago.io/tag/net-core/) - [WSO2](https://gago.io/tag/wso2/) - [WSO2 Enterprise Service Bus](https://gago.io/tag/wso2-enterprise-service-bus/) - [WSO2 Data Services Server](https://gago.io/tag/wso2-data-services-server/) - [WSO2 Identity Server](https://gago.io/tag/wso2-identity-server/) - [WSO2 Message Broker](https://gago.io/tag/wso2-message-broker/) - [WSO2 API Manager](https://gago.io/tag/wso2-api-manager/) - [Webmin](https://gago.io/tag/webmin/) - [MTAC](https://gago.io/tag/mtac/) - [DynamoDB](https://gago.io/tag/dynamodb/) - [AWS](https://gago.io/tag/aws/) - [Teraform](https://gago.io/tag/teraform/) - [Packer](https://gago.io/tag/packer/) - [Hashicorp](https://gago.io/tag/hashicorp/) - [AWS Elastic Load Balancer](https://gago.io/tag/aws-elastic-load-balancer/) - [AWS Application Load Balancer](https://gago.io/tag/aws-application-load-balancer/) - [Redshift](https://gago.io/tag/redshift/) - [Bot](https://gago.io/tag/bot/) - [Chatbot](https://gago.io/tag/chatbot/) - [Microsoft Bot Framework](https://gago.io/tag/microsoft-bot-framework/) - [WIT.AI](https://gago.io/tag/wit-ai/) - [API.AI](https://gago.io/tag/api-ai/) - [Watson](https://gago.io/tag/watson/) - [NLP](https://gago.io/tag/nlp/) - [Google Cloud Platform](https://gago.io/tag/google-cloud-platform/) - [Open Source](https://gago.io/tag/open-source/) - [Fodora](https://gago.io/tag/fodora/) - [Suse](https://gago.io/tag/suse/) - [Ubuntu](https://gago.io/tag/ubuntu/) - [Ionic](https://gago.io/tag/ionic/) - [Jenkins](https://gago.io/tag/jenkins/) - [Cognitive Services](https://gago.io/tag/cognitive-services/) - [Computer Vision](https://gago.io/tag/computer-vision/) - [Polly](https://gago.io/tag/polly/) - [Progressive Web Apps](https://gago.io/tag/progressive-web-apps/) - [PRPL](https://gago.io/tag/prpl/) - [Preact](https://gago.io/tag/preact/) - [Restify](https://gago.io/tag/restify/) - [VSCode](https://gago.io/tag/vscode/) - [npm](https://gago.io/tag/npm/) - [github](https://gago.io/tag/github/) - [.NET Standard](https://gago.io/tag/net-standard/) - [JWT - JSON Web Token](https://gago.io/tag/jwt-json-web-token/) - [IL](https://gago.io/tag/il/) - [Networking](https://gago.io/tag/networking/) - [Consul](https://gago.io/tag/consul/) - [Azure](https://gago.io/tag/azure/) - [Amazon AWS](https://gago.io/tag/amazon-aws/) - [GridFS](https://gago.io/tag/gridfs/) - [Sharding](https://gago.io/tag/sharding/) - [Replicaset](https://gago.io/tag/replicaset/) - [Docker Swarm](https://gago.io/tag/docker-swarm/) - [Minio](https://gago.io/tag/minio/) - [Youtube-dl](https://gago.io/tag/youtube-dl/) - [Kubernetes](https://gago.io/tag/kubernetes/) - [gRPC](https://gago.io/tag/grpc/) - [CNCF](https://gago.io/tag/cncf/) - [PWA](https://gago.io/tag/pwa/) - [Cloud Native Computing Foundation](https://gago.io/tag/cloud-native-computing-foundation/) - [Serverless](https://gago.io/tag/serverless/) - [AOP](https://gago.io/tag/aop/) - [LCOW](https://gago.io/tag/lcow/) - [JavaScriptEngineSwitcher](https://gago.io/tag/javascriptengineswitcher/) - [ChakraCore](https://gago.io/tag/chakracore/) - [Prometheus](https://gago.io/tag/prometheus/) - [OpenTracing](https://gago.io/tag/opentracing/) - [Fluentd](https://gago.io/tag/fluentd/) - [containerd](https://gago.io/tag/containerd/) - [rkt](https://gago.io/tag/rkt/) - [CNI](https://gago.io/tag/cni/) - [Envoy](https://gago.io/tag/envoy/) - [Jaeger](https://gago.io/tag/jaeger/) - [Notary](https://gago.io/tag/notary/) - [TUF](https://gago.io/tag/tuf/) - [Vitess](https://gago.io/tag/vitess/) - [CoreDNS](https://gago.io/tag/coredns/) - [NATS](https://gago.io/tag/nats/) - [Linkerd](https://gago.io/tag/linkerd/) - [Rook](https://gago.io/tag/rook/) - [AMQP](https://gago.io/tag/amqp/) - [RESTHeart](https://gago.io/tag/restheart/) - [Scaleway](https://gago.io/tag/scaleway/) - [Meetup](https://gago.io/tag/meetup/) - [Newsletter](https://gago.io/tag/newsletter/) - [SonarQube](https://gago.io/tag/sonarqube/) - [dotNETConf](https://gago.io/tag/dotnetconf/) - [modeling](https://gago.io/tag/modeling/) - [NHibernate](https://gago.io/tag/nhibernate/) - [Entity Framework](https://gago.io/tag/entity-framework/) - [Jenkins Pipeline](https://gago.io/tag/jenkins-pipeline/) - [devweek2018](https://gago.io/tag/devweek2018/) - [devweek](https://gago.io/tag/devweek/) - [Oragon.Contexts](https://gago.io/tag/oragon-contexts/) - [Eventos](https://gago.io/tag/eventos/) - [carreira](https://gago.io/tag/carreira/) - [LinkedIn](https://gago.io/tag/linkedin/) - [shipper](https://gago.io/tag/shipper/) - [Booking.com](https://gago.io/tag/booking-com/) - [Blue/Green Deployment](https://gago.io/tag/blue-green-deployment/) - [Canary Deployment](https://gago.io/tag/canary-deployment/) - [devhero](https://gago.io/tag/devhero/) - [estratégia-técnica](https://gago.io/tag/estrategia-tecnica/) - [riscos](https://gago.io/tag/riscos/) - [Feedback](https://gago.io/tag/feedback/) - [troubleshooting](https://gago.io/tag/troubleshooting/) - [Blockchain](https://gago.io/tag/blockchain/) - [JWT](https://gago.io/tag/jwt/) - [Keycloak](https://gago.io/tag/keycloak/) - [Load Balancer](https://gago.io/tag/load-balancer/) - [Proxy Reverso](https://gago.io/tag/proxy-reverso/) - [SSL](https://gago.io/tag/ssl/) - [Web Servers](https://gago.io/tag/web-servers/) - [mvpconf](https://gago.io/tag/mvpconf/) - [Artificial Intelligence](https://gago.io/tag/artificial-intelligence/) - [Insights](https://gago.io/tag/insights/) - [Apache NIFI](https://gago.io/tag/apache-nifi/) - [Dicas](https://gago.io/tag/dicas/) - [IntelliCode](https://gago.io/tag/intellicode/) - [abstrações](https://gago.io/tag/abstracoes/) - [Blazor](https://gago.io/tag/blazor/) - [notification pattern](https://gago.io/tag/notification-pattern/) - [exceptions](https://gago.io/tag/exceptions/) - [Poltys](https://gago.io/tag/poltys/) - [Chrome](https://gago.io/tag/chrome/) - [Selenium](https://gago.io/tag/selenium/) - [WebDriver](https://gago.io/tag/webdriver/) - [csharp](https://gago.io/tag/csharp/) - [Istio](https://gago.io/tag/istio/) - [Oragon Architecture](https://gago.io/tag/oragon-architecture/) - [IIS](https://gago.io/tag/iis/) - [Docker Toolbox](https://gago.io/tag/docker-toolbox/) - [Docker for Windows](https://gago.io/tag/docker-for-windows/) - [Docker Desktop for Windows](https://gago.io/tag/docker-desktop-for-windows/) - [Linux Containers](https://gago.io/tag/linux-containers/) - [Sysinternals](https://gago.io/tag/sysinternals/) - [Putty](https://gago.io/tag/putty/) - [Coders in Rio](https://gago.io/tag/coders-in-rio/) - [xamarim](https://gago.io/tag/xamarim/) - [DDD](https://gago.io/tag/ddd/) - [System Design](https://gago.io/tag/system-design/) - [tmpfs](https://gago.io/tag/tmpfs/) - [volumes](https://gago.io/tag/volumes/) - [File System](https://gago.io/tag/file-system/) - [autonomia](https://gago.io/tag/autonomia/) - [governança](https://gago.io/tag/governanca/) - [dialogflow](https://gago.io/tag/dialogflow/) - [Apache Kafka](https://gago.io/tag/apache-kafka/) - [Service Mesh](https://gago.io/tag/service-mesh/) - [Oragon.Spring](https://gago.io/tag/oragon-spring/) - [mesa redonda](https://gago.io/tag/mesa-redonda/) - [Xamarin](https://gago.io/tag/xamarin/) - [Performance](https://gago.io/tag/performance/) - [Open Application Model](https://gago.io/tag/open-application-model/) - [Cloud Native Application Bundle](https://gago.io/tag/cloud-native-application-bundle/) - [dapr](https://gago.io/tag/dapr/) - [Specs](https://gago.io/tag/specs/) - [Cloud Native .NET](https://gago.io/tag/cloudnative-net/) - [Microsoft Orleans](https://gago.io/tag/microsoft-orleans/) - [Squidex](https://gago.io/tag/squidex/) - [Angular](https://gago.io/tag/angular/) - [Heroku](https://gago.io/tag/heroku/) - [rtmp](https://gago.io/tag/rtmp/) - [Azure Container Instance](https://gago.io/tag/azure-container-instance/) - [Jornada DevHero](https://gago.io/tag/jornada-devhero/) - [covid-19](https://gago.io/tag/covid-19/) - [Tesseract](https://gago.io/tag/tesseract/) - [OCR](https://gago.io/tag/ocr/) - [wsl2](https://gago.io/tag/wsl2/) - [Azure Functions](https://gago.io/tag/azure-functions/) - [mvp](https://gago.io/tag/mvp/) - [Ring Buffer](https://gago.io/tag/ring-buffer/) - [Oragon](https://gago.io/tag/oragon/) - [Open API](https://gago.io/tag/open-api/) - [kestrel](https://gago.io/tag/kestrel/) - [Kong API Gateway](https://gago.io/tag/kong-api-gateway/) - [osi](https://gago.io/tag/osi/) - [Cache](https://gago.io/tag/cache/) - [Edge](https://gago.io/tag/edge/) - [DockerShim](https://gago.io/tag/dockershim/) - [Azure DevOps](https://gago.io/tag/azure-devops/) - [GitHub Actions](https://gago.io/tag/github-actions/) - [special-full-page](https://gago.io/tag/special-full-page/) - [EasyNetQ](https://gago.io/tag/easynetq/) - [Mensageria](https://gago.io/tag/mensageria/) - [Elastic APM](https://gago.io/tag/elastic-apm/) - [Heartbeat](https://gago.io/tag/heartbeat/) - [Metricbeat](https://gago.io/tag/metricbeat/) - [ElasticHQ](https://gago.io/tag/elastichq/) - [Case](https://gago.io/tag/case/) - [CloudFlare](https://gago.io/tag/cloudflare/) - [Cloud Native](https://gago.io/tag/cloud-native/) - [Stream](https://gago.io/tag/stream/) - [Event Driven](https://gago.io/tag/event-driven/) - [SSL/TLS](https://gago.io/tag/ssl-tls/) - [RPC](https://gago.io/tag/rpc/) - [Solution Architecture](https://gago.io/tag/solution-architecture/) - [Overengineering](https://gago.io/tag/overengineering/) - [BDUF](https://gago.io/tag/bduf/) - [Complexidade Acidental](https://gago.io/tag/complexidade-acidental/) - [blackfriday](https://gago.io/tag/blackfriday/) - [Digital Ocean](https://gago.io/tag/digital-ocean/) - [Grafana](https://gago.io/tag/grafana/) - [OpenTelemetry](https://gago.io/tag/opentelemetry/) - [Continuous Delivery](https://gago.io/tag/continuous-delivery/) - [Distroless](https://gago.io/tag/distroless/) - [Ports and Adapters](https://gago.io/tag/ports-and-adapters/) - [Hexagonal](https://gago.io/tag/hexagonal/) - [Refactoring](https://gago.io/tag/refactoring/) - [Cluster](https://gago.io/tag/cluster/) - [Agnostic Services](https://gago.io/tag/agnostic-services/) - [GoHorse](https://gago.io/tag/gohorse/) - [Agile](https://gago.io/tag/agile/) - [Azure OpenAI](https://gago.io/tag/azure-openai/) - [Wasm](https://gago.io/tag/wasm/) - [Wasi](https://gago.io/tag/wasi/) - [Inteligencia Artificial](https://gago.io/tag/inteligencia-artificial/) - [Modelos GPT](https://gago.io/tag/modelos-gpt/) - [masstransit](https://gago.io/tag/masstransit/) - [.NET Aspire](https://gago.io/tag/net-aspire/) - [resiliência](https://gago.io/tag/resiliencia/) - [vpn](https://gago.io/tag/vpn/) - [NordVPN](https://gago.io/tag/nordvpn/) - [Open Telemetry](https://gago.io/tag/open-telemetry/) - [Observabilidade](https://gago.io/tag/observabilidade/) - [SaaS](https://gago.io/tag/saas/) - [Minimal API](https://gago.io/tag/minimal-api/) - [Gerência de Configuração](https://gago.io/tag/gerencia-de-configuracao/) - [Oragon.RabbitMQ](https://gago.io/tag/oragon-rabbitmq/) - [MediatR](https://gago.io/tag/mediatr/) - [Monolith](https://gago.io/tag/monolith/) - [Configuração](https://gago.io/tag/configuracao/) - [Reflection](https://gago.io/tag/reflection/) - [benchmark](https://gago.io/tag/benchmark/) - [Anthropic Claude Code](https://gago.io/tag/anthropic-claude-code/) - [Agent Skills](https://gago.io/tag/agent-skills/)