Close
Quero conhecer
Quero conhecer
Redação Bankly 08/09/2023 10:00:00 27 min leitura

API Design e Event Storm: potencializando o trabalho de produtos de tecnologia

*Artigo escrito por Fernando Seguim, Head de Engenharia e Produtos do Bankly

Com a transformação digital em andamento e a necessidade crescente de soluções de TI robustas e eficientes, o papel dos profissionais de produtos - Product Owners (POs), Product Managers (PMs) e Product Designers (PDs) - está evoluindo rapidamente. Eles agora estão diretamente envolvidos em aspectos técnicos do desenvolvimento do produto, como o design das APIs que servirão para integração do Backend com o Frontend e a definição de quais eventos os sistemas deve produzir para atender aspectos de rastreabilidade, observabilidade e até mesmo gerar insights para o negócio. 
 

Este artigo fornece uma visão abrangente dessas metodologias e como elas podem ser efetivamente implementadas por profissionais da área de produtos. 

 

API Design: boas práticas no desenvolvimento de APIs 

Profissionais de produtos não precisam se tornar especialistas em API, mas entender os conceitos básicos pode ajudá-los a se comunicar efetivamente com as equipes de desenvolvimento e garantir que as APIs atendam às necessidades dos clientes que integrarão com elas. Alguns aspectos importantes na hora de pensar no design de uma API são a estrutura dos dados, a forma como as informações são recuperadas e manipuladas, a segurança e a eficiência. 

O API Design é o processo de criação de APIs, que busca conhecer as personas que utilizarão as interfaces, definir o domínio do problema a ser resolvido, os endpoints, métodos e contratos de requisição e resposta e testes de validação de hipóteses através de mocks antes mesmo de colocá-las na esteira de desenvolvimento. 

Identificar quem vai usar a API é crucial para projetar uma API que atenda às suas necessidades. Isso pode incluir desenvolvedores internos, terceiros, ou até mesmo o público em geral se a API for pública. Compreender as necessidades e restrições desse público pode ajudar a informar decisões sobre funcionalidade, estrutura, protocolos de segurança, idioma das propriedades, mensagens de erro e documentação. 

 

Usar técnicas de modelagem de domínio, como a modelagem de entidade-relacionamento (ER model), Design Orientado pelo Domínio (DDD), Modelagem Orientada a Objetos (OOM), para entender e representar as entidades do domínio e como elas interagem, definir uma linguagem ubíqua e coesa entre a área de negócios e tecnologia pode ajudar a dar clareza sobre o domínio do problema que a API está tentando resolver, suavizando a curva de entendimento na hora do desenvolvimento. 

Abaixo temos um exemplo de modelagem orientada a domínio: 

Exemplo de Modelagem Orientada ao Domínio.

Exemplo de Modelagem Orientada ao Domínio

 

 

Ser capaz de definir os endpoints e métodos da API, em que cada endpoint deve representar uma entidade distinta ou um conceito no domínio do problema. Empregar de forma adequada os métodos HTTP comuns como GET (para recuperar dados), POST (para criar dados), PUT (para atualizar dados existentes) e DELETE (para remover dados), pode garantir que as APIs se tornem mais expressivas, seguras, eficientes e padronizadas, proporcionando ao desenvolvedor = uma experiência de uso mais intuitiva, consistente e confiável, além da fácil integração com outros sistemas ou aplicações. 

O contrato de API define a forma como ela se comportará e como os desenvolvedores podem interagir com ela. Isso inclui o formato dos payloads de requisição e resposta, os códigos de status HTTP que a API retornará em caso de sucesso e falha, e a forma como ela lidará com erros. 

 

Exemplo de API Design completo usando Postman

 

Uma vez que a API está projetada, é crucial testá-la antes mesmo de iniciar o seu desenvolvimento. Para isso, técnicas como Mocks e Stubs que simulam o comportamento da API em cenários de sucesso e falha ajudam a validar a usabilidade e o quão complexo será a integração. 

