Shopware auf der Überholspur – Shopware 6 mit Kubernetes

Shopware 6, autoskalierbar und performant mit Kubernetes.

In diesem Artikel stellen wir euch vor, wie Shopware 6 in Kubernetes betrieben werden kann und warum dies sinnvoll ist. Wir zeigen euch Codeauszüge und eine kurze Anleitung mit Tipps und Tricks.

Warum sollte überhaupt Shopware in einer geclusterten Umgebung laufen?

  • Skalierbarkeit: Wenn die Last ansteigt, kann problemlos manuell oder automatisiert erweitert werden.
  • Performance: Jeder Baustein verbessert die Performance des Shops.
  • Ausfallsicherheit: Da die Komponenten mehrfach laufen, wirkt sich der Ausfall einer Komponente nicht auf den stabilen Betrieb der Anwendung aus
  • Selbstheilend: Wenn eine Komponente in Kubernetes abstürzt, kann Sie automatisch neugestartet werden.
  • Effizient: Durch die beliebige Skalierung innerhalb von Sekunden wird keine unnötige Vorhaltung der Hardware benötigt. Das bedeutet, das man in der Regel mit weniger Hardware in Summe auskommt, als im herkömmlichen Betrieb. Dies führt in Summe auch zu einem geringeren "Carbon Footprint" für die eigene Anwendung

Es gibt aber auch Nachteile:

  • Komplexität: Durch die Vielzahl an verschiedenen Komponenten, ist die Umgebung nicht mehr trivial in ihrer Architektur.
  • Expertenwissen: Zur Betreuung der Umgebung ist Wissen vieler unterschiedlicher Komponenten nötig. Gerne helfen wir Ihnen jedoch beratend, bei der Installation unterstützend oder übernehmen sogar den Betrieb für euch.

Kubernetes vs Managed Kubernetes

Kubernetes ist eine der modernsten Technologien im Web Hosting und bedarf besonderen Expertenwissen. Dies beinhaltet einerseits den Betrieb von Kubernetes an sich sowie den Betrieb einer Anwendung innerhalb von Kubernetes. Durch die Orchestrierung der Anwendung in kleine Container ist die Installation, der Betrieb und das notwendige Fachwissen nur noch bedingt mit dem klassischen Hosting vergleichbar. Aus diesem Grund bieten Cloud Provider bereits Kubernetes as a Service als (Managed Kubernetes) an, um das notwendige Fachwissen auszulagern. Wir haben bereits gute Erfahrungen mit diesem Setup gemacht und verwenden für unsere Use Cases das Managed Kubernetes Cluster in der OVH Cloud.

