Tag Archives: java

Innføring i sky og skytjenester

Introduksjon i sky fra en sky-løsningsarkitekt

Interessen for sky-tjenester startet for noen år siden, og nå har flere organisasjoner, selskaper og startups valgt å bruke sky-løsninger. Om sky er noe for deg er helt avhengig av hva du har fra før og hva du skal bruke det til. Du må undersøke hvilke sky-avtaler som er der ute og vurdere hvordan din bruk kan bli i praksis.

Roman Castro er en løsningsarkitekt, som har jobbet med sky fra 2012 og utelukkende med Microsoft Azure i 5 år.

– Hva er definisjonen av sky?
– Nettskyen/skyen er betegnelsen på alt fra dataprosessering til datalagring på serverparker i eksterne nettverk som gjøres tilgjengelig på internett for konsumering via brukervennlige portaler/skytjenester. 

– Et eksempel kan være Microsoft tjenester som Office 365 og SharePoint, som kommer pakketert og kan kjøpes. De hostes (drives) og kjøres fra Microsoft datasenter.

– Hvilke sky-aktører er der ute? 
– Det finnes ulike sky-modeller og aktører. De tre største sky-leverandører er Amazon Web Services, Google Cloud Services og Microsoft Azure. Det finnes også mange mellomstore, som Oracle, IBM og Alibaba. Så finnes det nisjemarkeds-aktører som Heroku, Rackspace og Digital Ocean. Sky-modellen kan være privat, offentlig, hybrid eller statlig sky. Skyløsninger kan kjøpes via partnere som Visolit og Basefarm. Man kan også kjøpe applikasjonsdrift – Software som tjeneste (SaaS). 

Hovedkategorier i skytjenester: 

  • Infrastrukturtjenester (Infrastructure as a service / IaaS) som for eksempel Rackspace, AWS, OpenStack.
    – Virtuelle maskiner og OS som tjeneste med garantert SLA.
    – Målrettede tjeneste som filserver og gateways.
    – Nettverkssikkerhet som tjeneste, DDoS beskyttelse, brannmur.
  • Plattformtjenester (Platform as a Service / PaaS) som for eksempel Microsoft Azure App Services, Kubernetes, Docker.
    – Database som tjeneste (DBaaS)
    – Applikasjonsserver (App Services)
    – Integrasjonsplattform som tjeneste (iPaaS) som Enterprise Service Bus.
  • Programvare som tjeneste – (Software as a service / SaaS) som for eksempel Salesforce, MailChimp, CloudBlue, Cloud Scripting, Gmail, Office365.
    – Identitetsplattform som tjeneste (IDaaS) som Azure Active Directory.
Visualisering av ansvarsområde ved sky avtaler / David Chou

Hvem bør vurdere sky?
Holder du til i Oslo, Stockholm og Tokyo, må du tenke på hvordan den samme applikasjonen skal leveres til alle de stedene. Hvordan skal folk i Tokyo bruke applikasjonen på samme måte som folk i Oslo? Hvordan sørger man for at alle tre lokasjoner har samme governanceprinsipper og regelsett? Man bør ta en strategisk tilnærming til hvordan applikasjonene skal leveres og brukes.

Det er flere aspekter og utfordringer man bør vurdere i valg av sky-leverandør og håndtering av det internt: 

  • Styresett. Kontroll på kostnad, policy, informasjonssikkerhet, GDPR. 
  • Tilgangsmekanismer. Hvordan skal brukere og tilganger håndteres? Hvordan skal deployments mot sky gjøres?
  • Sikkerhet mot cybertrusler (beskyttelse fra DDoS angrep, patching av Zero-day sårbarheter). 
  • Hvordan skal ytelsen/selve leveransen være? 
  • Krav til personvern (Hvem følger handlinger? Hvem har tilgang til data?)
  • Dataintegritet (Hvor lagres mine backup data?)

