Plazer: centralka i serwer społeczności
WebSocket, WebRTC przez pion, PostgreSQL i Redis.
Go wybieramy do usług, które mają działać na wielu maszynach i nigdy nie wymagać uwagi: agentów na węzłach, telemetrii, serwerów komunikatora i gier sieciowych.
Projekty z tej strony na ekranach z portfolio i case studies, każdy z krótkim opisem i drogą do pełnego.
WebSocket, WebRTC przez pion, PostgreSQL i Redis.
Fork Pterodactyl Wings zarządzający kontenerami Docker na węźle.
Magazyn próbek w pamięci z kilkoma rozdzielczościami i zapisem na dysk.
Technologia ma pasować do miejsca, w którym kod będzie działał, i do zespołu, który go przejmie. Ostateczny wybór zapada przy wycenie, razem z Tobą.
Agent VPS i demon kontenerów Flaem to pojedyncze pliki binarne bez środowiska uruchomieniowego. Wersję na inny system albo procesor buduje się z tego samego kodu, zmieniając zmienne przy kompilacji.
Pakiet context przenosi limit czasu przez kolejne wywołania, więc agent nie czeka w nieskończoność na usługę, która milczy. Gdy druga strona leży, agent wydłuża odstępy między próbami, zamiast zasypywać ją zapytaniami.
Centralka i serwer społeczności Plazera trzymają połączenia WebSocket, a rozmowy głosowe prowadzą przez WebRTC w bibliotece pion. Każde połączenie to lekka gorutyna, a nie osobny wątek systemu.
Serwer społeczności Plazera uruchamia się jedną komendą z obrazu Dockera, razem z PostgreSQL i Redisem. Jeden program w Go łatwo postawić i zaktualizować na VPS-ie, w domu albo w sieci lokalnej.
Pharos to jeden program w Go z wbudowaną bazą SQLite: sprawdza usługi po HTTP, TCP i TLS i prowadzi publiczną stronę statusu. Monitoring nie może zależeć od tego, co monitoruje, więc nie potrzebuje osobnej bazy ani usług obok.
Dostawca Terraform dla Flaem stoi na oficjalnym frameworku HashiCorp, który istnieje tylko w Go. Demon kontenerów to fork Pterodactyl Wings, a z Dockerem rozmawia przez jego oficjalnego klienta w Go.
Panele z formularzami, tabelami i wykresami piszemy w TypeScripcie i React. Aplikacja webowa Plazera rozmawia z centralką w Go przez API, a usługi w Go zajmują się danymi i połączeniami.
Go skompilowany do WebAssembly zabiera ze sobą cały swój runtime, więc moduł jest ciężki. Szyfrowanie Plazera jest w Ruście, z którego do przeglądarki trafia lekki moduł.
W Go pole, którego nikt nie ustawił, ma wartość zerową, więc brak kwoty po cichu staje się zerem. Rozliczenia Flaem są w Ruście, gdzie brak wartości trzeba obsłużyć jawnie.
Nieobsłużona panika w jednej gorutynie kończy cały program. Router na węzłach Flaem jest w Elixirze, bo nadzorca OTP restartuje tylko zepsutą część, a reszta działa dalej.
Boty Discord i skrypty porządkowe piszemy w Pythonie. Poprawkę wgrywa się bez kompilowania, a discord.py ma gotowe komendy ukośnikowe i panele.
WHMCS, HostBill, Paymenter i Blesta ładują moduły tylko w PHP. Moduły Flaem dla tych systemów są w PHP i rozmawiają z platformą przez jej API.
Każda potrzeba w jednym wierszu, a obok siebie to, co w tej sprawie daje każda z dwóch kolumn.
Ile linii napisaliśmy w Go i jaką część wszystkiego, co napisaliśmy, to stanowi. Liczymy linie dodane w commitach naszych repozytoriów, osobno dla każdego języka.
Z plików zależności naszych repozytoriów. Przy każdej jedno zdanie o tym, do czego jej używamy.
Głos i wideo w Plazerze.
HTTP i WebSocket centralki.
PostgreSQL, Redis i migracje.
Sterowanie kontenerami na węźle.
Kontrakty między rdzeniem a węzłami.
Dostawca Terraform.
33 przyjęte zmiany w 21 repozytoriach. Opiekunowie tych projektów przejrzeli nasz kod i włączyli go do swojego.
Każda ma swoją stronę z projektami na prawdziwych ekranach i porównaniem z alternatywami.
Odpowiedzi o Go, naszych projektach i liczbach na tej stronie.
Opisy projektów z tej strony i przegląd wszystkich technologii.
Opisz, co chcesz zbudować. Odpiszemy w godzinę i powiemy wprost, czy ta technologia jest dobrym wyborem.