ON EXCEPTION | INTEGRATIONS
O cenário:
A Sensedia S.A. - empresa com foco em soluções de integração de API’s (Interface de Programação de Aplicações) em plataforma SaaS (Software as a Service) -, observou a evolução do mercado de desenvolvimento de sistemas no momento pós-pandemia e, para suprir a necessidade percebida, criou um produto iPaaS (Integration Platform as a Service) denominado Integrations. A sua proposta é facilitar a comunicação de aplicações, dados e processos entre diferentes sistemas e ambientes informatizados, numa plataforma baseada na nuvem.
Tendo em vista que a maior parte da carteira de clientes da Sensedia são empresas dos mais diversos setores, para realizar todas essas tarefas, o Integrations dispõe de um conjunto de ferramentas e serviços que facilita a automação e o gerenciamento do fluxo de informações e, ainda, melhora suas capacidades de integração.
Como membro da equipe de Product Designers da empresa, pude participar de todas as etapas de criação deste produto: de sua concepção à sua implementação. A seguir, detalharei o passo a passo, com foco no papel desempenhado por mim.
Necessidade gera oportunidade
O Problema:
O que fazer quando o fluxo de integração apresenta um erro de conexão?
Em qualquer sistema, durante a sua execução, é comum que se apresentem falhas e anormalidades, ou seja, indicar que algo deu errado e que o fluxo das informações não seguirá como o planejado pelas equipes de Desenvolvimento. Alguns desses erros são esperados, classificados e são chamados de “erros de conexão”, que ocorrem quando dois ou mais sistemas devem se comunicar entre si, mas falham em estabelecer ou manter essa comunicação. Tais erros podem acontecer por vários motivos e, também, em várias etapas e níveis da comunicação entre sistemas.
Os erros de conexão classificados são:
- Network Errors - Connection Timeout
- Network Errors - Socket Error
- DNS Resolution Error - Host Not Found
- SSL/TLS Errors - SSL Handshake Failure
- Timeout Errors - Read/ Write Timeout
- General Exception
- Network Errors - Connection Timeout
- Network Errors - Socket Error
- DNS Resolution Error - Host Not Found
- SSL/TLS Errors - SSL Handshake Failure
- Timeout Errors - Read/ Write Timeout
- General Exception
Objetivo:
Permitir que o usuário trate os erros de conexão para que o sistema possa continuar o fluxo de integração, mesmo após apresentar erros específicos.
Enfrentando as adversidades
A Pesquisa:
Como estratégia de pesquisa, optou-se por realizar um benchmarking, ou seja, uma análise comparativa dos concorrentes, focando em observar quais as soluções para quando o fluxo de integração apresenta um erro de conexão.
Ao realizar o benchmarking, percebeu-se a necessidade de realizar a pesquisa em dois fronts: Primeiramente, foram analisadas as soluções de negócio dos principais competidores (Application Integration; Mulesoft; Make e Digibee). Logo após, foram analisadas as soluções de usabilidade encontradas pelos concorrentes.
Benchmarking
Na Digibee existe somente a opção do erro ser tratado após a execução ser interrompida, gerando um fluxo menos contínuo.
O error Catcher do Application Integration gerencia todas as exceções em um único componente.
Na Mulesoft os erros são tratados por níveis de exceção, Um componente torna possível tratar e continuar com ações alternativas e o outro pausa o fluxo e segue um comportamento de exceção pré-definido para toda integração.
Casos de Uso
Discovery:
Durante o processo de Discovery foi utilizada a Matriz CSD (Certeza x Suposição x Dúvida) como ferramenta, a qual possibilitou as seguintes reflexões e conclusões:
Matriz CSD
Ao elaborarmos a Matriz CSD, consideramos o problema do tratamento de erros e exceções de forma abrangente. O OnException foi concebido para gerenciar erros de conectividade, utilizando a abordagem "OnException" para conectores REST. Para validar suposições, realizamos uma Prova de Conceito (POC) dos componentes do Camel, o que nos ajudou a definir quais componentes seriam utilizados para resolver cada solução de exceção. As dúvidas foram direcionadas para serem trabalhadas em outro componente de exceção.
Construindo a solução
Ideação
Wireframe de Baixa Fidelidade
Teste de Conceito:
Após as etapas de análise, ideação e prototipagem, passamos à validação do OnException e à fase de teste. Escolhemos o Teste de Usabilidade Guiado, com a participação das equipes das empresas-clientes 1, 3 e 5.
Durante a aplicação do teste, foi utilizado o cenário de buscar CEPs de uma API dos Correios e armazenar no banco de dados, com tratamento de timeout. Foi perguntado aos participantes se eles compreendiam que aquele componente funcionava como uma exceção.
O Teste de Conceito foi realizado com 8 usuários e os feedbacks foram os seguintes:
- 03 usuários tiveram dúvidas sobre o que representava o fluxo de Exceção.
- 02 usuários inicialmente não entenderam por que o ícone de alerta e o ícone que representava o OnException eram parecidos.
- 04 usuários conseguiram compreender e descrever corretamente o funcionamento da exceção.
- 02 usuários inicialmente não entenderam por que o ícone de alerta e o ícone que representava o OnException eram parecidos.
- 04 usuários conseguiram compreender e descrever corretamente o funcionamento da exceção.
Com base no feedback dos participantes do teste, a equipe do Produto decidiu implementar as seguintes melhorias:
Janela do Componente:
- Alterada para formato retangular.
Linhas de Conexão:
- Fluxo principal: Cor alterada.
- Exceção: Linha pontilhada e cor mais clara.
Ícones:
- Ícone de alerta de erro: Atualizado.
- Novos ícones para Exception e Warning: Inseridos no uikit.
A fórmula do sucesso:
Como resultado final, obtivemos um design refinado baseado nos feedbacks do Teste de Usabilidade Guiado, reuniões da equipe do Produto, e observações da sessão de Design Critique. Implementamos:
- Ícone de informações "i" no formulário.
- Textos elaborados para o tooltip e títulos dos componentes do “OnException”.
- Ajustes no projeto conforme feedback da Design Critique.
- Textos elaborados para o tooltip e títulos dos componentes do “OnException”.
- Ajustes no projeto conforme feedback da Design Critique.
Para deixar claro que o tratamento de exceções é uma rota alternativa, utilizei bordas retangulares, uma barra vertical na janela, linha de conexão pontilhada e dois tipos de sinalização para o início da rota alternativa. Além disso, mudei o símbolo de alerta para um formato triangular para evidenciar melhor o conceito de erro ou atenção.
Implementação:
Para aplicar as alterações propostas, validei com a equipe de front-end a possibilidade de implementar a linha pontilhada, considerando o tempo e esforço necessários caso esta não existisse na biblioteca de comportamentos do Diagram utilizada.
Devido ao feedback do teste de usabilidade, juntamente com o PM, concluímos que era necessário alterar o ícone de alerta de erro no step dos Correios para melhorar a comunicação do erro na integração.
Durante o desenvolvimento, enfrentamos e superamos o desafio técnico de utilizar o componente do Camel (biblioteca de integração Open Source) como base para as modificações propostas.
Métricas de Sucesso:
A equipe do Produto definiu duas métricas de sucesso: a quantidade de uso do componente dentro da integração e a redução de integrações indisponíveis por erro de conexão. Para avaliar o uso do componente, monitoramos a quantidade de cliques no OnException em integrações já em uso, utilizando o Google Analytics. Para a redução de indisponibilidades, realizamos uma análise interna através de consulta ao banco de dados das integrações.
Resultados:
- Redução de 30% nas integrações indisponíveis nos dois primeiros meses.
- 70% das integrações já em uso adicionaram o componente OnException, conforme registrado no Google Analytics.
- Redução de 30% nas integrações indisponíveis nos dois primeiros meses.
- 70% das integrações já em uso adicionaram o componente OnException, conforme registrado no Google Analytics.
Histórias de Sucesso:
Diante da importância do produto “On Exception”, após sua implementação, a Sensedia não só conseguiu sanar necessidades de seus clientes já existentes como também atraiu um novo cliente. Essa conquista entrou para o rol das histórias de sucesso da empresa.