Konfiguration von Managed Kubernetes mit OVHcloud

  1. Managed Kubernetes wird von der OVHcloud innerhalb der OVH public cloud angeboten. Hierzu muss ein Konto im OVH Manager angelegt werden.
    (https://www.ovh.com/manager/public-cloud)

  2. Managed Kubernetes lässt sich aktuell in Frankreich, Deutschland, England, Australien und Russland betreiben.

  3. Die Konfiguration ist soweit selbsterklärend und benötigt neben der Auswahl des Standort, zudem die

    • Kubernetes Version

    • OVH Netzwerk, indem es betrieben werden soll

    • Die Größe der Worker-Nodes, die innerhalb von Kubernetes verwendet werden sollen

    • Die Größe des Node-Pools

    • Das Abrechnungsmodell (Monatlich, Stündlich)

Vorgestellte Umgebung

Wir betrachten in unserem Beispiel eine containerisierte Umgebung, die in Kubernetes läuft.

Die Beispielimplementierung läuft aus den oben genannten Gründen in einem Managed Kubernetes Cluster in der OVH Cloud. Wir nutzen ein Shopware 6.4 als Basis, verwenden Redis, um die Datenbank zu entlasten, haben MySQL/MariaDB im Einsatz für die Datenbank, lagern überall benötigte Dateien in S3 Objekt Speicher aus und gehen auf weitere Optimierungsmöglichkeiten ein, wie ein HTTP Cache mittels Varnish und eine Suchumgebung auf Basis von Elasticsearch.

Folgend gehen wir auf die Konfiguration der einzelnen gerade beschriebenen Komponenten ein: 

Shopware 6.4

Shopware 6.4 bietet sich, mit seiner neuen Architektur, für diesen Aufbau an. Die Einstellungen werden über die API vorgenommen, verteilt genutzte Dateien sind im Regelfall auslagerbar und es lassen sich direkt Read-Only Instanzen der DB konfigurieren. Seit Version 6.4 wird auch PHP 8 unterstützt, was nochmal eine höhere Performance verspricht als das mit PHP 7.4 gegeben war.

Hinweis
Wir empfehlen immer die neuste unterstützte PHP Version für die eigene Shopware Version einzusetzen. Dabei ist darauf zu achten, dass die PHP Version noch aktiv Updates erhält. Ist dies nicht der Fall sollte umgehend ein Shopware Update auf eine Version durchgeführt werden, die mit einer noch unterstützten PHP Version lauffähig ist.

Generell gilt, die PHP Version zu updaten bringt mehr Leistung und minimiert das Risiko von Sicherheitslücken.

Hinweis
In einer Kubernetes Umgebung, oder anderen containerbasierten Umgebungen wo der Besucher nicht direkt mit dem Webserver spricht, muss "TRUSTED PROXIES" gesetzt werden.

Die Beschreibung zu den Trusted Proxies findet sich in der Shopware Dokumentation für Varnish, ist aber z. B. bei Kubernetes auch ohne Varnish nötig.

# config/packages/framework.yamlframework:
   # ...
   trusted_proxies: '%env(TRUSTED_PROXIES)%'
# .env
...
TRUSTED_PROXIES=127.0.0.1,{IP-des-Proxies}
...

Hinweis
Es bietet sich an ein eigenes Container Image zu erstellen, dass auf die eigene Umgebung angepasst ist. Solltet ihr hierfür Unterstützung brauchen, sprecht uns an.

Redis

Redis ist ein Open-Source In-Memory Datenbank mit Schlüssel-Wert Struktur. Dadurch das Redis im Arbeitsspeicher arbeitet sind alle Operation hier sehr schnell. In Shopware 6 können diverse Caches zur Optimierung der Leistung genutzt und konfiguriert werden. Als Speicherort hierfür bietet sich hierfür Redis an, egal ob für den App-, Objekt- oder HTTP-Cache. Je nach Bedarf kann für jeden Cache Redis genutzt werden. Die Umsetzung kann aus der Hersteller Dokumentation genutzt werden. 

Hinweis
Für Konfigurationsbeispiele wird auf die Herstellerdokumentation verwiesen, um immer den aktuellen Stand abzubilden.

Redis als Speicherort für Sessions:

# config/packages/redis.ymlframework:
   session:
       handler_id: "redis://host:port"

Redis als Speicherort für den Warenkorb

# config/packages/cart.yml
shopware:
  cart:
       redis_url: 'redis://localhost:6379/0?persistent=1'

Beispiel Redis Deployment in Kubernetes:

$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm install mein-redis bitnami/redis

Datenbank

Neben dem Webserver ist die Datenbank die zweite fundamentale Komponente in einem Shopware Setup. Hier gilt, analog zu PHP ebenfalls, dass neuere Versionen meist eine Leistungssteigerung bringen und daher immer die Dokumentation geprüft werden sollte welche Versionen der bevorzugten Datenbank genutzt werden kann.

Hinweis
Wir empfehlen immer die Datenbank separat von dem Webserver auf eigenen System(en) zu betreiben. Ebenfalls sollte die Größe der eigenen Shopware Datenbank geprüft werden und der Arbeitsspeicher für die Datenbank Instanz so angepasst werden, dass möglichst die gesamte Datenbank, oder zumindest große Teile in den Arbeitsspeicher geladen werden können.

Wie schon im Text erwähnt, unterstützt Shopware 6 direkt die Konfiguration von MySQL / MariaDB Clustern, sprich die Nutzung von Read-Only Instanzen. Wer sich mit den Möglichkeiten eines MySQL Clusters vertraut machen möchte, kann hierzu die Managed Databases for MySQL in der OVH Cloud testen. Die Integration der Datenbank in Shopware erfolgt in der Regel in der Installationsroutine und wird dann, wie im folgenden Beispiel gezeigt, in der .env Datei gespeichert.

# .env
...
DATABASE_URL="mysql://{DB-USER}:{DB-Password}@{DB-IP}:{DB-Port}/{DB-NAME}" #Muss immer vorhanden seinDATABASE_REPLICA_0_URL="mysql://{DB-USER}:{DB-Password}@{DB-IP}:{DB-Port}/{DB-NAME}" #Für Read-Only Instancen bei einem Datenbank Cluster
...

 

S3 Objekt Speicher

Die Daten, die auf allen Appservern verfügbar sein müssen, lassen sich sehr gut in einen S3 Objekt Speicher auslagern. Vorteil ist, dass diese Daten dann auch beim Seitenaufruf parallel abgerufen werden können, da der Browser hierfür eine weitere Verbindung aufbauen kann. In den Objekt Speicher liegen dann u.a. die Themes, Sitemap oder Assets. 

Hinweis
Die S3 Objekt Speicher müssen für diesen Einsatzzweck ausreichend schnell sein, da sonst gerade schreibintensive Vorgänge wie z. B. Theme kompilieren, extrem lange dauern.

In unserer Umgebung nutzen wir die High Performance Buckets von OVH für diese Aufgabe, da sie von der Leistung her sehr gut nutzbar sind und durch seine Amazon S3 Kompatibilität sofort in Shopware nutzbar sind.

Beispiel Einbindung von OVH High Performance Buckets am Standort SBG in Shopware 6.

# config/packages/shopware.yaml
shopware:
   filesystem:
       private:
           type: "amazon-s3"
           config:
               bucket: "{S3-Bucket-Name}"

               endpoint: "https://s3.sbg.cloud.ovh.net"
               region: 'SBG'
               credentials:
                  key: {S3-Key}
                  secret: {S3-Secret}
               options:
                  visibility: "private"
       public:
           type: "amazon-s3"
           url: 'https://{S3-Bucket-Name}.s3.sbg.perf.cloud.ovh.net'
           config:
               bucket: "{S3-Bucket-Name}"
               region: "sbg"
               endpoint: "https://s3.sbg.perf.cloud.ovh.net"
               root: "/"
               credentials:
                   key: {S3-Key}
                   secret: {S3-Secret}
               options:
                   visibility: "public"
       theme:
           ...
       asset:
           ...
       sitemap:
           ...

externer HTTP Cache - Varnish

Sollte der HTTP Cache von Shopware nicht mehr reichen oder die Last auf den Appserver verringert werden, so bietet Shopware die Möglichkeit einen externen "reverse HTTP Cache". In unserem Fall wird hier Varnish genutzt, der seinen Cache ebenfalls im Arbeitsspeicher hält. Ein vorgeschalteter Varnish reduziert die Last auf die Appserver, da viele Anfragen direkt von dort beantwortet werden können. Dies hilft auch gerade in den Momenten wo (automatisch) skaliert wird.

Hinweis
In einer Kubernetes Umgebung, oder anderen containerbasierten Umgebungen wo der Besucher nicht direkt mit dem Webserver spricht, muss "TRUSTED PROXIES" gesetzt werden.

Die Beschreibung zu den Trusted Proxies findet sich in der Shopware Dokumentation für Varnish, ist aber z. B. bei Kubernetes auch ohne Varnish nötig.

# .env
...
SHOPWARE_HTTP_CACHE_ENABLED=1

TRUSTED_PROXIES=127.0.0.1,{IP-des-Proxies}
...

Für die Einbindung eines Vorgelagerten Varnish muss die folgende Datei erzeugt werden.

# config/packages/storefront.yaml
storefront:
   csrf:
       enabled: true
       # The internal Shopware http cache replaces the csrf token on the fly. This can't be done in Reverse proxy. So we use ajax to get an csrf token
       mode: ajax
   reverse_proxy:
       enabled: true
       ban_method: "BAN"
       # This needs to point to your varnish hosts
       hosts: [ "http://{IP-Varnish-System}" ]
       # Max parallel invalidations at same time for a single worker
       max_parallel_invalidations: 3
       # Redis Storage for the http cache tags
       redis_url: "redis://{IP-Redis-System}"

Varnish Konfiguration von Shopware:

vcl 4.0;

import std;
# You should specify here all your app nodes and use round robin to select a backendbackend default {
   .host = "<app-host>";
   .port = "80";
}