Estabelecer uma estratégia de versionamento adequada para sua API é fundamental para orientar sua evolução e minimizar impactos decorrentes de alterações contratuais. O Versionamento Semântico (SemVer) é uma abordagem eficaz que utiliza um formato de três números (major.minor.patch) para indicar, respectivamente, mudanças significativas, introdução de novas funcionalidades e correções de erros.  

Essa estratégia oferece um significado aprofundado para cada tipo de alteração, tornando o processo de versionamento mais robusto e preciso. Há também outras estratégias, como o Versionamento por Data, que geralmente reflete a data de lançamento da versão, e o Versionamento por Revisão, que incrementa um único número a cada mudança substancial na API. Contudo, esses métodos tendem a fornecer menos detalhes sobre a natureza das mudanças se comparados ao SemVer. Além disso, definir como a versão da API será informada, via URL, Header ou Query String, ajudam tanto na rastreabilidade, como na flexibilidade no uso das APIs.  


Exemplo de versionamento semântico

 

Event Storming: o que é? 

O Event Storming é uma técnica de modelagem e exploração do domínio que se concentra na descoberta e mapeamento de eventos (ou seja, algo que acontece em um sistema) para ajudar a entender o fluxo de negócios, os processos e as interações entre diferentes partes de um sistema. É um método interativo e colaborativo, semelhante a um brainstorm, que ajuda as equipes a obterem uma visão compartilhada do sistema e a identificarem potenciais problemas ou melhorias. 

Assim como no API Design, o Event Storming se utiliza de técnicas semelhantes de design, passando desde a definição dos nomes dos eventos, para que expressem com clareza o que aconteceu no sistema, até os dados que serão compartilhados, visando a confiabilidade e seguranca da informação. 

Antes de passar pelas técnicas que ajudam a facilitar uma sessão de Event Storming, é importante compreender os tipos de eventos que os sistemas podem gerar e com isso tirar melhor proveito deles. São eles:  

  • Eventos de domínio: são eventos significativos que acontecem dentro do domínio do negócio e geralmente são resultado de ações do cliente ou mudanças no estado do sistema. Esses eventos são expressos no passado, como "Conta Criada" ou "Cadastro Aprovado", por exemplo. 
  • Eventos de notificação: são gerados quando há interações entre diferentes sistemas. Geralmente o sistema que emite o evento não aguarda uma resposta do consumidor. Esse tipo de evento é bastante útil para aumentar o desacoplamento entre sistemas e viabiliza fluxos de trabalho mais coreografados. Um exemplo pode ser “Cadastro Aprovado”, em que o consumidor e outros componentes do sistema receberão esse evento e iniciarão uma próxima etapa do fluxo de trabalho. Todavia, o sistema emissor do evento pode querer receber uma confirmação ou uma resposta do consumidor, criando um acoplamento necessário, para dar sequência em fluxo de trabalho integrado onde há um orquestrador gerenciando o processo. Um exemplo disso pode ser um sistema de transação financeira, em que a transação é enviada para análise e aguarda uma resposta dessa análise para concluir seu fluxo de trabalho.  
  • Eventos de mudança de estado: são eventos que ocorrem quando o estado de uma entidade no sistema muda. Por exemplo, quando um cliente altera o seu endereço cadastrado, e o sistema, após registrar a informação em seu banco de dados, publica um evento para que sistemas consumidores conheçam o novo estado da entidade. Esse tipo de evento viabiliza que os sistemas tenham maior desacoplamento e sejam mais autônomos na execução de seus fluxos de trabalhos. 

Conhecer e saber cominar esses 3 tipos de eventos é fundamental para criar uma estratégia de eventos que atendam às necessidades do negócio. Mas retomando ao Event Storming, essa técnica é projetada para ser eficiente, interativa e, por que não, divertida. Ao reunir os principais participantes na mesma sala (física ou virtual), o Event Storming tem a vantagem de ser rápido, simples, engajador e eficaz.  

