Mobile

Ξ Deixe um comentário

Desenvolvimento com foco em mobilidade

publicado por Cezar Taurion

Desenvolvimento com foco em mobilidadeA mobilidade está inserida no nosso dia a dia. Smartphones e tablets vão em breve ultrapassar os desktops e laptops como o meio mais utilizado para acessar a Web. E, claro, as expectativas de seus usuários é que suas experiências de uso sejam no minimo iguais, mas preferencialmente, bem melhores que as que encontramos no mundo do teclado e mouse. Em termos de UI (User Interface) o modelo touch screen permite, indiscutivelmente, uma forma mais intuitiva de uso. Esta intuitividade vai aumentar à medida que interfaces à base voz se popularizem, com assistentes pessoais como Siri e Google Now conquistando confiança, à medida que se tornam mais inteligentes. Este teste comparativo é bem interessante .

Mas, além da intuitividade e facilidade de uso outra questão fundamental que afeta a experiência de uso é o desempenho das aplicações, sejam elas nativas como híbridas ou 100% HTML5.

Aí enfrentamos um desafio. Além das apps muitas vezes temos que acessar web sites. Um acesso demorado é frustrante, por mais atraente que seja o site. Se ele demorar muito tempo para renderizar e aparecer de forma nítida na tela do seu smartphone, inevitavelmente que vai gerar uma experiência negativa. Um estudo feito nos EUA pela Tealeaf em 2011 (Tealeaf foi comprada pela IBM em 2012) mostrou que 85% dos adultos que efetuaram transações por smartphones esperavam que suas experiências de shopping online fossem iguais ou melhores a que obtinham com seus desktops e laptops. E 63% disseram que se enfrentassem problemas via acesso móvel, provavelmente não tentariam alternativamente via outros canais. Em outras palavras, um desempenho ruim no smartphone ou tablet afeta o negócio como um todo.

Com smartphones cada vez mais poderosos (o iPhone 5S tem 40 vezes a capacidade computacional do primeiro iPhone de 2007) e linhas de comunicação mais rápidas é de se esperar que a experiência do usuário em termos de desempenho seja positiva. Infelizmente não é verdade em muitos casos. Além de nossa 3G deixar a desejar, existem algumas variáveis que afetam a performance das redes wireless. Uma é a latência, que é a demora experimentada entre uma requisição de serviço e sua resposta. Toda conexão Internet é capaz de transmitir um determinado volume de dados em um determinado periodo de tempo, e esta capacidade é chamada de bandwith. A latência é que impede que esta capacidade seja plenamente alcançada. Quando usamos acessos via fios a latência é causada basicamente pela resistência do material ao fluxo de elétrons. Negligivel. O que afeta o seu desempenho é o congestionamento da rede, ou seja, um numero muito grande de usuários compartilhando os mesmos recursos, influenciando significativamente o desempenho.

Já em redes wireless é diferente. Embora o ar (meio de transmissão wirelesss) não ofereça resistência, permite que diversas interferências aconteçam. Radios, fornos microondas ou barreiras eletromagnéticas afetam a performance. E como funciona um acesso wireless? Primeiro o smartphone se conecta a uma estação radio-base da operadora e esta se comunica com um servidor da operadora que opera um serviço 3G chamado GGSN (gateway GPRS Support Node) que atua como intermediário entre o usuário e a Internet, assinalando endereços IP e filtrando pacotes de dados entre outras operações. Envia a solicitação para o servidor adequado (como DNS ou HTTP) e recebe a resposta, fazendo o mesmo caminho para o retorno. Obviamente, que de maneira geral as operadoras mantem um numero bem menor de servidores GGSN que estações radio-base, pois os GGSN atuam como concentradores e consequentemente estão sujeitos à sobrecarga de solicitações. Bem, as estações radio-base também estão sujeitas à sobrecarga…

Resumo da ópera: ter um bom desempenho em dispositivos móveis, principalmente quando acessando web sites é de extrema importância.

Pensando no caso, conversei com um amigo, professor de um curso de pós em ciência da computação. Analisando varios cursos, observamos que na imensa maioria deles os métodos e técnicas de programação ensinados e praticados são ainda para o modelo conceitual dos desktops. Um exemplo é o tamanho das paginas web. Estão cada vez maiores e complexas. Estudos mostram hoje que uma pagina web tem em média cerca de 1 MB (e talvez chegue a 2 MB em 2015) e contém em torno de 80 recursos como JavaScripts, CSS (Cascading Style Sheets), arquivos, entre outros. Além disso, é muito comum, para preencher a pagina, que sejam necessários varios pedidos HTTP. O resultado, sites que funcionam bem para desktops conectados a redes de fios, mas péssimos para wireless. A alternativa de se criar sites lipoaspirados (m.sites) nem sempre atende, pois a maioria dos usuários opta por acessar o site completo, se tiverem esta opção.

Na conversa ficou claro que pouco se ensina de best practices de programação para mobilidade. Mas este será o principal foco de desenolvimento de sistemas daqui para frente. Portanto, é necessário que os desenvolvedores aprendam a programar as melhores práticas para ambientes móveis. Práticas de otimização como as propostas pelo PageSpeed do Google são orientadas para paginas em desktops/laptops e não smartphones. Portanto devem ser repensadas quando aplicadas à dispositivos móveis. Por exemplo, apenas cerca de 20% do tempo gasto para exibir uma página web é consumido pelo download da própria pagina HTML. Os restantes 80% (a maioria do tempo!) é gasto na carga de recursos necessários para renderizar a pagina como script files, imagens, CSS, etc. Ora, em ambientes móveis, como vimos, quanto menos requisições HTTP melhor. Também tem mais performance as paginas menos carregadas de figuras. Consumir menos CPU dos smartphones também é uma boa medida e quanto menos JavaScript mais eficiente é o processamento. Uma rule of thumb diz que fazer parsing e executar um código JavaScript pode ser dez vezes mais lento em um smartphone que em um desktop.

Existem varias técnicas para otimizar sites web acessados por dispositivos móveis, como diminuir requests HTTP, diminuir código JavaScript, otimizar imagens, evitar CSS selectors complexos, etc. Outro aspecto pouco lembrado a respeito de JavaScript é que diferente dos desktops, os smartphones dependem de baterias que são consumidas por radios (celulares, Wi-Fi, Bluetooth), acesso à rede e execução de código, como Java Script. Assim quanto mais CPU for demandado para executar JavaScript mais rapidamente a bateria será consumida. Bem, não faz parte de nosso post discutir as inumeras técnicas de otimização para ambiente móvel…Mas a mensagem é que torna-se mais e mais importante que os desenvolvedores aprendam estas best practices. E, infelizmente, nem todos os cursos estão bem preparados…

[Crédito da Imagem: Mobilidade – ShutterStock]

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