W przeszłości pracowałem w różnych środowiskach. Aplikacje komputerowe, gry, osadzone rzeczy, usługi sieciowe, zadania wiersza poleceń, strony internetowe, raportowanie baz danych i tak dalej. Wszystkie te środowiska miały tę samą cechę: bez względu na ich złożoność, bez względu na ich rozmiar, zawsze mogłem przetestować podzbiór lub fragment aplikacji na moim komputerze lub w środowisku programistycznym.
Dzisiaj nie. Dzisiaj znajduję się w środowisku, którego głównym celem jest skalowalność. Reprodukcja środowiska jest wyjątkowo kosztowna. Biorąc kawałek środowiska, chociaż jest to wykonalne (niektóre elementy musiałyby zostać zasymulowane lub użyte w trybie pojedynczej instancji, do którego nie zostały stworzone), w pewnym sensie pokonuje cel, ponieważ przesłania współbieżność i ładuje to napotyka prawdziwy system. Nawet mały system „testowy” ma swoje wady. Będzie inaczej w przypadku 2 węzłów i 64 węzłów.
Moje zwykłe podejście do optymalizacji (mierzenie, próbowanie czegoś, weryfikowanie poprawności, mierzenie różnic, powtarzanie) tak naprawdę nie działa tutaj, ponieważ nie mogę skutecznie wykonać kroków 2 i 3 dla części problemu, które mają znaczenie (odporność na współbieżność i wydajność w ramach Załaduj). Ten scenariusz nie wydaje się jednak wyjątkowy. Jakie jest typowe podejście do wykonywania tego rodzaju zadań w tego rodzaju środowisku?
Istnieje kilka powiązanych pytań:
Reproducing the environment is prohibitively costly.
- Ile kosztuje zatrzymujący produkcję błąd produkcyjny? Co z 2 błędami? W nieprzewidywalnych czasach (najprawdopodobniej, gdy większość użytkowników jednocześnie obciąża system). Porównaj to z kosztem stworzenia minimalnego środowiska reprodukcyjnego - może się okazać, że nie jest to aż tak drogie.
prohibitively costly
.