Willkommen zu Moderne Landwirtschaft !
home

Aufbau einer effizienten und skalierbaren Cloud-nativen Agritech-Plattform mit Kubernetes

AgriTech transformiert Landwirtschafts- und Lebensmittelsysteme in einem Tempo, das schneller ist als je zuvor angenommen, und bei CropIn sind wir es gewohnt, Innovationen voranzutreiben. Wir erforschen weiterhin neue Spitzentechnologien und befähigen verschiedene Akteure im Agrarökosystem digital, ihre jeweiligen Ziele zu erreichen. In Anbetracht der Tatsache, dass CropIn Kunden in über 70 Ländern befähigt, ihren Wert pro Hektar zu maximieren, ist es für uns von entscheidender Bedeutung, Dienstleistungen anzubieten, die in allen Regionen einheitlich sind und eine hervorragende Benutzererfahrung bieten. Um dies zu erreichen, haben wir kürzlich die Containerisierung und einen auf Microservices basierenden Ansatz zum Design unserer Anwendungen eingeführt. Was bedeutet das also?

Die Container-Technologie, ein Begriff, der aus offensichtlichen Gründen aus der Schifffahrtsindustrie entlehnt wurde, hat die Art und Weise revolutioniert, wie landwirtschaftliche Apps verpackt werden, um eine schnellere App-Bereitstellung zu ermöglichen. Außerdem machte es die Server effizienter als je zuvor und garantierte, dass die Software unabhängig vom Betriebssystem (OS) zuverlässig läuft. Es beseitigte mehrere Probleme, mit denen Systeme früher konfrontiert waren, wie z. B. der hohe CPU-Overhead und die erforderlichen Ressourcen zum Erstellen und Ausführen einer virtuellen Maschine (VM), die Begrenzung der Anzahl von Anwendungen, die effizient ausgeführt werden können, die Inkompatibilität aufgrund des Betriebssystems Unterschiede, Speicheranforderungen und die Zeit, die zum Booten des Betriebssystems benötigt wird, unter anderem. Die Containerisierung bot einen effektiven Weg, um diese Probleme zu lösen.

Wie funktioniert die Containerisierung?

Vielleicht sind wir zumindest auf Bilder von Frachtschiffen gestoßen, die Container in einheitlicher Größe transportieren, die für Krane bequem überall auf der Welt be- und entladen werden können. Auf die gleiche Weise enthält ein Container im digitalen Raum normalerweise nicht nur die Software, sondern auch alle anderen Abhängigkeiten, wie z. B. die Konfigurationsdateien und Binärdateien und Bibliotheken (bins/libs). Die Containerisierung reduziert auch die Größe einer einzelnen Einheit erheblich und senkt sie von mehreren Gigabyte, die VMs belegen, auf nur etwa einige zehn Megabyte. Mit anderen Worten, eine einzelne Containereinheit mit allen Laufzeitkomponenten wird vom Host-Betriebssystem abstrahiert, wodurch es portabel und bereit ist, auf jeder Plattform oder Cloud ausgeführt zu werden.

Die Containerisierung ermöglicht es auch, eine vollständige (monolithische) Anwendung in kleinere Module zu zerlegen, die als Microservices bezeichnet werden und über Anwendungsprogrammierschnittstellen oder APIs miteinander kommunizieren. Die Modularität des Microservices-Ansatzes macht es auch bequem, sie unabhängig zu entwickeln, bereitzustellen und zu skalieren und isolierte Änderungen nur an einigen Teilen der Anwendung vorzunehmen, anstatt das Ganze neu zu erstellen. Dadurch können Entwickler eine kürzere Bearbeitungszeit und eine verbesserte Prozesseffizienz erreichen. Der andere Vorteil von Microservices besteht darin, dass sie leichtgewichtig sind, wodurch sie fast sofort verfügbar und einsatzbereit sind. Darüber hinaus sind Microservices plattform- und geräteunabhängig, was zu Apps führt, die unabhängig von der zugrunde liegenden Infrastruktur eine konsistente Benutzererfahrung bieten.

