$30 off During Our Annual Pro Sale. View Details »

DDD e Team Topologies como estes conceitos podem te dar pistas de como montar seus times de engenharia!!!

DDD e Team Topologies como estes conceitos podem te dar pistas de como montar seus times de engenharia!!!

Bounded Contexts, Subdomains e Context Mapping sao palavras que ocorrem no dia-a-dia das pessoas que praticam Domain Driven Design, especialmente no que tange a parte estrategica do DDD. Definir os limites dos times e os contextos que eles atuam podem acelerar suas entregas de software de maneira frequente e consistente.

Claudio Eduardo de Oliveira

September 19, 2023
Tweet

More Decks by Claudio Eduardo de Oliveira

Other Decks in Technology

Transcript

  1. DDD && Team
    Topologies
    Como esses conceitos podem te dar pistas de como montar
    times de engenharia

    View Slide

  2. Origem do meu interesse!!!
    Naquele momento eu tinha um bom entendimento
    do que era Domain-Driven Design mas eu precisava
    entender uma “estratégia” de como aplicá-lo na
    estrutura que a empresa se organiza (times).
    2019/2020

    View Slide

  3. Agenda
    Domain Driven
    Design
    Entendendo o
    princípio da
    nossa estratégia
    Team
    Topologies
    Ideando os seus
    times para
    maximizar as
    entregas
    DDD & Team
    Topologies
    Misturando os
    conceitos e
    aplicando

    View Slide

  4. whoami
    Cláudio E. de Oliveira
    Arquiteto de Soluções @JohnDeere
    Professor @MBA FIAP
    Kong Champion

    View Slide

  5. Alerta Bala de prata

    View Slide

  6. Domain-Driven
    Design
    Entendendo um pouco!!!!
    01.

    View Slide

  7. —Martin Fowler
    Is an approach to software development that
    centers the development on programming a
    domain model that has a rich understanding
    of the processes and rules of a domain.
    https://martinfowler.com/bliki/DomainDrivenDesign.html

    View Slide

  8. Domain Driven
    Design
    O termo foi cunhado por Eric Evans
    que escreveu o famoso livro azul e
    catalogou uma série de estruturas que
    nos ajudam a entender o negócio e
    modelá-lo de uma maneira que
    represente o mais próximo possível da
    realidade.
    Ubiquitous Language

    View Slide

  9. Estratégica
    Entendendo e
    modelando o
    negocio
    Tática
    Depois de definido
    os contextos
    delimitados
    começamos a
    trabalhar em cada
    um deles
    DDD e suas fases

    View Slide

  10. Neste momento estamos desenhando a Big Picture
    do problema, define as fronteiras dos domínios.
    Nesta fase encontramos os domínios, subdominios
    e contextos delimitados.
    Estratégica

    View Slide

  11. View Slide

  12. Event Storming Domain Charts
    Cognitive Load
    Assessment
    Métodos de Mapeamento
    Problema
    Série de eventos
    mapeados de
    maneira
    cronológica
    Entendendo o
    valor de cada
    subdomínio
    Quanto os
    subdomínios são
    complicados??

    View Slide

  13. Event
    Storming
    From Hands-on Domain-Driven Design by Example book

    View Slide

  14. Categorias subdominios

    View Slide

  15. Nossos subdomínios
    Subdomains from Hands On Domain Driven Design Book

    View Slide

  16. Domain
    Charts
    https://github.com/ddd-crew/core-domain-charts

    View Slide

  17. Cognitive Load Assessment
    Subdomains from Hands On Domain Driven Design Book

    View Slide

  18. Team
    Topologies
    Acelerando as entregas
    Dos times de engenharia!!!
    02.

    View Slide

  19. Alerta Bala de prata

    View Slide

  20. Team Topologies
    Team topologies is a clear, easy-to-follow approach to
    modern software delivery with an emphasis on
    optimizing team interactions for flow.
    Definido por Matthew Skelton e
    Manuel Pais

    View Slide

  21. Team Topologies
    Define tipos de times e
    maneiras que eles
    interagem com a
    “consciência” da Conway’s
    law, Carga Cognitiva e
    evolução organizacional
    responsiva para
    desenvolver software.
    https://teamtopologies.com/

    View Slide

  22. Flow of change

    View Slide

  23. View Slide

  24. Tipos de Times
    Stream-aligned
    Enabling
    Alinhado com um fluxo de trabalho de um
    segmento de dominio / subdominio
    Ajuda os times “Stream-aligned” a quebrar
    impedimentos e/ou capacidades não
    atendidas pelo time.
    Complicated
    Subsystem
    Onde um conhecimento específico é
    necessário
    Platform Team
    Cria e mantém produtos internos para acelerar a
    entrega dos times “Stream-aligned”

    View Slide

  25. Tipos de Interação
    Collaboration
    X-as-a-Service
    Trabalham junto por um período definido de
    tempo para descobrir coisas (apis,
    tecnologias)
    Um time provê o serviço e outro time
    consome “as a Service”
    Facilitation Um time ajuda e realiza mentorias para outro
    time

    View Slide

  26. View Slide

  27. DDD & Team
    Topologies
    Aplicando os conceitos de
    maneira integrada!!!!
    03.

    View Slide

  28. Conway’s Law
    Esteja consciente do modelo adotado
    pela sua companhia, entenda como as
    equipes se dividem para realizar a
    entregas, não “enfrente” o modelo,
    comunicacao.
    ● Tribos
    ● Product Families
    Tente alinhar os subdomínios
    e Bounded Contexts com a
    estrutura.

    View Slide

  29. Independent
    Value Streams
    Uma Value Stream e uma sequência
    de atividades que leva a criação de valor.
    ● Criar valor para um domínio
    ● Objetivo de negócio
    ● Um Time e DONO = Stream-aligned
    ● Alinhada com subdomínios = Bounded Context

    View Slide

  30. From Architecture Modernization Book

    View Slide

  31. From Architecture Modernization Book

    View Slide

  32. DICA
    Tente encontrar as Independent
    Value Streams, elas podem estar
    na definição dos Bounded
    Contexts

    View Slide

  33. Bounded Contexts bem definidos reduzem
    o acoplamento, que na prática reduz a
    dependência dos times, que na prática
    ACENTUA o poder de entrega dos times
    Importante

    View Slide

  34. Importante
    Alta carga cognitiva, em geral desacelera a
    entrega de valor
    Alta carga cognitiva pode indicar que um Subdomínio /
    Bounded Context ainda não foi muito bem explorado.

    View Slide

  35. DICA
    A linguística pode te
    ajudar na definição dos
    Bounded Contexts

    View Slide

  36. Times Stream-aligned e modelo de interação
    X-as-a-service, esta combinação reduz a
    coordenação de roadmaps entre os times
    Favoreça

    View Slide

  37. Conclusões
    Um pouco do que eu aprendi!!
    04.

    View Slide

  38. Ao definir Bounded Contexts e
    Subdomínios prefira uma granularidade
    mais “grossa” senao tiver certeza, e mais
    difícil separar do que juntar
    Bounded Contexts

    View Slide

  39. BIG Design Upfront
    Em geral tentar pensar TUDO de uma
    vez, causa DEMORA. Seja EVOLUTIVO
    CUIDADO

    View Slide

  40. Tente distribuir a Carga Cognitiva entre
    os times de maneira que um time não
    seja DONO de mais de um Subdomínio /
    Bounded Context complexo
    Distribuição

    View Slide

  41. DDD também é sobre descobertas,
    evolutivamente é possível ir aprendendo
    o negócio, as coisas nao sao estaticas!!
    Iteração

    View Slide

  42. Referências

    View Slide

  43. Outras Referências
    ….esses eu nao li 100%

    View Slide

  44. Referências
    Core Domain Charts template Draw.io
    https://github.com/ddd-crew/core-domain-charts
    Independent Value Streams with DDD
    https://academy.teamtopologies.com/courses/independent-val
    ue-streams-with-domain-driven-design
    DDD do jeito certo (Elemar Júnior)
    https://www.youtube.com/playlist?list=PLkpjQs-GfEMN8CHp7tIQ
    qg6JFowrIX9ve

    View Slide

  45. CREDITS: This presentation template was created by Slidesgo,
    including icons by Flaticon, and infographics & images by Freepik
    Perguntas????
    [email protected]
    Obrigado!
    Please keep this slide for attribution

    View Slide