terça-feira, 4 de dezembro de 2012

A mobilidade e a arquitetura de software

Falamos muito em mobilidade e o desenvolvimento de apps extremamente inovadores para smartphones e tablets. Mas existe um ponto que, venho observando, tem sido pouco comentado: o seu impacto na arquitetura de software. O ambiente de desenvolvimento está sendo sacudido pela chegada simultânea de quatro ondas tecnológicas, que juntas causam um verdadeiro tsunami: cloud computing, mobilidade, social business e Big Data.
Estas tecnologias e conceitos mudam de forma radical a maneira de pensar sistemas e, como consequência, os arquitetos de software têm que atualizar suas visões de como construir seus sistemas. As grandes aplicações monolíticas e mesmo o já tradicional modelo mental do client-server de duas ou três camadas não têm muito mais espaço neste cenário.

Por outro lado, este cenário turbina um conceito que foi muito falado e pouco implementado na prática, que é o SOA (Services Oriented Architecture). Interessante que há poucas semanas, em uma palestra em uma conhecida universidade, perguntei sobre SOA e poucos alunos conseguiram definir claramente seus princípios. Ou seja, a base fundamental para criarmos os novos sistemas está meio esquecida…Torna-se urgente resgatar seus conceitos.

A mobilidade por si traz novos desafios. Não se deve pensar em apenas replicar para smartphones e tablets os sistemas escritos para o modelo de mouse e teclado. Devemos pensar em sistemas inovadores, que explorem os recursos dos equipamentos móveis como câmeras, microfones, giroscópios, acelerômetros, GPS e diversos outros. A multiplicidade de sensores destes equipamentos nos permite criar aplicativos que capturem e processem dados oriundos das mais diversas fontes. Isto por si só é um desafio, pois os diversos fabricantes configuram estes recursos de formas diferentes. Além disso, estes recursos podem gerar volumes de dados significativos como os vídeos.

Também as interfaces via reconhecimento de voz e som demandam novas maneiras de pensar os aplicativos. Os programas têm que explorar a capacidade do próprio dispositivo, mas também precisam da imensa capacidade computacional que estará rodando em background, na nuvem.  Um exemplo: um app que grave um vídeo e o envie para processamento na nuvem para que seja feito um reconhecimento de imagens que identifique determinado indivíduo ou produto neste vídeo e forneça características sobre ele.

Outra análise a ser feita para as aplicações móveis é o grau de computação que deverá ser feita offline, quando o acesso à rede não for possivel. Pode acontecer do app ter que operar em determinados momentos em locais onde o sinal seja muito fraco ou mesmo sem possibilidade de conexão à Internet.  Na prática, podemos pensar em um modelo mais flexível que o cliente-servidor. A grande capacidade computacional de um smartphone ou tablet permite que ele seja, em determinados momentos, cliente de servidores na nuvem (client-cloud) e, em outros, atue como seu próprio servidor no modelo server-server. A sincronização com a nuvem deverá ser feita quando a conexão se restabelecer, de forma automática e transparente para o usuário do app.

O modelo server-server demanda uma análise mais aprofundada dos mecanismos de segurança que serão adotados no dispositivo móvel, bem como as diferentes estruturas de dados que deverão ser acomodadas. Novo desafio: os arquitetos não poderão mais pensar apenas em modelos relacionais! O modelo relacional será apenas um dos diversos modelos de dados que os sistemas adotarão.

Outro desafio: criar arquiteturas para apps híbridas, adotando HTML5 e código nativo para Android, iOS e Windows. Isto implica em conhecimentos não apenas de HTML5, mas também da tecnologia específica dos demais ambientes móveis, como dos diversos meios de comunicação destes dispositivos com a nuvem. Por exemplo, se o acesso for a partir da parcela nativa do app, deverá ser feita via API específica da plataforma. Se for a partir do codigo HTML5, será via Ajax ou Web Sockets. Enfim, são decisões arquitetônicas que deverão ser tomadas antes de escrever o código.

O resumo da ópera: a mobilidade abre um novo e desafiador espaço para os arquitetos e desenvolvedores de software. Vai exigir mais estudos e novas práticas, mas o resultado será compensador. Novas e inovadoras apps e com certeza, para os que se aprofundarem nas tecnologias, maior empregabilidade.


Texto escrito por Cezar Taurion

0 comentários:

Postar um comentário

 
;