Quando estiver projetando um serviço, recomendamos considerar, também, escrever a(s) biblioteca(s) “cliente” para consumir esse serviço. Essa abordagem é indicada há muito tempo e é seguida, inclusive, pelo Netflix. Segundo Josh Evans, em sua palestra no QCON San Francisco, a Netflix considera a implementação da(s) biblioteca(s) cliente como parte integrante da implementação dos microsserviços. Ele […]
Usando OpenTracing e Jaeger em serviços distribuídos ASP.net Core
No post anterior, apresentamos OpenTracing e Jaeger. Agora, vamos mostrar como instrumentar serviços distribuídos ASP.net core utilizando essas tecnologias. Explicando o exemplo No exemplo desse post, queremos que dois serviços (A e B) operem juntos para atender requisições do usuário. Queremos que o tracing dessas requisições seja persistido no Jaeger. Todas as requisições são feitas […]
The Elements of Computing Systems
The Elements of Computing Systems, de Noam Nisam e Shimon Schocken, é um clássico. Também é um ótimo recurso para todos aqueles interessados em saber como um computador funciona (tanto software quanto hardware). Nos primeiros dias da ciência da computação, a interação de hardware, software, compiladores e sistemas operacionais era simples o suficiente para ser […]
HttpClientFactory: solução para os problemas do HttpClient
Em um post anterior, tratamos sobre como usar e como não usar o HttpClient em .NET. Entretanto, não mencionamos uma abordagem mais recente, proposta pela própria Microsoft: HttpClientFactory. NOTA: Há um excelente post sobre HttpClientFactory, da Microsoft, indicando as vantagens, com diversos exemplos explorando suas features. Recomendamos muito a leitura do post da Microsoft por […]
Simplificando sistemas concorrentes e distribuídos com modelo de atores
O modelo de atores é uma alternativa fascinante e relativamente simples para o desenvolvimento de sistemas distribuídos ou concorrentes. Exceto pela liberdade de de adoção tecnológica, entrega quase todos os benefícios geralmente associados a microsserviços com uma parcela reduzida de complexidade (consequentemente, custo). O modelo de atores não é uma ideia nova. O modelo foi proposto […]
Event Notifications
After some time seeing companies adopting (sometimes without real justification) microservice-based architectures, we see a growing interest in event-driven architectures. In this and other posts, we will introduce some key concepts and recurring patterns for using events in software development. Let’s start with systems that implement event notifications. Understanding the basics Imagine a system where […]
Comece pela UX, mesmo para uma API
No post anterior, recomendamos prototipar UX para explicitar a linguagem onipresente de um domínio. Entretanto, por entendermos que UX é muito mais do que as “telinhas” de um sistema, continuamos nesse tema. Nesse post, trataremos sobre como usar protótipos de UX para explicitar a linguagem onipresente de um domínio em projetos de API. Dê ênfase […]
Comece pela UX
Há duas afirmações recorrentes associadas a DDD: 1) é mais recomendável para o desenvolvimento de sistemas com domínios mais complexos e; 2) deve começar pela explicitação da linguagem onipresente do domínio. Um sistema CRUD não precisa de DDD! Qualquer tentativa de adotar práticas e padrões de DDD em sistemas CRUD acaba conduzindo a complexidades desnecessárias […]
Inversão de Strings
Há algum tempo aponto o “abuso” do GC é uma das principais causa para problemas de performance em produção. Nesse post, discuto formas eficientes (e não eficientes) para inverter strings. (SPOILER: Vamos obter um ganho de 18x) Este post é baseado em uma excelente apresentação do Ayende, ainda não disponível em vídeo. Usando LINQ A […]
Reactive Messaging Patterns with the Actor Model
Reactive Messaging Patterns with the Actor Model, de Vaugh Vernon, apresenta uma coleção consistente de padrões essenciais para o desenvolvimento aplicações baseadas no modelo de atores (base para tecnologias como ERLANG, Akka, Akka.net e Orleans). Escrito por Vaugh Vernon, reconhecido por seus livros e seminários sobre DDD, tem linguagem simples e acessível, mesmo para aqueles […]