Nem og gratis skygge-it: Vi putter emneord i skyen

Illustration: Wikipedia-bruger Nillerdk
Er du ny med sky? Det var vi også, men det er nemt, tager ikke mange minutter - og så er det gratis i 12 måneder.

På Version2 har vi udviklet et lille machine learning-program, der kan gætte på emneord til nye artikler. Og den er faktisk ganske ferm til jobbet, bedømt på den daglige anvendelse. I hvert fald hvis man spørger programmøren.

Indtil videre har programmet bare kørt på min egen pc, men den løsning er ikke holdbar i længden. Nådesstødet til denne interimistiske ‘serverløsning’ kom, da vores it-afdeling strammede sikkerhedspolitikken på netværket, så vores almindelige pc’er ikke længere kan snakke sammen på det interne netværk - heller ikke, selvom man er en kendt bruger og benytter en kablet forbindelse.

Den politik kan man jo kun bifalde, sikkerheden er vigtig, men nu må vi kigge på andre løsninger, hvis mine kolleger også skal benytte den lille browser-udvidelse, som klistrer vores content management-system sammen med gætte-serveren.

Ergo skal vi i skyen, også kendt som ‘andre folks computere’. Det har jeg aldrig rigtigt prøvet, men hvor svært kan det være?

Via Linux Subsystem for Windows har jeg efterhånden fået en del erfaring med Bash-terminalen, som man nok skal bruge til en hovedløs server i skyen, gætter jeg på.

Det smarte er, at sky-leverandørerne giver gode tilbud, hvis man kan klare sig for lidt: Nul kroner i 12 måneder, lokker Amazon med, og konkurrenterne Microsoft og Google har samme slags tilbud.

Der er altså ikke meget at tabe, for os der gør det i skygge-it eller hobby-programmering. Vi vælger Amazon, men hvis det ikke lige er sagen, findes der altså alternativer.

I løvens hule

Illustration: Version2

Hos Amazon starter rejsen mod de højere luftlag ved at logge ind i butikken, der også skal have ens telefonnummer og kreditkort-oplysninger. (Helt ‘gratis’ er det altså ikke.)

Når man først er inde i løvens hule, vælges en ‘support plan’ med navnet ‘basic plan’, der vælges ved at trykke på knappen ‘free’ - det ord kan vi li'.

Herefter mødes vi af skærmen ‘AWS Management’ hvor man kan vælge mellem en hulens masse produkter.

Vi vælger ‘EC2’, som står for elastic cloud - Amazons gammeldags server-instanser, uden dikkedarer.

Nu skal vi vælge en type, med hvilket der menes et styresystem, som er installeret og klar til brug. Her kigger vi efter dem, der er markeret som ‘free tier eligible’ - gratis. Jeg vælger en ‘Amazon Linux’, der vist bygger på Red Hats produkt og som har Java indbygget. Vores program er skrevet i Java, så jeg kan nemt komme i gang, tænker jeg.

I næste skridt skal man vælge en ‘instance type,’ som handler om, hvor mange hardware-resurser, man får til rådighed. Her er valget nemt, for der er kun én gratis mulighed: ‘t2.micro’. Den byder på én gigabyte hukommelse og én ‘virtuel’ cpu. Man får, hvad man (ikke) betaler for, og det er jo rimeligt nok.

Men det er ikke meget RAM at gøre godt med og de ordhyppigheds-tabeller, som maskinlærings-programmet benytter, fylder en hel del.

Jeg mærker rynkerne i panden, ligesom når man spotter en regnsky på en forårs-picnic, for nu at blive indenfor metaforikken.

Nøgler og notifikationer

Men vi haster videre, godkender vores opsætning med et klik på en knap og så i gang med det rigtige arbejde.

Illustration: Version2

Punkt ét er at skabe et sæt nøgler, som benyttes til at autentificere brugeren med, når man skal snakke med sky-serveren via et terminal-program. Det gøres via webkonsollen og nøglernes downloades.

Man skal passe godt på nøglen, da den giver adgang til hele moletjavsen. På næste skærm meddeles det lystigt, at vores instans er ‘launching’ som en anden rumraket.

I mellemtiden kan man benytte lejligheden til at sætte notifikationer på regningen, så man ikke bruger penge, man ikke havde tænkt sig at bruge. Her i eksemplet går vi efter gratis, men hvis man skulle fristes til at købe sig til ekstra ydelser, er det meget godt at have styr på, at omkostningerne ikke løber løbsk.

Amazons kom-i-gang-vejledninger (som er nemme at læse) siger, at vi nu skal installere kommandolinje-værktøjet Awscli. Men det er egentlig ikke noget, jeg har haft brug for indtil videre, så her springer jeg bare dette skridt over.

Efter et par minutter er instansen oppe at køre, og så er vi parat til at gå ombord. Jeg benytter som nævnt Windows Subsystem for Linux (WSL), som vi har beskrevet i en tidligere artikel.

Læs også: Sådan finder vi forsker-navne med Linux-kommandoer på Windows

Det er en Bash-terminal, der kan klare alle de sædvanlige Linux-kommandoer, men man kan for eksempel også bruge Windows’ Powershell, hvis man er gladere for den.

Næsen i skyen

Jeg kopierer mine nøgler ind i WSL ved at navigere til min download-folder på Windows, som hedder /mnt/c/Users/tan/Downloads inde i Bash, og kopierer nøglen med kommandoen

cp TaniasAWSNoegler.pem ~/TaniasAWSNoegler.pem

– som kopierer den til min ‘home’-mappe /home/tania. Amazons vejledning siger, at vi skal skifte rettigheder på nøglefilen af hensyn til sikkerheden. Det gør vi med kommandoen
chmod 400 TaniasAWSNoegler.pem

Amazons webkonsol giver overblik over instanserne og deres egenskaber. Illustration: Version2

Nu skal vi bruge vores brugernavn og serverens offentlige domænenavn for at logge ind. Brugernavnet er altid ‘ec2-user’ for vores type instans og domænet står i webkonsollens kolonne ‘Public DNS (IPv4).’ Mit er:

ec2-18-223-114-109.us-east-2.compute.amazonaws.com

Og nu kan jeg logge ind med Bash-kommandoen
$ sudo ssh -i TaniasAWSNoegler.pem ec2-user@ec2-18-223-114-109.us-east-2.compute.amazonaws.com

Helledusseda! Nu er vi i skyen. Den terminal, Amazon Linux benytter, er også Bash, så kommandoerne er de samme som dem, jeg kender i forvejen. Det er næsten ikke til at kende forskel, på nær at terminalen skriver [ec2-user@ip-172-31-46-107] i prompten.

Jeg starter med at teste den indbyggede Java-installation med kommandoen

$ java -version

Som kvitterer med:
java version "1.7.0_211"
OpenJDK Runtime Environment (amzn-2.6.17.1.79.amzn1-x86_64 u211-b02)
OpenJDK 64-Bit Server VM (build 24.211-b02, mixed mode)

For dælen. Det er Java 7, og det kan jeg ikke bruge. Det skyldes, at jeg er blevet meget glad for den nye typeinferens for lokale variable, som blev introduceret i Java 10, og Java 8's streams og closures. Den var værre…

Sikke en cliffhanger. Læs med i næste episode af sagaen, hvor vi installerer Java 11 på sky-serveren, får vores machine-learning op og køre, åbner en port i firewallen og støder på et mystisk problem i koden. Altså masser af spænding og dramatik. Bliv på kanalen.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere