IT-utvecklingstrender februari 2018

2017 är året då drifts- och utvecklingsplattformen äntligen blev klar. Hittills under alla år har det alltid varit en hel del som skavt, varit delvis dyrt, komplicerat och inflexibelt. Men NU har Containers i molnet tagit över! 2017 är också året då Kubernetes vann slaget mot Docker Swarm om Containrarnas herravälde.

IT-utvecklingstrender februari 2018

IT-utvecklingstrender februari 2018 150 150 C.A.G

Kubernetes är en open-source plattform för Container-orkestrering skapad av Google. Kubernetes håller löftet om en stabil, flexibel och ekonomisk drifts- och utvecklingsplattform. Det fungerar så bra nu att om man enligt min subjektiva uppfattning vill ha utmaningar så är det dags att börja leta upp något annat.

Med Kubernetes i molnet har vi lastbalansering, övervakning, monitorering och logghantering som bara funkar, och vi har alla aspekter av TLS-certifikathanteringen automatiserad. Vi kan uppdatera både applikationer och infrastruktur utan driftsavbrott, flera gånger om dagen om vi vill och behöver inte planera för det eller arbeta övertid. En ny och trevlig bekantskap är CircleCI som deployment pipepline. Den kan bygga, köra automatiska integrationstester och deploya i alla miljöer. Det är en SaaS-tjänst så man slipper underhålla den.

Det kommer emellertid att dröja länge innan till exempel myndigheter och sjukvård som idag kör onpremises kommer över till molnet. Där är OpenShift från RedHat en intressant lösning då det kan ge organisationer som av olika skäl inte kan köra i molnet tillgång till Kubernetes och Container-lösningar.

 

Serverless och FaaS är på väg, och de utgör en naturlig och ganska linjär utveckling, och kommer enligt min uppfattning inte innebära några större revolutioner utöver Containers och Cloud. Med serverless slipper vi ett par konfigurationsfiler i våra repon (Dockerfile och Kuberneteskonfigurationen) och FaaS ger oss möjlighet att skala applikationerna på ett annat sätt. Ingendera är idag varken stora eller vanliga problem.

Den stora revolutionen har redan hänt i och med Kubernetes och Containers med infrastruktur som kod där nya miljöer sätts upp av utvecklingsteamen själva, tekniskt identiska med produktionsmiljöerna.

Inom programspråk så gäller för 2018 att Javascript och Java dominerar. Javascript med hjälp av React, Angular och Node.js. På backend är Java fortfarande mycket stort. C# är stort främst på myndigheter. Node.js har dykt upp och ger dem som vill möjlighet att förenkla sin teknikstack och team-samarbetet genom att köra samma stack och ekosystem på både frontend och backend.

Det Lars Danielsson skriver i Techworld om trender 2018 kan sammanfattas med: Docker och Containers, Kubernetes, Machine Learning, Node.js och React, samt Rust. Det enda vi inte är på (och nästan förbi) är kanske programspråket Rust, även om det verkar intressant.

En solklar trend just nu är machine learning (ML). Många pratar om det och är nyfikna, och det är en stor hype kring ML nu, men få drar ännu nytta av det. Vi har nyfiket följt ML och framför allt Deep Learning noga under några år nu och ser att tekniken och lösningarna håller på att stabiliserats, de börjar närma sig att bli produktionsklara i mina ögon.

Som jag ser det kommer ML snart att ses som bara ytterligare ett bibliotek och ramverk som vi inom IT behöver lära oss att hantera. Utvecklare som hunnit få lite silverfärg på tinningarna är normalt vana att hantera nya paradigmer, språk och ramverk, och Deep Learning blir då ytterligare en teknik och ett ramverk i raden som vi har att lära oss att bemästra.

För ML är det idag främst Python som gäller, men det är inte den enda anledningen till att Python idag är ett populärt språk på uppgång.

En intressant spaning är denna undersökning från Hackerrank där vi kan konstatera att programspråken Javascript, Java och Python dominerar efterfrågan bland arbetsgivarna och att Python leder stort som det språk utvecklare just nu tycker bäst om.

Jag konstaterar att vi på C.A.G ligger helt rätt positionerade med vår kompetens runt Cloud, Kubernetes, Containers, OpenShift, Continuous Delivery och Node.js och vi har sedan länge legat rätt med vår breda och stabila kompetens kring Java och .NET.

En stor utmaning jag ser att vi i branschen har kvar att övervinna är hur man i praktiken bygger sina applikationer med automatiska tester på ett sätt där testerna är nyttiga, möjliga att underhålla över tid och att det fångar upp tillräckligt mycket att applikationens funktionalitet så att man på riktigt ska våga releasa nya versioner av systemen ut i produktion och kunna känna förtroende för att man inte har sönder något som tidigare fungerade.

Hur man gör detta är delvis ett metodproblem och delvis faktiskt fortfarande ett tekniskt problem som ofta är relaterat till tjänstemockning. Det är fortfarande svårt att sätta upp meningsfulla och lättarbetade automatiska integrationstestmiljöer för system som har många yttre beroenden. En problemindikation jag ser i automatiska tester är när testerna till sin karaktär mest detekterar ändringar i systemets beteende och inte testar systemets korrekthet.

Här ser jag en stor utmaning, men med drifts- och testsystemsproblematiken delvis ur vägen i och med Kubernetes intåg har vi mer kraft att fokusera på att lösa dessa problem.

Kontaktperson

Daniel Marell

+46 70 563 10 52

daniel.marell@cag.se

    X
    X