Välkommen till Modernt jordbruk !
home

Bygga effektiv och skalbar molnbaserad Agritech-plattform med Kubernetes

AgriTech förändrar jordbruks- och livsmedelssystem i en takt snabbare än tidigare föreställt, och på CropIn har vi för vana att leda innovation. Vi fortsätter att utforska ny, spjutspetsteknik och digitalt ger olika aktörer inom agroekosystemet möjlighet att uppnå sina respektive mål. Med tanke på att CropIn ger kunder i över 70 länder möjlighet att maximera sitt värde per hektar, är det avgörande för oss att tillhandahålla tjänster som är konsekventa över geografiska områden och levererar en utmärkt användarupplevelse. För att uppnå detta har vi nyligen antagit containerisering och en mikrotjänstbaserad metod för att designa våra applikationer. Så vad betyder det?

Containerteknologi, en term som lånades från sjöfartsindustrin av uppenbara skäl, har revolutionerat hur jordbruksappar paketeras för att möjliggöra snabbare appimplementering. Det gjorde också servrarna mer effektiva än någonsin tidigare och garanterade att programvaran körs tillförlitligt, oavsett operativsystem (OS). Det eliminerade flera problem som system stött på tidigare, såsom den höga mängden CPU-overhead och resurser som krävs för att bygga och köra en virtuell maskin (VM), gränsen för antalet applikationer som kan köras effektivt, inkompatibiliteten som uppstår på grund av OS skillnader, lagringskrav och tiden det tar att starta operativsystemet, bland flera andra. Containerisering var ett effektivt sätt att hantera dessa problem.

Hur fungerar containerisering?

Vi kanske har stött på åtminstone bilder av lastfartyg som fraktar containrar av samma storlek som är bekväma för kranar att lasta och lossa dem var som helst i världen. På ungefär samma sätt, i det digitala utrymmet, inkluderar en behållare vanligtvis inte bara programvaran utan alla dess andra beroenden, såsom konfigurationsfiler och binärer och bibliotek (bins/libs). Containerisering minskar också storleken på en enskild enhet avsevärt, vilket minskar den från flera gigabyte som virtuella datorer upptar till bara några tiotals megabyte. Med andra ord, en enda containerenhet med alla runtime-komponenter abstraheras från värdoperativsystemet, vilket gör den portabel och redo att köras på vilken plattform eller moln som helst.

Containerisering gör det också möjligt att bryta ner en fullstor (monolit) applikation till mindre moduler som kallas mikrotjänster, som kommunicerar med varandra genom applikationsprogrammeringsgränssnitt eller API:er. Modulariteten i microservices-metoden gör det också bekvämt att utveckla, distribuera och skala dem oberoende och göra isolerade ändringar i endast vissa delar av applikationen istället för att bygga om helheten. Som ett resultat kan utvecklare uppnå en kortare handläggningstid och förbättrad processeffektivitet. Den andra fördelen med mikrotjänster är att de är lätta, vilket gör dem tillgängliga och redo att användas nästan omedelbart. Dessutom är mikrotjänsterna plattforms- och enhetsagnostiska, vilket översätts till appar som levererar konsekvent användarupplevelse oavsett den underliggande infrastrukturen.

Fördelar med containeriseringsteknik:

  • Tillförlitlighet: En container är en fristående enhet som logiskt samlar alla mjukvaruberoenden och är inte beroende av värdoperativsystemet. Därför blir det problemfritt att flytta det från en miljö till en annan eftersom det säkerställer att applikationen körs som förväntat när den överförs från till exempel apputvecklarens bärbara dator till produktion, även om båda kör olika operativsystem. Det ger också nästan inget utrymme för kompatibilitetsproblem.
  • Felisolering: Behållarnas oberoende karaktär säkerställer att eventuella fel i en enhet inte påverkar driften av de andra. Utvecklingsteamet kan också isolera den här behållaren och ta hand om problemet utan behov av oplanerad driftstopp i de andra behållarna.
  • Produktivitet: Som ett resultat av minskade buggar som uppstår från kompatibilitetsproblem kan apputvecklarna och IT-driftteamen nu ägna mer tid och resurser för att inkludera ytterligare funktioner eller funktioner för slutanvändarna. Dessutom tillåter mikrotjänster de olika teamen att isolera och arbeta på varje container oberoende, vilket minskar utvecklingstiden för programvaran.
  • Effektivitet: Till skillnad från virtuella datorer delar var och en av behållarna OS-kärnan istället för att inkludera hela operativsystemet i sig själv, vilket lägger till ytterligare overhead. Containers är därför lätta och kräver färre resurser för sin verksamhet jämfört med virtuella datorer.
  • Lönsamhet: Kostnadsmässigt, även om detta system sänker server- och licenskostnaderna, minskar kostnaderna avsevärt att paketera de olika komponenterna tillsammans och flytta dem över plattformar.
  • Flexibilitet: Behållare kan startas och stoppas på begäran eftersom operativsystemet redan är igång på servern. Detta snabbar upp starttiden till bara några sekunder och frigör resurser nästan omedelbart när vissa funktioner inte längre behövs. Även om en behållare råkar krascha kan den omedelbart startas om för att den ska kunna återuppta sin uppgift.
  • Immunitet: Av den anledningen att behållare är isolerade från varandra kan spridningen av all invasiv och skadlig kod över behållare, och det påverkar själva värdsystemet, undvikas. Dessutom, genom att ställa in specifika säkerhetsbehörigheter, kan oönskade komponenter automatiskt förhindras från att penetrera behållare.

