Glossar

Unser Glossar soll eine umfassende Liste von Terminologien zu Begriffen darstellen, welche auf unserer Webseite verwendet werden. Es beinhaltet technische, sowie allgemeinere Begriffe, die nützlichen Kontext für unsere Besucher:innen liefern.

Alphabetischer Index

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

.NET

.NET, oft auch als Microsoft .NET bekannt, ist der Sammelbegriff für eine Reihe von Software-Plattformen von Microsoft, die für die Entwicklung und Ausführung von Anwendungssoftware konzipiert sind. Diese Plattformen beinhalten Produkte, Frameworks, Programmiersprachen sowie zugehörige Tools und Methoden.

Im Laufe der Jahre hat sich die Relevanz der verschiedenen Bestandteile und Technologien innerhalb von .NET verändert. Zu den prominentesten Frameworks gehören:

  • .NET in seiner aktuellen Form, welches plattformübergreifend unterstützt wird. Dieses wurde eine Zeit lang parallel als .NET Core entwickelt.
  • Das klassische .NET-Framework, welches nur auf Windows läuft.
  • Die Mono-Plattform und darauf aufbauende Technologien, häufig von Microsoft als Xamarin bezeichnet. Mono ermöglicht seit Jahren die Nutzung von .NET auf diversen Systemen, wobei frühere Implementierungen oft nicht vollständig waren.

.NET Core

.NET Core, ist eine Open-Source-Software-Plattform innerhalb des .NET-Ökosystems, die für die Entwicklung und den Betrieb von Anwendungen verantwortlich ist und unter der Leitung von Microsoft entstanden ist.

Für die Entwicklung mit .NET Core werden die Programmiersprachen C#, F# und Visual Basic auf den Betriebssysteme Windows, Linux und MacOS unterstützt. Auf Windows wird darüber hinaus auch C++/CLI unterstützt.

Angular

Angular ist ein von Google entwickeltes, TypeScript basiertes Front-End-Webapplikationsframework zum Programmieren von Single-Page-Anwendungen.

Die Architektur von Angular basiert auf einem komponentenorientierten Ansatz, wobei jede Komponente eine Kombination aus HTML-Template und einer zugehörigen Klasse mit Steuerungslogik darstellt. Ein herausragendes Merkmal von Angular ist die Nutzung von TypeScript, einer über JavaScript liegenden, streng typisierten Sprache, die Entwickler:innen verbesserte Programmierfunktionen und statische Typisierung ermöglicht. Zudem integriert Angular die Bibliothek RxJS, die reaktive Programmierung unterstützt und es Entwickler:innen erleichtert, asynchrone oder rückrufbasierte Codeabschnitte zu handhaben. Durch diese und viele weitere Features bietet Angular eine robuste Grundlage für die Entwicklung moderner, leistungsstarker Webanwendungen.

API

Eine API, auch als Programmierschnittstelle bezeichnet, ist ein Satz von Werkzeugen und Spezifikationen, die von einem Software-System bereitgestellt werden, um es anderen Programmen zu ermöglichen, mit diesem System zu kommunizieren und sich daran anzubinden.

Sie beinhaltet eine Sammlung von Tools, Definitionen und Regeln, die die Verknüpfung von unterschiedlicher Anwendungssoftware und Diensten ermöglichen. APIs können in unterschiedlichen Umgebungen eingesetzt werden: intern für eigene Zwecke, in Zusammenarbeit mit Partnern zur Generierung weiterer Einkünfte oder öffentlich, sodass Dritte Anwendungen kreieren können, die mit der bereitgestellten API interagieren, wodurch Innovation angeregt wird.

Architecture

Softwarearchitektur bezeichnet die grundlegende Struktur einer Softwarelösung und umfasst die Architekturentscheidungen, die getroffen werden, um Anforderungen in Bezug auf Funktionalität, Leistung, Sicherheit und weitere Attribute zu erfüllen.

Sie beinhaltet die Hauptkomponenten, ihre Beziehungen, die Art und Weise ihrer Interaktion und die Prinzipien, die ihre Gestaltung und Evolution über die Zeit bestimmen. Die Softwarearchitektur ist nicht nur das Endergebnis, sondern auch ein Prozess, bei dem wichtige Entscheidungen darüber getroffen werden, wie ein Softwaresystem strukturiert und wie es die gewünschten Qualitätsmerkmale erfüllt. Diese beziehen sich auf nicht-funktionale Anforderungen wie Skalierbarkeit, Zuverlässigkeit, Wartbarkeit, Sicherheit und viele andere. Die Architektur spielt eine Schlüsselrolle bei der Bestimmung, wie gut das System diese Attribute erfüllt. Im Laufe der Zeit haben sich bestimmte “bewährte Praktiken” oder wiederkehrende Lösungsmuster herausgebildet, die als Architekturmuster oder -stile bekannt sind. Beispiele sind Schichtenarchitekturen, Microservice-Architekturen und ereignisgesteuerte Architekturen. Die Softwarearchitektur wird oft in Dokumenten oder Modellen festgehalten, um Stakeholdern eine Übersicht über das System zu geben und Entwickler:innenteams bei der Umsetzung zu leiten. Entscheidungen in der Softwarearchitektur werden durch verschiedene Faktoren beeinflusst, einschliesslich Geschäftsanforderungen, Systemanforderungen, technischen Möglichkeiten und Beschränkungen, organisatorischen Faktoren und mehr. Architekturentscheidungen haben oft langfristige Auswirkungen auf den Lebenszyklus eines Systems, einschliesslich dessen Entwicklung, Wartung, Performance und Evolution. Zusammengefasst bildet die Softwarearchitektur das Rückgrat eines Softwaresystems und bestimmt dessen Struktur, Verhalten und Qualitätsattribute. Sie ist sowohl ein Prozess der Entscheidungsfindung als auch das Ergebnis dieser Entscheidungen in Form einer beschreibenden Struktur und einer Richtlinie für die Implementierung.

ASP.NET Core

ASP.NET Core ist ein modernes, Open-Source-Framework von Microsoft, das für die Entwicklung von serverseitigen Webanwendungen und APIs konzipiert ist.

Es stellt eine Neugestaltung und Weiterentwicklung von ASP.NET dar und wurde von Grund auf so entwickelt, dass es plattformübergreifend auf Windows, Linux und macOS funktioniert. Dank seiner modularen Architektur können Entwickler:innen nur die benötigten Teile des Frameworks in ihre Anwendungen integrieren, wodurch schlankere und effizientere Anwendungen entstehen. ASP.NET Core bietet integrierte Unterstützung für Dependency Injection, eine asynchrone Programmierung und eine Vielzahl von Sicherheitsfunktionen. Es ist eng mit dem Entity Framework Core integriert, einem ORM-Tool (Object-Relational Mapping) von Microsoft, das den Datenbankzugriff erleichtert. Ein weiterer Vorteil von ASP.NET Core ist seine nahtlose Integration in die .NET Core-Plattform, was Entwickler:innen eine kohärente und leistungsstarke Umgebung für eine Vielzahl von Anwendungstypen bietet.

Authentifizierung

Authentifizierung bezeichnet den Prozess der Überprüfung der Identität von Benutzer:innen, Systemen oder Anwendungen, um sicherzustellen, dass nur legitime Akteure Zugang zu bestimmten Ressourcen oder Informationen erhalten.

