Softwareentwicklung und IKEA Montageanleitungen

Dieser Artikel erschien ursprünglich am Akvos Blog

Bei Wasserglauben wir, dass Open-Source-Software bietet erhebliche Vorteile für Organisationen im internationalen Entwicklungssektor. Heutzutage erwarten wir von jeder Software, die wir verwenden, eine hohe Qualität und einen reichhaltigen Funktionsumfang.

Dank Open-Source-Software sind relativ kleine Organisationen und Entwicklungsteams in der Lage, anspruchsvolle und funktionsreiche Anwendungen zu erstellen, indem sie bereits vorhandene Open-Source-Softwarekomponenten auf einzigartige oder spezifische Weise zusammenfügen.

All diese Teile wiederverwenden zu können, ist großartig, da es viel weniger komplex ist, vorhandene Komponenten zusammenzubauen, als sie von Grund auf neu zu erstellen.

Aber diese Baugruppe kann aus Ihrem schlimmsten IKEA-Albtraum ein Monster werden:

ikea anleitung

Wenn Sie diese Anweisungen einmal im Leben befolgen müssten, wäre es wahrscheinlich nicht so schlimm. Softwareentwickler müssen diese Anweisungen jedoch regelmäßig befolgen, da wir unsere Anwendungen neu erstellen, neu erstellen und neu zusammensetzen müssen, wenn wir neue Komponenten hinzufügen, Versionen dieser Komponenten aktualisieren oder neue Funktionen erstellen müssen.

Aufgrund der Beschaffenheit von Software sind die Änderungen, die Entwickler vornehmen müssen (oder die Teile, die wir neu zusammensetzen müssen), manchmal drastisch. Eine Analogie wäre, den einfachen IKEA-Schreibtisch in einen motorisierten verstellbaren Stehschreibtisch zu verwandeln.

Wie bei jeder anderen Anleitung gibt es immer etwas, das nicht funktioniert. Vielleicht haben Sie einen Schritt ausgelassen, eine Komponente verloren oder nicht alle erforderlichen Werkzeuge zur Verfügung gehabt. Vielleicht waren die Anweisungen falsch, irreführend, mehrdeutig oder Sie haben sie verkehrt herum gelesen.

Das Ergebnis aller dieser Probleme ist das gleiche: a große Zeitverschwendung.

Das Problem mit der Anleitung

Seit vielen Jahren versucht die IT-Branche, diesen Schmerz zu lindern, indem sie genauere Anweisungen bereitstellt, aber diese Anweisungen werden immer noch von Menschen geschrieben, gelesen und interpretiert, und wir alle wissen, dass menschliche Kommunikation chaotisch und alles andere als genau ist.

Bei Akvo möchten wir es jedem leicht machen, zu unserer Open-Source-Software beizutragen. Aus diesem Grund haben wir uns entschieden, in die möglichst einfache Montage unserer Open-Source-Anwendungen zu investieren, nicht indem wir die Montageanleitung verbessern, sondern indem wir sie vollständig zu eliminieren.

Einen Neuanfang machen

Da die menschliche Kommunikation unvollkommen ist, mussten wir nach einem anderen Werkzeug suchen; eine, die jede Zweideutigkeit beseitigen würde. Und es gibt nichts Besseres als einen Computer, um Anweisungen wörtlich zu befolgen.

Selbst eine perfekte Anleitung, die von einer Maschine blind befolgt wird, reicht nicht aus. Computer neigen dazu, Entropie zu akkumulieren, sodass sich sogar zwei Computer der gleichen Marke, die zur gleichen Zeit im selben Geschäft gekauft wurden, nach einigen Wochen Gebrauch unterschiedlich verhalten können. Vielleicht habe ich mein Gebietsschema auf Klingonisch konfiguriert, während Sie Antivirus-X installiert haben. Dieser Unterschied reicht aus, um die Montageanleitung zum Scheitern zu bringen.

