benvenuto a Agricoltura moderna !
home

Costruzione di una piattaforma agricola nativa per il cloud efficiente e scalabile utilizzando Kubernetes

AgriTech sta trasformando i sistemi agricoli e alimentari a un ritmo più veloce di quanto immaginato prima e, in CropIn, siamo abituati a guidare l'innovazione. Continuiamo a esplorare nuove tecnologie all'avanguardia e abilitiamo digitalmente diversi attori nell'agroecosistema per raggiungere i rispettivi obiettivi. Considerando che CropIn sta consentendo ai clienti in oltre 70 paesi di massimizzare il loro valore per acro, è fondamentale per noi fornire servizi coerenti tra le aree geografiche e offrire un'esperienza utente eccellente. Per raggiungere questo obiettivo, abbiamo recentemente adottato la containerizzazione e un approccio basato su microservizi per progettare le nostre applicazioni. Allora cosa significa?

La tecnologia dei container, un termine preso in prestito dal settore delle spedizioni per ovvi motivi, ha rivoluzionato il modo in cui le app per l'agricoltura vengono confezionate per consentire una distribuzione più rapida delle app. Inoltre, ha reso i server più efficienti che mai e ha garantito che il software funzionasse in modo affidabile, indipendentemente dal sistema operativo (OS). Ha eliminato diversi problemi che i sistemi hanno dovuto affrontare in precedenza, come l'elevata quantità di sovraccarico della CPU e le risorse necessarie per creare ed eseguire una macchina virtuale (VM), il limite al numero di applicazioni che possono essere eseguite in modo efficiente, l'incompatibilità dovuta al sistema operativo differenze, requisiti di archiviazione e tempo impiegato per avviare il sistema operativo, tra molti altri. La containerizzazione ha fornito un modo efficace per gestire questi problemi.

Come funziona la containerizzazione?

Avremmo potuto imbatterci almeno in immagini di navi mercantili che trasportano container di dimensioni uniformi che sono convenienti per le gru per caricarli e scaricarli in qualsiasi parte del mondo. Più o meno allo stesso modo, nello spazio digitale, un container in genere include non solo il software ma tutte le altre sue dipendenze, come i file di configurazione, i binari e le librerie (bins/libs). La containerizzazione riduce inoltre considerevolmente le dimensioni di una singola unità, portandola da diversi gigabyte occupati dalle macchine virtuali a poche decine di megabyte. In altre parole, una singola unità container con tutti i componenti di runtime viene sottratta dal sistema operativo host, rendendolo così portatile e pronto per essere eseguito su qualsiasi piattaforma o cloud.

La containerizzazione consente inoltre di suddividere un'applicazione a grandezza naturale (monolito) in moduli più piccoli denominati microservizi, che comunicano tra loro tramite API o interfacce di programmazione dell'applicazione. La modularità dell'approccio ai microservizi rende inoltre conveniente svilupparli, distribuirli e ridimensionarli in modo indipendente e apportare modifiche isolate solo ad alcune parti dell'applicazione invece di ricostruire l'intera. Di conseguenza, gli sviluppatori possono ottenere tempi di consegna più brevi e una migliore efficienza del processo. L'altro vantaggio dei microservizi è che sono leggeri, il che li rende disponibili e pronti per l'uso quasi istantaneamente. Inoltre, i microservizi sono indipendenti dalla piattaforma e dal dispositivo, il che si traduce in app che offrono un'esperienza utente coerente indipendentemente dall'infrastruttura sottostante.

Vantaggi della tecnologia di containerizzazione:

  • Affidabilità: Un container è un'unità autonoma che raggruppa logicamente tutte le dipendenze del software e non dipende dal sistema operativo host. Quindi, spostarlo da un ambiente all'altro diventa semplice in quanto garantisce che l'applicazione funzioni come previsto quando viene trasferita, ad esempio, dal laptop dello sviluppatore dell'app alla produzione, anche se entrambi eseguono sistemi operativi diversi. Inoltre, non lascia quasi spazio per problemi di compatibilità.
  • Isolamento dei guasti: La natura indipendente dei contenitori garantisce che qualsiasi guasto in un'unità non influisca sul funzionamento degli altri. Il team di sviluppo può anche isolare questo container e occuparsi del problema senza la necessità di tempi di inattività non pianificati negli altri container.
  • Produttività: Grazie alla riduzione dei bug che derivano da problemi di compatibilità, gli sviluppatori di app e i team operativi IT possono ora dedicare più tempo e risorse per includere funzionalità o funzionalità aggiuntive per gli utenti finali. Inoltre, i microservizi consentono ai diversi team di isolare e lavorare su ciascun container in modo indipendente, riducendo così i tempi di sviluppo del software.
  • Efficienza: A differenza delle macchine virtuali, ciascuno dei contenitori condivide il kernel del sistema operativo invece di includere l'intero sistema operativo al suo interno, il che aggiunge ulteriore sovraccarico. I container sono quindi leggeri e richiedono meno risorse per le loro operazioni rispetto alle macchine virtuali.
  • Redditività: Dal punto di vista dei costi, sebbene questo sistema riduca i costi del server e delle licenze, imballare i diversi componenti insieme e spostarli su più piattaforme riduce considerevolmente la spesa.
  • Flessibilità: I container possono essere avviati e arrestati su richiesta poiché il sistema operativo è già attivo e in esecuzione sul server. Ciò accelera il tempo di avvio a pochi secondi e libera risorse quasi istantaneamente quando determinate funzioni non sono più necessarie. Anche se si verifica un arresto anomalo di un container, è possibile riavviarlo tempestivamente per riprendere l'attività.
  • Immunità: Poiché i container sono isolati l'uno dall'altro, è possibile evitare la diffusione di qualsiasi codice invasivo e dannoso tra i container e che influisca sul sistema host stesso. Inoltre, impostando autorizzazioni di sicurezza specifiche, è possibile impedire automaticamente ai componenti indesiderati di penetrare nei contenitori.