Oftmals wird die Authentifizierung durch die Überprüfung von Anmeldedaten, wie Benutzername und Passwort, durchgeführt. Wenn die eingegebenen Daten mit den gespeicherten Daten übereinstimmen, wird die Benutzer:in authentifiziert. Mehrfaktor-Authentifizierung (MFA) ist ein Ansatz, bei dem mehr als ein Beweismittel zur Bestätigung der Identität verwendet wird. Beispiele sind etwas, das die Benutzer:in weiss (Passwort), etwas, das sie besitzt (ein Token oder Smartphone) und etwas, das sie ist (ein Fingerabdruck oder andere biometrische Daten). Während die Authentifizierung die Frage klärt, “Bist du es wirklich?”, adressiert die Autorisierung die Frage “Darfst du das tun?”. Die Authentifizierung tritt in der Regel vor der Autorisierung auf.

Autorisierung

Autorisierung bezeichnet den Prozess, durch den festgestellt wird, welche Aktionen oder Ressourcen authentifizierten Benutzer:innen oder Systemen erlaubt oder verboten sind. Es handelt sich dabei um das Bestimmen von Zugriffsrechten – das heisst, wer auf welche Ressourcen zugreifen und welche Aktionen ausführen darf.

Während die Authentifizierung den Prozess der Überprüfung der Identität einer Benutzer:in oder eines Systems beschreibt (z. B. durch Eingabe von Benutzername und Passwort), bezieht sich die Autorisierung darauf, was diese Benutzer:in oder dieses System nach der Authentifizierung tun darf. Rollenbasierte Zugriffskontrolle ist gängiger Ansatz zur Autorisierung, bei dem Benutzer:innen Rollen zugewiesen werden und diesen Rollen wiederum bestimmte Berechtigungen zugeordnet werden.

Azure

Azure ist eine Cloud-Computing-Plattform von Microsoft, die eine Vielzahl von Cloud-Diensten bietet, einschliesslich Lösungen für Computing, Analytik, Speicher und Netzwerk.

Microsoft Azure ist eine umfassende Cloud-Lösung, die Unternehmen und Entwickler:innen eine Plattform bietet, um Anwendungen zu erstellen, bereitzustellen und zu verwalten, wobei sie von der Skalierbarkeit, Sicherheit und Zuverlässigkeit der Microsoft-Cloud profitieren.

Azure Active Directory

Azure Active Directory ist ein cloudbasierter Identitätsdienst, der von Microsoft im Rahmen seiner Azure-Plattform angeboten wird.

Es handelt sich um eine moderne Version des traditionellen Active Directory, das lokal in Unternehmensnetzwerken betrieben wird. Azure AD ermöglicht es Organisationen, Benutzeridentitäten und Berechtigungen zentral zu verwalten. Nutzer:innen können sich mit einem einzigen Satz von Anmeldeinformationen bei mehreren Anwendungen anmelden. Es bietet Multi-Faktor-Authentifizierung, ein zusätzlicher Sicherheitsmechanismus, der Benutzer:innen auffordert, zwei oder mehr Verifizierungsmethoden bereitzustellen. Insgesamt bietet Azure AD eine umfassende und sichere Lösung für das Identitäts- und Zugriffsmanagement in der Cloud, die sowohl moderne Cloud-Anwendungen als auch traditionelle lokale Ressourcen unterstützt. Es ist ein wesentliches Tool für Unternehmen, die ihre IT-Infrastruktur modernisieren und die Vorteile der Cloud-Technologie nutzen möchten.

Azure Blob Storage

Azure Blob Storage ist ein Dienst von Microsoft Azure zur Speicherung von unstrukturierten Daten in der Cloud. “Blob” steht für “Binary Large Object” und bezeichnet im Wesentlichen jede Form von Daten, von Text- und Mediendateien bis hin zu Anwendungsbinärdaten.

Im Gegensatz zu relationalen Datenbanken, die strukturierte Daten speichern, ist Blob Storage ideal für unstrukturierte Daten wie Dokumente, Bilder, Videos und Logdateien. Azure Blob Storage kann problemlos Terabytes oder sogar Petabytes von Daten speichern, wodurch es sich für Big Data-Anwendungen eignet. Es gibt verschiedene Blob-Zugriffsebenen wie “Hot” (für häufig zugegriffene Daten), “Cool” (für weniger häufig zugegriffene Daten) und “Archiv” (für langfristig gespeicherte Daten, auf die selten zugegriffen wird). Azure Blob Storage bietet verschiedene Sicherheitsfunktionen, einschliesslich Zugriffssteuerung, Datenverschlüsselung bei der Übertragung und im Ruhezustand sowie Integration mit Azure Active Directory. Azure bietet verschiedene Redundanzoptionen wie Lokal Redundanter Speicher (LRS), Geo Redundanter Speicher (GRS) und mehr, um Datenintegrität und Verfügbarkeit zu gewährleisten. Azure Blob Storage ist eine robuste und flexible Speicherlösung in der Cloud, die sich für eine Vielzahl von Anwendungen eignet, von der einfachen Datenspeicherung bis hin zu komplexen Analyse- und Verarbeitungsaufgaben.

Backend

Das Backend, oft auch als Server-Seite bezeichnet, bezieht sich auf den Teil eines Software-Systems oder einer Webanwendung, der im Hintergrund arbeitet und nicht direkt von Endbenutzer:innen gesehen wird.

Es ist verantwortlich für die Verwaltung und Speicherung von Daten, die Ausführung von Geschäftslogik und die Kommunikation zwischen der Datenbank und dem Frontend (der Benutzeroberfläche). Im Wesentlichen handelt es sich beim Backend um alle Prozesse, die im Hintergrund ablaufen und notwendig sind, um die Funktionalitäten einer Anwendung zu gewährleisten, während das Frontend sich auf das bezieht, was Benutzer:innen direkt sehen und mit dem sie interagieren.

Betriebssystem

Ein Betriebssystem (englisch Operating System, OS) ist eine Software, die als Schnittstelle zwischen den Hardwarekomponenten eines Computers und den Anwendungsprogrammen dient. Es bietet eine Vielzahl von Funktionen und Diensten, die es Anwendungen und Nutzern ermöglichen, die Ressourcen eines Computers effizient und sicher zu nutzen.

Betriebssysteme verwalten die Ausführung von Programmen auf einem Computer, indem sie Prozesse planen, Ressourcen zuweisen und den Wechsel zwischen verschiedenen Prozessen überwachen. Das OS verwaltet den physischen und virtuellen Speicher eines Computers, um sicherzustellen, dass Anwendungen und Prozesse den benötigten Speicherplatz erhalten. Betriebssysteme bieten Strukturen zur Organisation, Speicherung und Abrufung von Daten auf Speichermedien wie Festplatten oder SSDs. Über Gerätetreiber kommuniziert das OS mit externer Hardware wie Druckern, Bildschirmen oder Tastaturen. Es steuert auch die Ein- und Ausgabeoperationen zwischen dem Computer und diesen Geräten. Das OS implementiert Sicherheitsmechanismen, um unbefugten Zugriff zu verhindern und Datenintegrität und -vertraulichkeit zu gewährleisten. Viele Betriebssysteme bieten Benutzeroberflächen, sei es in Form von Befehlszeilenschnittstellen (CLI) oder grafischen Benutzeroberflächen (GUI), um mit dem Nutzer zu interagieren. Betriebssysteme haben oft integrierte Netzwerkstacks, die Kommunikation über verschiedene Netzwerkprotokolle ermöglichen. Einige bekannte Betriebssysteme sind Microsoft Windows, macOS, verschiedene Linux-Distributionen, UNIX, Android und iOS. Jedes dieser Systeme hat seine eigenen Merkmale, Vorzüge und Einsatzgebiete, sei es auf Desktop-Computern, Servern, Mobilgeräten oder in eingebetteten Systemen.

C#

C# (ausgesprochen als “c sharp”) ist eine vielseitige Programmiersprache, die typsicher, objektorientiert und komponentenbasiert ist.

Die Sprache verfügt über integrierte Mechanismen, die eine direkte Unterstützung dieser Prinzipien bieten, was C# zu einer intuitiven Sprache für die Entwicklung und Nutzung von Softwarekomponenten macht. Seit ihrer Einführung wurden stetig neue Funktionen zu C# hinzugefügt, die moderne Softwareentwicklungsansätze und unterschiedliche Anwendungsfälle berücksichtigen. Im Herzen ist C# tief in der objektorientierten Programmierung verwurzelt, bei der es darum geht, Typen und deren Verhaltensweisen zu definieren. Programme, die in C# geschrieben sind, basieren auf der .NET-Plattform.

CI/CD

Continuous Integration/Continuous Deployment (CI/CD) ist ein moderner Ansatz im Software Engineering, der darauf abzielt, Softwareentwicklungsprozesse durch ständige Integration und automatisierte Bereitstellung zu optimieren.

Bei jeder Code-Änderung, die in ein Repository eingefügt wird, wird ein automatisierter Build- und Testprozess ausgelöst. Entwickler:innen erhalten rasch Feedback über den Zustand ihres Codes, was die Identifizierung und Behebung von Fehlern beschleunigt. Der Code wird regelmässig in das Hauptrepository integriert, um Integrationsprobleme frühzeitig zu erkennen und zu beheben. Nachdem der Code erfolgreich integriert und getestet wurde, wird er automatisch in eine Produktionsumgebung oder an einen vordefinierten Punkt im Bereitstellungsprozess übertragen. Im Idealfall sind beim Continuous Deployment keine manuellen Schritte erforderlich, um eine Anwendung zu veröffentlichen. Durch den automatisierten Prozess können neue Funktionen, Patches oder Aktualisierungen schneller und häufiger an die Endbenutzer:innen geliefert werden. Ständige Integration und Tests führen zu einem qualitativ hochwertigeren Code. Features und Fixes können schneller und sicherer in die Produktion gebracht werden, und es reduziert manuelle Prozesse und ermöglicht es Teams, sich auf das Software Engineering zu konzentrieren. Zusammengefasst fördert CI/CD eine kultur der ständigen Verbesserung im Softwareentwicklungsprozess, indem Codeänderungen regelmässig integriert, getestet und in die Produktion überführt werden, wodurch das Risiko von Fehlern minimiert und die Bereitstellungszeit verkürzt wird.

Container

Ein Container ist eine Technologie zur Softwareverpackung, die es ermöglicht, eine Anwendung samt all ihren Abhängigkeiten, Bibliotheken und anderen notwendigen Bestandteilen in einem Paket zu kapseln.

Diese Verpackung ermöglicht es, dass die Anwendung konsistent in verschiedenen Umgebungen läuft. Ein Container isoliert die Software von ihrer Umgebung, was bedeutet, dass Unterschiede in Bezug auf Systeme und Infrastruktur die Funktionalität oder das Verhalten der Software nicht beeinflussen. Im Gegensatz zu virtuellen Maschinen (VMs), die ein vollständiges Betriebssystem erfordern, teilen sich Container das Betriebssystem des Hosts, sind aber in der Lage, ihre eigenen Dateisysteme, Bibliotheken und Einstellungen zu haben. Dies macht sie erheblich effizienter, leichter und schneller als VMs. Da ein Container alles enthält, was eine Anwendung zum Laufen braucht, kann er leicht von einer Entwicklungsumgebung zu Tests, Produktion oder sogar von einem Cloud-Anbieter zum anderen verschoben werden. Sie sind unabhängig von der Umgebung – ob es sich um einen Laptop, ein Testsystem in der Cloud oder einen Produktionsserver handelt – wird die Anwendung immer auf dieselbe Weise laufen, wenn sie in einem Container verpackt ist. Container können schnell gestartet oder gestoppt werden, was sie ideal für Microservicestrategien und Cloud-native Anwendungen macht. Tools wie Kubernetes ermöglichen die Orchestrierung von Containern, um sie in grossem Massstab zu verwalten und zu skalieren.

Deployment

Deployment ist der Prozess, bei dem eine Software so vorbereitet und veröffentlicht wird, dass sie von Endbenutzer:innen oder Systemen in einer spezifischen Umgebung genutzt werden kann.

Deployment umfasst nicht nur das reine Hochladen oder Installieren der Software, sondern oft auch Konfigurationsmanagement, Datenmigration, Umgebungssetup und andere vor- oder nachbereitende Aktivitäten. Mit modernen Continuous Integration/Continuous Deployment (CI/CD)-Tools und -Praktiken kann der Deployment-Prozess weitgehend automatisiert werden. Dies ermöglicht schnelle, konsistente und fehlerfreie Deployments. Bei der Bereitstellung von Software wird oft eine Version oder ein Release-Tag verwendet, um spezifische Iterationen oder Zustände einer Anwendung zu identifizieren. Dies erleichtert das Rollback zu einer früheren Version, falls Probleme auftreten. Eine Software kann in verschiedenen Umgebungen deployt werden, z.B. in Entwicklung, Test (QA), Staging und Produktion. Jede dieser Umgebungen kann unterschiedliche Konfigurationen oder Datenpunkte haben.

Docker

Mit Docker kann Software als sogennante Container verpackt werden. Ein solcher Container enthält alle notwendigen Abhängigkeiten, um die Software auszuführen.

Mit Docker kann Software als sogennante Container verpackt werden. Ein solcher Container enthält alle notwendigen Abhängigkeiten, um die Software auszuführen.

Domain Driven Design

Domain-Driven Design (DDD) ist eine Methode zur Softwareentwicklung, die sich auf das Modellieren von Software basierend auf der realen Geschäftswelt und ihren Domain-Konzepten konzentriert.

Dabei wird in einem Workshop-Format unter anderem eine sogenannte Ubiquitäre Sprache entwickelt: Dies ist eine gemeinsame Sprache zwischen Entwickler:innen und Fachexpert:innen, die in Code, Design und Diskussionen verwendet wird, um Missverständnisse und Lücken in der Anforderungsdefinition zu vermeiden. Domain-Driven Design legt Wert darauf, enge Zusammenarbeit zwischen technischen Teams und Geschäftsexperten zu fördern. Durch den Fokus auf die Kern-Domäne und ihre Komplexität sollen Modelle erstellt werden, die den tatsächlichen Geschäftsanforderungen näher kommen und so effizientere und relevantere Softwarelösungen bieten.

E2E-Tests

E2E-Tests (End-to-End-Tests) fokussieren sich auf das Testen von Benutzeroberflächen und der Interaktionen, die Benutzer:innen mit einer Anwendung oder Website haben könnten. Diese Tests prüfen, ob das Frontend der Anwendung, in Verbindung mit Backend-Services, wie erwartet funktioniert, wenn es durch echte Benutzerszenarien gesteuert wird.

E2E-Tests simulieren tatsächliche Benutzeraktionen, wie das Klicken auf Schaltflächen, das Ausfüllen von Formularen, das Navigieren durch Seiten und andere typische Aktivitäten, die Endbenutzer:innen ausführen könnten. Um diese Interaktionen zu simulieren, werden spezielle Testwerkzeuge verwendet. Beispiele hierfür sind Selenium, Cypress, Protractor und Playwright. Mit diesen Werkzeugen können Tests geschrieben werden, die einen Webbrowser automatisch steuern, um bestimmte Aktionen auf einer Website oder Webanwendung auszuführen.