Fordeler med sky

  • Tilgjengelig 24/7
    Data blir lagret på store datasentre og disse serverne er koblet sammen i et nettverk – såkalt privat backbone (utenfor internett) og med internett av samme leverandør. Slik funksjonalitet er viktig for selskap som tilbyr kritiske samfunnstjenester som banker og oljeselskap. Og det svarer godt på SLA (service level agreement) og SLO (service level objective).
  • Fleksibel kapasitet
    Om det for eksempel er en populær kampanje, kan kapasiteten til serverne økes kjapt for å håndtere pågangen. Når salget er ferdig, kan dette skaleres ned igjen. Den eneste ulempen er at man kan glemme å skalere ned, og det medfører store kostnader. Dette er fordi man betaler for forbruk i skyen.
Markedsandeler av skytjenester / Gartner

–  Hvilken sky plan bør man velge?
Nye prosjekter er absolutt beste utgangspunkt for å bruke sky. Bedrifter som har mange ting fra før må gjøre en del tilpasninger og flytting av data. Det kan være veldig komplekst og en arkitekt kan jobbe i ett år bare for å lage en strategi for dette. Ønsker man bare å flytte ting eller bryte opp en monolitt til microtjenester? Det finnes flere måter å komme til skyen:

Det finnes flere måter å komme til sky:
– Rehost. Flytte alt fra en server til sky. Det har lite gevinster, bare stor kost. 
– Refactor: Man endrer kodebase litt. 
– Rearchitect: Stor jobb. 
– Rebuild: Innebærer at en arkitekt jobber i 1 år bare for å komme med løsning.

Rammeverk for sky adopsjon
Man bør etablerte retningslinjer for bedrifter som ønsker å ha en kontrollert tilnærming til sky. Eksempler på rammeverk: 

  • Microsoft: aka.ms/cloudadoptionframework
  • AWS: aws.amazon.com/professional-services/CAF/
Microsoft sin Cloud Adoption Framework

Sky fra utviklerperspektiv 

Antony Charles Allen, senior .net utvikler i Experis Ciber AS

Antony Charles Allen, senior .net utvikler deler sky-erfaringer: 
Jeg jobber med Azure og Azure har mye out-of-the-box funksjonalitet. Hvis man jobber med web APiene er det veldig enkelt å publisere og teste kode i «live» miljø.

Usman Awan, java utvikler i Experis Ciber AS

Usman Awan, java utvikler deler sky-erfaringer:
Det er lett å komme igang med å eksperimentere med public cloud som AWS. Jeg prøvde ut Elastic Beanstack, EC2 og RDS på mitt hobbyprosjekt da jeg var student. Men jeg gjorde den samme tabben som mange som begyner med å ta i bruk skyen. Jeg glemte å skru av tjenester når jeg ikke brukte dem og plutselig fikk jeg en regning på 148 dollar.

– Nå foretrekker jeg å bruke Digital Ocean. Det er en billig spesialisert IaaS plattform med gode virtual machines som gir akkurat den kontrollen jeg ønsker meg. Digital Ocean kommer nå med støtte for Kubernetes som kan være interessant for mange.

Til ettertanke 

Sky er et stort område med veldig mange aktører. Å flytte tjenester du drifter Hos deg selv over  til en sky, er en krevende øvelse som forutsetter kunnskap og erfaring om markedet og teknologiene. Men når man lykkes kan det gi en fleksibilitet og smidighet som kan hjelpe din virksomhet å løse målene dine raskere og smidigere.


Tekst: Darija Sapozenkova-Hauge.


Darija Sapozenkova-Hauge, UX ekspert og teamlead i Experis Ciber AS

Java for ikke-programmerere

Favorittfilmen min fra 90 tallet er The Matrix. Hovedkarakteren, Neo, jobber som hacker for å tjene ekstra penger og så oppdager han at den verdenen han trodde på bare var en illusjon. Programmerere flytte seg oppover i verdikjeden og det var ekstra kult å kunne data og koding. Det å kunne koding er enda mer relevant i 2019.

Programvare ligger bak alt vi gjør om dagen. Om du sjekker Facebook, slår på lyset, sender blodprøver til laboratoriet eller velger barnehage for barna. For at du skal kunne overføre 100 kroner via en mobilbank-app, ligger mye kompleksitet bak det, som systemer, registre og databaser.

Jeg er teamleder for Javautviklere i konsulentselskapet Ciber og du kommer til å bli kjent med:

  • Hva er Java
  • Hvem er en typisk Javautvikler
  • Hva lages med Java  
  • Hvordan føles det å kode i Java

