NewSQL a tradycyjna optymalizacja / sharding [zamknięte]

Jesteśmy małym startupem z aplikacją SAAS o dużej masie zapisu i (w końcu!) Dochodzimy do punktu, w którym nasze użycie przedstawia problemy ze skalowaniem. Mamy niewielki zespół, więc naprawdę doceniamy możliwość odciążenia administratora systemu od Heroku i RDS.

Podczas gdy Heroku jest (głównie) w porządku, mamy kilka problemów z RDS:

Skalowanie. To największy problem. Obecnie uruchamiamy instancję XL RDS. Będziemy mogli przez chwilę dłużej korzystać z prostych optymalizacji, ale jeśli nie wprowadzimy poważnych zmian strukturalnych w naszej aplikacji, w pewnym momencie trafimy na wąskie gardło.

Również czas przestoju na zmianę rozmiaru instancji jest do bani.

Dostępność. Uruchamiamy instancję z wieloma AZ, więc powinniśmy przetrwać jedno wyłączenie AZ. Ale RDS jest zbudowany na EBS, co sprawia, że ​​jestem zaniepokojony historią i projektem EBS.

Cena £. Nasz rachunek RDS jest czterokrotnie wyższy niż płacimy Heroku. Nie mam nic przeciwko płaceniu Amazonowi za uratowanie mnie przed zatrudnieniem administratora, ale chciałbym znaleźć coś tańszego.

Moim zdaniem mamy dwie opcje, które posuwają się naprzód: tradycyjne podejście (sharding, uruchamianie nocnej pracy w celu przeniesienia części naszej bazy danych tylko do odczytu itp.); lub rozwiązanie NewSQL (Xeround, VoltDB, NimbusDB itp.).

Tradycyjne plusy: robiono to już wiele razy i są na to dość standardowe sposoby.

Tradycyjne zalety: zajmie dużo pracy i wprowadzi znaczną złożoność do aplikacji. To również nie rozwiąże wtórnych problemów z RDS (dostępność i cena).

Zalety NewSQL: Podobno te rozwiązania skalują poziomo naszą bazę danych bez zmiany kodu aplikacji (z zastrzeżeniem kilku ograniczeń dotyczących funkcjonalności SQL, takich jak nieużywanie pesymistycznego blokowania). Pozwoli nam to zaoszczędzić ogromną ilość pracy. Poprawiłoby to również niezawodność (brak pojedynczego punktu awarii) i zmniejszyło koszty (nie trzeba uruchamiać instancji XL w godzinach poza godzinami pracy, aby zapewnić maksymalne wykorzystanie).

Wady NewSQL: te rozwiązania są stosunkowo młode i nie byłem w stanie znaleźć żadnych dobrych recenzji ani opisów doświadczeń ludzi z nimi w aplikacjach produkcyjnych. Znalazłem tylko jeden dostępny jako rozwiązanie hostowane (Xeround), więc jeśli nie poszliśmy z tym, musielibyśmy zainwestować zasoby w sysadmin.

Zastanawiam się, jakie są opinie co do mojej najlepszej opcji.

Xeround jest strasznie kuszący (hostowany NewSQL), ale nie byłem w stanie znaleźć żadnego dobrego wykorzystania informacji w produkcji. Kilka tweetów, które widziałem, to ludzie narzekający na to, że jest trochę powolny. Jestem dość zdenerwowany, aby przejść do czegoś, co wydaje się tak niesprawdzone.

Konserwatywna strona mnie mówi, aby trzymać się RDS i stosować tradycyjne podejście. Ale będzie to naprawdę kosztowne pod względem czasu programisty.

A potem część mnie zastanawia się, czy jest inny sposób, być może bardziej przetestowane w walce rozwiązanie NewSQL, o którym nie słyszałem. A może rozwiązanie NewSQL musielibyśmy hostować, ale to ma naprawdę solidną historię.

Z góry dziękuję za twoje myśli.

questionAnswers(3)

yourAnswerToTheQuestion