Event-Sourcing

Event Sourcing ist ein Entwurfsmuster in der Softwarearchitektur, bei dem Änderungen an einem Anwendungsstatus als eine Sequenz von Ereignissen (Events) gespeichert werden, anstatt nur den aktuellen Zustand zu speichern.

Anstatt den aktuellen Zustand eines Systems direkt zu speichern, protokolliert Event Sourcing jede Änderung als ein eigenständiges Ereignis in einem Ereignisprotokoll. Der aktuelle Zustand eines Objekts oder Systems kann rekonstruiert werden, indem die Sequenz von Ereignissen in der Reihenfolge ihres Auftretens angewendet wird. Man kann sich das wie ein Aufzeichnungsband vorstellen. Da alle Änderungen als Ereignisse gespeichert werden, haben Entwickler:innen und Systeme Zugriff auf die gesamte Historie eines Objekts, was die Nachvollziehbarkeit und Überprüfbarkeit von Aktionen verbessert. Bei Systemausfällen kann der Zustand aus den gespeicherten Ereignissen damit wiederhergestellt werden, anstatt sich auf einen möglicherweise beschädigten oder inkonsistenten aktuellen Zustand zu verlassen. In Verbindung mit dem CQRS-Muster (Command Query Responsibility Segregation) ermöglicht Event Sourcing eine klare Trennung zwischen Schreib- und Lesevorgängen, was die Systemkonsistenz erleichtert. Das Anwenden von Änderungen als Ereignisse kann Leistungsvorteile bieten, insbesondere in Systemen, in denen Schreibvorgänge die Lesevorgänge übertreffen. Während Event Sourcing viele Vorteile bietet, kann es auch zu einer erhöhten Komplexität führen, da Entwickler:innen das Ereignisprotokoll, die Zustandswiederherstellung und die Kompensation von Aktionen berücksichtigen müssen. Event Sourcing wird oft in Szenarien verwendet, in denen die Nachvollziehbarkeit von Zustandsänderungen, die Widerstandsfähigkeit gegenüber Fehlern und die Möglichkeit zur Rekonstruktion von Zuständen aus Ereignissen von hoher Bedeutung sind.

Feature Flags

Feature Flags, auch als Feature Toggles oder Feature Switches bekannt, sind eine Technik in der Softwareentwicklung, die es Entwickler:innen ermöglicht, eine neue Funktion oder ein Verhalten in der Software zu aktivieren oder zu deaktivieren, ohne den Code neu kompilieren oder deployen zu müssen. Dies geschieht zur Laufzeit durch die Verwendung von Konfigurationsflags oder Variablen.

Mit Feature Flags können Entwickler:innen eine Funktion für bestimmte Benutzer:innen, Gruppen oder unter bestimmten Bedingungen aktivieren oder deaktivieren. Dies bietet eine enorme Flexibilität bei der Einführung neuer Features. Durch das Verwenden von Feature Flags können neue Funktionen schrittweise eingeführt werden. Beispielsweise kann eine neue Funktion zunächst nur für 10 % der Benutzer:innen aktiviert und später für alle Benutzer:innen freigegeben werden. Feature Flags ermöglichen es, Funktionen in der Produktionsumgebung zu testen, ohne dass alle Benutzer:innen Zugriff darauf haben. Dies ermöglicht das Sammeln von Feedback und das Erkennen von Problemen unter realen Bedingungen, bevor ein Feature vollständig aktiviert wird. Wenn ein Problem mit einem neuen Feature auftritt, kann es durch Deaktivieren des Flags schnell “ausgeschaltet” werden, ohne dass ein neues Deployment erforderlich ist. Feature Flags können auch für A/B-Tests verwendet werden, bei denen unterschiedlichen Benutzer:innengruppen unterschiedliche Versionen einer Funktion präsentiert werden, um zu bestimmen, welche Version am besten funktioniert. Zusammengefasst sind Feature Flags ein leistungsstarkes Werkzeug für Softwareentwickler:innen, das eine feingranulare Kontrolle über die Funktionsverfügbarkeit bietet. Sie ermöglichen schnelle Iterationen, Tests unter realen Bedingungen und ein hohes Mass an Flexibilität beim Rollout neuer Features. Es ist jedoch wichtig, sie sorgfältig zu verwalten, um die Codebasis sauber und wartbar zu halten.

Frontend

Das Frontend wird oft auch Benutzeroberfläche (englisch: GUI – Graphic User Interface) genannt, weil es sich um die Oberfläche handelt, die Besucher:innen zu sehen bekommen und nutzen können.

Das Frontend, oft auch als Client-Seite bezeichnet, ist der Teil einer Software- oder Webanwendung, den Endbenutzer:innen direkt sehen und mit dem sie interagieren. Es beinhaltet alles, was mit der Benutzererfahrung zu tun hat: Grafiken, Design, Benutzeroberflächen-Elemente und Interaktivität. Entwickler:innen, die im Frontend-Bereich arbeiten, nutzen unter anderem HTML, CSS und JavaScript, um Benutzeroberflächen zu erstellen, die sowohl ansprechend als auch funktional sind. Im Wesentlichen ist das Frontend die Schnittstelle zwischen der Benutzer:in und der Backend-Logik der Anwendung. Es geht darum, Daten in einer für Benutzer:innen verständlichen und nutzbaren Weise darzustellen und gleichzeitig Eingaben oder Aktionen der Benutzer:innen an das Backend weiterzugeben.

GraphQL

GraphQL ist eine Open-Source-Datenabfrage- und Manipulationssprache und ein Laufzeitsystem zum Beantworten von Abfragen mit vorhandenen Daten.

Es stellt eine leistungsstarke und anpassbare Alternative zu herkömmlichen Abfragesprachen wie SQL dar und orientiert sich an Prinzipien von REST und individuell gestaltbaren Webdienst-Architekturen. Es erlaubt den Clients, exakt zu spezifizieren, welche Datenstrukturen sie benötigen. Das vermeidet, anders als bei vielen traditionellen REST-Schnittstellen, die Übertragung übermässig grosser Datenmengen bei jeder Anfrage. Zudem ermöglicht GraphQL das Auslesen, Schreiben und in Echtzeit das Verfolgen von Datenänderungen.

HTTP

HTTP (Hypertext Transfer Protocol) definiert, wie Nachrichten zwischen Webclients (zum Beispiel Webbrowsern) und Webservern formatiert und übertragen werden.

Jede HTTP-Anfrage vom Client zum Server ist unabhängig. Das Protokoll behält keinen Zustand zwischen den Anfragen. Clients senden Anfragen an den Server, der die Anfrage verarbeitet und eine Antwort zurückgibt. Standardmässig wird nach jeder Übertragung die Verbindung getrennt, aber mit HTTP/1.1 wurde die Möglichkeit der “Keep-Alive”-Verbindung eingeführt, die mehrere Anfragen/Antworten über eine einzelne Verbindung ermöglicht. HTTP-Antworten enthalten Status-Codes, die den Status der Anfrage angeben, z.B. “200 OK” für erfolgreiche Anfragen oder “404 Not Found” für nicht gefundene Ressourcen. Es definiert eine Reihe von “Verben”, die angeben, welche Art von Aktion gewünscht wird. Zu den gängigen Methoden gehören GET (Ressource abrufen), POST (Daten an den Server senden), PUT (eine Ressource aktualisieren) und DELETE. Sowohl HTTP-Anfragen als auch -Antworten können Header enthalten, die Metainformationen über die Anfrage, die Antwort oder die Daten selbst liefern. HTTPS ist eine sichere Version von HTTP, die Daten mittels SSL/TLS verschlüsselt. Kurz gesagt, ist HTTP das Hauptprotokoll, das die Kommunikation im Web ermöglicht. Es legt fest, wie Webanwendungen Daten anfordern, senden und empfangen.

