O que é EventStorming e como este formato de workshop é util em seus projetos ?

Walter Rodrigues
casasbahiatech
Published in
8 min readDec 9, 2022

Criado por Alberto Brandolini, o Event Storming é um formato de workshop flexível para exploração colaborativa de domínios de negócios complexos, ou seja, reúne os principais aspectos do DDD (Domain Driven Design) com o objetivo de fornecer uma estrutura para explorar domínios de negócios, reunir conhecimento e estabelecer as bases para uma linguagem oblíqua.

Quem deveria participar da cerimônia ?

Idealmente, um grupo diversificado de pessoas deve participar do workshop. Qualquer pessoa relacionada ao domínio de negócios em questão pode participar do event storming: isso inclui engenheiros, especialistas de domínio (domain experts), pessoal de produtos, testers, UI/UX, suporte, etc. Quanto mais pessoas com diferentes formações estiverem envolvidas, mais conhecimento será descoberto.

Tome cuidado para não tornar o grupo muito grande, no entanto. Cada participante deve ser capaz de contribuir com o processo, mas isso pode ser um desafio para grupos de mais de 10 participantes.

Por que eu deveria utilizar Event Storming ?

  • Avaliar a integridade de uma linha de negócios existente e descobrir as áreas mais eficazes para melhorias;
  • Explorar a viabilidade de um novo modelo de negócios de startup;
    vislumbrar novos serviços, que maximizem resultados positivos para todas as partes envolvidas;
  • Projetar software orientado a eventos de forma limpa e sustentável, para apoiar negócios em rápida evolução;
  • A natureza adaptativa do Event Storming permite conversas interdisciplinares sofisticadas entre as partes interessadas com diferentes formações, oferecendo um novo tipo de colaboração além dos limites de silo e especialização.

Facilitando a cerimonia do Event Storming

Modelo de trabalho presencial

Primeiro, você precisa de um grande espaço de modelagem. Uma parede inteira cria o melhor espaço de modelagem.

Retirado de https://learning.oreilly.com/library/view/what-is-domain-driven/9781492057802/ch08.html#stickies_idyoLQHe
Figura 1 — Ilustração de uma sala com quadro branco para cerimonia de Event-Storming

Um grande quadro branco também pode se adequar ao propósito, mas deve ser o maior possível. Você precisará de todo o espaço de modelagem que conseguir.

Post-its

Em seguida, você precisa de muitos post-its de cores diferentes. Os post-its serão usados ​​para representar diferentes conceitos do domínio de negócios, e cada participante deve poder adicioná-los livremente, portanto, certifique-se de ter cores suficientes e suficientes para todos.

As cores de post-its ((laranjas, azuis, amarelos, roxos e rosas)) tradicionalmente usadas para Event Storming são descritas na próxima seção. É melhor seguir essas convenções, se possível.

Canetas

Você também precisará de marcadores que sejam confortáveis para escrever nos adesivos. Novamente, o papel de pão não deve ser um gargalo para o compartilhamento de conhecimento — deve haver marcadores suficientes para todos os participantes.

Coffee Break

Uma sessão típica de Event Storming dura cerca de 2 a 4 horas, portanto, leve alguns lanches para reabastecer as energias do pessoal.

Sala de reunião

Finalmente, você precisará de uma sala espaçosa. Certifique-se de que não haja uma mesa enorme no meio que impeça os participantes de se moverem livremente e observarem o espaço de modelagem.

Além disso, as cadeiras são um grande impecilho para a sessões de Event Storming. Se você quer que as pessoas participem e compartilhem conhecimento, não se sentam em um canto e se afastem ? Retire as cadeiras da sala !

Modelo de trabalho remoto

Caso esteja fazendo esta cerimônia de forma remota, existem algumas ferramentas como Miro, Mural ou qualquer outra colaborativa que permita criar desenhos, escrever em post-its, etc. Basta todos terem acesso a ferramenta escolhida e iniciar o processo que descreveremos mais adiante.

