Let skydække over GOTO


Bornholm

Så er GOTO CPH 2017 i fuld gang. Er fornyligt kommet på et projekt der efter alt sandsynlighed kommer til at leve som mikroservices i skyerne. Efter at have arbejdet i en branche der som udgangspunkt hold sig langt fra skyen, føler jeg mig lidt bagud på point. Har derfor sat mig for at benytte GOTO CPH 2017 til at komme på omgangshøjde. (Den skarpe læser vil bemærke jeg kegler rundt i sportsmetaforene.)

Første dag var ved første øjekast sky, og mikrofri. Fandt alligevel noget der kunne gøre mig klogere.

Det første jeg gik til var Functional Architecture: the Pits of Success.

Hovede pointen var, at når man laver specielt microservices, er der en række af måder man tænker software på i den funktionelle programmerings verden der, giver super go mening og gør ting meget nemmere.

For mig som delvist kommer den anden vej fra. Nemlig som fan af funktionel Programmering og uerfaren med Micro services. er det oplagte “take away” hvis du kan funktionel programmering og kender den tankegang, er du godt på vej til at lave veldesignet micro services.

Konkret kan nævnes konceptet “Pure functions”, dvs funktioner der ikke har side effekter. Når man først har lært konceptet, kan flere og flere ting håndteres som sådan, og de dele der faktisk handler om “state” eller lignende, bliver naturlig isoleret, og ofte mindre end man måske tror.

Funktionel, specielt funktioner uden side effekter, giver også væsentligt nemmere test bar kode. Og når man tænker i funktioner der spiser og konventer data. Tænker man også mere i data, og kun data. Dette spiller også naturligt sammen med hele service ideen hvor man netop sender data fra et system til et andet. Data som man, efter min mening bør betragte som “immutable”, events eller fakta der per definition ikke ændre sig.

Tager man dette et skridt videre er et system af microservices i virkeligheden et distribueret system, baseret på “message parsing”, med fokus på robusthed. Dette er det koncept Erlang (og Elixir) addressere. Så hvis man virkelig vil “folde sit hovede omkring dette”, kan man lære meget ved at lære netop det.

Vil personligt anbefale at man bygger sin micro service i et funktionelt sprog som enten Clojure eller Elixir eller lign. Tillader opgaven ikke det, kan man nøjes med at lære sig selv noget funktionel programmering, også bruge ideerne i hvad sprog man har med at gøre. Kan fx af erfaring nævne man sagtens kan lave metoder i Java der er uden side effekter, og min Java kode indeholder væsentligt flere af den slags efter jeg har lært mig noget Funktionel programmering.

Den næste session den dag jeg vil fremhæve er Effective Testing with API Simulation and (Micro)Service Virtualisation.

Har selv tidligere arbejdet med at udvikler controller software eller services, der monitorerer eller kommunikere på forskellig vis, og fundet det absolut nødvendigt at kunne simulerer externe dele, både i udviklingsfasen, men også i forbindelse med integrations og regressions test. Det varmer derfor mit udvikler hjerte at høre folk med samme filosofi, og med et så vidt jeg kan se interesant værktøj nemlig hoverfly

Mit første indskydelse er nok, hvor svært kan det være at bygge en test service der passer til det man vil teste, men hoverfly ser ud til at kunne en del og formodeligt en af den slags værktøjer hvor “return on learning investment” er fornuftigt.

Med hoverfly kan man fx, kople den mellem sin klient og den service man ønsker at simulere,, den kan så optaget request og responce og så skiftes til at bruger gemte responce fra den rigtige service. Det er også muligt at konfigurer regler til at styre hvilke svar man får, på indtil flere snedige måder, så min mave fornemmelse siger mig man kan simulere mange, også ikke trivielle services med dette forholdsvise enkle værktøj.

Så er vi fremme til dag to, som er igang mens jeg sidder her og skriver, den har en helt spor om microservices, så med min lille selvvalgte dagsorden er det en “no brainer”. Har allerede set et par ting jeg bestemt kan anbefale, men må have det på afstand og lade det simre før jeg kan skrive noget klogt.

Så heldigvis for mig og eventuelle læsere har GOTO netop annonceret hvad de kalder GOTO Play en App der indeholder konference videoer kort tid efter.

Vil anbefale man er på udkik efter

Designing for the serverless age

Reactive Microsystems: The Evolution of Microservices at Scale

Den sidste specielt er en super god talk og indeholder mange gode betragtninger om micro services.

Anyway, nu er der kage så må jeg hellere runde af for denne gang.

Share Button
The following two tabs change content below.
Profile photo of peterjc

peterjc

Peter har arbejdet en del år for SSBV-Rovsing, både i danmark og et par år i tyskland. Har bidraget til en håndfuld ESA projekter, der iblandt ATV, Galileo og Sentinel-1, Både som udvikler og test manager. Roder desuden med Clojure i sin fritid.
Profile photo of peterjc

Nyeste indlæg af peterjc (se alle)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *