Wir sind ein kleines Startup mit einer write-lastigen SAAS-App und kommen (endlich!) An den Punkt, an dem unsere Anwendung Skalierungsprobleme präsentiert. Wir haben ein kleines Team, deshalb schätzen wir es sehr, Sysadmin auf Heroku und RDS auslagern zu können.NewSQL versus traditionelle Optimierung/sharding
Während Heroku (meistens) ist in Ordnung, wir haben ein paar Probleme mit RDS:
- Skalierung. Dies ist die größte Sorge. Wir führen derzeit eine XL RDS-Instanz aus. Wir werden mit einfachen Optimierungen noch eine Weile auskommen können, aber wenn wir keine wesentlichen strukturellen Änderungen an unserer App vornehmen, werden wir irgendwann einen Engpass haben.
Auch die Ausfallzeit für die Änderung der Instanzgröße saugt.
Verfügbarkeit. Wir betreiben eine Multi-AZ-Instanz, also sollten wir einen einzigen AZ-Ausfall überleben. Aber RDS basiert auf EBS, was mich angesichts der Geschichte und des Designs von EBS ziemlich beunruhigt.
Preis. Unsere RDS Rechnung ist 4x, was wir Heroku bezahlen. Es macht mir nichts aus, Amazon zu bezahlen, um mich davon abzuhalten, einen Systemadministrator einzustellen, aber ich würde gerne etwas weniger kostspieliges finden.
Aus meiner Sicht haben wir zwei Möglichkeiten voran: den traditionellen Ansatz (sharding, einen nächtlichen Job Lauf Teile unserer Datenbank zu bewegen, um nur zu schreib, etc.); oder eine NewSQL-Lösung (Xeround, VoltDB, NimbusDB usw.).
Traditionelle Profis: Es wurde schon viele Male zuvor gemacht und es gibt ziemlich normale Wege, es zu tun.
Traditionelle Nachteile: Es wird eine Menge Arbeit und erhebliche Komplexität in die App einführen. Es wird auch nicht die sekundären Probleme mit RDS (Verfügbarkeit und Preis) lösen.
NewSQL-Pros: Diese Lösungen werden unsere Datenbank angeblich horizontal skalieren, ohne den Anwendungscode zu ändern (vorbehaltlich einiger Einschränkungen für die SQL-Funktionalität, wie die Verwendung von pessimistischem Sperren). Dies würde uns eine Menge Arbeit ersparen. Es würde auch die Zuverlässigkeit verbessern (kein einzelner Fehlerpunkt) und die Kosten reduzieren (es muss keine XL-Instanz außerhalb der Geschäftszeiten ausgeführt werden, nur um die Spitzenlast zu nutzen).
NewSQL Nachteile: Diese Lösungen sind relativ jung, und ich konnte keine guten Bewertungen oder Berichte über die Erfahrungen der Menschen mit ihnen in Produktions-Apps finden. Ich habe nur eine als gehostete Lösung (Xeround) gefunden, also müssten wir Ressourcen in sysadmin investieren, wenn wir damit nicht fortfahren.
Ich frage mich, welche Meinungen sind, was meine beste Option wäre.
Xeround ist schrecklich verlockend (gehostet NewSQL), aber ich konnte keine gute Informationsnutzung in der Produktion finden. Die wenigen Tweets, die ich gesehen habe, waren Leute, die sich darüber beschweren, dass es ein bisschen langsam ist. Ich bin ziemlich nervös, wenn ich auf etwas zuginge, das so unerprobt scheint.
Die konservative Seite von mir sagt, bei RDS zu bleiben und einen traditionellen Ansatz zu verwenden. Aber es wird sehr teuer in Bezug auf die Entwicklerzeit sein.
Und dann fragt sich ein Teil von mir, ob es einen anderen Weg gibt, vielleicht eine kampferprobtere gehostete NewSQL-Lösung, von der ich noch nichts gehört habe. Oder vielleicht eine NewSQL-Lösung, die wir selbst hosten müssten, aber die eine wirklich solide Geschichte hat.
Vielen Dank im Voraus für Ihre Gedanken.