Van 7 tot en met 9 maart heb ik vanuit de NLJUG de QCon in Londen bezocht. Dit is geen typische Java conferentie, dus ik was erg nieuwsgierig naar zowel de sessies als de opzet van de conferentie. Niet in de laatste plaats, omdat mijn favoriete techwebsite www.infoq.com van dezelfde organisatie is.
Eerst maar eens met de opzet van de conferentie beginnen. QCon duurt vijf dagen, waarvan drie conferentiedagen, gevolgd door twee workshopdagen. De conferentiedagen hebben 5 tracks, waarvan het thema iedere dag wisselt. Iedere track heeft een trackmanager. Deze bepaalt de samenstelling van de talks voor een track. Dit gebeurt zonder een Call for Papers, dus de trackmanager benadert interessante sprekers zelf. Dit is zeer goed gelukt! Lead developers, pioniers en architecten van ’s werelds meest aansprekende sofware development projecten stonden in het programma.
Dit brengt me op de inhoud. Zoals gezegd, vijf tracks op de eerste drie dagen, met per track 6 sessies. Zoals je zult begrijpen, betekent dat kiezen. Gelukkig kun je achteraf kijken wat je hebt gemist, want (bijna) alle sessies worden opgenomen en zijn snel na de sessie beschikbaar voor bezoekers. N.B. sommige sessies worden “gratis” aangeboden voor iedereen via www.infoq.com. Een aantal voorbeelden van interessante tracks zijn: “Back to Java”, “Architecting for failure”, “Modern Agile Development”, “Microservices for Mega architectures”, en “Modern CS in the real world”.
Sessie over architectuur BBC iPlayer
Mobb programming
Van de sessies die ik heb bezocht, zal ik hier enkele highlights delen van wat ik heb opgepikt. Ik begin met Mobb programming, waarvan ik nog niet eerder had gehoord. Op QCon heb ik er echter veel enthousiaste verhalen over gehoord. Het is een soort overtreffende trap van pair programming, zoals iedereen het wel kent. Hiervan is al lang bekend vanuit diverse studies (zoals http://www.cs.utah.edu/~lwilliam/Papers/ieeeSoftware.PDF) dat dit effectiever is dan “solo” programming. Maar wat als je met 3, 4 of 5 man tegelijkertijd aan de slag gaat, in dezelfde ruimte, met dezelfde computer? Wat is dan het effect op de kwaliteit en productiviteit? Tot een man of 5 is Mobb programming erg effectief volgens developers, die dit toepassen. Code is vrijwel zonder fouten, onderhoudbaar en goed geschreven. Bij Mobb programming zijn er wel een aantal spelregels nodig om het proces te structuren, zoals het alleen mogen geven van feedback op gezette momenten. Eén voordeel dat Mobb programming heeft volgens de beoefenaars is dat het behoorlijk gemakkelijk is om een nieuw teamlid in te werken. Ik ben benieuwd of de NLJUG-achterban hier al ervaring mee heeft en wat hun bevindingen zijn.
Stop maar met Docker
Bij een andere sessie heb ik een interessant verhaal gehoord over “immutable infrastructure” door Axel Fontaine. En nee, dit ging niet over Docker. Axel betoogde dat (hardware) resources tegenwoordig niet meer schaars zijn, maar juist in overvloed beschikbaar. Via de cloud dan wel te verstaan. Hij hield een pleidooi, dat applicaties met zowel de OS als applicatieserverlaag ineens gedeployed zouden moeten worden als immutable VM. De VM moet dan wel op een omgevingsonafhankelijke wijze worden opgeleverd, zodat applicaties (eenmaal getest) in de ontwikkelstraat overal kunnen draaien zonder aanvullende configuratie. Ze moeten dus immutable zijn.
Praktisch probleem is hierbij wel dat het deployen van hele VM’s nogal wat bandbreedte vergt. Hier helpt Boxfuse mee, het bedrijf dat Axel heeft opgericht. Hij liet zien hoe hij een simpele Node.js applicatie in een uitermate gestripte Linux-variant van slechts 15 MB kan opleveren. Boxfuse verpakt de applicatie dus in zo’n “mini” VM, waardoor je niet zit met de GB’s, die een VM normaal als footprint meebrengt. Indrukwekkend! Dit is mogelijk door onder meer door zaken als het user management, de firewall en overbodige zaken als teksteditors en overige tools te verwijderen van Linux. Is dit dan wel veilig? Jazeker, want als je niet meer kunt inloggen op de VM, waarvoor dan nog een firewall, aldus Axel. Securityrisico’s nemen juist toe door complexiteit en met een minimaal OS ben je veel complexiteit kwijt.
Het belangrijkste is echter dat het deployen naar de cloud van een 15 MB VM ineens geen probleem meer is. En Docker? “Waarom zou je?”, zegt Axel. “Op de cloud draait al een hypervisor. Hier nog een container managementlaag aan toevoegen introduceert enkel onnodige extra complexiteit. Als je op je eigen infrastructuur draait zonder hypervisor, dan is Docker allicht wel interessant”, geeft hij toe. Disclaimer: Axel is de founder van Boxfuse J
NQSB TLS
Tijdens een andere sessie heb ik een inkijkje gekregen in de complexiteit van OpenSSL. Dit heeft nogal wat security issues gehad de afgelopen jaren en Anil Madhavapaddy vertelt dat dit samenhangt met de complexiteit en de wijze waarop OpenSSL is gebouwd. De (c) code is niet modulair, ondersteunt een (overbodige) grote range aan protocolversies en versleutelingsalgoritmes en is niet testbaar geschreven.
NQSB TLS is een nieuwe implementatie van het TLS-protocol, die probeert dit beter te doen dan de wijze waarop dit binnen OpenSSL is geïmplementeerd. Dit wordt gedaan met de functionele programmeertaal OCaml. NQSB staat trouwens voor “Not Quite So Broken”. Leuk feitje is dat OpenSSL ongeveer 350.000 lines of code heeft en NQSB TLS minder dan 10.000. Het is me overigens niet helder geworden wat de status nu precies is van dit project. Als je dit onderwerp interessant vindt, check dan “The morning paper”. Hier vind je een interessant artikel over dit onderwerp (https://blog.acolyer.org/2016/02/23/not-quite-so-broken-tls/)
Build, Ship & Run Unikernels
John Cormack vertelde in een andere sessie hoe unikernels steeds meer volwassen worden en nu zo ver zijn als Docker drie jaar geleden was. Maar wat is een unikernel? Het is een absoluut minimaal OS, dat alleen afhankelijkheden bevat, die nodig zijn voor een specifieke toepassing of applicatie. Vanuit een library operating system, zoals Mirage, kan zo’n unikernel worden samengesteld. Dit op basis van een modulaire stack libraries, die nodig zijn voor een bepaalde toepassing. NQSB TLS maakt bijvoorbeeld ook gebruik van zo’n unikernel, gebaseerd op MirageOS.
Wellicht vraag je jezelf af hoe zich dit verhoudt tot de gestripte Linux OS-versies, zoals deze door Boxfuse worden opgeleverd. Welnu, waar een normaal Linux OS meer dan 1 GB groot is, en Boxfuse 15 MB nodig heeft om een applicatie te draaien gebaseerd op NodeJS, daar heeft een unikernel gebaseerde DNS-server slechts 200 KB (!!!!) nodig om volledig operationeel te zijn. Wow!
En nog veel meer
Ik heb nu een paar onderwerpen behandeld die mij aanspraken, inspireerden of verbaasden. Op de website van de NLJUG (www.nljug.org) vind je een meer uitgebreide verslaglegging. Hier staat onder meer een verslag van een sessie over Domain Driven Design & Microservices door niemand minder dan Eric Evans (Auteur klassieke DDD boek). Zeer de moeite waard en trouwens integraal terug te kijken op InfoQ (http://www.infoq.com/presentations/ddd-microservices-2016). Tevens staat er een stuk over hoe Barclays, een megabank met 150.000 werknemers, in één jaar tijd van nauwelijks agile naar zeer agile is gegaan, een stuk hoe bij Unruly (video ad technology bedrijf) geen CI meer wordt gebruikt door de teams en een paar inzichten over hoe de architectuur achter Google Docs werkt.
Tot slot
Samenvattend kan ik het volgende stellen: als je op zoek bent naar horizonverbreding als Java developer, interesse hebt in vernieuwende architectuurconcepten en wilt weten hoe inzichten uit computerwetenschap helpen om het dagelijkse werk in allerlei opzichten effectiever te maken, dan is QCon een echte aanrader. Dit beeld is gebaseerd op de conferentiedagen, want bij de workshops op de laatste twee dagen ben ik niet geweest. Je kunt de conferentie trouwens ook bezoeken in bijvoorbeeld New York, San Francisco, Rio, Beijing, Sjanghai en Tokyo als je niet kunt wachten tot QCon London 2017
Developers op QCon dragen geen T-shirt