Artikkel er en blanding av egen research, eksempler fra java-teamet mitt i Ciber og et helt magisk intervju med java-guru Johannes Brodwall.

Johannes Brodwall – Sjefskonsulent i Sopra Steria, Norgeskjent Java-guru og grunnlegger av Mobile Era, Smidigkonferansen og XP meetup. Johannes har vært nominert til årets konsulent av Konsulentguiden 2019. Twitter: @jhannes


Hva er Java?

Java er et programmeringsspråk som kom på 1990-tallet og kom til bli. Det kom som en forbedring av et annet programmeringsspråk som heter C++ men der utviklere kvittet seg med  50 prosent av «bugs».

Java kan «kjøre» på forskjellige plattformer og er objektorientert. Java ble brukt for å lage programvare for små enheter som TV og brødrister. På slutten av 90-tallet var Java det desiderte beste valget da mange norske selskap valgte å utvikle sine tjenester og produkter. Java brukes mye av blant annet NAV, Skatt, Telenor, Norwegian, Sparebank1 og DNB. Litt senere kom C# med Microsoft som offisiell støtte og som kan levere samme funksjonalitet som Java. C#-investeringer kom på 2000-tallet og er brukt for eksempel i Helsedirektoratet, Statkraft, Statnett og mange kommersielle selskap.

– Hvorfor er Java så stor i dag?

  1. Java har en offisiell organisasjon – Oracle, som vedlikeholder språket og stadig kommer med nye oppdateringer, slik at Java er i sync med moderne teknologier.  
  2. Java er stort. Det finnes millioner av java kodelinjer som trenger vedlikehold.
  3. Java er et stabil. Serverne krasjer sjelden.
  4. Bra programmeringsopplevelse. Med Java venter programmereren 1 sekund før man kan se effekten av endringene sine, mens du med for eksempel C# fort kan vente i et minutt eller mer.

Java på topp av viktige statistikker:

  1. Nummer en på liste i perioden 1999-2019 ifølge TIOBE index (hits per search query). Det betyr at Java viser seg å være stabilt over tid (20 år).

     

  2. Første plass (16.005%) på TIOBE index liste i 2019. 
  3. 41.1% av 90 000 respondenter av Stackoverflow undersøkelsen bruker Java. Stackoverflow er populær teknologi-webside med 500 milioner besøk per måned).
    
    
  4. Andre plass (20.25%) på plass på Popularity of programming language index liste. Index-tallene kommer fra mest søkte opplæringsvideoer på Google via Google Trends.

– Hvis Java var mat, hva slags matrett hadde det vært?

Ifølge Johannes Brodwall kan man sammenligne Python med en, JavaScript med fancy bryllupskake, mens Java og C# er catering – serverer mange og fort.

Hva er laget med Java?

Jeg vil dele noen eksempler fra kollegene mine i Ciber.

André

André Sjøvoll jobber som java konsulent hos  i forvaltning hos Statens Vegvesen (SVV). Han vedlikeholder flere systemer. Et av systemene heter VegSak. Der kan brukerne søke om tillatelse å kjøre med tung, lang, bred eller høy last og saksbehandler hos SVV kan besvare forespørselen. Transportører får utstedt et løyve for å utføre transporten. 
Stikkord: #Java8  #Spring  #Hibernate  #JSP  #Soap Web Services  #Stackoverflow  #Maintenance

 

Thao

Thao Le er seniorkonsulent i Ciber, og utvikler på blant annet Meldingsformidleren for Statens Vegvesen. Denne applikasjon brukes så fagsystemer i Statens Vegvesen kan sende digital post til innbyggere og virksomheter. Applikasjonen benytter Altinn og DIFIs SOAP-tjenester for mottak av digital post. Thao beskriver applikasjonen som «Spring Boot-applikasjon som kjører på Java 8 og Tomcat, har database-integrasjon og en frontend». 

Stikkord: #Java8  #Tomcat #Spring Boot #Frontend

Sven-Jørgen

Sven-Jørgen Karlsen jobber som senior java konsulent hos NAV. Han lager et system som utveksler sosial sikkerhetsinformasjon mellom NAV og EU. Spør du ham, så sier Sven-Jørgen: «Jeg jobber med EESSI-basis som er et sett av mikrotjenester i Spring Boot som kjører på Kubernetes cluster.»  

