In elf Minuten zum Hochlast-Setup

Standardisiertes Deployment von Shopware in der Cloud

In elf Minuten zum Hochlast-Setup

Standardisiertes Deployment von Shopware in der Cloud

Vorstellung

  • Jan Peschke
  • ~4 Jahre bei SysEleven
  • Presales Engineer
  • Daniel Nögel
  • ~4 Jahre bei Shopware
  • Shopware aus Enterprise-Sicht

Was ist eigentlich »Deployment«?

Ganz naiv

Wie bekomme ich meine Software auf meinen Server?

Deployment

  • »Softwareverteilung«
  • Automatisierung
  • Skalierung
  • Reproduzierbarkeit
  • GIT to Server
  • Server to Server / Synchronisation
  • Vermeidung von Duplizierung

Wie verwalte ich mein Projekt?

  • Standard in Arbeit
  • composer create-project …
  • https://github.com/bcremer/shopware-composer-project
  • out of scope

Wohin wird überhaupt deployt?

»Wird schon gut gehen«

  • Probleme:
    • Single Point of Failure
    • Schneller nur durch "mehr Power"
  • Was wir wollen:
    • Ausfallsicherheit
    • Skalierbarkeit

Fix the database

  • Erreicht:
    • Eigener DB-Server
    • Separate Skalierung möglich
  • Todo:
    • Skalierung des Appservers

Appserver++

  • Erreicht:
    • Horizontale Skalierung der Appserver
    • LB notwendig
  • Neue Baustellen:
    • Deployment?
    • Cronjobs?
    • Bilder?
    • Cache?

Appserver++ - Exkurs: Consul

  • Service discovery: Dynamisch neue Server hinzufügen
  • Health checking: Dynamisch "tote" Server entfernen
  • HashiCorp: Von den Vagrant-Machern

Introduce Adminserver

  • Admin-Server:
    • /backend
    • Cronjobs
    • zentrales Deployment
  • Todo:
    • ✓ Deployment?
    • ✓ Cronjobs?
    • Bilder?
    • Cache?

Introduce Adminserver - Exkurs: Source-Synchronisation

  • Automatische Synchronisation von
    • SourceCode
    • Bildern
    • Rechnungen
    • Plugins
    • Theme-Caches
  • Mögliche Tools
    • Rsync
    • Lsyncd

Dealing with images

  • Bilder:
    • NFS: Geteilt über Netzwerk-Mount
    • CDN: Geteilt über CDN
    • direkte Synchronisation: Dupliziert auf Appserver
  • Todo:
    • ✓ Deployment?
    • ✓ Cronjobs?
    • ✓ Bilder?
    • Cache?

Full page cache

  • Caching:
    • Varnish Cache
    • LB auf die verschiedenen Appserver
    • Kann kein TLS
  • Todo:
    • ✓ Deployment?
    • ✓ Cronjobs?
    • ✓ Bilder?
    • ✓ Cache?

Eine Sache noch…

  • ElasticSearch / Solr?
  • Memcache?
  • ggf. Redis?
  • TLS Offloading?
  • Redundanz LB?

Wer soll das alles konfigurieren?

Infrastruktur als Code:



resources:

  server:
    type: OS::Nova::Server
    properties:
      name: { get_param: name }
      image: { get_param: image }
      flavor: { get_param: flavor }
      user_data_format: RAW
      user_data: { get_resource: cloud-init-config }
      networks:
        - port: { get_resource: server_port }


			

Ergebnis:

  • Verlässlichkeit:
    • Standardisierte, beschriebene Setups
  • Schnelles Ergebnis:
    • jeder Aspekt ist automatisiert
  • Wiederholbarkeit:
    • Best Practices nicht jedes mal neu erfinden :)

Fragen?

Thanks for attending!