Cloud-Basierte SaaS-Anwendungen Entwickeln

online servicesImmer mehr SaaS-Unternehmen nehmen heute den Betrieb auf, was großartig ist. Es gibt unzählige Anwendungsbereiche wo Cloudsysteme super praktisch sind. Beispiele dafür wären cloudbasierte Buchhaltung, Online Backups und Datenspeicher aber auch virtuelle Server in der Cloud und vieles mehr. Ein Beispiel für solche Dienste: http://www.onlinebuchhaltung.net/

Das SaaS-Geschäft ist eine am schnellsten wachsende Branche, die immer mehr Menschen und Unternehmen anzieht. Diese Unternehmen sind immer mehr Floating-Anwendungen in der Cloud. Die Skalierung in der Cloud hat auch einige wesentliche Vorteile und Risiken.

In diesem Artikel zeigen wir Ihnen, wie Sie mit dem Aufbau einer Cloud-basierten SaaS-Architektur beginnen, sich mit Fragen der Skalierbarkeit befassen und was dies für Ihre SaaS-Anwendung bedeutet.

Für Die Cloud Entwickeln

Beim Aufbau einer globalen SaaS-Anwendung sind die Chancen hoch, dass Sie sie in der Cloud erstellen. Die Cloud hat viele Vorteile – denken Sie an die Skalierbarkeit – im Vergleich zu lokalen Serverumgebungen.

Daher konzentriert sich dieser Beitrag auf Software, die in der Cloud erstellt und entwickelt wird.

Hier erfahren Sie, wie Sie eine Cloud-basierte SaaS-Architektur aufbauen.

  • Wie kann man anfangen?
  • Welche Programmiersprache, welche Datenbank, welche Softwaretools sollten Sie wählen?
  • Also, das Wichtigste zuerst.
  • Welche Programmiersprache?

Es gibt viele Fragen, die es zu beantworten gilt. Deshalb versuche ich, mich auf die wichtigsten Dinge zu konzentrieren. Ein Produkt für die Cloud zu entwickeln bedeutet, ein Produkt mit einer modernen Programmiersprache zu entwickeln.

Neben den persönlichen Fähigkeiten und Fertigkeiten wird die Wahl Ihrer Programmiersprache von den Möglichkeiten der jeweiligen Sprache beeinflusst. Es gibt verschiedene (moderne) Programmiersprachen, die es schwer machen, die richtige auszuwählen.

Werfen Sie einen Blick auf die bekanntesten, spielen Sie mit ihnen herum und versuchen Sie, so viel wie möglich zu experimentieren.
Das haben wir getan. Und am Ende haben wir Python benutzt.

Python ist eine weit verbreitete Programmiersprache, die darauf ausgelegt ist, die Lesbarkeit des Codes zu betonen.
Python kann eine Menge Dinge tun. Welche Web-App Sie auch immer erstellen möchten, es gibt wahrscheinlich ein Framework für sie in Python.

Wir hatten einige Erfahrungen mit Python, bevor wir es für unsere Web-Applikation nutzten. Wie bereits erwähnt, war die Flexibilität für verschiedene Anwendungsfälle ein weiterer Grund für uns, auf Python zu setzen.

Python ist großartig und unsere Entwickler lieben es. Dynamische Typisierung, Meta-Programmierung, Rapid Prototyping. Mit Python ist alles möglich, es ist eine sichere Sache. Hier mehr über die geniale Programmiersprache.

Die Perfekte Datenbank

Also, eines der ersten Dinge auf Ihrer Liste wird die Installation einer Datenbank sein. Wir empfehlen die Verwendung einer dokumentenorientierten Datenbank. Dokumentdatenbanken unterscheiden sich deutlich vom traditionellen Konzept der relationalen Datenbanken.

Warum eine dokumentorientierte Datenbank wählen?

Dokumentdatenbanken erhalten ihre Typinformationen aus den Daten selbst. Somit kann sich jede Dateninstanz von jeder anderen unterscheiden.
Dies ermöglicht mehr Flexibilität, insbesondere bei Änderungen. Und es reduziert oft die Datenbankgröße.