Vorteile der Containerisierungstechnologie:

  • Zuverlässigkeit: Ein Container ist eine eigenständige Einheit, die alle Softwareabhängigkeiten logisch bündelt und nicht vom Host-Betriebssystem abhängt. Daher wird das Verschieben von einer Umgebung in eine andere problemlos, da sichergestellt wird, dass die Anwendung wie erwartet ausgeführt wird, wenn sie beispielsweise vom Laptop des App-Entwicklers in die Produktion übertragen wird, selbst wenn beide unterschiedliche Betriebssysteme ausführen. Es gibt auch fast keinen Raum für Kompatibilitätsprobleme.
  • Fehlereingrenzung: Die Unabhängigkeit von Containern stellt sicher, dass ein Fehler in einer Einheit den Betrieb der anderen nicht beeinträchtigt. Das Entwicklungsteam kann diesen Container auch isolieren und sich um das Problem kümmern, ohne dass es zu ungeplanten Ausfallzeiten in den anderen Containern kommt.
  • Produktivität: Aufgrund der reduzierten Fehler, die aus Kompatibilitätsproblemen resultieren, können die App-Entwickler und IT-Betriebsteams jetzt mehr Zeit und Ressourcen aufwenden, um zusätzliche Features oder Funktionalitäten für die Endbenutzer einzubinden. Darüber hinaus ermöglichen Microservices den verschiedenen Teams, jeden Container zu isolieren und unabhängig voneinander zu bearbeiten, wodurch die Zeit für die Softwareentwicklung verkürzt wird.
  • Effizienz: Im Gegensatz zu VMs teilt sich jeder der Container den Betriebssystemkern, anstatt das gesamte Betriebssystem in sich aufzunehmen, was zusätzlichen Overhead hinzufügt. Container sind daher leichtgewichtig und erfordern im Vergleich zu VMs weniger Ressourcen für ihren Betrieb.
  • Rentabilität: Während dieses System die Server- und Lizenzkosten senkt, werden die Kosten durch das Zusammenpacken der verschiedenen Komponenten und das Verschieben zwischen den Plattformen auch erheblich reduziert.
  • Flexibilität: Container können bei Bedarf gestartet und gestoppt werden, da das Betriebssystem bereits auf dem Server ausgeführt wird. Dies beschleunigt die Startzeit auf nur wenige Sekunden und setzt Ressourcen fast sofort frei, wenn bestimmte Funktionen nicht mehr benötigt werden. Selbst wenn ein Container abstürzt, kann er umgehend neu gestartet werden, um seine Aufgabe wieder aufzunehmen.
  • Immunität: Da die Container voneinander isoliert sind, kann die Verbreitung von invasivem und bösartigem Code über Container hinweg und mit Auswirkungen auf das Hostsystem selbst vermieden werden. Außerdem kann durch das Festlegen bestimmter Sicherheitsberechtigungen automatisch verhindert werden, dass unerwünschte Komponenten in Container eindringen.

Wie werden Container verwaltet?

Container-Technologien wie Docker, CoreOS rkt, LXC, Mesos und einige andere ermöglichen Entwicklern einen neuartigen Ansatz zum Codieren und Bereitstellen von Anwendungssoftware. Das Erstellen komplexer Anwendungen, die mehrere Komponenten umfassen, die in unzählige Container verpackt sind, erfordert jedoch Container-Orchestrierungsplattformen oder Cluster-Manager, um diese einzelnen Einheiten zu verstehen.

Eine solche Container-zentrierte Verwaltungssoftware ist Kubernetes, ein Softwareprojekt, das zuerst von Ingenieuren bei Google konzipiert wurde. Auch unter Namen wie K8s oder Kube bekannt, automatisiert es verschiedene manuelle Prozesse im Zusammenhang mit der Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen. Da es sich bei Kubernetes um Open Source handelt, gibt es nur sehr wenige Einschränkungen hinsichtlich seiner Verwendung, sodass Unternehmen die Freiheit haben, es ungehindert und fast überall zu nutzen, sei es vor Ort oder in öffentlichen, privaten oder hybriden Clouds.

Kubernetes gilt als ideale Plattform für das Hosten von Cloud-nativen Anwendungen, einschließlich CropIns, aus dem einfachen Grund, dass es eine beschleunigte und elastische Skalierung, die Überwachung von Ressourcen, einfachere Rollouts und Rollbacks, die Durchführung von Zustandsprüfungen und die Selbstverwaltung ermöglicht. Heilung mit Funktionen wie Auto-Platzierung, Auto-Neustart, Auto-Replikation, Auto-Skalierung. Es handelt sich um eine produktionsbereite Plattform der Enterprise-Klasse, die für jede Architekturbereitstellung verwendet werden kann.

