Reactive Programming

Reactive programming is een nieuwe architectuur stijl op grote applicaties te ontwikkelen. Er is een Reactive Manifesto verschenen, bekritiseerd vanwege de onduidelijkheid. Tja dat was met het Agile Manifesto ook wel, en kom nog wel eens mensen tegen die er niet zo in geloven. Maar niet zo veel meer…

Het manifesto beoogt systemen te bouwen die flexibel en schaalbaar zijn, waarvan de componenten losse koppelingen kennen. De vier principes zijn:

  • Message driven.
    Dit zorgt vanzelf al voor een ontkoppeling en locatie transparantie van applicaties. Componenten werken asynchroon, eigenlijk ook een vorm van ontkoppeling.
  • Resilient.
    Veerkrachtig, in geval van uitval van onderdelen blijft het systeem reageren. Replicatie van componenten is een belangrijk facet hiervan.
  • Elastic.
    Het systeem reageert elastisch op de workload. Bij hoge belasting kunnen snel meer bronnen worden ingezet, en bij afname van de workload kunnen deze weer worden vijgegeven.
  • Responsive
    Het systeem reageert altijd betrouwbaar en snel.

Deze dingen hangen natuurlijk met elkaar samen. Het systeem kan responsive zijn doordat het elastisch en veerkrachtig is. Deze eigenschappen kunnen worden bereikt doordat snel meer replica’s van componenten kunnen worden ingezet. Deze replica’s kunnen allemaal gelijk worden gehouden door dezelfde events naar alle replica’s te sturen. Logisch allemaal.

Ik heb ruim 30 jaar ervaring, en ik heb van alles gezien: mini-computers, realtime en timesharing systemen op de PDP-11 en VAX, transactiemonitors zoals Tuxedo en ACMS, webservers, (de CERN server en apache) en applicatieservers zoals JBoss en Weblogic, en databases van indexed files, Codasyl en relational database, en tegenwoordig BigData.

Het lijkt mij dat het reactive manifesto een nieuw tijdperk inluidt, met veel nieuwe ontwikkelingen. Het lijkt me een stap grote stap voorwaarts, groter dan de overgang van tpmonitor naar appserver. Ik doe mee, ik ga dit met grote belangstelling volgen, en ik ben benieuwd wat we allemaal gaan leren.