Wie Sie eine cloudbasierte SaaS Anwendung erstellen

Heutzutage werden immer mehr SaaS Unternehmen gegründet. Und das ist toll.

Die SaaS Branche ist eine extrem schnell wachsende, die eine steigende Zahl von Menschen und Unternehmen anzieht. Diese Organisationen entwickeln zunehmend Produkte für die Cloud. Die Cloud zu skalieren hat einige essentielle Vorteile, aber auch Risiken.

In diesem Artikel zeigen wir Ihnen, wie Sie damit beginnen können, eine cloudbasierte SaaS Architektur zu entwickeln. Außerdem helfen wir Ihnen dabei, mit Problemen bei der Skalierbarkeit umzugehen und zeigen, was dies für Ihre SaaS Anwendung bedeutet.

Interessantes Thema? Teilen Sie diesen Artikel ❤️

Alles in der Cloud

Beim Erstellen einer (globalen) SaaS Anwendung ist die Wahrscheinlichkeit hoch, dass Sie diese in der Cloud entwickeln.

Die Cloud hat eine Menge Vorteile – denken Sie an Skalierbarkeit – im Gegensatz zu lokalen Serverumgebungen.

Daher konzentriert sich dieser Artikel auf Software, die in der Cloud hergestellt und entwickelt wird.

Wo fange ich an?

Welche Programmiersprache, welche Datenbank und welche Software sollten Sie benutzen?

Es gibt viele Fragen, die beantwortet werden müssen. Daher werde ich versuchen, mich auf die wichtigsten Dinge zu konzentrieren.

Fangen wir daher am Anfang an.

Welche Programmiersprache?

Ein Produkt für die Cloud zu erstellen bedeutet, ein Produkt mit einer modernen Programmiersprache zu entwickeln.

Neben persönlichen Fähigkeiten und Fachkenntnissen wird die Wahl der Programmiersprache vor allem von den Möglichkeiten der einzelnen Sprachen beeinflusst. Es gibt eine Vielzahl von (modernen) Programmiersprachen, die es einem schwer machen die richtige zu wählen.

Sehen Sie sich die Bekanntesten an, probieren Sie sie aus und versuchen Sie, soviel wie möglich zu experimentieren.

Das ist genau das, was wir gemacht haben. Und wir entschieden uns für Python.

Python ist eine weit genutzte Programmiersprache, die so gestaltet ist, dass die Lesbarkeit des Codes hervorgehoben wird.

cloud-based-saas-architecture-python

Python kann eine Menge Dinge. Egal welche Art von Webanwendung Sie erstellen wollen, es gibt wahrscheinlich schon ein Framework dafür in Python.

Wir bei Usersnap hatten schon einige Erfahrung mit Python, bevor wir es für unsere Webanwendung verwendeten. Wie erwähnt war die Flexibilität für verschiedene Fälle ein weiterer Grund für uns, Python zu verwenden.

Python ist fantastisch und unsere Entwickler lieben es. Dynamische Typisierung, Metaprogrammierung, Rapid Prototyping. Alles ist möglich mit Python.

Mit Python können Sie nicht falsch liegen.

Die perfekte Datenbank

Eines der ersten Dinge auf Ihrer Liste wird die Installation einer Datenbank sein.

Wir empfehlen, eine dokumentenorientierte Datenbank (DOB) zu nutzen. Diese unterscheiden sich stark vom traditionellen Konzept relationaler Datenbanken.

Warum sollten Sie eine dokumentenbasierte Datenbank wählen?

Datenbanken, die auf Dokumente ausgelegt sind, beziehen die Art ihrer Informationen direkt aus den Daten selbst. Daher können sich die Datenarten stark voneinander unterscheiden.

Das gibt Ihnen mehr Flexibilität, vor allem, wenn Sie mit Veränderungen zu tun haben. Und es reduziert oft die Größe der Datenbank.

Zusammenfassend liefert das DOB Konzept eine reichere Erfahrung mit modernen Programmiertechniken.

MongoDB – die Datenbank für Ihre Webanwendung?

Wir bei Usersnap verwenden MongoDB als unsere Datenbank.

Warum wir MongoDB gewählt haben?

Weil MongoDB eine dokumentenorientierte Datenbank ist, die hohe Leistung, hohe Verfügbarkeit und einfache Skalierbarkeit bietet.

Richtig, neben Leistung (denn wer will schon eine langsame Datenbank?) ist Skalierbarkeit für uns als globales SaaS Unternehmen der wichtigste Faktor.

