Jakiej technologii użyć dla skalowalnej aplikacji webowej?

0

(przeszukałem forum i wg mojej oceny ten dział powinien być odpowiedni na moje pytanie - jeśli nie, to prośba o przeniesienie)

Cześć wszystkim,

Mam funkcjonalny prototyp aplikacji internetowej, ale jest to jedynie proof of concept (MVP) z potencjałem rozwoju.

Chciałbym poznać Waszą opinię na temat technologii, jaką powinno się zastosować, aby opracować w pełni funkcjonalny i solidny produkt.

Stworzyłem MVP, korzystając z mojej (oldschoolowej?) wiedzy zdobytej 15 lat temu (+trochę świeżego R&D) i działa, ale nie jest doskonały i nie ma możliwości skalowania.
Aktualnie jest oparty na HTML + JavaScript (front-end), node.js (przesyłanie zdjęć), AppScript (backend i baza danych) oraz trochę PHP (do kontroli dostępu).

Zakładam, że można to poprawić (znacznie) i prawdopodobnie całkowicie przepisać - nawet od zera, korzystając z obecnego projektu i UX flow.
Front-end: dostęp przez przeglądarkę internetową (głównie na smartfonach lub tabletach, smartwatchów w ogóle nie biorę pod uwagę), aby być jak najbardziej uniwersalnym. Mapa miasta z kluczowymi lokalizacjami do wyboru i uzyskania o nich informacji (plus geolokalizacja). Użytkownicy (/goście) mogą się rejestrować, aby tworzyć indywidualne profile z możliwością późniejszej edycji.

Backend: baza danych przechowuje lokalizacje (współrzędne, typy, notatki) i dane użytkowników (login, hasło, preferencje itp.), repozytorium załączników (zdjęć) jest oddzielone. Serwer może wysyłać e-maile (lub SMS-y - przy użyciu zewnętrznego API i bramki sms) w celu weryfikacji użytkowników lub dostarczania różnych powiadomień.
BTW - wciąż myślę o powiadomieniach push, ale nie są one (jeszcze?) idealne z poziomu przeglądarki, więc może to pozostać na dole product backloga ;)
Skalowalność: na początku kilkuset użytkowników, ale może wzrosnąć do 1k-5k w ciągu kilku miesięcy, do 50k-200k w dłuższym okresie, a po kilku latach jeszcze więcej.

PYTANIE: czy przepisywać to wszystko na PHP z pełną obsługą bazy danych, załącznikami, rozsyłaniem e-mail/sms, etc., tak, aby odpowiednio się skalowało dla rosnącej ilości użytkowników? Czy może jednak Java, gdzie nie mam doświadczenia (nawet jest ujemne, bo coś mnie odpycha od tego rozwiązania)?Troszkę poczytałem o rozwiązaniach dla PHP i trafiłem na CakePHP lub Laravel, ale czy rzeczywiście framework się sprawdzi, czy też lepiej pisać w pełni customowe rozwiązanie, dedykowane pod projekt?

Z góry dziękuję za odpowiedzi, sugestie, itp. Na wszelkie pytania postaram się odpowiedzieć w miarę krótkim czasie, ale życie rodzinne troszkę zmniejsza dyspozycyjność.

Pozdrawiam!

1

YAGNI. Jeśli na razie nie masz widocznej potrzeby tego robić, to raczej nie szedłbym w przepisywanie.

Jeśli się boisz, że Twoja aplikacja może nie wytrzymać ruchu, to napisz sobie skrypt który robi 50000 zapytań i zobacz czy aplikacja je obsłuży czy się wywali. Jak obsłuży to nie masz się czym martwić - jak się wywali, to wtedy możesz poszukać bottlenecka.

0

@Riddle: dzięki za odpowiedź i sugestie

Problem, który na tę chwilę nie występuje na pewno się pojawi i tak na prawdę jedynie chcę być krok przed nim, przygotować się.
Największą obawą jest ekspansywny rozruch produktu, przy którym może mi zabraknąć czasu, aby zrobić podmiankę na wersję rock-solid.

MVP to wciąż prototyp, postawiony na szybko (niestety z przerwami), pisany w tym w czym jestem biegły. I mimo to jego pierwotna wersja została w 80% przepisana po pierwszych kontaktach z potencjalnymi klientami. Ten aktualny twór działa lepiej, ale i tak wstyd kod pokazać profesjonalistom. Poza tym moje powroty do kodu zawsze są problematyczne, choć komentarzy tam nie brakuje.

Dlatego szukam, pytam, rozmyślam. Jeszcze trochę czasu jest, ale moje (główne) doświadczenie z dziedziny zarządzania projektami (na różną skalę) popycha mnie w kierunku ready, steady, go! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1