Processo do Event Storming

Um workshop de Event Storming geralmente é conduzido em sete etapas. Durante cada etapa, o modelo é enriquecido com informações e conceitos adicionais.

Etapa 1: Exploração não estruturada (Unstructured Exploration)

O Event Storming começa com um brainstorming dos eventos de domínio relacionados ao domínio de negócios que está sendo explorado. Um evento de domínio é algo interessante que aconteceu no negócio e que as pessoas se importam. É importante formular eventos de domínio no pretérito, vide ilutração abaixo. Estes eventos estão descrevendo coisas que já aconteceram num passado.

Figura 2 — Eventos de Domínio

Durante esta etapa, todos os participantes estão pegando diversos post-its laranjas, anotando quaisquer eventos de domínio que vêm à mente e colando-os no quadro de modelagem.

Nesse estágio inicial, não há necessidade de se preocupar em ordenar eventos ou mesmo em redundância. Esta etapa é toda sobre o brainstorming das possíveis coisas que podem acontecer no domínio do negócio.

O grupo deve continuar gerando eventos de domínio até que a taxa de inclusão de novos eventos diminua significativamente.

Etapa 2: Linhas do tempo (Timelines)

Em seguida, os participantes examinam os eventos de domínio gerados e tentam organizá-los cronologicamente na ordem em que esses eventos ocorrem no domínio de negócios.

A ordenação dos eventos deve começar com o “cenário do caminho feliz”: o fluxo que descreve um cenário de negócios bem-sucedido.

Uma vez que o “caminho feliz” é feito, cenários alternativos podem ser adicionados — por exemplo, caminhos onde erros são encontrados ou diferentes decisões de negócios são tomadas. A ramificação do fluxo pode ser expressa como dois fluxos provenientes do evento anterior ou com setas desenhadas na superfície de modelagem, conforme mostrado na imagem abaixo:

Figura 3 — Fluxo de eventos

Nesta etapa também é a hora de corrigir eventos incorretos, remover duplicatas e, é claro, adicionar eventos ausentes, se algum for descoberto.

Etapa 3: Comandos (Commands)

Enquanto um evento de domínio descreve algo que já aconteceu, um comando descreve o que desencadeou o evento ou o fluxo de eventos. Os comandos descrevem as operações do sistema e, ao contrário dos eventos de domínio, são formulados no imperativo. Por exemplo:

  • Publicar campanha
  • Reverter transação
  • Enviar pedido

Os comandos são escritos em post-its azuis claros e são colocados no quadro antes dos eventos que podem ser produzidos por eles. Se um comando específico for executado por um ator em uma função específica, as informações do ator serão adicionadas ao comando em um pequeno post-it amarelo, conforme ilustrado na figura abaixo:

Figura 4 — Um comando e seus eventos de domínio resultantes

Etapa 4: Políticas (Policies)

Quase sempre, existem comandos que são adicionados ao modelo, mas não possuem nenhum ator específico associado a eles. Durante esta etapa, você procura políticas de automação que possam executar esses comandos.

Uma política de automação é um cenário em que a execução de um comando é acionada por um evento. Em outras palavras, um comando é executado automaticamente quando ocorre um evento de domínio específico.

Na superfície de modelagem, as políticas são representadas com post-its roxos conectando eventos a comandos, conforme mostrado na figura abaixo:

Figura 5 — Uma política de automação que aciona o comando “enviar pedido” quando o evento “envio aprovado” é observado

Se os eventos e comandos estiverem distantes, uma seta pode ser desenhada na superfície de modelagem para conectá-los.

Etapa 5: Sistemas externos (External Systems)

A quinta etapa é sobre o aumento do modelo com sistemas externos. Um sistema externo é definido como qualquer sistema que não faz parte do domínio que está sendo explorado. Ele pode executar comandos (entrada) ou pode ser notificado sobre eventos (saída).

