Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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
  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
  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
  4. —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
  5. 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
  6. 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
  7. 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
  8. 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??
  9. 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
  10. 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/
  11. 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”
  12. 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
  13. 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.
  14. 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
  15. 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
  16. 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.
  17. 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
  18. BIG Design Upfront Em geral tentar pensar TUDO de uma

    vez, causa DEMORA. Seja EVOLUTIVO CUIDADO
  19. 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
  20. DDD também é sobre descobertas, evolutivamente é possível ir aprendendo

    o negócio, as coisas nao sao estaticas!! Iteração
  21. 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
  22. 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