Installation & Betrieb
buzzle setzt auf bewährte, erprobte Technologien – kein exotischer Stack, sondern eine solide Basis, die sich zuverlässig betreiben und skalieren lässt. Diese Seite richtet sich an Teams, die buzzle selbst betreiben oder eine Installation vorbereiten, und beschreibt Architektur, Systemvoraussetzungen und die wichtigsten Konfigurationsabschnitte.
Architektur
Abschnitt betitelt „Architektur“buzzle ist eine .NET-Webanwendung, die mehrere spezialisierte Datenspeicher kombiniert – jeder für die Aufgabe, die er am besten erfüllt:
| Komponente | Technologie | Aufgabe |
|---|---|---|
| Backend / API | .NET 8 (ASP.NET Core) | Geschäftslogik, REST-API, Authentifizierung |
| Frontend | Vue 3 (als SPA gehostet) | Bedienoberfläche, auch als npm-Paket verfügbar |
| Relationale DB | SQL Server | Stammkonfiguration, Migrationen, Strukturen |
| Dokumentdatenbank | MongoDB | Business-Object-Werte und -Inhalte |
| Suche | Elasticsearch | Volltext, Filter, Suchindex-Profile |
| Cache (optional) | Redis | verteilter Cache (sonst In-Memory) |
| Workflows | Elsa | Jobs und Automatisierung |
| Echtzeit | SignalR | Benachrichtigungen und Job-Fortschritt |
Datenbank-Schemaänderungen werden über Migrationen automatisch beim Start angewendet – ein Deployment aktualisiert das Schema selbsttätig. Die API ist über Swagger / OpenAPI dokumentiert und direkt erkundbar.
Systemvoraussetzungen
Abschnitt betitelt „Systemvoraussetzungen“- .NET 8 Runtime (Hosting des Backends)
- SQL Server (z. B. SQL Express für Test/Demo)
- MongoDB
- Elasticsearch
- Redis – optional, für verteiltes Caching im Mehrserver-Betrieb
- Speicherorte für Dateien und das CDN (Dateisystempfade oder angebundener Storage)
Konfiguration (appsettings)
Abschnitt betitelt „Konfiguration (appsettings)“Die Anwendung wird über appsettings.json (bzw. Umgebungsvariablen) konfiguriert. Die
wichtigsten Abschnitte:
Verbindungen
Abschnitt betitelt „Verbindungen“{ "ConnectionStrings": { "Pim_Database": "Server=…;Database=Buzzle.Pim;Trusted_Connection=True;…", "Pim_MongoDB": "mongodb://<user>:<password>@<host>:27017/", "Redis": "" }}Redis leer lassen, um den In-Memory-Cache zu verwenden; ein gesetzter Wert aktiviert
den verteilten Redis-Cache.
Authentifizierung (JWT)
Abschnitt betitelt „Authentifizierung (JWT)“{ "JWT": { "ValidAudience": "https://pim.example.com", "ValidIssuer": "https://pim.example.com", "Secret": "<langes-zufälliges-geheimnis>", "TokenValidityInMinutes": 180, "RefreshTokenValidityInDays": 7 }}TokenValidityInMinutes steuert die Lebensdauer des Access-Tokens,
RefreshTokenValidityInDays die des Refresh-Tokens. Das Secret gehört in einen
sicheren Secret-Store und nie ins Repository.
Suche (Elasticsearch)
Abschnitt betitelt „Suche (Elasticsearch)“{ "Search": { "ElasticBaseUrl": "http://localhost:9200", "ElasticUsername": "elastic", "ElasticPassword": "<passwort>", "MaxResultWindow": 200000, "TotalFieldsLimit": 10000, "EnableRequestErrorLogging": true }}MaxResultWindow und TotalFieldsLimit bestimmen, wie gross Ergebnismengen und
Indexschemata werden dürfen – relevant für sehr breite Sortimente.
Globale Suche
Abschnitt betitelt „Globale Suche“{ "GlobalSearchConfiguration": { "Products": { "Name": "products", "QueryFieldBoosts": { "bo_name": 2 } } }}Über QueryFieldBoosts lassen sich einzelne Felder in der globalen Suche höher
gewichten (siehe Suche).
Dateien und CDN
Abschnitt betitelt „Dateien und CDN“{ "FileSystem": { "RootFolderForFiles": "…/Dateien" }, "Cdn": { "StoragePath": "…/CdnStorage", "UrlBasePath": "https://pim.example.com/api/cdn" }}Hintergrund-Jobs (z. B. Währungskurs-Import) werden über Job-Konfigurationen als JSON eingebunden und laufen über die Workflow-Engine. Das Job-Log lässt sich auf Datei oder andere Provider umstellen.
Betriebshinweise
Abschnitt betitelt „Betriebshinweise“- Migrationen laufen automatisch beim Start; ein Deployment aktualisiert das Schema selbsttätig.
- Skalierung: Im Mehrserver-Betrieb sollte Redis als gemeinsamer Cache aktiv sein.
- Logging: konfigurierbar über NLog, inkl. separater Konfiguration für Container-Produktion.
- CORS: in der Entwicklung offen, für Produktion gezielt einschränken.
Dein Nutzen
Abschnitt betitelt „Dein Nutzen“- Bewährter Technologie-Stack statt Speziallösungen
- Automatische Migrationen für reibungslose Updates
- Skalierbar vom Einzelserver bis zum Cluster mit Redis
- Transparent über Swagger, Logging und Job-Übersicht
Das Wichtigste in Kürze
Abschnitt betitelt „Das Wichtigste in Kürze“- .NET-8-Backend mit SQL Server, MongoDB, Elasticsearch und optional Redis
- Konfiguration über
appsettings.json: Verbindungen, JWT, Suche, CDN, Dateien, Jobs - Automatische DB-Migrationen, Swagger/OpenAPI, SignalR-Echtzeit
- Produktiver Betrieb und Container-Setup gemeinsam mit bambit