Os sistemas externos são representados por post-its de cor rosa, vide imagem abaixo:

Figura 6 — Um sistema externo usado tanto como entrada quanto como saída para o sistema que está sendo explorado

Ao final desta etapa, todos os comandos devem ser executados por atores, acionados por políticas ou chamados por sistemas externos.

Etapa 6: Aggregates

Uma vez representados todos os eventos e comandos, os participantes podem começar a pensar em organizar os conceitos relacionados em agregados. Um agregado recebe comandos e produz eventos.

Os agregados são representados como grandes post-its de cor amarela, com comandos à esquerda e eventos à direita:

Figura 7 — Comandos e eventos de domínio organizados

Etapa 7: Contextos delimitados (Bounded Contexts)

A última etapa de uma sessão de Event Storming é procurar agregações relacionadas entre si, porque representam uma funcionalidade intimamente relacionada ou porque são acopladas por meio de políticas. Os grupos de agregados formam candidatos naturais para limites de contextos limitados, conforme mostrado na figura abaixo:

Conclusão

Empresas que não nasceram digitais e sempre foram cobradas pela entrega, com toda certeza devem ter um nível de domínios acoplados e desorganizados por conta da sua realidade. É importante que nós arquitetos, engenheiros sejamos agentes de transformação e organização destes domínios que estão espalhados por todo canto da empresa.

Event Storming é uma das técnicas que vai te ajudar a ter um modelo de domínios mais estruturado e padronizado, para que direcione sua empresa para uma estrutura mais organizada e desacoplada pensando em escala no médio e longo prazo. Além disso, existe um ganho gigantesco sobre o que é o próprio processo. Sabemos que muitas vezes o conhecimento fica concentrado em algumas pessoas, desta forma, a sessão ajuda a pulverizarmos de forma a ter o conhecimento partilhado em partes interessadas, alinhamento e descobertas de modelos conflitantes e por ultimo, a formação da linguagem ubíqua (linguagem do negócio e o desenvolvedor).

Lições aprendidas

  • Pode parecer simples, mas é muito difícil explicar o que é um evento para pessoas não técnicas.
  • No primeiro passo, já tentar fazer o brainstorming classificando, ordenando e removendo os eventos duplicados. Se seguirmos os passos “by-the-book” perdemos muito tempo no segundo passo citado acima e as pessoas começam a perder atenção e foco na cerimônia.
  • O facilitador ser propriamente um agilista ou ter bons skills de agilista, mas com forte conhecimento de negócio e tecnico, para ser bastante provocativo e extrair o melhor de cada pessoa que está ali na cerimônia.
  • Domain experts, especialistas e seniores muitas vezes não tem tanto tempo de agenda disponível. Portanto o facilitador precisa extrair o melhor possivel e no menor tempo possivel de cada envolvido.
  • Fechar a linguagem ubíqua e deixar este material publicado um repositório da empresa para que todos vejam.
  • Caso a cerimonia seja feita presencialmente, não esquecer de tirar uma foto do quadro branco e posterior passar estes dados para uma ferramenta para que não se perca o que foi feito. Lembre-se que post-its descolam, rasgam ou mesmo somem. rsrs
  • Não desista se os primeiros Event Stormings não chegarem no objetivo que foi planejado inicialmente. A prática leva a perfeição, ou seja, demora um certo tempo para aprender a tocar a cerimônia de forma efetiva, com as provocações devidas e com os resultados esperados.

Referências

Traduzido e complementado do curso What Is Domain-Driven Design?, Vladik Khononov, O’Reilly Media: https://learning.oreilly.com/library/view/what-is-domain-driven/9781492057802/ch08.html

Introducing EventStorming — An act of deliberate collective learning, Alberto Brandolini: https://www.eventstorming.com/book/

--

--

Walter Rodrigues
casasbahiatech

Distinguished Engineer at Via, Hands-On Software Architect | Professor | 2 MBAs (Software Engineering / DevOps & Integration Architecture)