Zusammenfassend lässt sich sagen, dass das DOB-Konzept eine reichere Erfahrung mit modernen Programmiertechniken bietet.

MongoDB – die Datenbank für Ihre Web-Applikation?

Wir haben die Verwendung von MongoDB als unsere bisherige Datenbank eingestellt.

Warum wir uns für MongoDB entscheiden? Denn MongoDB ist eine dokumentenorientierte Datenbank, die hohe Leistung, Hochverfügbarkeit und einfache Skalierbarkeit bietet. Ja. Neben der Performance (wer will eine langsame Datenbank?) ist für uns als globales SaaS-Unternehmen die Skalierbarkeit der wichtigste Faktor.

Viele SaaS-Gründer streben eine Skalierung ihres Unternehmens an. Neben der Skalierung Ihres Produkts aus betriebswirtschaftlicher Sicht sollten Sie die technischen Aspekte nicht vergessen.

Die Skalierung Ihrer Technologie mit MongoDB ist ziemlich einfach (ok, zumindest einfacher im Vergleich zu anderen Datenbanken). Mit dem automatischen Sharding können Sie Daten auf verschiedene Maschinen verteilen.

Sharding ist eine Methode zur Speicherung Ihrer Daten auf mehreren Maschinen. Und MongoDB verwendet Sharding, um die Bereitstellung mit großen Datensätzen zu unterstützen.

Also, wie haben wir MongoDB für unsere SaaS-Anwendung eingerichtet?

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

Als wir mit MongoDB angefangen haben, haben wir eine einzige MongoDB-Instanz auf unserer AWS EC2-Instanz in Irland installiert.

Mit der zunehmenden Anzahl von Kunden in den USA und Asien stellten wir in diesen Regionen der Welt Leistungsprobleme fest.

Deshalb haben wir eine Master/Slave-Architektur mit dem Master noch in Irland installiert und zwei MongoDB-Slave-Instanzen an der US-Westküste und in Singapur hinzugefügt.

Diese beiden Slave-DBs verwenden die Lesevorliebe, um Abfragen auf der ganzen Welt zu vermeiden und die Netzwerkverzögerung bei häufigen Lesevorgängen so gering wie möglich zu halten.

Writes gehen immer noch direkt zur Master-DB und werden von MongoDB automatisch auf die Slaves repliziert.

Warteschlangen-System

Lassen Sie uns jetzt über ein Warteschlangensystem sprechen.

Ein Nachrichtenwarteschlangensystem ist ein asynchrones Kommunikationsprotokoll, das Sender und Empfänger einer Nachricht ermöglicht, die nicht gleichzeitig interagieren.

Die auch als Message Queuing (MSMQ)-Technologie bekannte Technologie ermöglicht es Webanwendungen, zu unterschiedlichen Zeiten zu laufen und asynchron mit verschiedenen Drittanbieter-Integrationen / APIs / und anderen Diensten zu kommunizieren.

Eine Nachricht (z.B. eine Anfrage, die einen Drittanbieterdienst über eine API anfordert) wird in die Warteschlange gestellt. Es wird dort gespeichert, bis der Empfänger es abruft.

Eine Nachrichtenwarteschlange hat Einschränkungen hinsichtlich der Größe und Menge der in der Warteschlange übertragenen Daten. Das Tolle an modernen Warteschlangensystemen ist, dass sie einfach skalierbar sind.

RabbitMQ

Nochmals, ich möchte Ihnen einige Einblicke in das von uns verwendete Warteschlangensystem geben. RabbitMQ ist ein großartiges Open-Source-Warteschlangensystem, das auf allen gängigen Betriebssystemen läuft. Mehr dazu unter www.rabbitmq.com.

Wir betreiben unsere Web-App auf der AWS EC2, wo RabbitMQ installiert und super reibungslos laufen kann.

Wie haben wir RabbitMQ installiert?

Python mit der Open Source Sellerie Task Management Library ist die perfekte Lösung, um das Beste aus RabbitMQ herauszuholen. Es ist enorm wichtig, an dieser Stelle über eine robuste und bewährte Software zu verfügen, da sie das Rückgrat unserer Infrastruktur bildet.

