Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Alerta Bala de prata

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

—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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

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??

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Categorias subdominios

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Cognitive Load Assessment Subdomains from Hands On Domain Driven Design Book

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Alerta Bala de prata

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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/

Slide 22

Slide 22 text

Flow of change

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

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”

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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.

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

From Architecture Modernization Book

Slide 31

Slide 31 text

From Architecture Modernization Book

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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.

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

Referências

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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