IAM

IAM steht für “Identity and Access Management” und ist ein entscheidender Bestandteil der IT-Sicherheitsstrategie einer Organisation, da es hilft, sicherzustellen, dass nur berechtigte Benutzer:innen auf kritische Informationen und Systeme zugreifen können und dass dieser Zugriff angemessen und sicher ist.

ist ein Framework aus Policies und Technologien, das dafür sorgt, dass die richtigen Personen (oder Systeme) zum richtigen Zeitpunkt auf die richtigen Ressourcen in der richtigen Weise zugreifen können. IAM-Systeme werden in Unternehmen und Organisationen eingesetzt, um die digitale Identität von Benutzer:innen zu verwalten und zu überwachen und sicherzustellen, dass der Zugriff auf Ressourcen angemessen kontrolliert wird Bevor jemand oder ein System auf eine Ressource zugreifen kann, muss die Identität überprüft werden. Dies geschieht in der Regel durch Benutzername und Passwort, aber moderne IAM-Systeme können auch mehrstufige Authentifizierungsmethoden wie Smartcards, Fingerabdruckscans oder Gesichtserkennung nutzen. Nach der Authentifizierung wird festgelegt, auf welche Ressourcen eine Benutzer:in zugreifen kann und welche Aktionen (z. B. Lesen, Schreiben, Löschen) ausgeführt werden können. Benutzer:innen werden Rollen zugewiesen, und diesen Rollen werden Berechtigungen für den Zugriff auf Ressourcen zugewiesen. So können Mitarbeitende in einem Unternehmen Zugriff auf allgemeine Ressourcen haben, während “IT-Administrator:innen” erweiterte Zugriffsrechte besitzen. Funktionen wie SSO (Single-Sign-On) ermöglichen es Benutzer:innen, sich einmal anzumelden und dann auf mehrere Anwendungen oder Dienste zuzugreifen, ohne sich für jeden Dienst erneut anmelden zu müssen. IAM-Systeme protokollieren den Zugriff auf Ressourcen und können Berichte für Audit- und Compliance-Zwecke erstellen. Dies bezieht sich auf die Verwaltung von Identitäten während ihres gesamten Lebenszyklus, von der Erstellung eines neuen Benutzerkontos über Änderungen in dessen Laufbahn (z. B. Beförderungen oder Abteilungswechsel) bis hin zur Deaktivierung oder Löschung des Kontos. IAM-Systeme können auch dazu verwendet werden, Sicherheitsrichtlinien durchzusetzen, wie z. B. Passwortkomplexitätsanforderungen, regelmässige Passwortänderungen oder die Sperre von Konten nach einer bestimmten Anzahl fehlgeschlagener Anmeldeversuche.

Integration-Tests

Integrationstests überprüfen die Interaktionen und Integrationen zwischen verschiedenen Softwarekomponenten, um sicherzustellen, dass sie gemeinsam korrekt funktionieren. Sie sind ein kritischer Schritt im Testprozess, der sicherstellt, dass die Software als Ganzes funktioniert, wenn ihre Komponenten zusammengebracht werden.

Während Unit Tests auf einzelne, isolierte Einheiten fokussiert sind, konzentrieren sich Integrationstests auf den Fluss von Daten und die Kontrolle zwischen den Komponenten. Sie können daher komplexer sein und mehrere Komponenten und Datenflüsse umfassen. Integrationstests erfordern oft spezielle Testumgebungen, die den tatsächlichen Produktionsumgebungen ähneln, um realistische Testszenarien sicherzustellen. Im Gegensatz zu Unit Tests, bei denen Daten in der Regel nicht persistent sind, erfordern Integrationstests oft spezielle Testdaten in Datenbanken oder anderen Datenquellen, und es kann notwendig sein, die Daten zwischen den Testläufen zurückzusetzen. Integrationstests spielen eine Schlüsselrolle in CI/CD-Pipelines, wo sie automatisch nach jedem Code-Commit ausgeführt werden können, um sicherzustellen, dass Änderungen im Code nicht zu unbeabsichtigten Nebeneffekten in integrierten Systemteilen führen.

Java

Java ist eine objektorientierte Programmiersprache und ein zentraler Teil der Java-Technologie. Diese Technologie setzt sich aus dem Java-Entwicklungstool (JDK) zum Erstellen und dem Java Runtime Environment (JRE) zum Ausführen von Java-Programmen zusammen. Das JRE beinhaltet die Java Virtual Machine (JVM) und dazugehörige Bibliotheken. Dabei führt das JRE Bytecode aus, welcher nicht nur aus Java, sondern auch aus anderen Sprachen wie Groovy stammt.

In der Java-Technologie wird Java hauptsächlich zum Schreiben von Programmen verwendet, die als Quellcode vorliegen. Dieser menschenlesbare Text ist in dieser Form nicht ausführbar. Deshalb übersetzt der Java-Compiler, ein Bestandteil des JDK, den Quellcode in ausführbaren Java-Bytecode. Dieser Bytecode wird typischerweise von einer virtuellen Maschine ausgeführt, was bedeutet, dass er in der Regel nicht direkt von der Hardware, sondern von Software auf der jeweiligen Plattform interpretiert wird.

Das Ziel dieser Vorgehensweise ist die Plattformunabhängigkeit. Ein Java-Programm sollte auf jeder Hardware laufen, sofern eine kompatible Laufzeitumgebung vorhanden ist.

JavaScript

JavaScript ist eine weitverbreitete, hochstufige Programmiersprache, die hauptsächlich für die Webentwicklung verwendet wird. Ursprünglich wurde sie entwickelt, um Webseiten interaktiver zu gestalten und Benutzererfahrungen zu verbessern.

Heute wird sie sowohl auf der Client-Seite in Webbrowsern als auch auf der Server-Seite, beispielsweise mit Node.js, eingesetzt. JavaScript ermöglicht es Entwicklern, dynamische Inhalte zu erstellen, auf Benutzereingaben zu reagieren und komplexe Webanwendungen zu entwickeln. Es handelt sich um eine ereignisgesteuerte Sprache, die asynchronen Code unterstützt, was für reibungslose Benutzererfahrungen wie Animations- oder AJAX-Abfragen sorgt. Im Laufe der Zeit hat sich das JavaScript-Ökosystem erweitert und bietet heute eine Vielzahl von Bibliotheken, Frameworks und Tools, die Entwickler:innen helfen, effizientere und leistungsstärkere Anwendungen zu erstellen.

Keycloak

Keycloak ist eine Open-Source-Identitäts- und Zugriffsverwaltungsplattform (Identity and Access Management, IAM) entwickelt von Red Hat.

Mit Keycloak können Entwickler:innen Single Sign-On (SSO) mit modernen Authentifizierungsserver-Protokollen und Richtlinien sichern. Keycloak Unternehmen und Entwickler:innen, moderne Authentifizierungs- und Autorisierungsstandards einfach und sicher zu implementieren, ohne dass sie die Komplexität der darunter liegenden Protokolle und Verfahren verstehen müssen.

Microservices

Microservice, oft als Mikroservice-Architektur bezeichnet, ist ein Architekturansatz zur Entwicklung von Softwareanwendungen als Sammlung kleiner, unabhängiger und modulare Dienste.

