• Home
  • Home
  • Scoreboard
  • Scoreboard
  • Exam statistics
  • Exam statistics
  • Profile
  • Profile
  • Login.no
  • Login.no
  • Home
  • Home
  • Scoreboard
  • Scoreboard
  • Exam statistics
  • Exam statistics
  • Profile
  • Profile
  • Login.no
  • Login.no
  • BrowseStudy

    Courses

    + Add
    Edit
    / study

    Learning Material for DCSG2003

    This course allows examination aids, and is not a multiple choice based exam.

    Oppgave 7 ( 10% ) a,b Se på vedlagte diagram. På de tre serverne kjører en Docker Service som ble startet slik: docker service create --replica=3 --name=bookface -p 4080:80 bookface:v1 a) Velg tre IP adresser til server1, server2 og server3. Trafikk utenifra når LB på port 80. Lag en frontend og backend oppføring til HAproxy som kommer til å kjøre på lastbalansereren "LB", slik at trafikken som kommer inn når bookface tjenesten. Det er ønskelig å kjøre enda en tjeneste på serverne i tillegg til den som allerede kjører. Denne har en nyere versjon av bookface. Den startes slik: docker service create --replica=3 --name=bookface-test -p 5080:80 bookface:v2 b) Lag en egen frontend og backend oppføring som skal til samme HAproxy tjeneste, slik at den kan lastbalansere både for den originale og den nye tjenesten. Gjør de antagelsene du trenger for at dette skal fungere. EKSAMEN 2019:::: :::::::::::::::::::::::::::::: Okkulis er et firma som utvikler og selger VR headset. De skal i disse dager lansere sin nyeste VR brille, Okkulis Kvest. Sammen med lanseringen blir det lansert en del spill som skal vekke kunders interesse. Ett av spillene er Sword Beats, hvor man skal slå på klosser i takt med musikk. Det er utviklingsteamet til Sword Beats som ber deg om å bistå dem med arkitekturen for deres back-end før lanseringen. Deres plan er å ha så mye av arkitekturen basert på Docker, men de har lite kompetanse på dette området. Den første utfordringen du ser, er at de bruker mange begreper om hverandre og at det er en den forvirring rundt Docker Swarm. a) Forklar kort forskjellen mellom å ha mange servere med docker og det å sette dem sammen som en Docker Swarm. Du bør peke ut tre konkrete forskjeller, men du trenger ikke forklare det veldig teknisk. En av utviklerne er usikker på hvordan Docker håndterer dette med nettverk. Er alle docker instansene tilgjengelig på det lokale nettet i skyen deres? b) Kan du gi et forklarende svar på spørsmålet? De tar valget om å sette maskinene sammen i en Docker Swarm. Det er en del tjenester som skal gå der. En av tjenestene er PointSaver, som tar imot poengsummen fra spillet og lagerer det i en database. Denne tjenesten lytter på port 5002 for inkommende TCP trafikk. De har nå laget et Docker image på egenhånd og der eksporteres port 5002. Første gang de prøver å starte tjenesten, gjør de det slik: docker service create -p 5002 pointsaver:latest Tjenesten starter, men de får ikke kontakt fra noen test-klienter. De er sikker på at brannmur-regler ikke er årsaken til dette. Forklar hva som har skjedd og hvorfor Nå har de fått tjenesten til å kjøre og kan koble klienter til den. Etter hvert som utviklingen øker ser de at det å bygge nye images hver gang de skal endre på en konfigurasjonsfil blir slitsomt i denne fasen. Det neste de lurer på er hvordan de enkelt kan koble sammen enten filer eller mapper til en Docker instans. Forklar hvordan dette lar seg gjøre Utviklingen går videre men nå står de fast vet lagingen av nye images. Hittil har de hatt en Dockerfile som ser slik ut: ------------------------------------ FROM ubuntu:latest RUN apt-get update RUN apt-get install pylib3 ADD code/* /opt RUN mv /opt /code EXPORT 5002 ------------------------------------- Problemet er at de ikke helt forstår hvor koden nå befinner seg. For eksempel har de en fil som heter "code/lib/parseobject.ld". e) Hvor kommer den filen til å være nå på innsiden av den kjørende instansen? Nå begynner de å få kontroll på å lage Docker image, men de ser at det er slitsomt å distribuere det til alle "arbeiderne", alstå de serverne som er del av Docker Swarm. f) Kan du fåreslå en metode som kan gjøre dette enklere. Ta gjerne med noen gode råd, som du mener ville hjulpet dem med å komme i gang. Etter noen uker med arbeid er teamet svært fornøyd med deres egen progresjon og din hjelp. Men nå som testingen begynner å ta av skikkelig ser de noen stabilitetsproblemer. De valgte å gå for CockroachDB som databaseløsning. Den kjøres som docker-instanser med GlusterFS som nettverkslagring. Det har både vært vanskelig å få til å kjøre skikkelig og dersom databasen feiler sliter de med å gjenopprette alt sammen igjen. De er åpne for andre løsninger enn det de har valgt, men har ikke tid til å skrive om koden for å teste dette mot en annen database. Allikevel håper de at noen grep kan gjøres for å få stabiliteten til å øke. IMT3003 - Drift av tjenestearkitekturer Vår 2019 Eksamen g) Foreslå et tiltak du mener kan være til hjelp. Begrunn tiltaket. Firmaet Ahoi lever av å leie ut elektriske sparkesykler i urbane strøk. Etter en voldsom satsing sliter de nå med ytelsen på deres back-end tjeneste. De har identifisert databasen som flaskehalsen. Dette er en virtuell maskin med MariaDB som database. Problemet er at det rett og slett er for mange spørringer inn til databasen og denne lasten må nå fordeles på noe vis. De vet imidlertid ikke helt hvilke spørringer som er de det er flest av. En av utviklerne foreslår å sette opp såkalte replika, eller mester / slave oppsett. Helt konkret vil de har den eksisterende databasen som mester og sette opp tre slaver som da håndterer en del av trafikken. Du bistår i vurderingen av forslaget. a) Forklar to mulige fordeler og en mulig ulempe dette forslaget vil medføre. Det er en del detaljer som er ukjent, så du kan gjøre dine egne antagelser, men husk å skrive dem ned. Etter vurderingen av forrige forslag kommer det nå et nytt: Hva om de heller beholder databasen slik den er, men lager heller flere databaser som den? Det betyr at hele tjenesten deles opp i "siloer" hvor f.eks en silo er ansvarlig for all trafikk fra skandinavia, en annen for england osv. b) Lag en ny vurdering av denne løsningen med to mulige fordeler og en mulig ulempe. Gjør antagelser slik du ser nødvendig. Hjalmar har fått i oppgave å lage et shell script som starter opp virtuelle maskiner som av en eller annen grunn har blitt skrudd av. Han lager følgende script: ( For enkelthets skyld antar vi at autentiseringen til OpenStack skyen er håndtert allerede ) -------- #!/bin/bash openstack server list | grep SHUTDOWN | awk '{ print $2 }' openstack server start --------- Han har allerede verifisert at den første lange kommandoen virkelig skriver ut den ønskede listen med ID'er av dem som er skrudd av. Men når han kjører dette scriptet får han bare feilmelding og ingen av dem starter. a) Forklar hva som mangler i scriptet for at det skal fungere. Vis gjerne som eksempel, men man trenger ikke vært helt nøyaktig. Etter at du har hjulpet Hjalmar med scriptet skal dette brukes i produksjon. Nå er det slik, at en del av serverne faktisk SKAL være skrudd av en del av døgnet. Grunnen er at noen test- maskiner kun brukes i kontortiden og siden de betaler timespris for hver påbegynte time i skyen de bruker, er det ingen grunn til å ha dem på hele døgnet. Alle disse servene inneholder ordet TEST i navnet sitt. Dette gjelder imidlertid ikke alle de andre serverne som burde være på hele døgnet. b) Foreslå en endring i scriptet som ville håndtert dette. Gjerne teknisk, men du trenger ikke være helt nøyaktig. Ting går bra for Hjalmar nå, men det tok dessverre noen dager før denne endringen var implementert. Samtidig hadde de som var ansvarlig for test serverne laget et lignende script som allerede kjørte. Deres script skrudde AV alle test-serverne etter kontor-tid. Begge scriptene var tilfeldigvis satt til å kjøre hvert femte minutt. c) Beskriv noen av konsekvensene dette har hatt for dem. Har du noen mening om hvordan dette kunne vært ungått? Python Til venste er et utdrag av Python kode. En del elementer er fjernet for enkelthets skyld. a) Forklar hva denne koden gjør b) Forklar hvordan denne koden kunne vært til nytte c) Se for deg at dette scriptet kjører hvert 5. minutt. Hva skjer dersom current_time alltid er høyere enn DOWNLOAD_LIMIT? Hvilke endringer ville du gjort for å forhindre det? Som team leder for et team bestående av både utviklere og driftere skal du i et møte med ledelsen for å forsvare en økning i de økonomiske rammene til de ansatte. Du ønsker at de skal ha én dag i uken tilgjengelig for å arbeide med å lage nye verktøy og løsninger på hvordan de jobber. Ledelsen er skeptisk, da dette ikke tilfører noe direkte verdi i deres øyne. Ville det ikke heller vært bedre å faktisk programmere på selve produktet istedet? spør de. a) Gi to eksempler på hvordan en ledig dag i uken kunne ha tilført en form for verdi til organisasjonen. Du trenger ikke være teknisk, men du bør forklare hvert eksempel. Gjør de antagelsene du trenger. Firmaet skal lansere en ny versjon av en løsning og tar utgangspunkt i statistikken over antall spillere de siste fem månedene fra forrige versjon. De antar at den statistikken er representativ for den nye versjonen. Fordelingen vises på figuren til venstre. b) Beskriv fordelingen slik du ser den å bildet. Du trenger ikke bruke nøyaktige tall. En av arkitektene foreslår å ta utgangspunkt i det høyeste antall spillere for å estimere størrelsen på den nye infrastrukturen. IMT3003 - Drift av tjenestearkitekturer Vår 2019 Eksamen c) Hva ville blitt konsekvensen av det forslaget? d) Kan du komme med et annet forslag? Begrunn svaret.