Intryck från Jfokus 2018

Den 5-7 februari gick årets stora utvecklarkonferens, Jfokus av stapeln på Stockholm waterfront. C.A.G var där, både som utställare och som konferensdeltagare.

Intryck från Jfokus 2018

Intryck från Jfokus 2018 150 150 C.A.G

I den inledande keynoten Software Engineering reflekterade Kevlin Henney över hur lite som egentligen är nytt av de tekniker som är heta idag. Det mesta går att hitta i arbeten från 1960-talet, till exempel i Algol 68. Funktionella språk, immutable, pipes, mikrotjänster. Men så har det egentligen alltid varit. Han sammanfattade detta utmärkt med:

The future is already here – it’s just not very evenly distributed.
– William Gibson

Amber Case

Frontend har stabiliserat sig något i år. Det är React, Angular och Vue.js som gäller, med ELM som potentiell uppstickare. ELM är React/Redux men bundlat med ett helt nytt funktionellt språk som resulterar i att vi slipper runtime errors. Användningsfallet för ELM är “Fungerande kod i produktion” till skillnad från till exempel användningsfallet “Snabbt att få fram en prototyp som liknar något vi vill ha”. Både React, Vue.js, Angular och ELM har sina unika profiler och fördelar och för mig är det inte inte självklart att någon är bättre än någon annan.

Många sessioner handlade om Serverless.

Arun Gupta berättade om designmönster och best practices kring Serverless. Serverless och mikrotjänster delar många egenskaper i detta avseende.

Jag hade väntat mig att mycket mer skulle handla om hur man orkestrerar serverless-funktioner, vilket är ett område där jag fortfarande tycker att det finns luckor.

Ett exempel på användning av serverless som är självklart, enkelt och tydligt, är funktionen som skapar en thumbnail för varje bildfil som laddas upp i en cloud bucket. Annars ser jag ganska få exempel idag på funktioner som är helt fristående som naturligt passar in som serverless. Det är fortfarande otydligt hur vi med serverless bör organisera en mikrotjänst med ett API som idag implementerar ett flertal relaterade endpoints, delvis med delade implementationer och kanske också mot samma databas. En mikrotjänst som idag har en samling relaterade endpoints blir ohanterlig om den blir uppdelad i lika många funktioner som istället ska deployas separat.

Betydligt tydligare är funktionalitet som håller på att dyka upp kring serverless, data streaming och real time analytics med till exempel Amazon Kinesis.

Fn project är ett open-source runtime för serverless. Bra om det är viktigt att vara cloud-leverantörsoberoende eller om man måste köra onpremises.

Ett antal föreläsningar handlade om mikrotjänster och hur man bryter upp monoliten till ett nätverk av mikrotjänster. Några av de mest noterbara konsekvenserna av den här transformationen är man samtidigt måste bygga in eventual consistency och pensionera distribuerade transaktioner (XA, 2-phase commit). Felhanteringen flyttas delvis till applikationerna, som till exempel genom att där så är möjligt implementera idempotens, omförsök och kompenserande operationer. Flera sessioner tog upp Design for Failure och Circuit Breakers. Bernt Ruecker från Camunda konkretiserade hur man applicerar Saga Pattern med hjälp av en workflow engine i en Spring Boot applikation på ett sånt vis att det inte blev många extra rader kod.

Adrian Hornsby visade upp lite av AWS IoT med lösningar för att hantera mjukvara på horder av små uppkopplade hårdvaruenheter. AWS IoT fungerar idag med MQTT, HTTP eller websockets. MQTT fungerar bra när uppkopplingen är störd och otillförlitlig. Han visade också upp tekniker för att flytta ut tränade Machine Learning-modeller ut till IoT-enheten, vilket krävs för att man ska kunna hålla hög tillförlitlighet och låga svarstider.

Träning av ML-modeller sker i molnet där man har stora resurser tillgängliga medan exekvering av tränade modeller sker längst ute på IoT-enheten. Att exekvera en ML-modell tar relativt lite kapacitet och tillgängligt minne som krävs är ofta bara i storleksordning några hundra MB.

Avslutande keynote AI and the Future och Computing hölls av Amber Case. Amber fokuserade på teknikens samverkan med människor, och bland annat om nackdelarna med onyanserade notifieringar från olika applikationer.

Hon tryckte på några av våra stora utmaningar – att bygga produkter som förenklar för människor istället för att utgöra en belastning:

A good tool is invisible.

Nu när konferensen är avslutad går det att samla ihop intrycken: Java fortsätter att utvecklas i och med JDK 9. Javas modulsystem är äntligen levererat efter flera års försening men få använder ännu JDK 9, och JDK 10 är bara veckor bort. Oracle kämpar fortfarande på med Java EE men ingen annan pratar om Java EE. Devops och mikrotjänster är idag självklara tekniker, verktygen Terraform och Ansible står ut. Kubernetes och Containers är mogen teknik som de flesta antingen redan använder eller är på väg mot. OpenShift är på gång. Serverless börjar mogna men man trevar fortfarande en smula hur det ska passas in. AI och Big Data kommer på bredden överallt.

Kontaktperson

Daniel Marell

+46 70 563 10 52

daniel.marell@cag.se

    X
    X