{"id":3232,"date":"2022-06-20T07:00:00","date_gmt":"2022-06-20T05:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3232"},"modified":"2022-06-18T13:22:24","modified_gmt":"2022-06-18T11:22:24","slug":"gedanken-zum-thema-software-verteilung","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/gedanken-zum-thema-software-verteilung\/","title":{"rendered":"Gedanken zum Thema Software-Verteilung"},"content":{"rendered":"\n<p>Ein Freund bat mich k\u00fcrzlich um meine Meinung zum Thema Software-Verteilung und Dokumentation des Installations- bzw. Bereitstellungsprozesses. Die Gedanken, die ich mir dazu gemacht habe, m\u00f6chte ich an dieser Stelle mit euch teilen. Dabei schreibe ich aus dem Blickwinkel eines Systemintegrators, der von Dritten erstellte Software integrieren und betreiben muss.<\/p>\n\n\n\n<p>Den Anwendungsentwicklern, Software-Architekten und Produkt-Managern unter euch soll dieser Text als Information dienen, was ich und ggf. weitere Personen meiner Zunft von einer Dokumentation erwarten bzw. wie wir uns Software-Verteilungsprozesse vorstellen.<\/p>\n\n\n\n<p>Als Leser seid ihr alle eingeladen, eure Gedanken ebenfalls zu teilen und eine Diskussion zu diesem Thema zu f\u00fchren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Das Szenario<\/h2>\n\n\n\n<p>Ich habe bei meinen Gedanken ein Szenario im Kopf, in dem ein Anwendungsentwickler eine Anwendung in einer Sprache seiner Wahl schreibt. Diese Anwendung soll sp\u00e4ter \u00fcber ein Web-Frontend erreichbar und nutzbar sein. Die Anwendung ben\u00f6tigt eine Datenbank, um Informationen darin abzulegen. Bin\u00e4rdateien werden ggf. au\u00dferhalb der Datenbank in einem Dateisystem gespeichert.<\/p>\n\n\n\n<p>Die Anwendungsentwickler freuen sich, wenn ihre Software einen hohen Verbreitungsgrad erreicht. Dazu muss die dazugeh\u00f6rige Dokumentation folgende Informationen bieten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Werkzeuge zum Erstellen und Ausf\u00fchren der Anwendung<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Welcher Compiler ab welcher Version wird ben\u00f6tigt?<\/li><li>Welche Bibliotheken werden ab welcher Version ben\u00f6tigt?<\/li><li>Sind abweichende Versionen m\u00f6glich oder funktioniert nur genau eine?<\/li><li>Welche Laufzeitumgebung wird ben\u00f6tigt?<\/li><li>Was ist in welcher Reihenfolge zu tun, um vom Quelltext zu einem ausf\u00fchrbaren Programm zu kommen?<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Voraussetzungen zur Integration der Anwendung<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Wird eine Datenbank ben\u00f6tigt?<\/li><li>Welche Datenbank-Management-Systeme werden unterst\u00fctzt?<\/li><li>Ab welcher Version?<\/li><li>\u00dcber welche Rechte muss ein DB-User mindestens verf\u00fcgen, damit der Anwendungs-Installer die notwendigen Tabellen, Views, etc. erstellen kann?<\/li><li>Welche Webserver werden unterst\u00fctzt?<\/li><li>Welche Protokolle, Parameter bzw. Optionen sind f\u00fcr die Kommunikation mit der Anwendung notwendig?<\/li><\/ul>\n\n\n\n<p>Ich bin immer entt\u00e4uscht, wenn hier auf ein einziges System eingeschr\u00e4nkt wird. Dies limitiert unn\u00f6tig den Nutzerkreis.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Wird ein Snakeoil-Zertifikat mitgeliefert oder hat der Systemintegrator dieses beizustellen? Eigene Zertifikate auf Wunsch verwenden zu k\u00f6nnen ist obligatorisch.<\/li><\/ul>\n\n\n\n<p>Die bis jetzt genannten Informationen m\u00fcssen so umfassend sein, dass Paketbetreuer bzw. Software-Paketierer daraus Debian-, Flatpak-, RPM-, Snap-Pakete, Container-Images und Windows-Installer bauen k\u00f6nnen.<\/p>\n\n\n\n<p>Nehmen die Anwendungsentwickler in Personalunion die Rolle von Software-Paketierern wahr, scheint es dennoch unrealistisch, dass sie allein alle Formate unterst\u00fctzen k\u00f6nnen. Sie sollten sich f\u00fcr einige wenige Formate entscheiden, die auf m\u00f6glichst vielen Plattformen lauff\u00e4hig sind. In dem von mir gedachten Szenario sind dies <a href=\"https:\/\/de.wikipedia.org\/wiki\/Open_Container_Initiative\">OCI<\/a>-kompatible Container-Images.<\/p>\n\n\n\n<p>Bei einer GUI-Anwendung w\u00fcrde ich mich vermutlich f\u00fcr Flatpak entscheiden. Die Paketierung als DEB oder RPM w\u00fcrde ich auf jeden Fall den Paketbetreuern der jeweiligen Distributionen \u00fcberlassen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Systemintegration<\/h2>\n\n\n\n<p>F\u00fcr den Systemintegrator, welcher den Webserver, die Anwendung und die Datenbank zusammenbringt (integriert), muss klar beschrieben werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Gibt es ein fertiges Container-Image? Wo bekommt man es her?<\/li><li>Optional: Wie erstellt man das Container-Image selbst?<\/li><li>Welche (Umgebungs-)Variablen geh\u00f6ren zum  Image? Welche Werte k\u00f6nnen diese annehmen?<\/li><li>Ein Kommunikationsdiagramm, damit der Sysadmin wei\u00df, was wann mit wem spricht und welche Firewall-Regeln evtl. ben\u00f6tigt werden.<\/li><\/ul>\n\n\n\n<p>Referenzimplementierungen sind ebenfalls sch\u00f6n. Diese sollten f\u00fcr Docker, Docker-Compose, Kube-YAML (K8s) und Podman bereitstehen. Die Doku zum Container-Image muss jedoch so ausgestaltet sein, dass auch ohne Referenzimplementierung die Instanziierung mit den verschiedenen Engines und Orchestrierern gelingen kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was Sysadmins (wie ich) nicht m\u00f6gen<\/h2>\n\n\n\n<p>Ich mag es nicht, wenn in den Abh\u00e4ngigkeiten ein Webserver (Apache, NGINX, lighttpd) oder ein Datenbank-Management-System unn\u00f6tig hart verdrahtet ist. Gleiches gilt f\u00fcr die Festlegung der zu verwendenden Container-Registries. Ich will dem Installer sagen k\u00f6nnen, wo er die Images findet und nicht auf den Dockerhub festgelegt werden.<\/p>\n\n\n\n<p>Und ja, mir ist bewusst, dass eine gute Dokumentation genauso viel Aufwand und Pflege bedeutet wie der Quelltext einer Anwendung selbst. Aber ist es eine Alternative, wenn Systemintegratoren die Anwendung nach dem ersten Installationsversuch hassen?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eure Meinung ist willkommen<\/h2>\n\n\n\n<p>Wie steht ihr als Entwickler zum Thema Dokumentation? Was erwartet ihr als Sysadmin und User von ihr?<\/p>\n\n\n\n<p>Stimmt ihr mit mir \u00fcberein oder habt ihr ganz andere Ansichten dazu? Nutzt gern die Kommentarfunktion und lasst es mich wissen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Freund bat mich k\u00fcrzlich um meine Meinung zum Thema Software-Verteilung und Dokumentation des Installations- bzw. Bereitstellungsprozesses. Die Gedanken, die ich mir dazu gemacht habe, m\u00f6chte ich an dieser Stelle mit euch teilen. Dabei schreibe ich aus dem Blickwinkel eines Systemintegrators, der von Dritten erstellte Software integrieren und betreiben muss. Den Anwendungsentwicklern, Software-Architekten und Produkt-Managern<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/gedanken-zum-thema-software-verteilung\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[1],"tags":[710,714,430,305,713,709,711],"class_list":["post-3232","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-anwendungsentwicklung","tag-dokumentation","tag-osbn","tag-planet","tag-software-verteilung","tag-softwareentwicklung","tag-softwareverteilung"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3232"}],"version-history":[{"count":2,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3232\/revisions"}],"predecessor-version":[{"id":3235,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3232\/revisions\/3235"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}