Abgesehen von einigen maschinenlesbaren Anweisungen brauchen wir also eine Möglichkeit, sicherzustellen, dass wir immer einen Neuanfang haben. Wenn alle Entwickler am selben Punkt beginnen, kommen die Anweisungen immer zum exakt gleichen Ergebnis. Und hier glänzt die Software-Virtualisierungstechnologie, da sie die Fähigkeit besitzt, virtuelle Computer innerhalb des Computers des Entwicklers zu erstellen. Kurz gesagt, Virtualisierung bietet eine sehr einfache Möglichkeit, einen neuen leeren Kosmos zu erstellen, den wir als Ausgangspunkt für unsere Anweisungen verwenden können.

Die Docker-Plattform

Wir haben uns für die entschieden Docker-Plattform als Virtualisierungstechnologie, um unser Ziel zu erreichen, eine wiederholbare und maschinenlesbare Anleitung und damit einen konsistenten Ausgangspunkt zu haben.

Die beiden Tools der Docker-Plattform, die wir verwenden, sind Docker und Docker Compose. Unten sehen Sie ein Beispiel für eine Datei, die Sie Docker übergeben würden, um einen Computer zu erstellen:

FROM openjdk:8-jre-alpine
 
COPY target/akvo-flow-maps.jar /app/akvo-flow-maps.jar
COPY maybe-import-and-java-jar.sh /app/maybe-import-and-java-jar.sh
RUN chmod 777 /app/maybe-import-and-java-jar.sh
 
CMD ./maybe-import-and-java-jar.sh 

Das Interessanteste hier ist die erste „FROM“-Zeile, die Docker mitteilt, was unser gewünschter Ausgangspunkt ist. Nochmals vielen Dank an die Open-Source-Community, bei DockerHub stehen Tausende von Ausgangspunkten zur Auswahl, was das Bootstrap unserer benutzerdefinierten virtuellen Computer erheblich vereinfacht. Die restlichen Zeilen sind die Anweisungen, die von diesem Ausgangspunkt aus zu befolgen sind.

Wo Docker es uns ermöglicht, virtuelle Computer zu erstellen, ermöglicht uns Docker Compose, einen virtuellen Kosmos zu erstellen, in dem eine Reihe von Computern isoliert von anderen Kosmos leben wird. Hier ist ein Beispiel:

services:
  postgres:
   build: 
     dockerfile: Dockerfile-postgres
   expose:
     - 5432
 
  flow-maps:
    build:
     dockerfile: Dockerfile-dev
    ports:
      - "47480:47480"
      - "3000:3000"
 
  redis:
     image: redis:3.2.9

Als erstes fällt auf, dass der Ausgangspunkt für Docker Compose immer die Leere, das Nichts, la nada ist. Danach legen wir fest, welche Computer in diesem Universum vorhanden sein sollen, in diesem Fall eine Postgres-Datenbank, eine Redis-Datenbank und die Anwendung Akvo Flow Maps. Diese Computer werden mit den Docker-Dateien erstellt, die wir gerade erklärt haben.

Ergebnisse

Was ist also das Ergebnis der Anwendung dieser Technologie? Akvo Lumen, das Datenvisualisierungs- und Analysetool von Akvo? Durch die Anwendung dieser Technologie geht der Beitrag zu Lumen von diesem … zu diesem:

Die Ergebnisse

Zwei Tools, Git und Docker, und zwei Befehle machen es extrem einfach, eine funktionierende Akvo Lumen-Entwicklungsumgebung zu erstellen und zusammenzustellen. Neben der Vereinfachung des Open-Source-Beitragsprozesses durch den Wegfall der lästigen Aufgabe, eine Arbeitsumgebung einzurichten, finden wir zwei zusätzliche Vorteile bei der Verwendung dieser Technologie:

  1. Es fördert Innovationen. Da es extrem einfach ist, „von vorne anzufangen“, können wir mit neuen Komponenten experimentieren, ohne Angst zu haben, Dinge zu beschädigen oder in eine nicht behebbare Situation zu geraten.
  2. Es reduziert Zeitverschwendung. Wann immer wir ein neues Teammitglied haben, neue Komponenten zum Projekt hinzugefügt werden, zwischen verschiedenen Projekten wechseln oder einfach etwas nicht mehr funktioniert, haben wir zwei Befehle, um zu einem bekannten und gültigen Ausgangspunkt zurückzukehren.

Willst du bessere Anweisungen? Bemühen Sie sich um keine Anweisungen.

Similar Posts

Leave a Reply

Your email address will not be published.