Dlaczego model chodzi na innej maszynie
Na maszynie, która wydaje tę stronę, nie chodzi żaden model językowy. Podsumowania liczone są na drugim urządzeniu, które odbiera zlecenia, liczy i przynosi zdania z powrotem.
Powodem jest arytmetyka. Model 3B zajmuje ponad gigabajt pamięci i potrzebuje sekund na odpowiedź. Najcięższe zapytanie bazodanowe w całej tej aplikacji trwa 581 milisekund. Postawienie obu na tej samej płytce znaczy, że obrazki 379 000 liczników czekają za generatorem tekstu — a to one są właściwym produktem.
Co to kosztuje i co daje
Kosztuje drugą maszynę i kolejkę. Zlecenia wydaje się najwyżej po dwadzieścia naraz; kolejka ma pułap, a gdy jest pełna, nic nowego nie powstaje — już napisane zdania pozostają widoczne. Podsumowanie sprzed tygodnia jest w porządku. Brakujące podsumowanie jest w porządku. Strona statystyk, która jest wolna, bo na tej samej płytce coś innego myśli, nie jest.
Daje to, że ścieżka liczenia nigdy nie dzieli maszyny z czymś nieprzewidywalnym. Narysowanie obrazka licznika to mała, ograniczona porcja pracy. Wygenerowanie tekstu nie: zmierzona rozpiętość dla jednego zdania wynosi tu od 5,4 do 54,3 sekundy, czynnik dziesięć między przypadkiem szybkim a wolnym, i o niczym z tego Pi nie może wiedzieć z góry.
Co przy tym opuszcza dom
To ta część, która musiała być rozstrzygnięta, zanim cokolwiek zbudowano, bo tej części nie da się naprawić później.
Druga maszyna dostaje tylko liczby, które na stronie statystyk licznika i tak stoją publicznie, i tylko od liczników, których strona statystyk w ogóle jest publiczna — nie prywatna, bez hasła. Worker nie dowiaduje się niczego, czego odwiedzający tę stronę nie mógłby przeczytać, po prostu ją otwierając.
To nie jest szczęśliwy efekt uboczny tego, jak wyszedł kod. Zapytanie o kandydatów filtruje po tym, a bez tego filtra cała funkcja byłaby przekazaniem cudzych danych na drugie urządzenie. Nie ma takiej wersji „będziemy z tym ostrożni", która byłaby równie dobra jak: nie wysyłać.
Kształt ogólny
Wyszły z tego dwie reguły warte więcej niż sama funkcja.
Praca nieograniczona nie należy na ścieżkę ograniczoną. Wszystko, czego czasu wykonania nie da się przewidzieć co do rzędu wielkości, nie należy na maszynę, która musi odpowiadać w milisekundach. Nie „zwykle jakoś jest" — liczy się przypadek wolny, a on zawsze nadchodzi.
Rozstrzygnij, co wolno wypuścić, zanim rozstrzygniesz, co budujesz. Gdyby odpowiedź brzmiała „worker potrzebuje też liczników prywatnych", właściwą reakcją nie byłoby zabezpieczenie przesyłu. Byłoby nią to, że funkcja nie obejmuje liczników prywatnych — i dokładnie tak jest.