Veja onde podemos ir com um desktop comum e uma aplicação Java reativa para web.
Certamente que uma estrutura de dados evitando bloqueios ajuda muito na performance do sistema. Os novos modelos de dados funcionais são bons aliados dos modelos reativos.
Entre os novos softwares que fazem sucesso, vários usam o modelo reativo internamente, entre eles: Redis, Node.js, Storm, Play, Vertx, Axon ou Scala.
Da mesma maneira, os gigantes da web publicaram vários feedbacks das suas experiências de migração para esse modelo: Coursera, Gilt, Groupon, Klout, Linkedin, NetFlix, Paypals, Twitter, WallMart ou Yahoo.
"O software se torna lento mais rapidamente do que o hardware se torna rápido" Niklaus Wirth - 1995
O modelo reativo não é novo. Ele é utilizado dentro de todos os frameworks de interface de usuário desde a invenção do mouse. Cada clique ou entrada no teclado gera um evento. Mesmo o Javascript client-side usa esse modelo, mas como não há threads nessa linguagem, não é possível ter várias requisições AJAX simultaneamente. Tudo funciona com a ajuda de callbacks e eventos.
As arquiteturas de desenvolvimento atuais são o resultado de uma série de etapas e evoluções. Alguns conceitos fortes foram introduzidos e utilizados abundantemente antes de serem substituídos por novas idéias. O ambiente evoluiu da mesma maneira, e as respostas não são mais as mesmas.
Será que nossos sistemas já estão no limite? Será que ainda há espaço a ser conquistado e ganhos de performance a se descobrir?
Existe nos nossos sistemas, um enorme reservatório inexplorado de energia. Houve um aumento de 20 vezes no número de usuários mobile, desde a democratização dos celulares. Mas será que faz sentido aumentar o número de servidores nessa mesma proporção? E como o seu TI vai gerenciar esse crescimento? É melhor rever os planos e tentar explorar esse potencial...
Existem ciclos de processamento disponíveis, isso é bem evidente, e é aqui que está o potencial a ser explorado. Como os nossos programas passam boa parte do tempo à espera do disco, da rede ou da base de dados, nós nunca conseguimos explorar todo o potencial dos servidores.
O modelo "reativo" agora está disponível para todos. Ele está cada vez mais integrado às linguagens de desenvolvimento modernas.
Novos padrões de desenvolvimento estão sendo propostos. A gestão da latência e da performance são feitas desde o início do desenvolvimento. Não é mais um problema a ser enfrentado apenas quando já está tudo feito e não é mais possível mudar a arquitetura da aplicação.
Na OCTO nós temos a convicção de que esse modelo de desenvolvimento vai emergir nos próximos anos.
Sobre as aplicações candidatas ao modelo reativo, as aplicações baseadas no modelo request/response (HTTP/SOA/REST) podem tolerar um modelo de threads, ao contrário das aplicações baseadas em fluxo de dados, como JMS ou WebSocket, que tem muito a ganhar com o modelo baseado em eventos e algumas soft-threads.
O modelo reativo traz vantagens para sua empresa, principalmente nesses aspectos:
Veremos em outros artigos de onde vem esta evolução, e os impactos sobre todas as camadas dos sistemas (base de dados, mainframe, roteamento, failover, alta-disponibilidade, etc.).