Over de seneste år har kravene til software-applikationer ændret sig, idet applikationer skal i dag kunne køre på mange forskellige slags enheder; alt fra indlejrede komponenter i mobiltelefoner til store cloud-baserede clusters, der kører tusinder af multicore CPU’er. Applikationernes svartider skal nu være nede på mikrosekunder, og mængden af data er steget eksplosivt. Og applikationerne skal kunne håndtere mange brugere på én gang uden latency.
Alt dette tyder på at der er brug for et nyt paradigme. For omkring et år siden blev The Reactive Manifesto skrevet, som er en skabelon til at skrive Reactive Applications. Ordet reactive (dvs. reagerende) kan oversættes til at ”være klar til at reagere på noget udefrakommende”.En reagerende applikation er aktiv og altid klar til at modtage events.
Det har været vigtigt for forfatterne til The Reactive Manifesto at få et fælles sprog til at beskrive denne type applikationer. Indtil nu har man brugt buzzord såsom: asynkron, non-blocking, real-time, availability, scalability, loose coupling, fault-tolerant, concurrency, event-driven, distributed, low latency, high troughput osv.
Det er dog ikke nye opfindelser det hele. Det meste er gamle, velafprøvede teknologier, som blot bør tages op igen og anvendes. I stedet for at bevæge os over i en IT-verden, der styres af mode og trends, så skal man gå tilbage og bruge videnskab til at definere paradigmerne.
Jonas Bonér skriver i et blogindlæg følgende om baggrunden for at lave et nyt manifest:
“The primary motivation for this manifesto is to come up with a name for these new type of applications (similar to NOSQL, Big Data, SOA and REST) and to define a common vocabulary for describing them — both in terms of business values and technical concepts. Names matter and hopefully this will help bring the communities together and make it easier for users and vendors to talk about things and understand each other.”
I bund og grund handler det om at genanvende principper fra før web-alderen til at udvikle software – specielt software der skal kunne skalere, give hurtige svar og performe uden latency, selvom der er maksimal load. Med manifestet har man nu et fælles sprog og termer for at beskrive specifikke problemstillinger og løsninger. Ligesom Design Patterns, der fungerer som et fælles sprog for softwareudviklere: Den ene softwareudvikler siger til den anden: ”skal vi ikke bruge Observer pattern’et her”, eller ”dette problem kan vi løse ved at bruge Decorator pattern’et”, og straks forstår kollegaen hvad der menes uden man behøver at beskrive begge design patterns i detaljer med ord, illustrationer og kode-eksempler. The Reactive Manifesto beskriver fire karakteristika for reagerende applikationer:
- Reagerer på events
- Reagerer på load
- Reagerer på fejl
- Reagerer på brugerinteraktion
På GOTO Aarhus konferencen til september 2014 er der om tirsdagen på Leading and Bleading Edge-tracket to foredrag efter hinanden om The Reactive Manifesto. Den ene af talerne, Martin Thompson (som også har bidraget til manifestet) er high-performance og low-latency specialist, og har holdt mange foredrag på konferencer om hvordan man bygger applikationer, der er kan skalere, tolerere fejl og have lav latency. Men også hvordan man bør forstå den hardware, som applikationen kører på og dermed kunne udnytte hardwaren bedst muligt. Hvordan man undgår deadlocks i concurrent systemer, og hvordan man kan udvikle lock-free algoritmer. Han mener også at man bør gøre brug af message passing i stedet for at tilgå fælles hukommelse fra flere forskellige steder i applikationen. Alt dette er en del af metoden til at udvikle reagerende applikationer.
[…] tage i betragtning når man lave systemer i dag, hvilket Helena så udemærket har beskrevet i sit blogindlæg om emnet og som GOTOerne i år har gjort til et tema ved at dedikere en eftermiddag til at […]
[…] På GOTO Aarhus konferencen er der om mandagen et interessant foredrag holdt af Todd Montgomery om hvordan man kan løse ’Internet of Things’ problematikkerne ved at bruge ideer fra The Reactive Manifesto (som jeg før har skrevet om). […]