Jeder dieser Dienste ist für die Ausführung einer bestimmten Funktion zuständig und läuft in einem eigenen Prozess, wobei er über gut definierte Schnittstellen, meistens über HTTP/ REST oder Messaging-Systeme, mit den anderen Diensten kommuniziert. Die Idee hinter Microservices ist die Aufteilung einer grösseren Anwendung in kleinere, leichter handhabbare Teile, die unabhängig voneinander entwickelt, getestet, bereitgestellt und skaliert werden können. Dies fördert Agilität, Skalierbarkeit und die Widerstandsfähigkeit des Systems. Zudem können verschiedene Microservices in unterschiedlichen Technologien und Sprachen entwickelt werden, was den Teams die Freiheit gibt, die besten Tools für ihre spezifischen Anforderungen auszuwählen. Obwohl Microservices viele Vorteile bieten, bringen sie auch Herausforderungen mit sich, insbesondere in den Bereichen Service-Orchestrierung, Datenkonsistenz und Netzwerklatenz. Daher ist es wichtig, die Vor- und Nachteile sorgfältig abzuwägen, bevor man sich für diesen Architekturansatz entscheidet.

OAuth

OAuth ist ein offenes Standardprotokoll für Autorisierung, das oft im Kontext von Webanwendungen, mobilen Anwendungen und Desktopanwendungen verwendet wird. Es ermöglicht Drittanwendungen den begrenzten Zugriff auf Benutzerdaten auf einem Server oder einer Plattform, ohne dass Benutzer:innen ihre Anmeldedaten (z. B. Benutzername und Passwort) direkt an die Drittanwendung weitergeben müssen.

OAuth verwendet Tokens, um den Zugriff zu gewähren. Benutzer:innen authentifizieren sich direkt bei einem Dienst (z. B. Google oder Facebook) und dieser Dienst gibt der Drittanwendung einen Token, der einen bestimmten, oft zeitlich begrenzten Zugriff auf Benutzerdaten gewährt. Dies ermöglicht es den Zugriff auf spezifische Ressourcen zu gewähren, ohne die vollständigen Anmeldedaten preiszugeben. Dadurch müssen Benutzer:innen nicht bei jedem Dienst, dem sie vertrauen wollen, neue Konten anlegen. Es gibt zwei Hauptversionen von OAuth - OAuth 1.0a und OAuth 2.0. OAuth 2.0, die neueste Version, ist flexibler und einfacher zu implementieren, wird aber oft zusammen mit OpenID Connect verwendet, um sowohl Autorisierung als auch Authentifizierung zu ermöglichen.

OIDC

OpenID Connect bietet einen Standardmechanismus für die Authentifizierung von Benutzer:innen in der modernen digitalen Welt, wobei es auf dem bereits etablierten OAuth 2.0-Protokoll aufbaut. Es bietet Webanwendungen und mobilen Anwendungen einen sicheren Weg zur Authentifizierung von Benutzer:innen und zum Zugriff auf ihre grundlegenden Profilinformationen.

Während OAuth 2.0 hauptsächlich ein Protokoll zur Autorisierung und zum Zugriff auf Ressourcen ist, fügt OpenID Connect eine Identitätskomponente hinzu, um zu bestätigen, wer eine Benutzer:in ist (d.h. Authentifizierung). Ein zentrales Konzept von OpenID Connect ist das ID-Token, ein JSON Web Token (JWT), das Informationen über die authentifizierte Benutzer:in enthält. Es kann Informationen wie die eindeutige Benutzer-ID, den Zeitpunkt der letzten Benutzeranmeldung und andere beinhalten. OpenID Connect wurde entwickelt, um leichtgewichtig und skalierbar zu sein, sodass es in einer Vielzahl von Anwendungen verwendet werden kann, von Enterprise-Webanwendungen bis hin zu mobilen Apps.

OpenShift

Kubernetes, oft einfach als “K8s” bezeichnet, ist eine leistungsstarke Plattform zur Container-Orchestrierung, die die Bereitstellung, Skalierung und Verwaltung von Anwendungen automatisiert und vereinfacht, um Robustheit und Effizienz in Cloud-Umgebungen und darüber hinaus zu gewährleisten.

Kubernetes dient hauptsächlich dazu, Container zu organisieren und zu verwalten. Es bestimmt, wo Container-Instanzen ausgeführt werden sollen und nutzt Ressourcen effizient. Mit Kubernetes können Anwendungen je nach Last automatisch skaliert werden, indem neue Container-Instanzen erstellt oder nicht mehr benötigte Instanzen entfernt werden. Kubernetes kann fehlerhafte Container automatisch neu starten, nicht reagierende Container ersetzen und Container nicht bereitstellen, bis sie einsatzbereit sind. Kubernetes kann Container mit IP-Adressen und einem eindeutigen DNS-Namen versehen und die Last zwischen den Containern ausgleichen. Es bietet die Möglichkeit, Speichersysteme wie lokale Speicher, Cloud-Anbieter und mehr mit Containern zu koppeln. Man kann den gewünschten Zustand für seine Container-Instanzen beschreiben, und Kubernetes kann die Ist-Zustände mit den Soll-Zuständen vergleichen und die Container auf die gewünschte Weise aktualisieren. Mit Kubernetes kann man sensitive Daten wie Passwörter und Konfigurationsdetails ohne Rebuild des Container-Images aktualisieren und zurückrollen.

OpenShift

OpenShift ist eine Kubernetes-basierte Container-Plattform von Red Hat, die Entwicklungs- und Betriebsteams dabei unterstützt, Anwendungen in Containern auszuführen und zu verwalten.

OpenShift ermöglicht es Unternehmen, Anwendungen in Containern zu entwickeln, bereitzustellen und zu skalieren. Es erweitert die Kubernetes-Plattform um zusätzliche Entwicklungs- und Betriebsfunktionen.

PostgreSQL

PostgreSQL st ein leistungsfähiges, Open-Source-objektrelationales Datenbanksystem, das sich durch seine Erweiterbarkeit und die strikte Einhaltung von Standards auszeichnet. Es unterstützt sowohl SQL (relationale) als auch JSON (nicht-relationale) Datenabfragen und bietet daher eine vielseitige Plattform für Entwickler:innen.

Mit Features wie der Möglichkeit zur Erstellung von benutzerdefinierten Datentypen, und der Fähigkeit, benutzerdefinierte Funktionen in verschiedenen Programmiersprachen zu schreiben, hebt sich PostgreSQL von anderen relationalen Datenbanksystemen ab. Es ist bekannt für seine Zuverlässigkeit, Datenintegrität und Genauigkeit. Grosse Organisationen, Forschungseinrichtungen und viele moderne Webanwendungen vertrauen auf PostgreSQL als ihre primäre Datenquelle. Ein aktiver Community-Support und regelmässige Updates gewährleisten, dass das System stets auf dem neuesten Stand bleibt und sich an die sich ständig ändernden Anforderungen des Marktes anpasst.

PrimeNG

PrimeNG bietet eine umfangreiche Sammlung von UI-Komponenten, die in Angular-Anwendungen verwendet werden können.

Die Komponenten von PrimeNG können nahtlos in Angular-Anwendungen integriert werden und nutzen die Angular- APIs und Lebenszyklus-Methoden. Dazu gehören Formularelemente, Datenanzeigen, Menüs, Charts und viele andere. PrimeNG bietet Unterstützung für individuelle Themes, sodass Entwickler:innen das Aussehen der User-Interface-Komponenten an ihre Markenanforderungen oder Vorlieben anpassen können. Die meisten Komponenten sind so gestaltet, dass sie sich automatisch an verschiedene Bildschirmgrössen und -auflösungen anpassen, was für die heutige Vielzahl von Geräten essenziell ist.