Stikkord: #Agile Automation  #Kubernetes  #Docker  #Microservices  #Spring Boot  #Jenkins 2  #EESSI

Cato

Cato Eik er Java-fagleder i Ciber og jobber som senior utvikler hos Eika bankene. Cato utvikler et system der brukeren kan søke lån eller kredittkort. Cato, som de fleste Java-utviklere jobber på server-siden (backend). 

Stikkord: #Java8 #Micro Services  #Open Shift  #Liquibase  #Jersey  #Automation  #BanID 

 

Hva er en typisk Java-utvikler?   

I følge Johannes Brodwall finnes det en stereotypi som er sann: En mannlig backendutvikler er ubarbert, mens en frontend utvikler har fint skjegg eller bart. Kvinnelige frontendutviklere har bluse, mens backendutviklere har genser. Skal utvikleren på jobb og vil unngå å gå i møter, så tar de på seg sort t-skjorte fra utviklerkonferanse eller en hoody. Skal man på møte den dagen, så bruker man farget skjorte. Har en utvikler fine bukser eller jakke – er det et faresignal om at han eller hun har begynt å jobbe alt for mye med management og ikke er så god til å programmere lenger.

Hva motiverer en utvikler?

  1. Fullføre piece of code
  2. Lære nye ting
  3. Føle mestring

Hvilke personegenskaper bør en utvikler ha?

1. Forståelsen av at man ikke er dum bare fordi man ikke klarer å løse en oppgave og ikke gi opp. Det kan ofte skje at du sitter med en kode som ikke funker. Og du vet ikke hvorfor. Etter flere timer med frustrasjon finner du ut at det var bare en ekstra parentes som satt i koden. Med tiden lærer man å løse enkle problemer, men man kommer opp i mer komplekse problemstillinger. Derfor er det smart for en utvikler å dele opp oppgavene slik at man kan oppnå noe til tross for at man ikke oppnår alt.

2. En god utvikler trenger oppmerksomhet for detaljer. Maskinen gjør eksakt det den er bedt om å gjøre, selv om det ikke var det man mente å be den om.

3. Tålmodighet til å koble mentale biter sammen.

Hvordan ser en dårlig kode ut?

Man sier at all kode som man ikke har skrevet selv, er en stygg kode. Og det er ofte sant. Men det finnes noen karakteristiske trekk som gjenspeiler en dårlig kode:

  1. Koden kan være rett og slett slurvete (dårlig formatert).
  2. Det kan være for mange koder der det er ikke nødvending.
  3. Dårlig organisert og dårlig implementert kode.  

Slurvete kode er enklere å se og lett å fikse, mens dårlig struktur er veldig tidkrevende.

– Hvordan vet man at noen er en god programmerer?

Johannes  kan du ikke vite det hvis du ikke forstår koding. Du kan be noen å parprogrammere, og så høre med vedkommende om hvordan det gikk.

Hva er Java programmeringsopplevelse?

«Backend runs on the servers, frontend runs on the browser. I work on the server side.»

Man sitter ofte foran flere store sorte skjermer, med favoritt-tastaturet. Java er backend og det som lages er ikke direkte synlig for brukere, men når browseren kommer opp i bildet er den hvit. Og det er bedre for øynene å sitte foran hvit skjerm.

Arbeidsverktøy

For å komme i gang med Java, så må man laste ned JDK (Java development kit). JDK kommer med 25 000 classes (extensive libraries). Man bruker ofte IntelliJ for å lage java kode. Eclipse er i følge Johannes et enda bedre editeringsverktøy, men det er ikke så mange som bruker det. Man kan også editere i TextPad, NotePad, Visual Studio, VS Code m.m.

Til venstre ser man Project Explorer i IntelliJ med mappestruktur, til høyre skriver man kode, nede ser man hvordan koden kjøres. Her lages .java filen og konverteres til .class fil.

På PC har man Command Line Window (Terminal på MAC) som kjører .class fil.

Systemet på bildet er brukt til internt vedlikehold i redningssystemer i Norge. Til venstre ser vi JavaScript i en Chrome browser. Det er frontend men det er tydelig ikke berørt av en designer. Til høyre ser man Chrome debugging tools.