Definir as pessoas certas para participar da sessão de Event Storming é parte vital para o sucesso da interação. Essas pessoas saberão fazer as perguntas adequadas e/ou terão as respostas necessárias para as questões levantadas. Esse grupo provavelmente será uma mistura de partes interessadas que representam experiência do cliente, negócios, arquitetura, desenvolvimento e segurança da informação. 

Explorar o domínio do negócio é a etapa principal da sessão. Nesta etapa, o grupo de participantes irá analisar e compreender o domínio do negócio para revelar o processo de forma abrangente. Existem três componentes principais que devem ser explorados: eventos de domínio, comandos, entidades e agregados. 

Exemplo após identificar os principais comandos e eventos do fluxo de trabalho, destacando os eventos de domínio

Geralmente, um evento tem sua origem a partir um comando que cria ou altera o estado de uma entidade — existe uma máxima que sugere "um comando gera um evento". Traçar esse mapeamento proporcionará uma visão mais clara do fluxo de trabalho. Por outro lado, a identificação dos agregados pode revelar as dependências externas necessárias para a conclusão bem-sucedida do fluxo de trabalho. Esta abordagem integrada facilita a compreensão do funcionamento geral do sistema. 

 

Diagrama

Descrição gerada automaticamente

Exemplo após identificar os comandos, os eventos, a entidade os usuários e sistemas envolvidos no fluxo de trabalho

Conclusão 

Combinar as práticas de API Design e Event Storming pode gerar resultados significativos, proporcionando compreensão entre as partes interessadas e facilitando a disseminação do conhecimento adquirido. Além disso, resulta em uma documentação clara e permite uma implementação voltada para o design orientado a domínio. 

Em suma, ambas as práticas podem potencializar significativamente o trabalho de profissionais de produto na era da transformação digital. Eles equipam esses profissionais com as habilidades e ferramentas necessárias para contribuir ativamente no desenvolvimento técnico de produtos, ao mesmo tempo que melhoram a comunicação e colaboração entre as equipes técnicas e de negócios. 

 

 

 

Artigos relacionados

17/05/2023 09:45:00 7 min leitura

Multicontas: vantagens de ter várias contas em uma só instituição

Com o aumento da competitividade no mercado financeiro, os bancos e instituições de pagamentos têm buscado oferecer cada vez mais produtos e serviços exclusivos, voltados para diferentes públicos e necessidades. Isso leva muitos consumidores a buscarem opções de contas e serviços em diferentes instituições financeiras para aproveitar ao máximo as vantagens oferecidas.
Iniciar Leitura
19/02/2021 19:30:43 6 min leitura

Players de criptomoeda podem se beneficiar dos produtos de BaaS?

As criptomoedas vem crescendo de forma expressiva nos últimos dez anos, fazendo com que os mercados começassem a perceber a importância de regulamentar essa nova moeda. Esse processo traz não apenas segurança para o usuário final, mas também para as exchanges e demais players do mercado, transpondo barreiras que antes impediam o crescimento potencial dessas moedas. Como está o mercado de criptomoedas? Acreditamos que a expansão e expressividade das criptomoedas será uma constante em 2021 e, por isso, esperamos apoiar a evolução do mercado e dos novos entrantes com uma oferta de APIs de pagamentos que possam suportar essa demanda. O Bankly quer apoiar a construção desse novo setor da economia por meio de uma operação silenciosa, inovadora e dentro do regulatório, fornecendo proteção aos clientes finais dessas plataformas. Apostando em produtos para empresa tech first, com altos volumes transacionais e que consequentemente demandam alta performance, apresentamos a seguir algumas soluções que podem gerar eficiência operacional a esse nicho, assim como significar novas linhas de receita:
Iniciar Leitura
03/10/2023 14:05:00 19 min leitura

Pocket accounts e multicontas: quais as diferenças e casos de uso

Pocket accounts e multicontas são duas funcionalidades oferecidas por instituições para facilitar a organização financeira de pessoas físicas e jurídicas. Cada uma delas tem suas particularidades e ambas possuem uma característica principal em comum: servem para separar valores, para diferentes objetivos.
Iniciar Leitura