Refactoring

Refactoring ist ein systematischer Prozess im Software Engineering, bei dem der Code einer Softwareanwendung überarbeitet wird, um seine Struktur zu verbessern, ohne dass sich das externe Verhalten der Anwendung ändert.

Das Hauptziel von Refactoring ist es, den Code lesbarer, wartbarer und effizienter zu gestalten, ohne die Funktionalität zu verändern. Während des Refactorings werden in der Regel keine neuen Funktionen hinzugefügt. Der Fokus liegt darauf, den bestehenden Code zu verbessern und nicht darauf, neue Features zu entwickeln. Zusammengefasst ist Refactoring ein kontinuierlicher Prozess der Code-Verbesserung, mit dem Ziel, die interne Struktur einer Anwendung zu optimieren, ohne deren äusseres Verhalten zu beeinflussen. Es ermöglicht Teams, die Qualität ihres Codes aufrechtzuerhalten und ihre Software leichter erweiterbar und wartbar zu machen.

REST

REST basiert auf Prinzipien, die die Interaktion zwischen Clients und Servern vereinfachen und skaliert. In einem RESTful System kommunizieren Clients mit dem Server, indem sie Standard- HTTP-Methoden verwenden.

Ein zentraler Aspekt von REST ist die Idee von Ressourcen, die durch URLs identifiziert werden. Jede Ressource ist eine Darstellung eines bestimmten Objekts oder Konzepts im System, sei es ein Benutzer, ein Produkt oder eine Bestellung. Anstatt komplizierte RPC-Aufrufe (Remote Procedure Call) zu verwenden, werden Daten in einem RESTful System durch einfache Zugriffe auf diese URLs übertragen.

Ein weiteres wichtiges Merkmal von REST ist der Zustandslosigkeit, was bedeutet, dass jede Anfrage vom Client zum Server alle Informationen enthalten sollte, die notwendig sind, um die Anfrage zu verstehen und zu bearbeiten. Es gibt keinen gespeicherten Session-Zustand auf dem Server zwischen den Anfragen.

REST verwendet standardmässig das Format XML oder JSON zur Datenübertragung, wobei JSON in den letzten Jahren wegen seiner Kompaktheit und leichteren Verarbeitung in Webanwendungen besonders beliebt geworden ist.

Zusammengefasst ist REST ein einfacher, leicht verständlicher Architekturstil, der die Entwicklung von Webanwendungen und -diensten erleichtert und zu einer der dominierenden Methoden zur Erstellung von Web-APIs in der heutigen Softwarelandschaft geworden ist.

Rollout

Rollout bezieht sich auf den Prozess der Einführung eines neuen Produkts, einer Funktion oder eines Updates in einer kontrollierten und oft schrittweisen Weise. In der Softwareentwicklung und insbesondere in Web- und App-Umgebungen wird dieser Ansatz verwendet, um sicherzustellen, dass neue Releases stabil sind und keine negativen Auswirkungen auf die Endbenutzer:innen oder das System insgesamt haben.

Ein Rollout wird oft schrittweise durchgeführt, wobei die neue Software oder das Update zunächst einer kleinen Gruppe von Benutzer:innen zur Verfügung gestellt wird. Wenn in dieser Phase keine kritischen Probleme festgestellt werden, wird die Veröffentlichung schrittweise auf eine grössere Benutzerbasis ausgeweitet. Während des Rollouts werden Feedback und Daten gesammelt, um sicherzustellen, dass die neue Version wie erwartet funktioniert und keine unvorhergesehenen Probleme auftritt. Wenn Probleme festgestellt werden, kann der Rollout gestoppt oder zurückgezogen werden. Durch einen schrittweisen Rollout können Unternehmen das Risiko minimieren, dass ein fehlerhaftes Update an alle Benutzer:innen gleichzeitig verteilt wird.

Typen des Rollouts:

  • Feature Flags/Toggles: Hierbei wird eine neue Funktion im Code implementiert, aber standardmässig deaktiviert. Mit einem “Flag” oder “Toggle” kann die Funktion für bestimmte Benutzer:innen oder Benutzergruppen aktiviert werden.
  • Kanarische Veröffentlichungen: Benannt nach dem Konzept des “Kanarienvogels in der Kohlenmine”. Ein kleiner Prozentsatz der Benutzer:innen erhält das Update zuerst, ähnlich wie ein “Kanarienvogel” früher in Bergwerken verwendet wurde, um gefährliche Gase zu erkennen. Wenn bei dieser ersten Gruppe keine Probleme auftreten, wird das Update breiter verteilt.
  • Blaue/grüne Bereitstellungen: Hierbei werden zwei Umgebungen verwendet (blau für die aktive Version und grün für die neue Version). Wenn die grüne Version getestet ist und als stabil gilt, wird der Verkehr schrittweise von blau auf grün umgeleitet.

Ein Rollout ermöglicht es Unternehmen, neue Features oder Änderungen mit minimalem Risiko einzuführen. Er bietet auch die Möglichkeit, Feedback von Benutzer:innen in Echtzeit zu erhalten und Anpassungen vorzunehmen, bevor das Update vollständig veröffentlicht wird.

Single-Page-Application

Eine Single Page Application (SPA) ist ein Webanwendungs-Konzept, bei dem die gesamte Benutzererfahrung innerhalb einer einzigen Webseite stattfindet.

Eine Single-Page-Webanwendung, auch bekannt als SPA (single-page application), ist eine Webapplikation, die lediglich auf einem einzigen HTML-Dokument basiert, wobei deren Inhalte nach Bedarf dynamisch geladen werden. Dies steht im Kontrast zu traditionellen Webanwendungen, die aus mehreren miteinander verknüpften HTML-Dokumenten bestehen. Dieser Ansatz ermöglicht die Entwicklung von Webanwendungen, die näher an einem Rich-Client- oder Fat-Client-Modell sind. Durch mehr clientseitige Verarbeitung kann die Last auf dem Server verringert werden, wodurch autonome Webclients realisiert werden können, die Funktionen wie Offline-Zugriff bieten.

SpiceDB

SpiceDB ist ein von Google Zanzibar inspiriertes Open Source Datenbanksystem zur Erstellung und Verwaltung von sicherheitskritischen Anwendungsberechtigungen.

Entwickler:innen gestalten ein Modell ihrer Zugriffsregelungen und nutzen dafür entweder offizielle oder von der Community entwickelte Client-Tools. Mithilfe dieser Tools wenden sie das erstellte Modell auf eine Datenbank an, fügen Informationen hinzu und rufen sie ab, um die Zugriffsrechte in ihren Programmen zu verifizieren. Einmal in der Datenbank gesichert, lassen sich die Daten effizient durchsuchen, etwa um herauszufinden, ob eine Benutzer:in auf eine bestimmte Ressource zugreifen kann oder welche Ressourcen für eine Benutzer:in verfügbar sind.

Spring

Das Spring Java Framework oft einfach als “Spring” bezeichnet, ist eines der beliebtesten Frameworks für die Entwicklung von Java-Anwendungen, insbesondere für Unternehmensanwendungen.

