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