Gateway to problem runtime’u
AI gateway wykonuje jedno zadanie tysiące razy na sekundę: przyjmuje request, tłumaczy go, streamuje z powrotem odpowiedź providera i nie przeszkadza. Język, w którym go napiszesz, decyduje o tym, ile z Twojego budżetu opóźnień zjada sam gateway. Go dobrze pasuje do tego profilu:- Gorutyny sprawiają, że streaming jest tani. Każde otwarte połączenie do providera to lekka gorutyna, więc długotrwałe odpowiedzi streamingowe nie blokują wątków ani nie wymuszają frameworka asynchronicznego na całym kodzie.
- Jedna statyczna binarka. GoModel jest dostarczany jako jeden plik – bez interpretera, bez środowiska wirtualnego i bez drzewa zależności do instalowania przy wdrożeniu. Obraz kontenera jest mały i uruchamia się w znacznie mniej niż sekundę.
- Przewidywalne zużycie pamięci. Garbage collector w Go jest dostrojony pod krótkie pauzy, a gateway przechowuje bardzo mało stanu na request, więc zużycie pamięci pod obciążeniem pozostaje płaskie, zamiast rosnąć wraz z liczbą workerów.
Dlaczego nie Rust
Rust dałby nam ten sam model wdrożenia, a w niektórych ścieżkach niższy narzut. Mimo to wybraliśmy Go – z powodów, które mają niewiele wspólnego z samym językiem:- Go jest znacznie szerzej używany. W każdej ankiecie wśród programistów i w każdym rankingu języków, które przejrzeliśmy, Go wyraźnie wyprzedza Rust pod względem adopcji. Częściowo wynika to z łagodniejszej krzywej uczenia: inżynier produktywny w innym języku jest w stanie czytać kod w Go i do niego kontrybuować w ciągu kilku dni.
- Łatwiej znaleźć kontrybutorów. Większa pula inżynierów, którzy już znają Go, oznacza, że więcej osób może przeglądać, rozwijać i utrzymywać GoModel, a koszt zatrudniania do tego pozostaje rozsądny dla firm, które go używają.
- Firmy już przechodzą na Go. Wiele organizacji, które ustandaryzowały się na Javie dla usług backendowych, traktuje teraz Go jako kolejną rekomendowaną ścieżkę dla nowej infrastruktury. Gateway w Go pasuje do narzędzi, przeglądów bezpieczeństwa i nawyków operacyjnych, które te zespoły już mają.
- Go wciąż rośnie. Udział nowych projektów infrastrukturalnych pisanych w Go rośnie z roku na rok. Postawienie na język, który przyjmują zespoły platformowe, sprawia, że GoModel pozostanie w długim terminie łatwy w uruchamianiu i łatwy do kontrybuowania.
Dlaczego nie Python
Python jest domyślnym wyborem dla narzędzi AI i większość gatewayów zaczynała właśnie od niego. To dobry język do eksperymentów, ale słaby do przeskoku sieciowego, który stoi przed każdym wywołaniem modelu. Kompromisy opisujemy w Naszych wartościach, a pomiary znajdziesz na stronie benchmarków.Co to oznacza dla Ciebie
- Operatorzy dostają małą, szybką, statycznie linkowaną usługę, która zachowuje się tak samo w Dockerze, Kubernetesie i na bare metal.
- Kontrybutorzy dostają kod w języku, który najpewniej już znają, ze standardowym toolchainem i bez frameworka, którego trzeba się najpierw nauczyć.
- Firmy dostają gateway napisany w języku, który ich zespoły platformowe i bezpieczeństwa już akceptują i wspierają.