lw
opinião
mercado
Aplicações
paranuvem
Bruno Domingues
Arquiteto de soluções sênior
E-mail:
bruno.domingues@
intel.com
O
advento dos processadores
multicores e hyperthread
impuseram aos programadores
a necessidade de mudar a forma como
desenvolvem suas aplicações. Para que
pudessem extrair mais desempenho e
explorar as capacidades do processador,
foi necessário incorporar capacidades
multithread e programação paralela.
O desenvolvimento de aplicações para
nuvem também difere daquele que
estamos acostumados, principalmente no
que se refere aos componentes que não
permitem escalabilidade horizontal, entre
eles o banco de dados.
Não necessariamente a boa prática de um
ambiente se aplica a outro. A normalização do
banco de dados para garantir a integridade
referencial, usando, para isso, comandos SQL,
como o INNER JOIN, que relaciona duas ou
mais tabelas para retornar uma consulta ou uma
atualização, traz ônus para a escalabilidade
horizontal. E esse é o princípio da arquitetura
em nuvem. De forma a mitigar essa limitação,
muitos provedores de PaaS fornecem o serviço
de Persistent Data Engine, para não chamar de
banco de dados. Afinal, armazenar, atualizar
ou consultar uma informação que, pela “velha
escola”, ficaria no banco de dados são tarefas
que agora ocupam uma tabela replicada em ‘n’
servidores, assim como a tabela de várias outras
aplicações e sistemas.
A consequência dessa mudança não é
apenas lógica. Como a natureza do ambiente
é crescer na horizontal, é possível que uma
atualização em uma tabela por um usuário seja
notada por outra pessoa alguns milissegundos
depois. Se para o programador que se defrontou
com múltiplos núcleos e threads a palavra de
ordem era paralelizar o código, para a nuvem a
regra é
stateless
. Cada módulo ou componente
deve ser capaz de trabalhar sem depender
de manter estado, transações curtas e de
pequena duração. Além disso, deve procurar o
melhor uso dos recursos da máquina, usando
inteligência para identificar se é desktop,
smartphone, smartTV...
Tudo isso com o objetivo de prover a
melhor experiência para o usuário sem precisar
reescrever código. Por exemplo: detectar a
banda da conexão para determinar a qualidade
do streaming de um vídeo, ou a capacidade
de bateria para alertar sobre a possibilidade
de iniciar um processo, e ser capaz de finalizar
antes do desligamento forçado são itens que
fazem a diferença.
A criação de
aplicações
para nuvem
difere daquela
que estamos
acostumados,
principalmente
no que se
refere aos
componentes
que não
permitem
escalabilidade
horizontal,
como banco
de dados
26
locaweb
1...,16,17,18,19,20,21,22,23,24,25 27,28,29,30,31,32,33,34,35,36,...68