Cloud Computing

Ξ Deixe um comentário

O futuro da arquitetura de pacotes de software na nuvem

publicado por Cezar Taurion

Cenário: sala de reuniões de uma empresa brasileira de software, um ISV (Independent Sofware Vendor, no jargão da industria) que comercializa um ERP para alguns setores específicos de negócio. O tema, o futuro dos softwares e por tabela, o futuro da empresa. Segundo o seu CEO, já estão avançando, como a maioria das empresas de software que conheço, em direção à computação em nuvem (SaaS) e adotando mobilidade como ponto de entrega de informações.

Mas, quando perguntei como seria a arquitetura futura do seu pacote, não houve resposta… “É esta versão para cloud e mobilidade” que estamos terminando, disseram. Surgiu um debate interessante, e acredito que valha a pena destacar alguns pontos.

Por observação, vejo que a maioria das empresas de pacotes está ainda na fase inicial e básica da transição. Quando falam em versão cloud, estão na verdade no que chamo de “cloud enabled” ou uma simples colocação do seu pacote em uma nuvem. Continua exatamente como antes, só que em vez do aplicativo rodar no servidor do cliente roda em um data center da própria empresa de software ou de um provedor. E, para cada cliente, uma máquina virtual. Não exploram as caraterísticas inerentes de cloud, como multi-tenant e escalabilidade horizontal, que é a possibilidade de adicionar de forma automática mais capacidade computacional. E para mobilidade, na imensa maioria das vezes é uma adaptação das telas do desktop para telas menores dos smartphones e tablets, sem explorar os recursos destes dispositivos. É quase uma emulação do teclado e mouse no touchscreen.

Na minha opinião pessoal o novo mundo da cloud computing e da mobilidade quebra de forma dramática os parametros de projeto e desenho de sistemas como estamos acostumados. O problema é que a velocidade das mudanças é muito rápida e a maioria das empresas e seus gestores não conseguem acompanhá-la. Tem um livro que recomendo, chamado “The Law of Disruption”, de Larry Downes, que sucintamente descreve o contexto: “The Law of Disruption can be stated simply: Social, political, and economic systems change incrementally, but technology changes exponentially.”. Em outras palavras, a velocidade das mudanças tecnológicas é tão rápida que a arquitetura dos aplicativos não as incorpora.

Vamos relembrar como os aplicativos são construídos. De maneira geral foram desenvolvidos e evoluídos ao longo de vários anos de trabalho árduo, alguns tem mais de uma década de vida, através de um esforço contínuo de evolução onde novas funcionalidades foram adicionadas por solicitações dos usuários, por mudanças legais ou pela intuição dos seus desenvolvedores. Curioso é que muitas demandas são realmente solicitadas pelos usuarios, mas como nem tudo pode ser desenvolvido, prioriza-se e aí entra a intuição dos desenvolvedores. A priorização é, na maioria das vezes, puramente intuitiva. Alguns efetuam pesquisas de satisfação, mas nem sempre o volume de respostas gera valor estatistico adequado. Reuniões periódicas com alguns clientes também implicam no viés às demandas deste conjunto especifico de clientes, que não necessariamente refletem a demanda da maioria dos clientes. Os “trouble tickets” ou reclamações de bugs e insuficiencia operacional são outra fonte de inspiração para novas funcionalidades, mas apresentam o viés de problemas gerados e não de identificação de inovações a serem aproveitadas.

Como pensar de forma diferente? O primeiro e essencial passo é juntar mobilidade e cloud. Aplicações móveis sofisticadas requerem capacidade computacional além da capacidade do dispositivo, ou sejam, demandam uso de computação em nuvem para análise de dados, cruzamento de informações, etc. O código que roda no smartphone ou tablet é apenas parte da equação. A nuvem mantém a inteligência do backoffice. Então, podemos pensar em uma arquitetura que seja ao mesmo tempo desenhada para cloud (“cloud oriented”) e “mobile centric”. Que isso significa? Que rodar em cloud deve ser inerente à concepção do projeto. Tem um paper, “The internal design of salesforce.com’s multi-tenant architecture” que vale a pena ser adquirido e lido. Este outro, gratuito, sobre o force.com também merce atenção: “The force.com multitenant architecture”.

Outro item importantissmo é usar ao máximo a potencialidade dos recursos dos dispositivos móveis e que estes recursos devem ser refletidos no projeto do aplicativo. Ao invés de pensarmos no smartphone como apenas um meio adicional de entrega de informações, ele passa a ser o cerne do porjeto. A exploração dos recursos como acelerometros, GPS, etc, passam a orientar os processos que serão implementados no aplicativo. “Mobile centric” torna o dispositivo móvel o centro da operação e os processos giram em torno dele. É uma maneira diferente de se projetar sistemas. Aí entra em cena um processo que foi pouco valorizado no mundo do teclado e mouse: o estudo de usabilidade. Um app deve apresentar um interface intuitivo, fácil e agradável de ser usado. As funções inseridas nas telas dependem dos estudos de usabilidade e não são mais inseridas porque o desenolvedor acha que devem ser inseridas. Isso, por si, já é outra mudança na maneira de conceber sistemas.

E voltando ao desenho “cloud oriented”… Além das características de multi-tenant, escalabilidade horizontal e outras, que falamos anteriormente, um aplicativo desenhado para cloud pode incorporar o que chamo de “Application Analytics”. É uma analogia com o conceito de Business Analytics. O que entendo por “Application Analytics”? Imaginem inserir no código do aplicativo instrumentação que colete informações sobre como o usuário o utiliza. No mundo atual, on-premise, isto é praticamente inviável. Ao colocar o aplicativo na casa do cliente, a empresa de software perde o controle sobre quais funcionalidades são mais usadas, em quais funcionalidades e telas os usuários tem mais dificuldades de uso, que atalhos utilizam para simplificar a operação, que funções são supérfluas e descartáveis, etc. Já operando na nuvem e instrumentado, podemos mensurar tudo isso e analisando estes dados projetar novas funcionalidades. Isto não é novidade. As empresas do mundo da Internet como Facebook, YouTube, Linkedin e Twitter usam este recurso para monitorar a usabilidade dos seus softwares. É o conceito de Big data para analisar e criar novas funcionalidades para o aplicativo. Com mais e mais usuários utilizando seu aplicativo em nuvem, o desenvolvedor passa a ter condições de prever e satisfazer com muito maior precisão as demandas dos usuários. Pode adicionar funcionalidades até mesmo antes que os usuários a peçam formalmente, pois as ações medidas e analisadas podem prever que elas serão necessárias. O resultado é uma muito maior satisfação dos seus usuários.

Portanto, o mundo da computação em nuvem e da mobilidade cria novos desafios e oportunidades para as empresas de software. O ambiente da mobilidade aliado à computação em nuvem abre espaço para aplicações realmente inovadoras. Fazer o mesmo que deu certo até agora, não será garantia de sucesso para o fim da década.

Bem, a reunião terminou e senti que no minimo algumas das questões levantadas serão analisadas pelos executivos. Quem sabe outras empresas não deveriam fazer o mesmo?

Autor

Cezar Taurion é head de Digital Transformation da Kick Ventures e autor de nove livros sobre Transformação Digital, Inovação, Open Source, Cloud Computing e Big Data.

Cezar Taurion

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes