Wie unsere App „Baum pro Bestellung“ gehostet wird

Wie einige von euch vielleicht schon wissen, gibt es im Shopware Store eine kostenlose App namens „ Tree per Order “, mit der Shopbetreiber ihren Kunden ermöglichen können, mit jeder Bestellung einen Baum zu pflanzen. Daher geht es in dieser App um Spenden und Aufforstung des weltweiten Baumbestandes. Eine nachhaltige Idee also!

Aber der Schein trügt ein wenig…. Denn obwohl die App kostenlos ist und es hier um wohltätige Zwecke geht, ist der technische Aufbau keineswegs einfach und „billig“ umgesetzt. In diesem Beitrag geht es um eine technische Einführung in unsere hochmoderne „Tree per Order“-Anwendung für Shopware Cloud. Neugierig? Dann legen wir los!

 

Shopware Cloud trifft AWS Cloud

Die erste Frage, die Du dir sich stellen wirst, ist, wie die App überhaupt gehostet wird. Zur Erinnerung: Da die App für Shopware Cloud ist, ist es nicht möglich, die Funktionalitäten – wie das Erstellen des Spendenprodukts oder das Absenden der Bestellungen an unsere Partner (zB TreeMates) – direkt auf dem Server des Shops abzubilden. Die Ausführung von eigenem PHP-Code ist schlichtweg nicht möglich.

Daher müssen die Funktionalitäten auf externe Server ausgelagert werden und die Kommunikation erfolgt dann ausschließlich über sogenannte REST-Apis & Webhooks – also verschlüsselt über das öffentliche Internet. Glücklicherweise kannst Du wählen, wo die App gehostet wird: Dies kann ein normales Shared Hosting wie GoDaddy oder auch ein Managed Server bei Timme Hosting sein.

Wir haben uns jedoch entschieden, alle unsere Cloud-Anwendungen in der AWS Cloud zu hosten. Das gleiche Cloud-Hosting, das Netflix, Amazon oder Shopware selbst nutzen. Mit solch einem modernen Cloud-Hosting können wir praktisch alles umsetzen, was wir wollen! Das geht weit über normales Hosting hinaus: High Performance Computing, Machine Learning oder sogar Quantencomputing.

Zugegeben, wir brauchen für unsere App „Baum pro Bestellung“ keine Quantenmechanik, um Wälder nachhaltig zu retten. Im Folgenden erfährst Du jedoch, dass es einige Technologien und Konzepte gibt, die mit einem normalen Hosting nicht möglich sind, was die App technisch gesehen besonders macht.

 

Isolierte Umgebungen durch AWS Organizations

Die erste Besonderheit ist, dass wir zwar nur eine Serverlandschaft mit der AWS-Cloud für all unsere Apps wie „Tree per Order“ oder sogar „Back in Stock Notification“ haben, diese Apps aber komplett voneinander isoliert sind. Dies wird in AWS über AWS Organizations implementiert.

Alle Apps befinden sich in separaten Konten und es ist nicht möglich, ohne die entsprechenden Berechtigungen von einem Konto auf die Server des anderen Kontos zuzugreifen. Selbst im Katastrophenfall wie Serverabsturz oder Hackerangriff wissen wir Entwickler immer, dass immer nur 1 App betroffen ist. Im Grunde die ultimative Sicherheit, die kein herkömmliches Hosting bieten kann. Perfekt für unsere Shopware Apps, die teilweise mit sensiblen Kundendaten umgehen müssen.

 

Infrastruktur als Code für reproduzierbare Cloud-Apps

Wir verwenden auch eine Technik namens Infrastructure as Code (IaC) mit Hilfe von CloudFormation . Mit IaC ist es möglich, die gesamte technische Umgebung wie Server, Backups oder Datenbanken in wenigen Dateien zu definieren und diese dann mit wenigen Klicks in unser System hochzuladen.

Dies garantiert, dass wir genau die von AWS gebaute Umgebung erhalten, die wir uns vorgestellt haben, um die höchste Zuverlässigkeit im laufenden Betrieb zu erreichen. Auf diese Weise müssen wir uns nicht hastig zum Hoster durchklicken und menschliche Unachtsamkeitsfehler erzeugen, wie es sonst üblich ist. Unsere Umgebung ist zu 100 % reproduzierbar.

CloudFormation-Vorlage für
CloudFormation-Vorlage für „Baum pro Bestellung“

Es schafft auch einen weiteren kleinen Vorteil in Bezug auf die Internationalisierung unserer App. Derzeit befindet sich unsere Serverumgebung in Frankfurt, Deutschland. Aber da wir die App mit IaC definiert haben, können wir problemlos auch in anderen Ländern wie Australien, Japan oder USA den Parallelbetrieb aufnehmen, um bestmögliche Performance und Kundennähe zu bieten.

 

Skalierbares und selbsterhaltendes Hosting mit Elastic Beanstalk

Für das eigentliche Hosting verwenden wir Elastic Beanstalk , das zu sogenannten Platform as a Service Anwendungen (PaaS) gehört. Das Tolle an PaaS ist, dass wir mit ihrer langjährigen Erfahrung einen Teil der Verantwortung beim Hosting an AWS abgeben und wissen, dass unter der Haube alles zu 100% funktioniert.

Wir müssen keine Updates durchführen oder Zertifikate erneuern, da dieser lästige Teil von AWS selbst erledigt wird, ähnlich wie bei Shopware Cloud. Außerdem wissen wir, dass unsere Server immer verfügbar sind, bei höherer Last automatisch hochskalieren oder sich bei einem Serverausfall innerhalb weniger Minuten selbst erhalten können. Cool, nicht wahr?

Außerdem macht Elastic Beanstalk die Aktualisierung von neuem Code fehlertoleranter: Denn wenn wir im Hintergrund eine neue Version der App veröffentlichen, werden zusätzliche Server hochgefahren und nur dort wird die neue Version angewendet. Wenn die Integritätsprüfungen auf den zusätzlichen Servern ergeben, dass die neue Version stabil ist, wird der neue Code erst dann auf alle verbleibenden Server geladen. Sollte jedoch etwas schief gehen, werden die zusätzlichen Server einfach wieder heruntergefahren und niemand hätte gewusst, dass das Update fehlgeschlagen war. So ist der laufende Betrieb weiterhin ohne Unterbrechungen gewährleistet.

 

Leistungsstarke Datenbanken mit kontinuierlichen Backups

Um Daten speichern zu können, haben wir MySQL gegenüber AWS RDS gewählt. Mit RDS können wir auf leistungsstarke Datenbanken zugreifen, die wir je nach Bedarf skalieren können. Wenn wir beispielsweise feststellen, dass unsere Shopware Cloud-Apps immer beliebter werden, ist es für uns kein Problem, die höhere Datenlast zu bewältigen. Einfach auf das nächste RDS-Level upgraden und dann ist alles wieder im grünen Bereich!

Darüber hinaus ist RDS auch sehr hilfreich, wenn es um Backups geht. Backups der Datenbank erfolgen mit der App kontinuierlich alle 5 Minuten! Normalerweise wissen es die meisten Shop-Besitzer und Entwickler, so dass nur einmal am Tag ein Backup erstellt wird. Also 5 Minuten sind wirklich unglaublich. In diesem Fall weist Du immer, dass nur 5 Minuten an Daten verloren gehen.

Kontinuierliche Backups der Datenbank
Kontinuierliche Backups der Datenbank

Sollten unsere Apps vermehrt zum Einsatz kommen, wäre auch eine Hot-Standby-Replika der Datenbank sinnvoll. Sollte die Datenbank jemals abstürzen, wird ein voll funktionsfähiger Klon der ursprünglichen Datenbank bereitgestellt und der Betrieb praktisch ohne Unterbrechung fortgesetzt.

 

Überwachung der Sicherheit mit GuardDuty und CloudTrail

Und als ob es nicht genug wäre, sind wir sogar noch einen Schritt weiter gegangen und haben AWS GuardDuty und CloudTrail eingerichtet . Mit den beiden Diensten verfügen wir über eine intelligente Bedrohungserkennung, die unsere Cloud-Apps vor böswilligen Benutzern und Hackern schützt.

Mit AWS GuardDuty setzen wir künstliche Intelligenz ein, die genau weiß, was ein normaler Laufbetrieb bedeutet und Alarm schlägt, wenn eine unbekannte Person Zugriff auf unsere App erhält oder damit beginnt, Einstellungen zu ändern oder technische Module zu löschen.

Über AWS CloudTrail können wir unter anderem jede Aktivität in unserer Cloud-Landschaft verfolgen, protokollieren und auswerten. Auf diese Weise wissen wir immer genau, welcher Benutzer was getan hat.

 

Abschluss

Erstaunlich, was wir tun, um einen hohen Standard zu gewährleisten, nicht wahr? Und noch etwas ist zu beachten: Wir bieten die App zwar kostenlos an, zahlen dafür aber rund 50 Euro im Monat an AWS-Hosting-Gebühren.

Aber es ist jeden Cent wert! Wir wollten schon immer etwas Gutes für die Umwelt tun und mit der „Tree per Order“ App wollen wir unseren Teil dazu beitragen. Die Shopware Cloud bietet uns die Plattform um viele Menschen zu erreichen.

Wenn Du Shop-Inhaber bist: Helfe uns bei der grünen Initiative und lade dir die App noch heute kostenlos im Shopware Store herunter . Zeige deinen Kunden, dass Verantwortung beim Online-Handel beginnt.