Eigentlich verwenden wir einen einzigen RabbitMQ-Server mit mehreren Endpunkten, die die Warteschlange mit Aufgaben (periodische Aufgaben sowie Aufgaben, die durch Benutzeraktionen ausgelöst werden) und Endpunkten, die diese Aufgaben verarbeiten (z.B. unsere ansprechenden Screenshots), versorgen.

Die optimale Konfiguration würde einen zweiten RabbitMQ-Server beinhalten, der Replikations- und Failover-Mechanismen bietet (indem er sie hinter einem Load Balancer versteckt).

AWS & EC2

Wenn Sie eine skalierbare Web-App erstellen, werden Sie wahrscheinlich früher oder später Amazon Web Services nutzen. Meine Vermutung ist früher.

Mit AWS können Sie Ihre Webanwendungen hosten und ausführen sowie umfangreiche, leistungsstarke Batch-Jobs ausführen. Mit Elastic Compute Cloud (EC2) bietet AWS skalierbare virtuelle Server für jedes Unternehmen.

Warum EC2?

Der Amazon EC2 ist ein Must-Have für und das Herzstück unseres Systems, das eine skalierbare Rechenleistung bietet. Wir haben grundsätzlich virtuelle Server gemietet, auf denen unsere Web-App läuft.

Das Tolle dabei ist, dass diese EC2-Server über die ganze Welt verteilt sind. Abhängig von Ihrem Bedarf an Skalierung und den geografischen Märkten, die Sie zuerst ansprechen müssen, können Sie zwischen verschiedenen Standorten Ihres EC2 wählen.

Derzeit haben wir drei EC2-Server, die sich in den USA, Irland und Singapur befinden. Wir werden weitere Standorte (vor allem in den USA und Europa) hinzufügen, da die Nachfrage nach unseren Produkten weiter steigt. Mit dem installierten EC2 ist es super einfach, immer wieder neue Server und Ressourcen hinzuzufügen.

Webspeicher S3

Wenn Sie mehr und mehr Benutzer für Ihr Produkt an Bord holen, werden Sie sich leicht über Ihren Webspeicher wundern. Mit dem Amazon S3 Storage Service haben wir eine großartige und hochskalierbare Objektspeicherung installiert.

Amazon Simple Storage Service (S3) ist einfach zu bedienen, zu speichern und abzurufen jede Menge von Daten. Sie fragen sich vielleicht, ob Amazon S3 nur mit anderen AWS-Diensten verwendet werden kann? Die große Antwort ist: Nein. Es kann auch einzeln oder mit anderen Speicher-Repositories und Gateways von Drittanbietern verwendet werden. Und natürlich funktioniert es hervorragend zusammen mit EC2.

Neben der Speicherung Ihrer Daten Ihrer Webanwendung mit S3 kann es auch hervorragend für Backups, Archive oder Big Data Analytics geeignet sein.

Content Delivery Network

Ein Content Delivery Network (CDN) ist im Grunde genommen ein System von verteilten Servern, mit dem Sie Ihren App-Benutzern Inhalte mit hoher Leistung und Verfügbarkeit bereitstellen können.

Angenommen, Sie haben 3 EC2s installiert. Einer in den USA, einer in Europa und einer in Singapur. Wenn jemand aus New York Ihre App besucht, können Sie mit dem CDN dem Benutzer über die EC2 in den USA Inhalte zur Verfügung stellen.

Zusammenfassung

Mit Python, MongoDB – als eine großartige dokumentenorientierte Datenbank, RabbitMQ softwaremäßig – ist die Grundeinrichtung abgeschlossen. Es gibt jedoch noch viel mehr zu bedenken. In unseren Follow-up-Posts werden wir uns mit der Notwendigkeit einer geeigneten Überwachungs- und Analysesoftware sowie dem reibungslosen Ablauf von Zahlungsprozessen in der Cloud befassen.

Darüber hinaus zeigen wir Ihnen einige detaillierte Anleitungen, wie Sie Ihren Toolstapel so einrichten, dass Ihre Web-Applikation weltweit läuft.