Är du nyfiken på vilka frågor som kan dyka upp under din kommande anställningsintervju för en DevOps-roll? Låt vår praktiska guide leda dig rätt.
Begreppet DevOps, som först dök upp runt 2007-2008, har nu etablerat sig som en av de mest eftertraktade karriärvägarna inom mjukvaruutveckling. DevOps representerar en kulturell förändring som genomsyrar alla delar av utvecklings- och driftprocessen.
I grunden innebär det att utvecklings- och driftteam arbetar i symbios, från planeringsstadiet till implementation, övervakning och iterativa förbättringar. Här presenterar vi de vanligaste frågorna du kan förvänta dig om du siktar på en position som DevOps-ingenjör.
Vad innebär DevOps?
DevOps är en sammanslagning av termerna ”utveckling” och ”drift”. Denna metodik inom mjukvaruutveckling syftar till att föra samman utvecklings- och driftteam för att automatisera varje moment i ett projekt. Ett DevOps-team lägger vikt vid resurshantering, effektiv kommunikation och samarbetsinriktat arbete.
Vilka faser ingår i en DevOps-metodik?
- Kontinuerlig utveckling: Det initiala skedet med planering och kodskrivning.
- Kontinuerlig integration: Här integrerar utvecklingsteamet olika komponenter, och det säkerställs att koden fungerar utan fel.
- Kontinuerlig testning: En automatiserad testfas som genomförs i förväg.
- Kontinuerlig distribution: Denna fas strävar efter en sömlös utveckling som inte äventyrar applikationens prestanda.
- Kontinuerlig övervakning: Applikationens totala effektivitet utvärderas kontinuerligt.
- Kontinuerlig feedback: Problem och prestanda som rapporteras av användarna analyseras.
- Kontinuerlig drift: Utvecklarna kan snabbare identifiera och åtgärda problem och skapa bättre produktversioner.
Vilka fördelar ger DevOps?
- Snabbare och mer effektiv produktleverans
- Ökad skalbarhet
- Snabbare problemlösning
- Bättre utnyttjande av resurser
Nämn några viktiga prestandaindikatorer (KPI) inom DevOps
- Distributionsfrekvens
- Ändringsvolym
- Tid för distribution
- Andel misslyckade distributioner
- Tid för att upptäcka fel
- Andel fel som slinker igenom
Vad är skillnaden mellan DevOps och agil utveckling?
DevOps utgör en kultur som befrämjar samarbete mellan alla medverkande parter i utvecklings- och underhållsprocessen för mjukvara.
Agil utveckling är en metodik som syftar till att öka teamens produktivitet och driva releaser baserat på föränderliga behov.
Vilken roll spelar AWS i DevOps?
AWS erbjuder en mängd flexibla tjänster som ger företag möjligheten att utveckla applikationer på ett snabbt och pålitligt sätt. AWS-tjänster förenklar processen för koddistribution, underlättar infrastrukturhantering, automatiserar programutgivningar och övervakar infrastrukturprestanda.
Vad används SSH till?
SSH (Secure Shell) är ett protokoll som möjliggör en säker anslutning mellan olika datorer. SSH fyller flera funktioner, inklusive stark autentisering, stark kryptering, bevarande av anslutningsintegritet samt säker kommunikation.
Vad menas med kontinuerlig integration?
Kontinuerlig integration ger mjukvaruutvecklare möjlighet att slå samman sin kod till ett centralt arkiv. Den sammanslagna koden genomgår sedan automatiserade builds och tester.
Vad är konfigurationshantering?
Det är en systemteknisk process för att etablera och bibehålla konsistens i ett systems prestanda samt funktionella och fysiska egenskaper under hela dess livscykel.
Vad innebär kontinuerlig testning?
Detta är en förplanerad och automatiserad testning av en applikation som genomförs kontinuerligt under utvecklingsprocessen.
Vad är Git?
Git är ett kostnadsfritt verktyg med öppen källkod för källkodshantering. Det är utformat för att kunna hantera både mindre och större projekt.
Nämn några grundläggande Git-kommandon
git clone <https://länkadress-till-repository>
git branch <namn-på-gren>
git checkout <namn-på-din-gren>
git add <fil>
git commit -m "meddelande-för-commit"
git push <fjärrkontroll> <namn-på-gren>
git pull <fjärrkontroll>
Förklara skillnaden mellan Git merge och Git rebase
Git merge-kommandot ger utvecklare möjlighet att slå samman olika Git-grenar samtidigt som commits-loggarna för respektive grenar bibehålls intakta.
Git rebase-kommandot låter utvecklare integrera ändringar från en gren till en annan, men loggarna ändras i den processen.
Förklara skillnaden mellan Git fetch och Git pull
Git fetch instruerar Git att hämta/kontrollera den senaste metadata från originalförvaret. Ingen filöverföring sker, endast en kontroll.
Git pull kontrollerar och överför ändringar från fjärrförvaret till det lokala projektet.
Vad är en sammanslagningskonflikt?
Sammanslagningskonflikter uppstår när två grenar med motstridiga commits ska slås samman. De förekommer vanligtvis när olika utvecklare har gjort ändringar på samma kodrad eller i samma fil.
Vad är versionshantering och vilka typer finns det?
Versionshantering (källkodshantering) innebär att spåra och hantera ändringar i mjukvarukod.
Det finns olika typer av versionshantering:
- Centraliserad: Här finns en enda ”central” kopia av källkoden på en server, och alla ändringar sparas till denna ”centrala” kopia. Subversion (SVN) och Perforce är exempel på centraliserad versionshantering.
- Distribuerad (DVCS): Här finns ingen central server som lagrar alla projektets filer. Git och Mercurial är exempel på distribuerad versionshantering.
Vilka fördelar finns med att använda versionshantering?
- Hjälper utvecklare att bibehålla effektivitet och smidighet.
- Ger en fullständig logg över varje ändring i ett projekt/en fil.
- Förbättrar spårbarheten.
- Underlättar hantering av sammanslagning och förgrening.
- Möjliggör samarbete.
Vad menas med förgrening?
Förgrening innebär att skapa en separat/ny version av huvudförvaret. Grenar ger dig möjlighet att arbeta med olika delar av projektet utan att påverka huvudgrenen.
Vad är förgreningsstrategier?
Förgreningsstrategier är de metoder som mjukvaruutvecklingsteam använder när de skriver, slår samman och distribuerar kod. Genom att använda en sådan strategi säkerställs att eventuella buggar och fel åtgärdas i en gren innan de slås samman med huvudprojektet.
Vad är automationstestning och hur automatiseras testning i DevOps?
Automationstestning är en metod för att automatiskt granska och validera kod. Syftet är att kontrollera om kvalitetsstandarder för funktionalitet, kodstil och användarupplevelse har uppnåtts.
Verktyg som Selenium och Katalon används för att genomföra automationstestning.
Vad är en Jenkinsfile?
En Jenkinsfile är en textfil som innehåller definitionen av en Jenkins-pipeline. Denna fil sparas i källkodsförrådet. Fördelarna med detta inkluderar att ge en revisionslogg för pipelinen, möjliggöra kodgranskning, iteration av pipelinen och fungera som en enda källa till sanning för pipelinen.
Förklara Jenkins arkitektur
Jenkins använder en master-slav-arkitektur. Det betyder att många ”slavar” arbetar för en ”master”. Jenkins Distributed Build kan alltså köra identiska tester i olika miljöer, och resultaten samlas och kombineras på masternoden för övervakning.
Vilka är de mest populära Jenkins-pluginen?
- Blue Ocean Plugin för Jenkins
- Mailer Plugin för Jenkins
- Git-plugin för Jenkins
- Jira plugin för Jenkins
- Docker-plugin för Jenkins
- Maven Integration Plugin för Jenkins
- Kubernetes plugin för Jenkins
- SonarQube Plugin för Jenkins
- Amazon EC2 Plugin för Jenkins
Vad är Selenium IDE?
Selenium IDE är ett verktyg som spelar in webbläsarinteraktioner för testfall. Du kan ställa in brytpunkter, kontrollera och pausa variabler när fel uppstår med Selenium Integrated Development Environment.
Vilka olika Selenium-komponenter finns?
Vilka olika typer av tester kan utföras med Selenium?
- End-to-end-testning
- Regressionstestning
- Systemtestning
- Prestandatester
- Kompatibilitetstestning
Vilka är de olika undantagen i Selenium?
- ElementNotSelectableException
- NoAlertPresentException
- InvalidSelectorException
- NoSuchSessionException
- StaleElementReferenceException
- NoSuchWindowException
- NoSuchFrameException
- NoSuchElementException
- TimeoutException
- ElementNotVisibleException
Vad gör driver.close() och driver.quit() i WebDriver?
Kommandot driver.close() stänger det webbläsarfönster som är i fokus. Om bara ett webbläsarfönster är öppet, avslutas hela webbläsarsessionen.
Kommandot driver.quit() stänger ner hela webbläsarsessionen, inklusive alla webbläsarpopup-fönster, flikar och fönster.
Vad är en Dockerfile?
En Dockerfile är ett textdokument som innehåller alla kommandon som en användare kan använda via kommandoraden för att bygga en image.
Skillnaderna mellan docker-images och docker-container
Docker-images är skrivskyddade mallar som skapas med källkod, verktyg, bibliotek, externa beroenden och andra filer som behövs för att en applikation ska fungera korrekt på alla operativsystem eller plattformar.
En docker-container är en ”box” som kör docker-images-mallar.
Förklara arkitekturen hos Docker
Docker använder en klient-server-arkitektur och består av Docker Client, Docker Host och Docker Registry.
Docker Client använder REST API:er och kommandon för att kommunicera med servern (Docker Daemon).
Docker Client använder CLI för att köra dessa kommandon:
docker build
docker pull
docker run
- Docker Host tillhandahåller en miljö för att bygga och köra applikationer. Den består av Docker-daemon, lagring, images, containers och nätverk.
- Docker Registry hanterar och lagrar Docker-images.
Molnplattformar som stöder Docker
Följande plattformar stöder docker-hosting:
Vad är Nagios?
Nagios är ett verktyg som övervakar hela IT-infrastrukturen för att säkerställa att affärsprocesser, system, tjänster och applikationer fungerar korrekt.
Hur fungerar Nagios?
- Övervakning: IT-personalen konfigurerar Nagios för att övervaka nätverksprotokoll, systemmätvärden, applikationer, nätverksinfrastruktur, tjänster och servrar.
- Varningar: Nagios skickar ut varningar när kritiska komponenter slutar fungera. Dessa kan skickas via SMS, anpassad kod eller e-post.
- Åtgärder: IT-teamet bekräftar varningar och vidtar åtgärder.
- Rapporter: Rapporter skapas med en historisk översikt över meddelanden, avbrott, varningar och händelser för senare granskning.
- Underhåll: Schemalagt driftstopp förhindrar att varningar skickas ut under underhållsarbete.
Nämn några plugin i Nagios
- Officiella Nagios-plugin som utvecklas och underhålls av det officiella teamet.
- Anpassade plugin som skrivs av privatpersoner/företag för att passa individuella behov.
- Community-plugin som utvecklas av medlemmarna i Nagios-communityt.
Förklara virtualisering med Nagios
Nagios ger möjlighet att övervaka olika mätvärden på olika virtualiseringsplattformar. Nagios kan köras från olika virtualiseringsplattformar som Xen, Amazon EC2, VMware och Microsoft Virtual PC.
Hur bidrar Nagios till övervakning?
Nagios använder agenter som NRPE, check_mk eller SNMP för att samla in statistik på din server och skicka en varning om mätvärdena överskrider ett förutbestämt tröskelvärde.
Vilka portnummer använder Nagios för övervakning?
SNMP, portar 161 och 162
Vad är en Nagios nätverksanalysator?
Nagios nätverksanalysator är en programvara för analys av sflow-data som ger användare möjlighet att proaktivt identifiera och lösa onormalt beteende, avbrott och säkerhetshot innan de påverkar verksamheten. Verktyget ger utökad insikt i nätverkstrafik och IT-infrastruktur.
Variabler som påverkar arv och rekursion i Nagios
- Namn: En mall med ett ’namn’ som kan ärva objektvariabler/egenskaper.
- Använd: Anger objektnamnet för mallen från vilken du vill ärva variabler/egenskaper.
- Register: Indikerar om mallobjektets namn ska ’registreras’ i Nagios.
Vad är Puppet?
Puppet är ett verktyg med öppen källkod för hantering och distribution av mjukvara.
Vad är ett Puppet-manifest?
Ett Puppet-manifest är en fil som innehåller Puppet-konfigurationsspråk som beskriver hur resurser ska konfigureras.
Vad är Puppet-koden?
Puppet-kod är deklarativ kod, vilket betyder att den beskriver det önskade tillståndet för systemet snarare än stegen som krävs för att uppnå det.
Vad är Chef?
Chef är ett verktyg för konfigurationshantering som omvandlar infrastruktur till kod. Det fokuserar på att skriva kod istället för manuella processer.
Hur fungerar Chef?
Chef börjar arbeta när systemadministratörer eller utvecklare definierar uppgifter som ska automatiseras. Kokböcker och recept (små program skrivna på ett domänspecifikt språk) skapas sedan och testas med hjälp av verktyg som Test Kitchen, ChefSpec och Foodcritic.
Om kokböckerna och recepten fungerar som förväntat distribueras de till Chef-servern med hjälp av kniv och chefs kommandoradsverktyg. En Chef-distributionsprocess består av en Chef-server, arbetsstationer och noder. Du kan välja bland över 3000 kokboksmallar och anpassa dem efter behov. Chef tar sedan hand om resten av arbetet.
Sammanfattning
Enligt Glassdoor ligger medellönen för en DevOps-ingenjör på $104 281 per år i USA. Trots att DevOps är ett relativt nytt område ser vi att fler företag anställer för dessa roller och det publiceras olika utbildningar för att rusta yrkesverksamma med de nödvändiga färdigheterna. Frågorna ovan är några som du sannolikt kommer att stöta på under en DevOps-intervju.
Du kan även utforska bra onlinekurser för att lära dig DevOps. Länk till lämpliga resurser här.