No artigo entitulado "Screaming Architecture", Uncle Bob faz uma analogia entre a planta de um prédio e a arquitetura do software: a planta ilustra de forma clara quando se trata de uma casa ou de uma biblioteca. Sendo assim, uma boa arquitetura deveria deixar claro do que se trata o software (por ex, é uma... Continuar Lendo →
CQRS, interfaces, queries, ORMs….cuidado!
Neste artigo, veremos um pouco de CQRS, alguns erros cometidos e lições aprendidas em minhas primeiras incursões a este padrão. Espero que sirva de alerta para os marinheiros de primeira viagem quanto a algumas escolhas de design e ferramentas. CQRS - UMA BREVE INTRODUÇÃO CQRS (Command/Query Responsibility Segregation) é um padrão cuja ideia basicamente consiste... Continuar Lendo →
Lógica de negócio vs lógica de aplicação
Quando começamos a trabalhar com a camada de aplicação, popularizada nos últimos anos pelo Domain-Driven Design, ficam dúvidas sobre sua verdadeira função e sobre qual código devemos colocar nela. Escrevi dois artigos anteriormente que ajudam a elucidar essas questões aqui e aqui. Neste terceiro, mostro uma divisão mais clara entre lógica de negócio e lógica... Continuar Lendo →
Hangout Domain-Driven Design (parte 2)
Ontem rolou outro hangout sobre Domain-Driven Design (DDD). Apesar do título, a conversa foi mais sobre Arquitetura de Software do que DDD: falamos de um monte de coisa como ORMs, Mappers, Camada de aplicação, Dependency Injection, microservices, entre outros. Claro, também falamos sobre Bounded Contexts e Domain Events do DDD. Vejam aqui: https://www.youtube.com/watch?v=jFHHh-yYStc Comentem! []s
Implementando serviços de aplicação transacionais
Neste artigo, voltamos aos serviços de aplicação, mostrando uma forma de implementá-los com o controle transacional, de um modo totalmente extensível. Caso ainda não tenha feito, recomendo a leitura <deste post> - sobre a camada de aplicação - para melhor contextualizá-lo sobre onde os serviços de aplicação se encaixam em uma arquitetura em camadas. Vale... Continuar Lendo →