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
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 :)