Viele der SaaS Gründer haben das Ziel, ihr Geschäft zu skalieren. Neben der Skalierung ihres Produktes aus einer Geschäftsperspektive sollten Sie außerdem nicht die technischen Punkte vergessen.

Ihre Technik mit MongoDB zu skalieren ist ziemlich einfach (OK, zumindest einfacher als mit anderen Datenbanken). Mit automatischem Sharding können Sie Daten auf mehrere Maschinen verteilen.

Sharding ist eine Methode, Ihre Informationen verteilt auf mehrere Maschinen zu speichern. Und MongoDB nutzt Sharding zur Unterstützung des Auslieferns großer Datensets.

cloud-based-saas-architecture-MongoDB-Sharding-intro

Lernen Sie mehr über das Konzept Sharding mit MongoDB.

Wie haben wir also MongoDB für unsere SaaS Anwendung eingerichtet?

Wir bei Usersnap nutzen die Amazon Web Services und haben daher EC2-Instanzen in Irland, den USA und Singapur eingerichtet.

Zum Anfang installierten wir eine einzelne MongoDB-Instanz auf unserer AWS-Instanz in Irland.

Mit der wachsenden Anzahl an Kunden aus den USA und Asien bemerkten wir Leistungsprobleme in diesen Teilen der Welt.

Daher installierten wir eine Master/Slave-Architektur, mit dem Master immer noch in Irland, und fügten zwei MongoDB Slave-Instanzen an der US-Westküste und in Singapur hinzu.

Diese zwei Slave-Datenbanken nutzen Lesepräferenz, um Anfragen aus der ganzen Welt zu vermeiden und dadurch die Verzögerung des Netzwerks durch Leseoperationen so niedrig wie möglich zu halten.

Schreibanfragen gehen immer noch direkt an die Master-Datenbank und werden durch MongoDB direkt an die Slaves repliziert.

Das Warteschlangensystem

Reden wir nun über das Warteschlangensystem.

Ein System für Warteschlangen von Nachrichten ist ein asynchrones Kommunikationsprotokoll, das ermöglicht, dass Sender und Empfänger von Nachrichten nicht zur selben Zeit interagieren.

Die auch als Message Queuing (MSMQ) bekannte Technologie erlaubt es, Webanwendungen, zu unterschiedlichen Zeiten zu laufen und mit verschiedenen Integrationen, APIs und anderen Diensten von Drittanbietern asynchron zu kommunizieren.

Eine Nachricht (z.B. eine Anfrage eines Drittanbieters über ein API) wird in die Warteschlange gesetzt. Dort wird sie gelagert, bis sie der Empfänger entnimmt.

cloud-based-saas-architecture-queuing-system-rabbitmq

Eine Nachrichtenwarteschlange hat Limits bezüglich der Größe und Menge an darin übermittelten Daten. Die tolle Sache an einem modernen Warteschlangensystem ist, dass es einfach zu skalieren ist.

RabbitMQ

Ich möchte Ihnen nochmals ein paar Einblicke in das von uns verwendete Warteschlangensystem geben.

RabbitMQ ist ein tolles Open-Source-Warteschlangensystem, das auf allen gängigen Betriebssystemen läuft.

Wir betreiben unsere Webanwendung auf der AWS EC2, auf der RabbitMQ installiert und reibungslos ausgeführt werden kann.

Sehen Sie sich auf jeden Fall diesen Guide zum Betreiben von RabbitMQ auf EC2 an.

Wie wir RabbitMQ installiert haben

Python mit der Open-Source Celery Task Management Library ist die perfekte Ergänzung, um das Maximum aus RabbitMQ herauszuholen.

Es ist unglaublich wichtig, zu diesem Zeitpunkt eine robuste und wohlbewährte Software zu haben, da sie das Rückgrat unserer Infrastruktur bildet.

Tatsächlich benutzen wir einen einzelnen RabbitMQ Server mit mehreren Endpunkten, die die Warteschlange mit Aufgaben füttern (sowohl periodische als auch durch den Nutzer ausgelöste Aufgaben), sowie Endpunkten, die diese Aufgaben ausführen (und zum Beispiel unsere gut aussehenden Screenshots produzieren).

Die optimale Konfiguration würde einen zweiten RabbitMQ Server beinhalten, um Replikation und Ausfallsicherungen anzubieten (indem er sie hinter einem Load Balancer versteckt).

AWS & EC2

Wenn Sie eine skalierbare Webanwendung erstellen, werden Sie wahrscheinlich früher oder später bei Amazon Web Services landen. Mein Verdacht ist früher 😉

AWS erlaubt es Ihnen, Webanwendungen zu hosten und betreiben, sowie riesige hochleistungsfähige Stapelverarbeitungen auszuführen. Mit der Elastic Compute Cloud (EC2) bietet AWS skalierbare virtuelle Server für jedes Unternehmen an.

AWS-Crash-Course-cloud-based-saas-application

Warum EC2?

Amazon EC2 ist ein Muss für unser System. Es ist das Kernstück, das individuell anpassbare Rechenkapazität liefert. Wir mieten im Prinzip virtuelle Server, auf denen unsere Webanwendung läuft.

Das Tolle dabei ist, dass diese EC2 Server auf der ganzen Welt verteilt sind. Je nach Ihren Anforderungen an Größe und daran, welche geographischen Märkte zuerst angepeilt werden sollen, können Sie zwischen verschiedenen Standorten Ihres EC2 wählen.

Wir haben derzeit drei EC2 Server, die in den USA, Irland und in Singapur stehen. Wir werden weitere Standorte hinzufügen (vor allem in den USA und in Europa), da die Nachfrage an unserem Produkt ständig zunimmt.

Mit den installierten EC2 ist es supereinfach, neue Server und Ressourcen hinzuzufügen.

aws-ec2-cloud-saas-architecture

 

Webspeicher S3

Wenn Sie immer mehr Nutzer für Ihr Produkt gewinnen, werden Sie sich schnell nach der Größe Ihres Webspeichers fragen.

Mit dem Amazon S3 Speicher-Service haben wir einen tollen und hochgradig skalierbaren Objektspeicher installiert.

Mit Amazon Simple Storage Service (S3) ist es einfach, jede beliebige Menge an Daten zu nutzen, speichern und abzurufen.

Sie wundern sich vielleicht, ob Amazon S3 nur mit anderen AWS Diensten genutzt werden kann.

Die tolle Antwort ist:

Nein. Es kann auch einzeln oder mit anderen Drittanbieter-Speicherdepots und Gateways genutzt werden. Und natürlich funktioniert es auch sehr gut mit EC2.

aws-s3-cloud-saas-architecture

Neben dem Speichern der Daten Ihrer Webanwendung kann S3 auch sehr gut für Backups, Archive und zur Analytik großer Datenmengen verwendet werden.

Content Delivery Network

Ein Content Delivery Network (CDN) ist im Prinzip ein System von verteilten Servern, das es Ihnen erlaubt, den Nutzern Ihrer Anwendung Inhalte mit hoher Geschwindigkeit und Verfügbarkeit anzubieten.

Nehmen wir an, Sie haben drei EC2s installiert. Einen in den USA, einen in Europa und einen in Singapur. Falls eine Person aus New York Ihre Anwendung besucht, erlaubt Ihnen das CDN, dem Nutzer Inhalt aus dem US-basierten EC2 zu liefern.

Nun wundern Sie sich vielleicht, wie das alles zusammenhängt.

Unten finden Sie eine Übersicht, wie wir bei Usersnap unsere Webanwendung und die Rollen der EC2, S3 und CDN aufgebaut haben.

cloud-saas-application-usersnap

Fazit

Mit Python, MongoDB und, als tolle, dokumentorientierte Datenbank, RabbitMQ, ist unser Basissetup softwaretechnisch erledigt.

Allerdings gibt es noch viel mehr zu bedenken.

In unseren Folgeartikeln werden wir daher das Bedürfnis nach guter Überwachung und Analysesoftware beleuchten. Weiter werden wir darauf eingehen, wie Zahlungsvorgänge problemlos in der Cloud erledigt werden können.

Weiter werden wir Ihnen einige tiefgreifende Anleitungen geben, wie Sie Ihren Stapel an Tools richtig einstellen können, um Ihre Webanwendung auf einer globalen Ebene laufen zu lassen.

Fangen Sie noch heute an, User-Feedback zu sammeln

Dieser Artikel wurde Ihnen präsentiert von Usersnap – Ihrem Tool für Feedback und Tracking von Fehlern. Genutzt von Firmen wie Facebook, Google und AddThis.

Interessantes Thema? Teilen Sie diesen Artikel ❤️