Spring verwaltet die Erzeugung und Verknüpfung von Objekten, wodurch der Code entkoppelt und testbar wird. Es vereinfacht die Datenbanktransaktionsverwaltung und reduziert den Boilerplate-Code. Spring bietet mit MVC ein Web-Modul, das die Erstellung von Webanwendungen vereinfacht. Spring Security ist ein leistungsfähiges und anpassbares Framework zur Authentifizierung und Autorisierung. Es bietet ebenso Abstraktionen und Vorlagen für Messaging-Systeme und Integration. Mit Spring Boot und Spring Cloud bietet Spring eine umfassende Lösung zur Erstellung von Microservice-Architekturen. Das Spring Framework ist modular aufgebaut, was bedeutet, dass Entwickler nur die benötigten Module in ihre Anwendung integrieren können. Aufgrund seiner Beliebtheit hat Spring eine grosse Community und ein reichhaltiges Ökosystem an Erweiterungen und Drittanbieter-Bibliotheken.

SQL Server

Ein relationales Datenbankmanagementsystem (RDBMS) von Microsoft, das zur Speicherung, Verarbeitung und Verwaltung von Daten in strukturierten Tabellen verwendet und unterstützt eine Vielzahl von Transaktions- und Analyseanwendungen in Unternehmensumgebungen.

T-SQL ist die Anfragesprache von SQL Server, die zur Erstellung, Abfrage und Aktualisierung von Daten verwendet wird. Sie enthält auch prozedurale Programmierfunktionen. Zu den weiteren Funktionen von SQL Server gehören unter anderem auch:

  • SQL Server Integration Services (SSIS): Ein Werkzeug für die Extraktion, Transformation und das Laden (ETL) von Daten. Es kann zur Datenintegration und -migration zwischen verschiedenen Datenquellen verwendet werden.
  • SQL Server Analysis Services (SSAS): Ein Analyse- und Business Intelligence-Tool, das die Erstellung von multidimensionalen Datenwürfeln und Tabellenmodellen unterstützt.
  • SQL Server Reporting Services (SSRS): Ein Berichterstellungstool, das es Benutzer:innen ermöglicht, detaillierte, formatierte Berichte aus ihren Daten zu erstellen und diese Berichte zu teilen.

Mit Funktionen wie Always On-Failoverclusterinstanzen, Always On-Verfügbarkeitsgruppen und Datenbankspiegelung können Daten sicher und verfügbar gehalten werden. Er verfügt über mehrere Sicherheitsebenen, einschliesslich Netzwerksicherheit, Datenbankverschlüsselung, Authentifizierung und Autorisierung. SQL Server ist eng mit der .NET-Plattform von Microsoft integriert, was erweiterte Programmiermöglichkeiten und eine tiefe Integration in Unternehmensanwendungen ermöglicht. Es ist sowohl für kleine Unternehmen als auch für grosse Unternehmen geeignet und bietet Lösungen für eine Vielzahl von Datenanforderungen.

Terraform

Terraform ist ein Open-Source-Infrastruktur-als-Code (IaC) Tool, das Entwickler:innen ermöglicht, Infrastrukturen für verschiedene Cloud-Dienstanbieter mit einer deklarativen Konfigurationssprache zu definieren und bereitzustellen.

Mit Terraform können Entwickler:innen ihre komplette Infrastruktur in Codeform definieren und versionieren. Dies gewährleistet Konsistenz und Nachvollziehbarkeit bei der Infrastrukturbereitstellung. Terraform verwendet “Provider”, um mit verschiedenen Cloud-Diensten und Plattformen zu interagieren. Es gibt Provider für AWS, Azure, Google Cloud, Kubernetes und viele andere. Dies ermöglicht es Entwickler:innen, Terraform als einheitliches Tool für verschiedene Plattformen und Dienste zu verwenden. Kurz gesagt, ist Terraform ein mächtiges IaC-Tool, das die automatisierte Erstellung, Änderung und Versionierung von Infrastrukturen über verschiedene Cloud- und On-Premise-Plattformen hinweg ermöglicht.

TypeScript

TypeScript ist eine von Microsoft entwickelte, stark typisierte Superset-Sprache von JavaScript, die es Entwickler:innen ermöglicht, sicherere und wartungsfreundlichere Anwendungen zu schreiben.

Im Kern bringt TypeScript statische Typisierung in die dynamische Welt von JavaScript, was zu besseren Code-Validierungen und -Optimierungen führt. Entwickler:innen können mit TypeScript fortschrittliche Typen, Schnittstellen und Dekoratoren definieren. Sobald der TypeScript-Code geschrieben ist, wird er in standardmässiges JavaScript kompiliert, das in Browsern und auf anderen Plattformen ausgeführt werden kann. TypeScript wird oft in grösseren Projekten oder bei der Entwicklung von Frameworks wie Angular verwendet, da es den Code besser strukturiert und Fehler in der Entwicklung frühzeitig erkennt.

Unit-Tests

Unit Tests sind Tests, die auf der kleinsten testbaren Einheit einer Software ausgeführt werden - in der Regel Funktionen oder Methoden. Ihr Ziel ist es, sicherzustellen, dass diese individuellen Einheiten korrekt funktionieren.

Der Kerngedanke von Unit Tests ist es, eine Einheit isoliert von den restlichen Teilen der Software zu testen. Unit Tests werden in der Regel automatisiert durchgeführt, sodass sie regelmässig und konsistent, z.B. nach jeder Code-Änderung, ausgeführt werden können. Sie helfen Entwickler:innen, Fehler früh im Entwicklungsprozess zu erkennen und zu beheben, bevor sie zu grösseren Problemen in späteren Phasen werden. Neben der Fehlererkennung dienen Unit Tests auch als Dokumentation. Sie zeigen, wie eine bestimmte Funktion oder Methode verwendet werden soll und welches Verhalten von ihr erwartet wird. Unit Tests geben Entwickler:innen das Vertrauen, den Code zu refaktorieren oder zu ändern, da sie schnell feststellen können, ob eine Änderung unerwünschte Nebenwirkungen hat.

URI

Eine URI, kurz für “Uniform Resource Identifier”, ist eine Zeichenfolge, die zur Identifizierung einer Ressource verwendet wird. URIs sind ein grundlegender Baustein im Web und dienen dazu, Ressourcen wie Webseiten, Dateien oder Dienste eindeutig zu benennen und zu lokalisieren.

Sie sind ein Überbegriff, unter dem URLs (“Uniform Resource Locators”) und URNs (“Uniform Resource Names”) fallen. Während eine URL sowohl den Ort als auch das Verfahren zur Erreichung einer Ressource angibt, wie beispielsweise “http://www.example.com”, definiert eine URN lediglich den Namen der Ressource in einem gegebenen Namensraum, ohne deren Standort oder Methode zur Erreichung anzugeben. In der Praxis begegnen uns meist URLs, da sie im Web am häufigsten verwendet werden.

Vue.js

Vue.js ist ein progressives JavaScript-Framework zum Erstellen von Benutzeroberflächen und Single-Page-Anwendungen. Es ist für seine einfache Integration in Projekte bekannt und kann sowohl für die Erstellung kompletter Webanwendungen als auch für die Verbesserung von Teilen einer Website verwendet werden.

Es zeichnet sich durch seine reaktive Datenbindung aus, die eine automatische Aktualisierung der Benutzeroberfläche ermöglicht, sobald sich die zugrunde liegenden Daten ändern. Die Architektur von Vue.js basiert auf wiederverwendbaren Komponenten, die jeweils ihren eigenen Zustand, ihre eigene Logik und ihr eigenes Layout haben. Trotz seiner Leistungsfähigkeit kann Vue.js dank seiner progressiven Natur leicht in bestehende Projekte integriert werden. Es hat sich als wertvolles Werkzeug in der Webentwicklung etabliert und wird weltweit in zahlreichen Projekten eingesetzt.