sexta-feira, 14 de dezembro de 2012

Dashboards e a performance ideal


Read this post in English HERE

Hoje um colega de projeto me fez uma pergunta que
gostaria de compartilhar com os amigos leitores do blog:

Como avaliar se o tempo de resposta de um dashboard é aceitável?

Uma das entregas do projeto, um dashboard com indicadores de custos de produção para uma empresa de mineração, demorava mais de um minuto na sua primeira execução.

A resposta às vezes me parece tão simples quanto óbvia: quando você acessa um portal de notícias, em quanto tempo espera ter todas as informações na tela? Mesmo que o portal seja o mais completo disponível, com todas as notícias do momento, se a cada vez que você acessar a informação precisar aguardar mais de um minuto para ter a notícia, provavelmente vai procurar outro portal.

É claro que esta analogia não abrange todos os aspectos de um cenário com um dashboard corporativo, porque podem estar envolvidos assuntos como infraestrutura, relevância da informação na companhia, volumetria, viabilidade de se ter acesso por outro canal e assim por diante. Isso todos nós, técnicos, sabemos e muito bem. Mas nem sempre o usuário, aquele executivo que passa por umas 5 reuniões no mesmo dia e geralmente consegue parar por 15 minutos pra dar atenção à tecnologia, sabe ou concorda com isso. Já presenciei algumas discussões (leia-se “brigas”) entre sponsors e gerentes de projeto sobre este assunto, cada um com a sua razão. O lado técnico mostra que aquela informação anteriormente tomava 2 dias de esforço de uma equipe pra ser obtida e o sponsor argumenta que durante a pré-venda, com apenas um click, a informação era apresentada instantaneamente.

Na minha humilde opinião, um minuto pra se obter uma informação pode ser excelente, mas desde que seja em um relatório, que pode ser executado em background enquanto o usuário executa suas outras tarefas. Neste caso, é comum encontrarmos relatórios não de um minuto, mas de até mesmo horas de execução.

Mas quando falamos em dashboards, seja ele acessado por um PC ou via mobile, geralmente o usuário aguarda a resposta a cada click, e um minuto parado, apresentando a informação em uma reunião ou somente buscando respostas de negócio, muitas vezes é o argumento necessário para se inutilizar aquele dashboard que nos tomou dias de desenvolvimento.

Existem técnicas para se melhorar a performance de um dashboard; agendar uma execução prévia dos dados costuma ser uma delas, embora muitas vezes isso limite o escopo da informação disponibilizada. Desenvolver uma estrutura de dados específica para cada dashboard durante a fase de ETL também é uma opção bastante escolhida, embora muitas vezes inviabilizada por questões como custo e governança. A aplicação de tecnologia in-memory é geralmente a melhor das opções, quando realmente é uma opção.

Em resumo, se percebemos que a informação solicitada para um dashboard não vai atender os requisitos mínimos de navegabilidade para este tipo de front-end, o ideal é sugerirmos ao cliente um relatório ou outra solução de front-end. Definitivamente, um dashboard completo, na minha opinião, não é um dashboard cheio de informações e gráficos incríveis, mas um dashboard que dê a resposta para o usuário antes que ele comece a pensar em outro tipo de pergunta, como por exemplo, será que eu não encontro essa informação em outro lugar?

Sobre o exemplo citado acima, já que não estava prevista ainda para esta fase do projeto a utilização da tecnologia in-memory, precisamos buscar outras soluções. Com uma série de otimizações de queries e melhor sincronização nas execuções das mesmas, aplicações de novas lógicas e ajustes pontuais na navegação, conseguimos reduzir o tempo de execução do dashboard para cerca de 12 segundos na primeira execução e de 4 segundos, em média, para resposta a cada click durante a navegação. O tempo foi considerado justo tanto pelo lado técnico como pelo lado funcional, em vista da qualidade da informação apresentada, mas é possível que para alguns amigos leitores do blog, este ainda não seja um tempo de resposta ideal. Considero aceitável, embora acredite que este ainda seja o limite a ser sugerido em casos mais extremos quando se desenvolve um dashboard sem a utilização da tecnologia in-memory.

Um abraço,

-----------
Igor Alexandre Jakuboski é profissional de Business Intelligence há mais de 7 anos, tendo já atuado em dois dos principais fornecedores de soluções de BI do mercado e liderado projetos no Brasil e no exterior. Atualmente atua como Principal Solution Architect na SAP. Perfil no LinkedIn: br.linkedin.com/pub/igor-jakuboski/41/28b/88a

Dashboards and the ideal performance

Para ler este post em português clique AQUI

Today a project colleague asked me something that I'd like to share with our friends readers of this blog:

How to evaluate if a dashboard response time is acceptable?

One of the project deliverable, a dashboard with production costs indicators for a mining company, was taking more than a minute in its first execution.

The answer sometimes seems so simple as obvious: when you access a news portal, how soon you expect to see all information on the screen? Even if the portal is the most complete one available with all news of that moment, if every time you access the information you have to wait more than a minute to see the news, you   will probably look for another portal.

It is clear that this analogy does not cover all aspects of a scenario with an enterprise dashboard because it may involve issues such as infrastructure, relevance of information on the company, volumetry, feasibility of having access by another channel and so on. That, all of us technicians, know and know very well. But not always the user, that executive which goes through 5 meetings in the same day and usually can stop only for 15 minutes to pay attention to technology, knows or agrees with this. I've seen some discussions (read "fights") between sponsors and project managers on this subject, each with its reason. The technical side shows that the information previously took two days of a team effort to be obtained and the sponsor argues that during the pre-sale, with just one click, the information was presented instantly.

In my humble opinion, a minute to get some information may be excellent, but provided it is in a report that can run in the background while the user performs its other tasks. In this case, it is common to find reports of not only a minute but hours of execution.

But when we talk about dashboards, whether accessed from a PC or via mobile, the user usually waits for the response to each click, and a minute stopped displaying the information in a meeting or just seeking business answers is often the argument necessary to disable that dashboard that took us one day to develop.

There are techniques to improve the performance of a dashboard; schedule a previous execution of the data is usually one of them, although it often limits the scope of the information provided. Develop a specific data structure for each dashboard during the ETL phase is also a common chosen option, though often frustrated by issues such as cost and governance. The application of in-memory technology is usually the best option, when it is really an option.

In summary, if we realize that the requested information to a dashboard will not meet the minimum requirements of navigability for this kind of front-end, ideally we suggest the customer a report or another front-end solution. Definitely a complete dashboard, in my opinion, is not a dashboard full of information and amazing graphics, but a dashboard that gives the answer to the user before he starts thinking about another kind of question, for example, wouldn't I find this information anywhere else?

About the example mentioned above, since it was not yet planned for this phase of the project the use of in-memory technology, we must seek other solutions. With a series of queries optimizations and better synchronization of them, we were able to reduce the dashboard execution time to around 12 seconds in his first execution and of four seconds, in average, for the response to each click during navigation. The time was considered fair by both technical and functional side, given the quality of the information provided, but it is possible that for some friends readers of the blog this still is not an optimal response time. I consider acceptable, although I believe that this is still the limit to be suggested in the most extreme cases when developing a dashboard without the use of in-memory technology.

Regards,
--------------
Igor Alexandre Jakuboski is a professional of Business Intelligence for over 7 years, having already worked on two of the leading providers of BI solutions in the market and led projects in Brazil and abroad. He currently works as Principal Solution Architect at SAP. LinkedIn profile: