Hanami: elemento para arquitetura evolucionária e conciso design de software

Hanami: elemento para arquitetura evolucionária e conciso design de software

Hanami se propõe a ser um framework web completo ainda que simples e leve para o desenvolvimento de aplicações e APIs. Compramos a ideia e a levamos para outros níveis!

Nesta apresentação, mostrarei como, mesmo ainda na versão beta _(ainda sob o nome Lotus-rb)_, este framework possibilitou construirmos nosso Core API, evoluindo a arquitetura desde o Layered Architecture até Hexagonal e Eventos, buscando alinhar-se ao negócio através da Ubiquitous Language e Tactical & Strategical Patterns do Domain-Driven Design ao longo destes 14 meses que estamos rodando com o Hanami em produção.

Inspire-se com os desafios vencidos ao longo deste processo e possíveis próximos passos!

C0468655a0200c06a9094f647f633980?s=128

Hélio Costa e Silva

July 22, 2017
Tweet

Transcript

  1. 3.

    1. Domain-Driven Design 2. Arquitetura de Software 3. Hanami 4.

    Ligando os pontos: Arquitetura evolucionária, DDD e Hanami 5. Fechamento Spoilers Agenda
  2. 9.

    Domain Driven Design Domínio Nomes Lead Customer Contexto de: Loan

    Application Contexto de: Customer Account Contato Pesquise por Context Mapping & Bounded Context
  3. 11.

    Domain Driven Design Domínio Nomes Lead Customer Contexto de: Loan

    Application Contexto de: Customer Account Modelo Lead <Entity> + nome + valor de empréstimo + Contato Contato <Value Object> + falar com + telefone + email Contato Entities Repositories Value Objects Application Services Façades Factories Domain Services Domain Events Builders Infra Services
  4. 12.

    Domain Driven Design Bater o dedo do pé na quina

    da cama (em um dia frio) DOR E AGONIA!!!! Resulta em Pé inchado Espectadores tiram sarro da tua cara Linha do tempo dos fatos
  5. 13.

    Domain Driven Design Ação Reação Interessados Bater o dedo do

    pé na quina da cama (em um dia frio) DOR E AGONIA!!!! Resulta em Pé inchado Espectadores tiram sarro da tua cara Linha do tempo dos fatos
  6. 14.

    Domain Driven Design Domain Events ações no domínio, sendo as

    reações parte da Ubiquitous Language Pesquise por Event Storming
  7. 19.

    Arquitetura de Software ü Separação simples de implementar (e explicar)

    ü Atende software em fase inicial ou/e pequenos Arquitetura em Camadas (Layered Architecture)
  8. 22.

    Arquitetura de Software Ports & Adapters Alistair Cockburn 199x (1993-1999)

    Ivar Jacobson 1992 Use Case Driven Hexagonal Clean Architecture / Screaming Architecture Alistair Cockburn 2005 Uncle bob 2011
  9. 25.

    Arquitetura de Software ”Many people have been getting confused over

    what CQRS is. They look at CQRS as being an architecture; it is not. ” Greg Young @ http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/
  10. 26.

    Arquitetura de Software Greg Young ”Starting with CQRS, CQRS is

    simply the creation of two objects where there was previously only one.”
  11. 35.

    DDD + Arquitetura + Hanami Router View (view object) Validations

    Model Hanami-rb project name Controller (através do Action class)
  12. 36.

    DDD + Arquitetura + Hanami § Cada módulo (Bounded Context)

    deve ser independente. § Objetos podem assumir o mesmo nome mas com responsabilidades diferentes.
  13. 40.

    Creditas & Hanami, DDD e tudo isso que você falou

    ae Layered Architecture Out/2015 Domain Events CQRS ? Hanami (beta v0.5) Dez/2015 Melhorias na Presentation Layer Form Objects Junho/2016 Fronteira entre Form Object & Domain Application Service Ago/2016 Layered Architecture Hexagonal Architecture Abril/2017