Prod i beta pod jednym urlem stały

Zaglądam tu znów po “latach” i odświeżone forum - jakie pięknie!. Najwyższy czas wrócić do ekipy po sąsiedzku, bo SO już mnie męczy.

Potrzebuję opinii na temat rozwiązania problemu środowiska beta dla swojego pet-projektu.
Projekt staje się coraz poważniejszy i nie chcę fundować wybranym użytkownikom wywałek spowodowanych jakimś nocnym pushem :slight_smile: Oczywiście testy są, ale wiecie… nawet phantomem nie dam rady ogarnąć wszystkich wyuzdanych sytuacji.

Załóżmy, że mamy dwie wersje apki: stabilny prod i niestabilną betę - zazwyczaj 1 comit do przodu, baza ta sama. Z marszu wszyscy widzą prod, ale pewna grupa po zalogowaniu transparentnie dostaje betę.
To są tacy moi nieświadomi betatesterzy, którzy obciążają mój serwis za darmo, więc czysty deal :wink:.
Po 2-3 dniach od wygrzania się ficzera prod dostaje ten sam kod co beta.

Technicznie planuję to rozegrać z HAProxy i ruch kierować wg cookie do odpowiedniego nginxa prod/beta z Railsami pod spodem. Apka to częściowo generowany HTML, sporo REST, JS a także kilka elementów SPA w Angularze, oczywiście Rails 4. Funkcjonalność uznaję za wygrzaną jeśli logi serwerowe, klienckie są si i nie ma lamentów ze strony userów :stuck_out_tongue:

Najważniejsze: URLe/hosty muszą być te same - permalinki, ponadto staram sie nie robić konfliktujących zmian w DB i routingach by nie było zgrzytu. Wiem że na bank zmienią się urle do assetów w chwili przełączenia, ale to sytuacja jak zwykły upgrade aplikacji do nowszej wersji. Może prod wkurzy się na nieznaną migrację w bazie zrobioną przez betę?

Testowaliście podobne rozwiązanie i ew. jakie problemy napotkaliście, o których jeszcze pewnie nie wiem?
Może macie jakieś inne sprawdzone i tanie strategie beta testów?

Pozdrawiam

czy ww przypadek nie podchodzi pod testy A/B?

Feature toggles.

@sledzias: zgadza się, jest to forma testu A/B, ale jedynym celem badania jak narazie jest sprawdzenie stabilności nowej wersji. Rzeczywiście można się pokusić o jakieś metryki biznesowe, ale do tego myślę lepsze będzie dedykowane narzędzie, np. Optimizely.

@sharnik: feature toggles jak najbardziej, obecnie robię jeden feature w jednej chwili więc myślę wystarczy “Global toggle” na poziomie loadbalancera. Chętnie bym się dowiedział jak technicznie rozwiązujesz swoje Feature toggles. W innym projekcie wykorzystuję feature toggle po Zookeeperze w widoku. Jak rozwiązujesz toggle assetów/JavaScriptu? Drobne anomalie np. w JavaScript potrafią mieć nieciekawe skutki w szczególności w SPA.