# ACL for purgers IP. (This needs to contain app server ips)
acl purgers {
   "127.0.0.1";
   "localhost";
   "::1";
}

sub vcl_recv {
   # Mitigate httpoxy application vulnerability, see: https://httpoxy.org/
   unset req.http.Proxy;

    # Strip query strings only needed by browser javascript. Customize to used tags.
   if (req.url ~ "(\?|&)(pk_campaign|piwik_campaign|pk_kwd|piwik_kwd|pk_keyword|pixelId|kwid|kw|adid|chl|dv|nk|pa|camid|adgid|cx|ie|cof|siteurl|utm_[a-z]+|_ga|gclid)=") {
       # see rfc3986#section-2.3 "Unreserved Characters" for regex
       set req.url = regsuball(req.url,

"pk_campaign|piwik_campaign|pk_kwd|piwik_kwd|pk_keyword|pixelId|kwid|kw|adid|chl|dv|nk|pa|camid|adgid|cx|ie|cof|siteurl|utm_[a-z]+|_ga|gclid)=[A-Za-z0-9\-\_\.\~]+&?", "");
   }
   set req.url = regsub(req.url, "(\?|\?&|&)$", "");

    # Normalize query arguments
   set req.url = std.querysort(req.url);

    # Make sure that the client ip is forward to the client.
   if (req.http.x-forwarded-for) {
       set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
   } else {
       set req.http.X-Forwarded-For = client.ip;
   }

    # Handle BAN
   if (req.method == "BAN") {
       if (!client.ip ~ purgers) {
           return (synth(405, "Method not allowed"));
       }

        ban("req.url ~ "+req.url);
       return (synth(200, "BAN URLs containing (" + req.url + ") done."));
   }

    # Normalize Accept-Encoding header
   # straight from the manual: https://www.varnish-cache.org/docs/3.0/tutorial/vary.html
   if (req.http.Accept-Encoding) {
       if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {
           # No point in compressing these
           unset req.http.Accept-Encoding;
       } elsif (req.http.Accept-Encoding ~ "gzip")
{           set req.http.Accept-Encoding = "gzip";
       } elsif (req.http.Accept-Encoding ~ "deflate"){
           set req.http.Accept-Encoding = "deflate";
       } else {
           # unkown algorithm
           unset req.http.Accept-Encoding;
       }
   }
    if (req.method != "GET" &&
       req.method != "HEAD" &&
       req.method != "PUT" &&
       req.method != "POST" &&
       req.method != "TRACE" &&
       req.method != "OPTIONS" &&
       req.method != "PATCH" &&
       req.method != "DELETE") {
       /* Non-RFC2616 or CONNECT which is weird. */
       return (pipe);
   }

    # We only deal with GET and HEAD by default
   if (req.method != "GET" && req.method != "HEAD") {
       return (pass);
   }

    # Don't cache Authenticate & Authorization
   if (req.http.Authenticate || req.http.Authorization) {       return (pass);
   }

    # Always pass these paths directly to php without caching
   # Note: virtual URLs might bypass this rule (e.g. /en/checkout)
   if (req.url ~ "^/(checkout|account|admin|api)(/.*)?$") {
       return (pass);  
}

    return (hash);
}

