B
BigBlueButton
BigBlueButton ist ein quelloffenes Webkonferenz-System. Dabei können Konferenzräume angelegt und anschließend Teilnehmer/innen per Link eingeladen werden. Per Audio, Video und Chat kann innerhalb dieser Räume miteinander kommuniziert werden. Zur Unterstützung des Gesprochenen kann der Bildschirminhalt präsentiert werden. Auf einer Fläche können schnelle Skizzen gezeichnet werden um Sachverhalte damit zu erläutern. Ein Moderator steuert einen Raum und kann Teilnehmer/innen aus der Konferenz entfernen, stummschalten, sowie granular Rechte entziehen oder erteilen. BigBlueButton wird oft für Schule und Lehrveranstaltungen genutzt, da sich Lehrplattformen wie z.B. Moodle einfach einbinden lassen und es eine Reihe von Funktionen bietet, welche für diese Anwendungen nützlich sind.
C
Container
Ein Container, bzw. ein Software-Container, ist eine virtuelle Umgebung, in der alle Komponenten einer Applikation gesammelt vorhanden sind. Der Container kann also auf unterschiedlichen Umgebungen, ohne weitere Anpassungen, ausgeführt werden und bietet somit große Flexibilität.
Cluster
Als Cluster wird ein Verbund von Servern bezeichnet, die nach außen hin für den Anwender auftreten, als wäre es nur ein Server. Ziel ist es die Verfügbarkeit und die Leistungsfähigkeit von Anwendungen zu steigern. Ebenfalls kann ein Cluster dazu dienen eine große Anzahl an Anfragen auf verschiedene Server zu verteilen, dies wird Load Balancing genannt.
Die einzelnen Server in einem Cluster können zentral zusammen an einem Ort stehen, oder aber auch verteilt an verschiedenen Standorten. Dies hat den Vorteil, dass bei einem Ausfall eines ganzen Standorts, zum Beispiel durch einen Brandfall, der Dienst weiterhin verfügbar bleiben kann. Aber auch Zugriffszeiten können durch regionale Verteilung verkürzt werden.
Durch die größere Anzahl an Servern, die benötigt werden, steigen allerdings auch die Investitions- und Betriebskosten, sowie der Wartungsaufwand. Gerade für kleine und mittelständische Unternehmen kann dieser Kostenaufwand enorm sein. Abhilfe können hier Dienstleister verschaffen, die Rechenleistung und Speicherplatz zur Verfügung stellen.
In der Praxis werden Cluster vor allem für sensible IT-Infrastruktur eingesetzt, wie zum Beispiel Anwendungen in Gesundheitssektor, oder aber auch eine zentrale Benutzerverwaltung in Unternehmen.
D
Docker
Docker ist ein Dienst zur Verwaltung von Containern und deren Virtualisierung.
Container kann man sich in etwa wie eine Virtualisierung vorstellen bei der allerdings, im Gegensatz zu einer herkömmlichen virtuellen Maschine, nur das allernötigste wirklich virtualisiert wird , sodass z.B. Treiber vom Hostsystem verwendet werden.
Das bringt einige Vorteile mit sich, beispielsweise ist Docker, wegen der Containerisierung, ressourcensparsamer als herkömmliche VMs.
Ein weiterer Vorteil ist das einfache und schnelle vom Host-Betriebsystem unabhängige Deployment, so wird Docker oft auch als Alternative für Software-Pakete verwendet, sogar auf bereits virtualisierten Systemen.
Weiterer Vorteile von Docker gegenüber anderen Container-Lösungen wie LXC ist unter anderem eine Container-Versionierung und damit auch Rollbacks, sowie die automatische Erstellung von Containern.
Die Verwendung von Containern bringt oft aber auch neue andere Probleme mit sich, z.B. ist die Trennung von zwei Containern auf einem System nicht so klar wie zwei virtuelle Maschinen oder das Fehlen der Reservierung von Ressourcen. In der Praxis bringt Docker allerdings schon einige Lösungen für solche Probleme mit.
Im Betrieb können viele Setups durch Docker flexibler und effizienter gestaltet werden, es ist aber nicht die goldene Lösung für jedes Problem.
G
Git
Git ist eine Software zur verteilten Versionskontrolle, welche im Jahr 2005 erschienen ist. Heutzutage ist Git der quasi Standard bei der Entwicklung von Softwareprojekten im Team. Jeder Entwickler hat hierbei eine Kopie der zentralen Projektdatenbank - das Repository - lokal auf seinem Rechner. Im Repository sind alle Dokumente, Quellcode usw. des Projektes enthalten. Ebenfalls werden hier alle Änderungen dokumentiert. Somit kann immer nachvollzogen werden, wer etwas geändert, gelöscht oder hinzugefügt hat.
Alle Änderungen am Repository werden lokal vorgenommen, was ein arbeiten auch ohne Verbindung zum zentralen Repository ermöglicht. Sollen diese Änderungen nun mit den anderen Entwicklern geteilt werden, so werden sie zuerst “commited”. Das bedeutet, dass die Änderungen kurz und prägnant beschrieben werden. Anschließend können die Änderungen “gepusht”, also mit dem zentralen Repository geteilt werden. Änderungen von anderen Entwicklern können per “pull” wieder in deren lokale Projektdatenbank geladen werden.
Um zum Beispiel neue Features einer Software zu entwickeln, ohne dass diese direkt in den Quellcode der produktiven Software wandern können sogenannte Branches erstellt werden. Diese sind separate Arbeitszweige und werden parallel zum “Haupt”-Branch weitergeführt. Sollen die in einem Branch entwickelten Änderungen nun in in den “Haupt”-Branch zurückgeführt werden, passiert dies über einen sogenannten “merge”. Hier besteht allerdings die Gefahr, dass Konflikte entstehen, wenn in mehreren Branches die gleichen Dateien geändert werden. Diese Konflikte müssen dann von Hand aufgelöst werden, was bei einer großen Anzahl an Konflikten sehr Zeitaufwendig ist.
Um Git auch im Web zu nutzen gibt es Plattformen wie GitHub oder GitLab. Beide sind Repository Management Systeme, wobei GitLab selbst gehostet werden kann, was eine vollständige Kontrolle über die eigenen Daten ermöglicht.
GNU/Linux
GNU/Linux ist ein Betriebssystem, welches sich aus dem Linux-Kernel und einer breiten Palette an GNU-Software zusammensetzt. Die Geburtsstunde von GNU/Linux ist der bekannt gewordene Post von Linus Torvalds vom 25. August 1991, in dem er sein Projekt vorstellt und aber gleichzeitig auch vermutet dass es nie etwas großes und professionelles werden würde.
Wenige Jahre später sah die Welt schon ganz anders aus.
Immer mehr Software-Hersteller und vor allem Internet-Unternehmen fingen an sich mit GNU/Linux zu befassen. Als UNIX-ähnliches System war es auf einen Multi-User-Betrieb und die Einbindung in Netzwerke hin ausgerichtet. Beide Themen wurden mit dem wachsenden Internet immer wichtiger, sodass GNU/Linux rasch an Bedeutung gewinnen konnte.
AAls besonders hilfreich erwies sich bei der Verbreitung die relativ leichte Portierbarkeit auf andere Computer-Architekturen, so war GNU/Linux schnell für eine Vielzahl an ganz unterschiedlichen Systemen, von der klassischen Intel-Architektur (i386), bis hin zum Großrechner (IBM zSeries) verfügbar. Später kam der Einsatz auf Kleinrechnern wie dem Raspberry PI und sogar Mobiltelefonen hinzu, sodass heute eine breite Palette an Systemen abgedeckt wird.
Es gibt viele verschiedene Distributionen, Zusammenstellungen von Software und Kernel, welche den Linux-Kernel extrem vielseitig einsetzbar machen. Ein Großteil der digitalen Infrastrukturen und insbesondere der Cloud-Infrastrukturen laufen mittlerweile mit Linux.
Grafana
Grafana ist eine quelloffene Anwendung, zur grafischen Darstellung von Daten. Die Rohdaten (z. B. Zahlenwerte) können in verschiedenen Anzeigeformen (z.B. Graphen oder Diagrammen) ausgegeben werden und zu Dashboards (Übersichtsseiten) zusammengefasst werden. Grafana wird für Monitoring verwendet, da es eine Möglichkeit bietet, die Daten, die beim Monitoring anfallen, anschaulich darzustellen.
J
Jitsi Meet
Jitsi Meet ist ein quelloffenes web-basiertes Konferenzsystem. In den Folgen der Corona-Pandemie kam es vermehrt zur Nachfrage nach web-basierten Konferenzsystemen. Auch hat das Projekt sich nicht zuletzt durch den Einsatz im Phoenix Projekt als Bestandteil eines digital souveränen Behördenarbeitplatzes stark entwickelt.
Neben den klassischen Funktionen wie Video, Audio, Chat und Bildschirm-Freigabe bietet Jitsi Meet einige Zusatzmöglichkeiten. Dazu gehören anpassbare Webcam-Hintergründe, Umfragen oder auch animierte Möglichkeiten Feedback zu geben, wie Applaus.
Neben BigBlueButton ist Jitsi Meet die quelloffene Video-Konferenz-Lösung mit der größten Verbreitung.
K
Kubernetes
Kubernetes ist eine Anwendung zur automatisierten Bereitstellung, Skalierung und Verwaltung von container-basierten Anwendungen. Veröffentlicht wurde das quelloffene Projekt im Jahr 2014 von Google.
Kubernetes allein dient nur zur Verwaltung von Containern. Als Unterbau wird noch eine Container-Engine wie zum Beispiel Docker benötigt, welche für die Erstellung, Bereitstellung, Ausführung, Aktualisierung und Verwaltung der Container zuständig ist. Kubernetes wird meist in einem Cluster betrieben, welches aus einem Master und mehreren Nodes besteht. Der Master ist die Schnittstelle für die Entwickler*innen zur Konfiguration des Clusters. Der Master sorgt dafür, dass der in den Konfigurationsdateien definierte Zustand erreicht wird. Auf den Nodes laufen die eigentlichen Container. Wird in der Konfiguration definiert, dass für eine Anwendung 3 Container bereitgestellt werden sollen, startet Kubernetes automatisch diese drei Container und überwacht permanent, dass diese Anzahl gehalten wird. Fällt nun ein Cluster-Node aus, so sorgt Kubernetes dafür, dass auf den verbleibenden Nodes im Cluster neue Instanzen des Containers gestartet werden. In dieser permanenten Überwachung liegt auch ein großer Vorteil von Kubernetes, da dafür gesorgt wird, dass die Dienste durchgehend zur Verfügung stehen. Ebenfalls lässt sich die Anzahl der Container an die Last anpassen. Wenn eine hohe Anzahl an Zugriffen auf die Anwendung erfolgt, kann die Anzahl an Containern automatisch daran angepasst werden. Sinkt die Anzahl an Zugriffen wieder, wird die Anzahl an Containern wieder reduziert.
Um allerdings diese Flexibilität zu erreichen bedarf es eines großen Planungs- und Betriebsaufwandes. Es muss sichergestellt werden, dass die Server immer verfügbar sind und dass die Konfiguration der Container passend für den Anwendungsfall ist. Dies benötigt ein hohes Maß an Erfahrung.
M
Monitoring
Monitoring bezeichnet die Überwachung und Beobachtung von Systemen und zugehörigen Parametern, Funktionalitäten oder Prozessen. Die Spannweite reicht dabei von der Überwachung technischer Details und Funktionen bis hin zur Beobachtung abgeleiteter Kennzahlen (auch KPIs - Key Performance Indicators). Es können einzelne Systeme oder ganze Infrastrukturen in ein Monitoring einbezogen werden.
Es gibt eine Reihe von quelloffenen Lösungen, die auf der einen Seite die technischen Aspekte des Monitoring adressieren, und auf der anderen Seite auch solche, die sich um die übersichtliche Zusammen- und Darstellung der erhobenen Informationen kümmern.
Insbesondere wenn es darum geht, umfassende Daten aus komplexen Systemen zusammenzufassen und übersichtlich darzustellen, gibt es Möglichkeiten dies mit Grafana zu erreichen.
Auf diese Weise bietet ein Monitoring ganz unterschiedliche Detailgrade für unterschiedliche Adressaten. Im Kern geht es allerdings darum zu erkennen ob ein System wie erwartet funktioniert oder nicht.
O
OpenStack
OpenStack steht als Überbegriff für eine quelloffene Lösung zur Bereitstellung einer Cloud-Infrastruktur, welche sich im Kern auf Virtualisierung stützt.
Ursprünglich gegründet von der NASA und Rackspace, wird OpenStack nun von der Non-Profit-Organisation OpenInfra Foundation (OIF) koordiniert und entwickelt. Der Begriff “OpenStack” bezeichnet dabei kein einzelnes Stück Software, sondern eine ganze Sammlung von optionalen und nicht-optionalen Software-Komponenten.
Ziel einer Plattform wie OpenStack ist es, verteilte Ressourcen möglichst einfach und sinnvoll zu nutzen. So muss sich eine potentielle Anwender*in keine Gedanken mehr darum machen, auf welcher Server-Hardware welche Ressourcen vorhanden sind. Die Benutzer*innen definieren nur noch was gebraucht wird und anschließend werden die Ressourcen entsprechend bereit gestellt.
Nicht mehr benötigte Ressourcen können wieder freigegeben werden und stehen sofort zur erneuten Verwendung bereit. Dabei kann eine bestehende Umgebung in der Regel einfach erweitert werden. Da sämtliche OpenStack-Komponenten auf verteiltes Rechnen ausgelegt sind, können kritische Komponenten redundant ausgelegt werden. Dadurch kann zum Beispiel Hochverfügbarkeit (High Availability) erreicht werden.
Die verschiedenen Komponenten für eine OpenStack-Umgebung werden als eigenständige Projekte unabhängig voneinander entwickelt.
Alle Komponenten verfügen über eine REST API wodurch es vergleichsweise einfach ist eigene Komponenten anzubinden. Andersherum können OpenStack-Komponenten auch für andere Einsatzzwecke verwendet werden.
Open Source Software
(gelegentlich auch als Free Libre Open Source Software, kurz FLOSS, bezeichnet)
Freie Software im engeren Sinne wird durch 4 Freiheiten definiert:
- Die Freiheit, ein Programm für jeden Zweck einsetzen zu dürfen
- Die Freiheit, untersuchen zu dürfen, wie ein Programm funktioniert, und es den eigenen Bedürfnissen anzupassen
- Die Freiheit, Kopien für andere machen zu dürfen
- Die Freiheit, das Programm verbessern zu dürfen und diese Verbesserungen zum allgemeinen Wohl zugänglich zu machen Diese Freiheiten machen deutlich, dass es bei Open Source und freier Software eher nicht um das “frei”, wie in Freibier, sondern eher um ein “frei” wie in Redefreiheit geht. Also weniger um kostenlos, sondern eben mehr um Unabhängigkeit, Flexibilität und Selbstbestimmung.
So philosophisch das klingt, bringen das Entwicklungsmodell von OSS, der Zugriff auf den Quellcode, und die genannten Freiheiten ganz pragmatische und strategische Vorteile für den Einsatz in Unternehmen. Sie bedingen auf der anderen Seite aber — wenn man selber am Entwicklungsprozess teilnehmen möchte — auch einige Pflichten.
Aufgrund der Möglichkeiten, die Nutzer*innen und Anwender*innen durch den Zugriff auf den Quellcode erhalten, ergeben sich insbesondere für den Einsatz in sicherheitskritischen Infrastrukturen ganz entscheidende Vorteile, da genau nachvollziehbar ist, was eine Software macht.
Die Anpassbarkeit erlaubt den Einsatz auch für sehr individuelle Bedürfnisse und eröffnet immense Innovationspotentiale. Darüber hinaus gibt es keine unauflösbare Abhängigkeit von einem einzelnen Hersteller — ein großes Risiko bei proprietären Software-Lösungen fällt also weg.
Freie Software ist sowohl aus wirtschaftlichen Erwägungen als auch im Hinblick auf eine nachhaltige Digitalisierung ein großer Pluspunkt.
Ob eine Software als Open Source oder besser als Freie Software bezeichnet wird hängt dabei maßgeblich von den Lizenzbedingungen ab. So kann eine Software im Quelltext vorliegen, ohne dass daran Rechte gekoppelt sind.
Mehr zu FLOSS findet sich zum Beispiel bei der Free Software Foundation Europe.
V
VoIP
VoIP ist die Kurzform für Voice over IP und steht für die Übertragung von Sprache über IP-basierte Netze, zum Beispiel das Internet. Diese Technik ersetzt seit Jahren immer mehr die klassische analoge Telefonie.
Der Begriff umfasst dabei das gesamte Feld der Digitalisierung von Telefonanlagen und Telefonen. Ein spezielles Verfahren ist dabei nicht definiert. Ein Protokoll dass den Aufbau von unteranderem Sprachverbindungen definiert und für VoIP genutzt werden kann ist zum Beispiel SIP.