2012-05-10 5 views
11

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:

  1. 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.

  1. 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.

  2. 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.

Antwort

0

Bei Jingit (www.jingit.com) haben wir VoltDB getestet. Es ist fantastisch beim Skalieren schwerer Apps und in der AWS-Cloud. Es gibt keine gehostete Option, also besitzen unsere Entwickler es und geben < 1 Stunde pro Woche aus, die unseren VoltDB-Cluster verwalten. Wir verwenden tatsächlich sowohl RDS als auch VoltDB. RDS für unsere traditionelle relationale Arbeitslast und VoltDB für unsere HIGH VOLUME-Transaktionsverarbeitung. Wenn Sie in Java entwickeln, passt VoltDB perfekt, wenn Sie alle Prozeduren in Java schreiben.

1

Nicht sicher, ob Sie schon von NuoDB gehört haben. Aber es ist eine brandneue SQL-Lösung, die die Scale-Out-Fähigkeiten von NoSQL und die SQL & ACID-Compliance-Fähigkeiten von traditionellen OLTP bietet. Sie sollten sich die Lösung anschauen.

0

Ich höre auch, dass NuoDB interessant ist. Eine Sache, die ich höre, ist, dass Rackspace bald auch Cloud DBaaS herausbringen wird. Ich weiß nicht, welchen Geschmack sie verwenden werden, aber Sie können sehen, wie Nuo als skalierbare Lösung mit ihnen arbeitet. Ich denke, es wird in Verbindung mit der Open Stack-Plattform laufen, die, wenn sie geöffnet wird, kosten- und recheneffizienter sein könnte. Nur etwas, was ich selbst gesehen habe.