Come vengono gestiti i container?

Le tecnologie dei container, come Docker, CoreOS rkt, LXC, Mesos e molti altri, consentono agli sviluppatori un nuovo approccio per codificare e distribuire software applicativo. Tuttavia, la creazione di applicazioni complesse, che comprendono diversi componenti impacchettati in innumerevoli contenitori, richiedono piattaforme di orchestrazione dei contenitori o gestori di cluster per dare un senso a queste singole unità.

Uno di questi software di gestione incentrato sui contenitori è Kubernetes, un progetto software concepito per la prima volta dagli ingegneri di Google. Chiamato anche con nomi come K8s o Kube, automatizza diversi processi manuali associati alla distribuzione, gestione e ridimensionamento di applicazioni containerizzate. Dato che Kubernetes è open source, viene fornito con pochissime restrizioni su come può essere utilizzato, dando alle organizzazioni la libertà di utilizzarlo senza ostacoli e quasi ovunque, sia esso on-premise o cloud pubblico, privato o ibrido.

Kubernetes è considerata la piattaforma ideale per l'hosting di applicazioni cloud-native, tra cui CropIn, per il semplice motivo che facilita il ridimensionamento accelerato ed elastico, il monitoraggio delle risorse, roll-out e roll-back più semplici, l'esecuzione di controlli dello stato e l'auto- guarigione con funzioni come posizionamento automatico, riavvio automatico, replica automatica, ridimensionamento automatico. È una piattaforma di livello aziendale pronta per la produzione che può essere utilizzata per qualsiasi distribuzione di architettura.

Funziona posizionando i diversi contenitori in gruppi, nominandoli come unità logiche e distribuendo il carico tra di loro. Ciò consente ora una portabilità indipendente dall'ambiente, una scalabilità facile ed efficiente e una crescita flessibile.

Alcune delle attività che Kubernetes consente a un'organizzazione di eseguire sono:

  • Orchestrare container su più host
  • Ottimizzazione dell'utilizzo delle risorse per eseguire app aziendali sfruttando al meglio l'hardware
  • Gestire e automatizzare implementazioni e aggiornamenti delle app
  • Ridimensionamento delle app containerizzate e delle relative risorse in un istante
  • Gestione dichiarativa dei microservizi per garantire l'esecuzione continua delle app distribuite come previsto

CropIn, ora alimentato da Kubernetes

Attualmente, l'architettura di microservizi è la scelta ideale per lo sviluppo di software grazie ai vantaggi di una distribuzione rapida e frequente di applicazioni complesse e anche in modo affidabile. Sebbene diverse organizzazioni in iper-crescita come Amazon, Netflix, Uber, SoundCloud ed eBay abbiano adottato i microservizi, questo approccio è ancora agli inizi nel settore agrotecnologico e CropIn è uno dei primi ad adottare.

Il trasferimento della nostra piattaforma di punta su Kubernetes ci ha consentito di rimanere cloud-native e di eseguire i carichi di lavoro in modo efficace. Ora è possibile per noi:

  • Esegui e aggiorna operazioni come codice;
  • Automatizzare implementazioni e rollback complessi;>
  • Applica facilmente modifiche più piccole, frequenti e reversibili;
  • Ottieni maggiore resilienza, tolleranza agli errori e isolamento nei nostri carichi di lavoro;
  • Ridimensiona i carichi di lavoro e la capacità su richiesta;
  • Stabilire una maggiore osservabilità nelle risorse della piattaforma; e,
  • Ottimizzare i costi della nostra infrastruttura cloud

Con microservizi e contenitori, invece di una grossa porzione di applicazione, ora avremo moduli funzionali più piccoli che lavoreranno insieme per ottenere gli stessi risultati in modo più efficace. Questo approccio ci aiuta a raggiungere una scala superiore a quanto era possibile in precedenza nello spazio agritech. Inoltre, una pipeline CI/CD (Continuous Integration/Continuous Deployment) automatizzata ci consentirà di passare dall'idea alla produzione di tutte le nostre interessanti funzionalità a un ritmo molto più rapido e ridurre i tempi di fermo per assicurarci che tutti i servizi che offriamo siano sempre disponibile.

L'uso dei microservizi garantisce che i nostri utenti finali trarranno enormi benefici da una soluzione agritech che non solo soddisfa i loro obiettivi, ma è anche facile da installare su qualsiasi sistema operativo e aggiornata con più nuove funzionalità a intervalli frequenti. Le nostre applicazioni sono preparate per scalare i requisiti della nostra clientela in rapida crescita, assicurando che gli utenti finali dispongano di tutto ciò di cui hanno bisogno, al momento giusto, per svolgere le loro operazioni commerciali senza intoppi.

AgriTech sta trasformando i sistemi agricoli e alimentari a un ritmo più veloce di quanto immaginato prima e, in CropIn, siamo abituati a guidare l'innovazione. Considerando che CropIn sta consentendo ai clienti in oltre 70 paesi di massimizzare il loro valore per acro utilizzando la nostra suite di prodotti, è fondamentale per noi fornire servizi coerenti tra le aree geografiche e offrire la migliore esperienza utente.

Nelle prossime settimane, alcune delle nostre app avanzate passeranno da un'architettura monolitica a una con microservizi basati su Kubernetes. In che modo questo influirà sulle offerte di CropIn?

Non solo questo, ma c'è di più in CropIn. Resta sintonizzato per gli aggiornamenti!


Tecnologia agricola

Agricoltura moderna
Agricoltura moderna