sub vcl_hash {
   # Consider Shopware http cache cookies
   if (req.http.cookie ~ "sw-cache-hash=") {
       hash_data("+context=" + regsub(req.http.cookie, "^.*?sw-cache-hash=([^;]*);*.*$", "\1"));
   } elseif (req.http.cookie ~ "sw-currency=") {
       hash_data("+currency=" + regsub(req.http.cookie, "^.*?sw-currency=([^;]*);*.*$", "\1"));
   }
}
sub vcl_hit {
   # Consider client states for response headers
   if (req.http.cookie ~ "sw-states=") {
     set req.http.states = regsub(req.http.cookie, "^.*?sw-states=([^;]*);*.*$", "\1");

      if (req.http.states ~ "logged-in" && obj.http.sw-invalidation-states ~ "logged-in" ) {
       return (pass);
     }

      if (req.http.states ~ "cart-filled" && obj.http.sw-invalidation-states ~ "cart-filled" ) {
       return (pass);
     }
  }
}

sub vcl_backend_response {
   # Fix Vary Header in some cases
   # https://www.varnish-cache.org/trac/wiki/VCLExampleFixupVary
   if (beresp.http.Vary ~ "User-Agent") {
       set beresp.http.Vary = regsub(beresp.http.Vary, ",? *User-Agent *", "");
       set beresp.http.Vary = regsub(beresp.http.Vary, "^, *", "");
       if (beresp.http.Vary == "") {
           unset beresp.http.Vary;
       }
   }

   # Respect the Cache-Control=private header from the backend
   if (
       beresp.http.Pragma       ~ "no-cache" ||
       beresp.http.Cache-Control ~ "no-cache" ||
       beresp.http.Cache-Control ~ "private"
   ) {
       set beresp.ttl = 0s;
       set beresp.http.X-Cacheable = "NO:Cache-Control=private";
       set beresp.uncacheable = true;
       return (deliver);
   }
   # strip the cookie before the image is inserted into cache.
   if (bereq.url ~ "\.(png|gif|jpg|swf|css|js|webp)$") {
       unset beresp.http.set-cookie;
   }

   # Allow items to be stale if needed.
   set beresp.grace = 6h;

   # Save the bereq.url so bans work efficiently
   set beresp.http.x-url = bereq.url;
   set beresp.http.X-Cacheable = "YES";

   # Remove the exact PHP Version from the response for more security
   unset beresp.http.x-powered-by;

    return (deliver);
}

