Clean Architecture em NodeJS
[1] A apresentação discute os princípios da Clean Architecture e como aplicá-la em projetos NodeJS, incluindo a separação das camadas de domínio, casos de uso, interfaces e infraestrutura. [2] É explicado como mapear o contexto do domínio usando Context Mapping e como desenvolver uma linguagem ubíquita para melhor comunicação entre times. [3] Referências bibliográficas e artigos sobre arquitetura limpa, domain-driven design e padrões relacionados são fornecidos.
4. Hexagonal Architecture
Alistair Cockburn (2005)
ANTES DO
CLEAN ARCHITECTURE
Onion Architecture
Jeffrey Palermo (2008)
DCI (Data, Context, Interaction)
James O. Coplien (2010)
Screaming Architecture
Robert C. Martin (2011)
5. "Uma boa arquitetura torna o sistema fácil de entender, desenvolver, manter e
implantar. O objetivo final é minimizar o custo da vida útil do sistema e maximizar
a produtividade do programador."
Robert C. Martin (Clean Architecture)
9. Frameworks and Drivers
● Camada mais externa
● Pouco código (glue code)
● Detalhes (código de baixo risco)
● Express.js bootstrap, MongoDB connection,
IoC containers, etc.
13. Interface and Adapters
● Camada de tradução entre a infraestrutura e
as entidades e use cases
● Formato mais conveniente possível para os
clientes externos e internos
● Presenters, models, views, controllers, etc.
17. Use Cases
● Regra de negócio específica da aplicação
● Maior tempo de desenvolvimento desprendido
● Mudanças das camadas externas não afetam essa camada
(e vice-versa)
● Mudanças nos detalhes da operação modificam a camada
24. "Organizações que desenvolvem sistemas de software tendem a produzir
sistemas que são cópias das estruturas de comunicação dessas organizações."
Melvin E. Conway (Abril de 1968)
26. Context Map
● Definição: uma ferramenta visual para identificar as
relações entre Bounded Contexts
● Compartilhar conhecimento (documentação)
● Features, clientes, eventos, dependências externas,
oportunidades de melhoria, etc.
33. Ubiquitous Language
● Definição: uma linguagem única universal compartilhada
pelo time, desenvolvedores, domain experts e stakeholders
● Expressada em termos do modelo de domínio
● Elimina contradições e ambiguidades
● Evolui com o tempo
44. Arquitetura
● Descomplicando a Clean Architecture - Luiza Labs
● DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all
together - Herberto Graça
● The Clean Architecture - Robert C. Martin
45. Domain Driven Design
● Domain-driven design and event storming workshop - Binary
Consulting
● Developing the ubiquitous language - Felipe de Freitas Batista
● Context mapping in Domain Driven Design - Redgate