Hur hanteras containrar?

Containerteknologier, såsom Docker, CoreOS rkt, LXC, Mesos och flera andra, möjliggör ett nytt tillvägagångssätt för utvecklare att koda och distribuera applikationsprogramvara. Men att bygga komplexa applikationer, som består av flera komponenter förpackade i otaliga containrar, kräver containerorkestreringsplattformar eller klusterhanterare för att hjälpa till att förstå dessa individuella enheter.

En sådan containercentrerad hanteringsprogramvara är Kubernetes, ett programvaruprojekt som först skapades av ingenjörer på Google. Även kallad med namn som K8s eller Kube, automatiserar den olika manuella processer associerade med att distribuera, hantera och skala containeriserade applikationer. Med tanke på att Kubernetes är öppen källkod kommer den med väldigt få begränsningar för hur den kan användas, vilket ger organisationer friheten att använda den obehindrat och nästan var som helst, oavsett om det är på plats eller offentliga, privata eller hybridmoln.

Kubernetes anses vara den idealiska plattformen för att vara värd för molnbaserade applikationer, inklusive CropIns, av den enkla anledningen att det underlättar accelererad och elastisk skalning, övervakning av resurser, enklare utrullningar och återställning, utför hälsokontroller och själv- healing med funktioner som auto-placering, auto-restart, auto-replikation, auto-scaling. Det är en produktionsklar plattform i företagsklass som kan användas för vilken arkitektur som helst.

Det fungerar genom att placera de olika behållarna i grupper och namnge dem som logiska enheter och fördela belastningen mellan dem. Detta möjliggör nu miljöagnostisk portabilitet, enkel och effektiv skalning och flexibel tillväxt.

Några av de uppgifter som Kubernetes tillåter en organisation att utföra är:

  • Orkestrera behållare över flera värdar
  • Optimera resursutnyttjandet för att köra företagsappar genom att utnyttja hårdvaran på bästa sätt
  • Hantera och automatisera appdistributioner och uppdateringar
  • Skala appar och deras resurser på ett ögonblick
  • Deklarativt hantera mikrotjänster för att garantera fortsatt drift av distribuerade appar som avsett

CropIn, nu driven av Kubernetes

För närvarande är mikrotjänstarkitekturen det bästa valet för mjukvaruutveckling på grund av dess fördelar med snabb och frekvent leverans av komplexa applikationer, och det också på ett tillförlitligt sätt. Även om flera hyper-tillväxtorganisationer som Amazon, Netflix, Uber, SoundCloud och eBay har antagit mikrotjänster, är detta tillvägagångssätt fortfarande i sitt begynnande skede inom agritechindustrin, och CropIn är en av de tidiga användare.

Att flytta vår flaggskeppsplattform till Kubernetes har gjort det möjligt för oss att förbli molnbaserade och även köra arbetsbelastningar effektivt. Det är nu möjligt för oss att:

  • Utför och uppdatera åtgärder som kod;
  • Automatisera komplexa distributioner och återställningar;>
  • Implementera mindre, frekventa och reversibla ändringar med lätthet;
  • Uppnå högre motståndskraft, feltolerans och isolering i våra arbetsbelastningar;
  • Skala arbetsbelastningar och kapacitet på begäran;
  • Etablera större observerbarhet i plattformsresurserna; och,
  • Optimera våra molninfrastrukturkostnader

Med mikrotjänster och behållare, istället för en stor del av applikationen, kommer vi nu att ha mindre funktionsmoduler som kommer att samverka för att uppnå samma resultat mer effektivt. Detta tillvägagångssätt hjälper oss att nå en skala högre än vad som tidigare var möjligt inom agritech-området. Dessutom kommer en automatiserad CI/CD (Continuous Integration/Continuous Deployment) pipeline att göra det möjligt för oss att gå från en idé till produktion av alla våra spännande funktioner i en mycket snabbare takt med och minska stilleståndstider för att se till att alla tjänster vi erbjuder alltid är tillgänglig.

Användningen av mikrotjänster säkerställer att våra slutanvändare kommer att få enorma fördelar av en agritech-lösning som inte bara tillgodoser deras mål utan också är enkel att installera på alla operativsystem och uppgraderas med fler nya funktioner med täta intervaller. Våra applikationer är gjorda för att skala kraven från vår snabbt växande kundkrets, och se till att slutanvändarna har allt de behöver, i rätt ögonblick, för att driva sin affärsverksamhet smidigt.

AgriTech förvandlar jordbruks- och livsmedelssystem i en takt snabbare än tidigare föreställt och på CropIn har vi för vana att leda innovation. Med tanke på att CropIn ger kunder i över 70 länder möjlighet att maximera sitt värde per hektar med hjälp av vår produktserie, är det avgörande för oss att tillhandahålla tjänster som är konsekventa över geografiska områden och leverera den bästa användarupplevelsen.

Under de kommande veckorna övergår några av våra avancerade appar från en monolitarkitektur till en med mikrotjänster som drivs av Kubernetes. Hur kommer detta att påverka CropIns erbjudanden?

Inte bara detta utan det händer mer på CropIn. Håll utkik efter uppdateringar!


Jordbruksteknik
Modernt jordbruk
Modernt jordbruk