sub vcl_deliver {
   ## we don't want the client to cache
   set resp.http.Cache-Control = "max-age=0, private";

   # remove link header, if session is already started to save client resources
   if (req.http.cookie ~ "session-") {
       unset resp.http.Link;
   }

   # Set a cache header to allow us to inspect the response headers during testing
   if (obj.hits > 0) {
       unset resp.http.set-cookie;
       set resp.http.X-Cache = "HIT";
   } else {
       set resp.http.X-Cache = "MISS";
   }

   # Remove the exact PHP Version from the response for more security (e.g. 404 pages)
   unset resp.http.x-powered-by;

   # invalidation headers are only for internal use
   unset resp.http.sw-invalidation-states;

   set resp.http.X-Cache-Hits = obj.hits;
}

Hinweis
Wenn die Webseite mit Basic Auth geschützt ist, z. B. in der Testphase, muss die authentisierend vor dem Varnish passieren, sonst werden die Daten nicht gecached.

 

Elasticsearch

Eine Elasticsearch kann sinnvoll sein, wenn im Shop sehr viele Kategorien oder Artikel(varianten) genutzt werden. Elasticsearch benötigt eigene Shopware Komponenten. Die Installation und Einrichtung von Elasticsearch ist in der Shopware Dokumentation zu finden. 

Hinweis
Gerade vor dem Einsatz einer Elasticsearch sollte genau geprüft werden, ob dies notwendig ist. Shopware bietet auch eine Enterprise Suche an die ebenfalls auf der Elasticsearch Einbindung basiert.

Einbindung einer Elasticsearch in Shopware 6:

#.env
...
SHOPWARE_ES_HOSTS="elasticsearchhostname:9200"SHOPWARE_ES_ENABLED="1"
SHOPWARE_ES_INDEXING_ENABLED="1"
SHOPWARE_ES_INDEX_PREFIX="sw"
SHOPWARE_ES_THROW_EXCEPTION=1
...

Fazit

Kubernetes bietet unschlagbare Vorteile. Wer auf ausfallfreie Deployments, rasante Skalierung und Ausfallsicherheit nicht verzichten will, sollte über eine Transition in Kubernetes nachdenken. Gerne unterstützen wir beratend, schulen sie in Kubernetes oder führen die Transition für euch durch.

