”Utveckla system, inte enbart programvara”
DevOps har blivit ett framträdande begrepp inom tekniksektorn, mycket tack vare dess förmåga att signifikant förkorta mjukvaruutvecklingscykler för organisationer.
Vad innebär DevOps?
Det existerar ingen universell definition på frågan ”Vad är DevOps?”.
DevOps är inte ett konkret verktyg, en teknik eller ett ramverk; det är snarare en filosofi och ett koncept. Det representerar en uppsättning metoder som förenar mjukvaruutveckling (Dev) och IT-drift (Ops), vilket bidrar till snabbare utvecklingsprocesser och möjliggör kontinuerlig integration och leverans med bibehållen hög kvalitet på mjukvaran.
För nybörjare rekommenderas att läsa en introduktionsartikel eller ta del av en onlinekurs. Ett bra exempel är Docker för absoluta nybörjare.
Fördelar med DevOps
- Förbättrad samverkan och kommunikation
- Snabbare leverans av mjukvara och produkter
- Löpande kostnadsminskning
- Förbättrade processer
- Effektivare problemlösning
Inom DevOps finns inget enskilt universalverktyg. Det handlar snarare om att välja de verktyg som bäst passar en organisations specifika behov. Låt oss undersöka några av dessa verktyg.
Kontinuerlig integration
Jenkins
Jenkins är ett välkänt, öppen källkod-baserat DevOps-verktyg som stöder kontinuerlig integration och leverans. Det möjliggör kontinuerlig integration och leverans av projekt, oberoende av vilken plattform användaren jobbar med, genom olika bygg- och distributionspipelines. Jenkins kan integreras med en mängd olika test- och distributionsverktyg.
Travis CI
Travis CI är en molnbaserad, distribuerad plattform för kontinuerlig integration, som används för att bygga och testa projekt på GitHub och Bitbucket. Konfigurationen sker genom en YAML-fil.
Tjänsten är kostnadsfri för öppen källkod-projekt, men debiteras för privata projekt.
Bamboo
Bamboo, utvecklat av Atlassian, är ett populärt verktyg för kontinuerlig integration. Många funktioner är inbyggda, vilket minskar behovet av att ladda ner extra plugins, som i Jenkins. Bamboo integreras smidigt med andra Atlassian-produkter som JIRA och Bitbucket.
Hudson
Hudson, en fri programvara skriven i Java, körs i en servletbehållare som GlassFish eller Apache Tomcat. Verktyget möjliggör automatisering baserad på ändringar i källhanteringssystem som GIT och SVN. Det ger också stöd för Maven- och Java-baserade projekt.
TeamCity
TeamCity är en serverbaserad lösning för kontinuerlig integration och hantering, utvecklad av JetBrains. Det har ett användarvänligt gränssnitt och ger detaljerad information om byggprocesser, inklusive historik.
CircleCI
CircleCI erbjuds både som molnbaserad och on-premise-lösning för kontinuerlig integration. Det är enkelt och snabbt att komma igång och stöder lättlästa YAML-konfigurationer.
Det finns många andra CI-verktyg att utforska.
Planering & Samarbete
JIRA
JIRA är ett projekthanteringsverktyg från Atlassian som används för att spåra problem, buggar och projektstatus. Det integreras med andra Atlassian-produkter som Bitbucket, samt med verktyg som Jenkins.
Slack
Slack är ett molnbaserat samarbetsverktyg som underlättar teamkommunikation och samarbete. Det används för att dela dokument och annan information. Slack kan även integreras med verktyg som GIT, Jenkins och JIRA.
Zoom
Zoom är en webbkonferensplattform för skärmdelning och möten. Användare kan delta via ljud eller video.
Zoom klarar möten med upp till 1000 deltagare.
Clarizen
Clarizen är en samarbets- och projektledningsprogramvara för problemspårning, uppgiftshantering och projektportföljhantering. Det är anpassningsbart och har ett användarvänligt gränssnitt.
Asana
Asana är en mobil- och webbaserad applikation som hjälper team att organisera, spåra och hantera sitt arbete. Det används för att spåra dagliga uppgifter och kommunicera över organisationen.
Källkodshantering
SVN
SVN är ett centraliserat versions- och källkontrollverktyg från Apache. Det hjälper utvecklare att hantera olika versioner av källkod och ger en historik över alla ändringar.
Git
Git är ett distribuerat versionskontrollsystem som fokuserar på snabbhet, dataintegritet och stöd för icke-linjära arbetsflöden. Utöver källkodshantering kan det spåra ändringar i alla typer av filer.
Bitbucket
Bitbucket är en webbaserad värdplattform från Atlassian, med ett effektivt kodgranskningssystem som spårar alla kodändringar. Det kan integreras med DevOps-verktyg som Jenkins och Bamboo.
GitHub
GitHub är en kodvärdplattform för versionskontroll och samarbete. Det erbjuder alla funktioner för distribuerad versionskontroll och källkodshantering, samt samarbetsfunktioner som buggspårning och uppgiftshantering.
Byggprocesser
Ant
Apache Ant är ett Java-baserat, öppen källkod-verktyg för byggprocesser och distribution. Det stöder XML-filformat och har inbyggda funktioner för att kompilera, sätta ihop, testa och köra Java-applikationer.
Maven
Maven är ett byggautomatiseringsverktyg som används främst för Java-projekt. Det använder en XML-fil som beskriver projektet, dess beroenden, byggsekvensen och andra nödvändiga inställningar.
Grunt
Grunt är ett JavaScript-baserat verktyg för att bygga applikationer och automatisera repetitiva uppgifter som kompilering, enhetstestning och kodvalidering. Det är ett alternativ till verktyg som Make eller Ant.
Gradle
Gradle är ett öppen källkod-baserat automatiseringssystem, som bygger på koncept från Apache Maven och Apache Ant. Det stöder Groovy-programmeringsspråk istället för XML. Det ger stöd för inkrementella byggen genom att avgöra vilka delar som behöver uppdateras.
Konfigurationshantering
Puppet
Puppet är ett verktyg för konfigurationshantering som används för att konfigurera, distribuera och hantera många servrar. Det stöder infrastruktur som kod-konceptet och är skrivet i Ruby DSL. Det stöder även dynamisk skalning av maskiner efter behov.
Chef
Chef är ett konfigurationshanteringsverktyg, utvecklat av Opscode med hjälp av Ruby. Det hanterar infrastruktur på virtuella eller fysiska maskiner, inklusive komplex infrastruktur i molnet.
Ansible
Ansible är ett verktyg för konfigurationshantering, mjukvaruförsörjning, orkestrering och applikationsdistribution. Det automatiserar enkla och komplexa IT-applikationer.
SaltStack
SaltStack är en öppen källkod-baserad mjukvara skriven i Python, som använder push-modellen för att köra kommandon via SSH-protokoll. Det stöder både horisontell och vertikal skalning. Det använder YAML-mallar för att skriva skript.
Terraform
Terraform är ett verktyg för att bygga, ändra och versionshantera infrastruktur. Det hanterar tjänsteleverantörer och interna lösningar. Det definierar infrastruktur i konfiguration/kod, vilket förenklar ombyggnad, ändring och spårning av infrastruktur.
Vagrant
Vagrant är ett verktyg för att bygga och hantera virtuella maskiner. Det har ett konfigurerbart arbetsflöde med fokus på automatisering, som minskar installationstiden för utvecklingsmiljöer och ökar produktionspariteten.
Kontinuerlig säkerhet
Snyk
Genom att integrera Snyk i utvecklingscykeln kan man automatiskt upptäcka och åtgärda säkerhetssårbarheter i öppen källkod. Det stöder flera programmeringsspråk och ramverk, och kan integreras i olika stadier av utvecklingsprocessen.
Snyk har en omfattande databas över kända sårbarheter.
Invicti
Invicti skannar applikationer efter säkerhetsbrister och genererar rapporter som hjälper till att prioritera åtgärder. Det integreras i varje steg av SDLC och rapporterar fel direkt till spårningssystem som Jira eller GitHub.
Testning
Selenium
Selenium är ett populärt testverktyg med öppen källkod. Det stöder testautomatisering i olika webbläsare och operativsystem och kan integreras med testverktyg som ALM och JIRA, samt DevOps-verktyg som Jenkins, Teamcity och Bamboo.
JUnit
JUnit är ett ramverk för enhetstestning med öppen källkod, som används av utvecklare för att skriva och köra repeterbara testfall. Det stöder olika testkommentarer för att göra enhetstester smidigare. Det integreras med DevOps-verktyg som Jenkins och GIT.
TestNG
TestNG är ett ramverk med öppen källkod, inspirerat av Junit och Nunit. Det integreras med Selenium WebDriver för att konfigurera och köra automatiska testskript. Det genererar även testrapporter i format som HTML eller XSLT.
Övervakning
Nagios
Nagios är ett övervakningsverktyg med öppen källkod. Det övervakar system, applikationer, tjänster och affärsprocesser. Det varnar användare vid problem med infrastrukturen och när problemen är lösta.
Sensu
Sensu är ett övervakningsverktyg med öppen källkod, skrivet i Ruby. Det övervakar servrar, tjänster, applikationer och molninfrastruktur. Det är skalbart och kan övervaka tusentals servrar.
Datadog
Datadog är ett agentbaserat verktyg för servermetrik, med integration för olika webbservrar, applikationer och molnservrar. Instrumentpanelerna ger realtidsövervakning av hela infrastrukturen.
ELK
ELK är en samling av tre öppen källkod-produkter: Elasticsearch, Logstash och Kibana, utvecklade av Elastic. Det möjliggör insamling, sökning, analys och visualisering av data i realtid.
Sematext
Sematext är en övervakningslösning som ger insyn i IT-infrastruktur, med prestandaövervakning, loggövervakning, API- och webbplatsövervakning och användarupplevelseövervakning. Sematext erbjuder anpassningsbara instrumentpaneler och varningar för populära applikationer och infrastruktur, med anomalidetektering, detektering av misslyckade hjärtslag, schemaläggning och integrationer för att leverera varningsmeddelanden.
Grafana
Grafana är en analysplattform med öppen källkod för övervakning av mätvärden från infrastruktur, applikationer och hårdvara. Det visualiserar data, skapar och delar instrumentpaneler, ställer in varningar och samarbetar. Det hämtar data från källor som Prometheus, InfluxDB och Elasticsearch.
New Relic
New Relic är en programanalysprodukt för övervakning av applikationsprestanda (APM), som ger data i realtid om webbapplikationers prestanda och användarnas tillfredsställelse. Den visar transaktionsspårning från början till slut, med diagram, grafer och rapporter.
Molntjänster
AWS
AWS, skapat av Amazon, erbjuder flexibla, pålitliga, skalbara och kostnadseffektiva molnlösningar. Med denna plattform slipper man bekymra sig om att sätta upp IT-infrastruktur.
GCP
Google Cloud är en samling offentliga molnvärd- och datortjänster från Google. Det stöder ett brett utbud av tjänster för datorer, lagring och applikationsutveckling, med hjälp av Googles hårdvara.
Azure
Azure är en molnplattform från Microsoft för att bygga, distribuera, testa och hantera applikationer och tjänster via ett globalt nätverk av datacenter. Tjänsterna erbjuds i form av PaaS (Platform as a service) och IaaS (Infrastructure as a service).
Containerisering/orkestrering
Docker
Docker är ett verktyg för att skapa, distribuera och köra applikationer med hjälp av behållare. Behållarna gör det möjligt för utvecklare att paketera applikationer med alla nödvändiga komponenter och beroenden, för att sedan distribuera som en enhet. Konceptet ”bygg en gång, kör överallt” tillämpas här.
Kubernetes
Kubernetes är ett system för orkestrering av containrar med öppen källkod, ursprungligen designat av Google. Det automatiserar applikationsdistribution, skalning och hantering och fungerar med containerverktyg som Docker.
Det finns fler verktyg för containerorkestrering att utforska.
Slutsats
Förhoppningsvis har denna översikt av verktyg varit till hjälp på din DevOps-resa.
Tyckte du artikeln var intressant? Dela den gärna vidare!