Programação Reativa (Reactive Programming) vem ganhando cada vez mais popularidade e tem sido cada vez mais utilizada por organizações ao redor do mundo para criar aplicações altamente disponíveis e de baixa latência.
Em 16 de Setembro de 2014 foi lançado o Manifesto Reativo (Reactive Manifesto) que apresenta os princípios da Programação Reativa. Em Novembro de 2014, o Coursera lançou um curso sobre o assunto, e já houve até uma conferência dedicada ao Tema, a React 2014 que ocorreu em São Francisco na Califórnia.
Bibliotecas em diferentes linguagens de programação vem surgindo para facilitar o desenvolvimento de software nesse paradigma: React para Javascript, Reactor, RxJava, Netty e Akka, para Java, Reactive Extensions para .NET, Rx.rb para Ruby, além muitas outras iniciativas.
O principal apelo para a adoção desse paradigma de programação é o contínuo crescimento da Internet nos mais diversos aspectos como maior quantidade de usuários, maior quantidade de requests, mais dados, e maior exigência de performance e tempo de resposta, além da intolerância a downtime e maior quantidade de nós de servidores por aplicação necessários para atender a toda essa demanda.
A programação reativa tem 4 pilares:
Elástico: Reage à demanda/carga: aplicações podem fazer uso de múltiplos cores e múltiplos servidores.
Resiliente: Reage à falhas, aplicações reagem e se recuperam de falhas de software, hardware, e de conectividade.
Message Driven: Reage à eventos (event driven): em vez de compor aplicações por múltiplas threads síncrona, sistemas são compostos de gerenciadores de eventos assíncronos e não bloqueantes.
Responsivo: Reage à usuários: aplicações que oferecem interações ricas e “tempo real” com usuários
Para aprender mais, veja esses vídeos de Martin Odersky (criador da linguagem Scala)
Para ter uma compreensão mais avançada do assunto, descobrir algumas empresas que vêm investindo em programação reativa e incluir ver uma implementação de exemplo, recomendo ver essa apresentação de Jon Brisbin e Stephane Maldini no evento SpringOneGX 2014.
Programação Reativa com Netflix OSS
A Netflix promoveu um encontro no qual aconteceram diversas palestras sobre Programação Reativa, veja o vídeo e slides do Meetup da Netflix OSS realizado em Julho de 2014:
Livros
- Nurkiewicz, Tomasz (Author)
- 370 Pages - 11/22/2016 (Publication Date) - O'Reilly Media (Publisher)
- Raoul-Gabriel (Author)
- 592 Pages - 11/15/2018 (Publication Date) - Manning Publications (Publisher)
- Sharma, Rahul (Author)
- 250 Pages - 09/29/2018 (Publication Date) - Packt Publishing (Publisher)
Aprenda mais
- QCON SP 2014: Palestra de Leonardo Borges: Reactive Programming (em português)
- Spring Developer: uilding Reactive applications with Reactor and the Reactive Streams standard
- ReactiveX on Github
- Reactive Programming by Kevin Webber
- Kung Lao, Async e RxJava por Breno Ferreira (em português)
Sua vez
Ainda há pouco conteúdo sobre o assunto, especialmente em português. Que tal você começar deixando um qui comentário sobre suas impressões Reactive Programming? Além disso, te convido a testar o paradigma conhecer as bibliotecas open source, e também compartilhar o que descobrir e aprender.
Ótimo post! Estou começando a estudar programação reativa e sua referências vão me ajudar bastante 🙂
Valeu!
Excelentes post sobre o microservices e reactive, vc consegue resumir bem conceitos tão amplos.
Já conseguiu usar algo em produção? Qual conceito ou framework caiu como luva nos desafios dos sistemas em produção? Eu venho estudando esses assuntos para solucionar alguns problemas, mas são tantas as abordagens que me deixaram um pouco receoso de escolher uma lib a outra por exemplo.
O mais interessante é ver como diversos caminhos vem impulsionando empresas de streaming de video, audio, empresas de finanças, além dos cases de redes sociais.
Valeu!
Então Raphael, após 3 anos de seu comentário, caio aqui e me interesso por programação reativa. Tens implementado algo sobre? Abraço!