Marc Achsnich
Team Leadsynaigy GmbHKontakt

Vertiefe dein Wissen mit uns

Blog 09.02.24
Blog 09.02.24

Ein Public Cloud Cheat Sheet der führenden Cloud Provider

Der Blogbeitrag bietet dir einen umfassenden Überblick über die aktuelle Landschaft der Public Cloud, insbesondere im Kontext von OVHcloud als führendem europäischen Cloud-Computing-Unternehmen. Das "Public Cloud Cheat Sheet" ist ein nützlicher Wegweiser durch die komplexe Welt der Public Cloud, unterteilt in acht Disziplinen. Diese Disziplinen reichen von Speicherdiensten über Datenbanken, Rechnersysteme, Orchestrierung, Netzwerk, Data & Analytics, KI bis hin zum Management.

Blog 26.01.24
Blog 26.01.24

Die bevorstehende Let's Encrypt Aktualisierung

Die Welt des Internets ist ständig im Wandel, und als Online-Shopbetreiber ist es unerlässlich, mit den neuesten Entwicklungen in der Webtechnologie Schritt zu halten. In diesem Kontext rückt die bevorstehende Verlängerung der Let's Encrypt-Zertifikate, die am 30. September 2024 ansteht, in den Fokus. Die letzten Jahre waren geprägt von Anpassungen und Sicherheitsmaßnahmen, und es ist an der Zeit, einen Blick auf die bevorstehende Umstellung zu werfen.

Blog 25.01.24
Blog 25.01.24

D2C: Kundenorientierung und Personalisierung im E-Commerce

In dieser insights!-Folge teilt Saskia Roch, Managing Director vom ECC NEXT, Einblicke mit dir, wie digitale Services, D2C-Strategien und eine starke Kundenorientierung die Spielregeln im E-Commerce verändern. Der Haupttrend? Künstliche Intelligenz! Saskia Roch betrachtet KI als eine goldene Gelegenheit für den Mittelstand, um den Fachkräftemangel zu bewältigen und rasch Fortschritte zu erzielen.

Blog 18.01.24
Blog 18.01.24

Mit Digital Nudging die Conversion Rate im Commerce steigen

Heute zu Gast: Denise Rettig. Denise zeigt auf, dass ein maßgeschneidertes Online-Erlebnis kein Luxus, sondern ein Muss ist. Wir erkunden, wie mit Tools wie Brytes selbst subtilste Verhaltensweisen auf der Webseite sichtbar werden - entscheidend für die Personalisierung des Einkaufserlebnisses und die Steigerung der Conversion. Wenn du wissen willst, was es damit auf sich hat und wie du deine Verkaufszahlen durch digitales Nudging um rund 12 % erhöhen kannst, dann schaue dir hier die Folge in voller Länge an.

Blog 11.12.23
Blog 11.12.23

Digitalisierung beginnt mit veränderter Denkweise

In dieser insights!-Folge gibt Karl-Heinz Land Einblicke in Themen wie die Vorstellung seines Buches “Erde 5.0”, die Angst der Menschen vor Neuem, die Unterschiede zwischen den Deutschen und den Amerikanern in Bezug auf Technologie sowie die positiven Veränderungen durch KI.

Blog 07.12.23
Blog 07.12.23

Shopwares Vision für die digitale Zukunft des E-Commerce

Im Gespräch mit mir erzählt dir Sebastian Hamann, CEO von Shopware, wie KI und innovative Technologien den E-Commerce transformieren können und wie Shopware den Markt für mittelständische Unternehmen mit Lösungen, die wirklich etwas bewegen, aufmischt. Sebastian verrät dir zudem, warum kundenzentrierter Markenaufbau und mutige Entscheidungen das A und O für zukünftigen, digitalen Erfolg sind.

Blog 30.11.23
Blog 30.11.23

HighTouch und HighTech: CoreMedia für optimierte CX

In der neuen insights!-Folge diskutiere ich mit Sören Stamer, CEO von CoreMedia, über Themen, wie Customer Experience, Content-Produktion, persönliche Assistenten sowie die Herausforderungen der Interaktion mit KI. Du erfährst mehr über die wichtige Rolle von "High Touch" und "High Tech" in der Customer Experience und warum der menschliche Touch auch in Zeiten fortschreitender KI-Entwicklungen unersetzlich bleibt.