Es funktioniert, indem es die verschiedenen Container in Gruppen einteilt, sie als logische Einheiten benennt und die Last unter ihnen verteilt. Dies ermöglicht jetzt umgebungsunabhängige Portabilität, einfache und effiziente Skalierung und flexibles Wachstum.

Einige der Aufgaben, die Kubernetes einer Organisation ermöglicht, sind:

  • Container über mehrere Hosts hinweg orchestrieren
  • Optimierung der Ressourcennutzung zur Ausführung von Unternehmensanwendungen durch optimale Nutzung der Hardware
  • Verwalten und Automatisieren von App-Bereitstellungen und -Updates
  • Containerisierte Anwendungen und ihre Ressourcen im Handumdrehen skalieren
  • Deklaratives Verwalten von Microservices, um die fortgesetzte Ausführung bereitgestellter Apps wie vorgesehen zu gewährleisten

CropIn, jetzt powered by Kubernetes

Derzeit ist die Microservice-Architektur aufgrund ihrer Vorteile einer schnellen und häufigen Bereitstellung komplexer Anwendungen die erste Wahl für die Softwareentwicklung, und das auch noch auf zuverlässige Weise. Während mehrere wachstumsstarke Unternehmen wie Amazon, Netflix, Uber, SoundCloud und eBay Microservices eingeführt haben, steckt dieser Ansatz in der Agritech-Branche noch in den Kinderschuhen, und CropIn gehört zu den Early Adopters.

Die Umstellung unserer Flaggschiff-Plattform auf Kubernetes hat es uns ermöglicht, Cloud-nativ zu bleiben und auch Workloads effektiv auszuführen. Es ist uns jetzt möglich:

  • Vorgänge als Code ausführen und aktualisieren;
  • Automatisieren Sie komplexe Bereitstellungen und Rollbacks;>
  • Führen Sie problemlos kleinere, häufige und umkehrbare Änderungen durch;
  • Höhere Belastbarkeit, Fehlertoleranz und Isolierung unserer Workloads erreichen;
  • Workloads und Kapazität nach Bedarf skalieren;
  • Etablieren Sie eine bessere Beobachtbarkeit der Plattformressourcen; und,
  • Optimieren Sie unsere Cloud-Infrastrukturkosten

Mit Microservices und Containern werden wir anstelle eines großen Anwendungsblocks jetzt kleinere Funktionsmodule haben, die zusammenarbeiten, um dieselben Ergebnisse effektiver zu erzielen. Dieser Ansatz hilft uns, eine Größenordnung zu erreichen, die höher ist als das, was zuvor im Agritech-Bereich möglich war. Darüber hinaus ermöglicht uns eine automatisierte CI/CD-Pipeline (Continuous Integration/Continuous Deployment), von einer Idee bis zur Produktion all unserer aufregenden Funktionen viel schneller zu gehen und Ausfallzeiten zu reduzieren, um sicherzustellen, dass alle von uns angebotenen Dienste immer verfügbar sind verfügbar.

Die Verwendung von Microservices stellt sicher, dass unsere Endbenutzer immens von einer Agritech-Lösung profitieren, die nicht nur ihren Zielen entspricht, sondern auch einfach auf jedem Betriebssystem installiert und in regelmäßigen Abständen mit weiteren neuen Funktionen aktualisiert werden kann. Unsere Anwendungen sind darauf ausgelegt, die Anforderungen unserer schnell wachsenden Kundschaft zu skalieren und sicherzustellen, dass die Endbenutzer im richtigen Moment alles haben, was sie für einen reibungslosen Geschäftsbetrieb benötigen.

AgriTech transformiert Landwirtschafts- und Ernährungssysteme in einem Tempo, das schneller ist als je zuvor angenommen, und bei CropIn sind wir es gewohnt, Innovationen voranzutreiben. In Anbetracht der Tatsache, dass CropIn Kunden in über 70 Ländern befähigt, ihren Wert pro Hektar mithilfe unserer Produktsuite zu maximieren, ist es für uns von entscheidender Bedeutung, Dienstleistungen anzubieten, die in allen Regionen einheitlich sind und die beste Benutzererfahrung bieten.

In den kommenden Wochen wechseln einige unserer fortschrittlichen Apps von einer monolithischen Architektur zu einer Architektur mit Microservices, die von Kubernetes unterstützt werden. Wie wird sich dies auf die Angebote von CropIn auswirken?

Nicht nur das, bei CropIn passiert noch mehr. Bleiben Sie dran für Updates!


Landtechnik
Moderne Landwirtschaft