Når jeg ber Johannes å utdype hva systemet gjør så sier han: «You can see network requests that are used by the client (written in JavaScript) to fetch data from the server (written in Java)» Han insisterer på at det ikke går an å si dette på en mer allment forståelig måte, så jeg må nøye meg med den forklaringen.

Syntax

Java, som alle programmeringsspråk har sine regler. Blå er såkallte nøkkelord som utgjøre hovedgramatikken. Det finnes også data typer, operators, variable, kommentarer og flere konstruksjoner.

Her ser man et program som søker etter ordet «Cat».

La oss se på elementtypen «Comments».  Johannes forteller at det finnes 3 måter å kommentere på i Java.

// Kommentar på en linje. Brukes for korte kommentarer, ofte TODO huskepunkter

/*
Kommentar på flere linjer. Brukes ofte for å beholde en kopi av gammel kode, eller alternativ variant av kode, eller tanker man hadde da man skrev kode. 
*/  


/**
* Såkalt javadoc. Det er dokumentasjonskommentar
* en linje eller flere. Verktøy omformer kommentaren
* til dokumentasjon på websider
*/

Johannes påpeker at hvis man ikke er flink til å skrive en god kode, så er man like dårlig til å skrive gode kommentarer.

In the zoneIn the zone Zone. Johannes Brodwall koder.

Du sitter konsentrert med en kode og er «in the zone». Så kommer det verste som kan skje – distraksjon. Som utvikler så må du enten ha god korttidshukommelse eller bygge en struktur som du lett kan navigere i. For å håndtere distraksjoner bedre, må man dele opp oppgavene i mindre biter.  

Parprogrammering


Det eksisterer et ordtak, «Det én programmer kan gjøre på 1 måned, kan to programmere gjøre på 2 måneder». Det kan være sant, men unntaket er parprogrammering. Parprogrammering er en teknikk der to programmerere sitter ved siden av hverandre og jobber med en kode sammen på samme maskin. Men hvorfor er to som parprogrammerer bedre enn to som sitter og koder separat? Det er enklere å håndtere distraksjoner når man jobber sammen på den måten – man må tenke høyt når man koder og man lager en slags mental «tråd» som hjelper en å komme tilbake til kontekst. Dessuten, når man har praprogrammert så har man to personer som kan endre kode eller fikse problemer når noe går galt.

Fira Code Font

Visste du at det finnes font for programmerere? Fonten er ikke Java-spesifikk, men er likevel en morsom severdighet. Fira Code Font brukes for å formatere «operators» til å være av mer lesbare og hjelper utviklere å navigere i koden.

For å forstå en programmerer må man kunne programmere. Vet du hva det egentlig betyr når en utvikler sier «We need to rewrite the monolith with Spring Boot in Kafka in order to support Microservice architecture on Kubernetes with event streams»? Det kan bety «Vi leter etter passende moderne teknologier for å løse kundens problem, men det kan også bety «Vi vet ikke hva brukeren trenger, så vi skal leke med teknologien og bygge opp CV-ene våre istedenfor». Du må forstå både teknologi og brukerbehov for å vite hvilken tolkning som er riktig.

En du ikke så god på design, kan du klare å gjøre en design-jobb uten mye opplæring. Men kan du ikke kode, så har du ingen sjanse å lage noe som helst. Du bare sitter og stirrer på skjermen foran deg. Ifølge Johannes, tar det en livstid å lære seg Java. Så det er bare å begynne nå. Java er spennende og gøy.

«I didn’t say it would be easy. Just said it would be the truth.»
Morpheus, The Matrix


Tekst: Darija Sapozenkova-Hauge. Bilder: Darija Sapozenkova-Hauge & web, matbilder: Unsplash: Alex Munsell, Jay Wennington, Saile Ilyas. Artikkelen publiseres også i Typografiske Meddelelser (TgM) – et fagblad utgitt av Oslo grafiske fagforening. Takk til Eva-Lill Bekkevad for korrekturlesing.


Darija Sapozenkova-Hauge, senior interaksjonsdesinger i Ciber (Experis). blog.darijasart.com
Darija Sapozenkova-Hauge, sjefskonsulent og teamleder i Experis Ciber AS