Blog 17.11.23
Blog 17.11.23

Wie Kölner Stadtanzeiger Medien 80% CTR Boost mit KI erzielt

Heute zu Gast: Robert Zilz, Head of Data vom Kölner Stadtanzeiger Medien. In dieser insights!-Folge gewährt Robert Einblicke wie ein traditionelles Verlagshaus erfolgreich den Wandel zur datengetriebenen Zukunft vollzieht und dabei den Mehrwert von KI im Journalismus realisiert. Dies ist nicht nur ein inspirierendes Beispiel für die Branche, sondern auch ein Zeichen dafür, wie Innovation und Anpassungsfähigkeit den Journalismus vorantreiben können.

Blog 02.11.23
Blog 02.11.23

Intergastro: E-Commerce und Kundenzentrierung für B2B-Erfolg

Stefan Plate, Gründer von "INTERGASTRO", einem führenden Anbieter von Gastronomiebedarf, diskutiert mit Joubin Rahimi über die Entstehung und Entwicklung seines Unternehmens seit dem Jahr 2000. INTERGASTRO hat sich erfolgreich etabliert und beliefert Kunden in ganz Deutschland mit Non-Food-Artikeln für die Gastronomie. Stefan Plate hebt hervor, wie sein Unternehmen auch in unsicheren Zeiten, wie während der Corona-Krise, anpassungsfähig blieb und weiterhin Erfolg verzeichnen konnte.

Blog 10.11.23
Blog 10.11.23

Internen Traffic mit IPv6 Adressen ausschließen

Die Digitalisierung schreitet unaufhörlich voran und mit ihr die Weiterentwicklung von Netzwerktechnologien. IPv6-Adressen gewinnen immer mehr an Bedeutung, da der Adressraum von IPv4 langsam erschöpft ist. Doch wie passt dies in die Welt von Google Analytics 4, das primär für IPv4 konzipiert wurde? Die Verwendung von IPv6 in GA4 birgt sowohl Chancen als auch Herausforderungen. In diesem Blogbeitrag beleuchten wir, wie man IPv6-Adressen in GA4 nutzt, um internen Traffic zu filtern und gehen auf die Hürden ein, die sich durch die Fokussierung von GA4 auf IPv4 ergeben.

Blog 25.10.23
Blog 25.10.23

Die Innovationskraft hinter modernem E-Commerce

In dieser "Insights"-Folge spreche ich mit André Menegazzi von commercetools über die bedeutenden Merkmale von commercetools. Er hebt die Notwendigkeit von Flexibilität und einen innovativen Ansatz bei bestimmten Use Cases hervor, der es Kunden ermöglicht, zukunftssichere und maßgeschneiderte E-Commerce-Lösungen zu entwickeln.

Blog 19.10.23
Blog 19.10.23

Digital Operation Platform für deine E-Commerce-Optimierung

Actindo, die API- und cloudbasierte Digital Operations Platform (DOP), ist die einzige vollständig ineinandergreifende Lösung, um wertvolle Kundenbeziehungen aufzubauen und gleichzeitig wichtige Geschäftsprozesse zu digitalisieren. In der neuen Insights!-Folge spreche ich mit Sven März, dem Vice President of Sales von Actindo, über ihre Lösung.

Blog 25.07.24
Blog 25.07.24

ROI-Optimierung im Commerce: KI, B2H & Omnichannel-Strategy

In der neuesten Folge von insights! begrüße ich Frank Miller, den CEO der Inbound-Marketingagentur straight. Was folgt, ist ein tiefgehendes Gespräch über Digitalisierung, Marketingstrategien und die Rolle von Künstlicher Intelligenz im modernen Geschäftsleben.

Blog 26.02.24
Blog 26.02.24

Kann der Hosting-Anbieter OVHcloud überzeugen?

Wenn du dich in der Welt des Cloud-Hostings bewegst, ist die Auswahl des richtigen Servers entscheidend für die Leistung, Zuverlässigkeit und Skalierbarkeit deiner Anwendungen. OVHcloud hat kürzlich eine neue Generation von Servern vorgestellt, doch wie gut sind diese wirklich? Um einen möglichst objektiven Vergleich anzustellen, haben wir uns für Geekbench entschieden. Aber was genau ist Geekbench und warum haben wir es für diesen Test gewählt?

Blog 04.10.23
Blog 04.10.23

Warum sollte eine Multi Cloud mit der OVHcloud ergänzt werde

Dieser Blogbeitrag beschreibt das Konzept der Multi Cloud im Cloud Computing, bei dem Dienste und Ressourcen von verschiedenen Cloud-Anbietern kombiniert werden. Wir erläutern dir die Vorteile einer Multi-Cloud-Strategie und stellen verschiedene Cloud-Anbieter wie Amazon Web Services, Microsoft Azure, Google Cloud Platform und OVHcloud vor. Im Anschluss zeigen wir dir ein mögliches Szenario für die Integration von OVH-Leistungen in eine bestehende Multi-Cloud-Umgebung, um deine Datensouveränität zu gewährleisten.

Blog 28.09.23
Blog 28.09.23

Ist eingeschränkte Bekanntheit die Hauptbarriere?

In Zusammenarbeit mit dem ECC Köln haben wir eine Studie zu D2C-Strategien im Heim & Garten-Sektor herausgebracht. Dabei wurden sieben Thesen gründlich analysiert und ausführlich beleuchtet. In diesem Beitrag werfen wir einen Blick auf die vierte These: „Die mangelnde Bekanntheit der Hersteller führt Konsumenten oftmals in den Handel.“ In diesem Beitrag erhältst du konkrete Zahlen und spannende Einblicke in die Studie.

Blog 26.09.23
Blog 26.09.23

D2C ermöglicht Next-Level Customer Experience

Gemeinsam mit dem ECC haben wir ein Thesenpapier zum Thema D2C-Strategien im Heim & Garten-Sektor veröffentlicht. Dort wurden insgesamt sieben Thesen zu D2C-Strategien intensiv untersucht. Diese Folge widmet sich der dritten These, die besagt, dass D2C eine Next-Level Customer Experience ermöglicht, dieses Potenzial von Herstellern allerdings noch nicht optimal ausgeschöpft wird.

Blog 21.09.23
Blog 21.09.23

D2C-Potentiale für mehr Wiederholungskäufer ausschöpfen

In Zusammenarbeit mit dem ECC haben wir eine Studie zur Direkt-zu-Kunden (D2C)-Strategie im Heim & Garten-Sektor durchgeführt. Die Untersuchung konzentrierte sich auf sieben Thesen, die die D2C-Strategie genauer beleuchten. In diesem Beitrag werfen wir einen Blick auf die zweite These „Der Kauf bei Herstellern ist bereits verbreitet, Konsumenten wünschen sich aber grundsätzlich mehr Einkaufsmöglichkeiten“ und ihre Schlüsselerkenntnisse.

Blog 19.09.23
Blog 19.09.23

Präsenz der Hersteller stärken und im Handel wachsen

„Auch wenn der Kauf im Handel (noch) Gewohnheit ist, überzeugen Hersteller mit einem besseren Image.“ Das ist die erste These der D2C-Studie, die wir gemeinsam mit dem IFH aufgesetzt und geprüft haben! Dort haben wir die Erwartungen und das Kaufverhalten von Konsumenten an Hersteller und Händler beleuchtet und einzigartige Ergebnisse erhalten.

Blog 07.09.23
Blog 07.09.23

Schäfer Shop: ROI-Anstieg durch CX und Tech-Transformation

„Auch wenn der Kauf im Handel (noch) Gewohnheit ist, überzeugen Hersteller mit einem besseren Image.“ Das ist die erste These der D2C-Studie, die wir gemeinsam mit dem IFH aufgesetzt und geprüft haben! Dort haben wir die Erwartungen und das Kaufverhalten von Konsumenten an Hersteller und Händler beleuchtet und einzigartige Ergebnisse erhalten.

Jetzt Blog abonnieren und keine News mehr verpassen

✔️kostenlos ✔️jede Woche News ✔️Expertenwissen