Morn!
Morn!
Monr!
Mrn
god morn! ☀️
Morn! (☀️ her også, til en forandring)
Morn! I morges skrev jeg nok en gang en test som jeg syns var såpass stilig at den fortjente en bloggpost: https://parenteser.mattilsynet.io/kontrakt/
Veldig kult! I den siste testen gjør datomic sin in-memory db en god del av løftingen siden man lett kan kjøre kommandoer mot den når man tester, dermed simulere transaksjoner. Det er litt vanskeligere med kommandoer som gjør andre effektfulle ting, som API-kall mot eksterne tjenester. Da må man til med mocking, og det blir fort mer arbeid enn jeg gidder 😅
Vi må hoppe igjennom ganske mange brennende ringer for å oppnå samme dekning. Og vi må grilles til well-done før vi får svar fra testene også.
@tormathi Ja, det er sant! Kommandosystemet vårt har også deklarative effekter, så andre typer effekter pleier vi å teste ved å se på planen, heller enn å kjøre kommandoen helt igjennom.
God morgen! Og snedig, Christian! Ganske stilig hvor mye funksjonalitet dere har fått på plass i riggen deres
Noen ting begynner å sitte godt 😊
Men dette kunne dere vel ha ordnet med openapi-ts? 🧌
Jeg har brug for lidt norsk feedback på dette udkast https://andersmurphy.com/2026/09/29/thinking-in-batches-and-aggregates-with-streaming-html.html 🙏
Har ikke noe smart feedback, men interessant lesning - spennende "serie" å følge 🙂
Jeg har heller ikke så mye å tilføye, men det var en interessant artikkel. Vi jobber med et system for å streame data i vår løsning nå. Vi rendrer på klienten, men ellers er det mange likheter. Vi går for en push-modell, og har sett på flere av utfordringene du er inne på. En tick-modell er en interessant løsning på problemet 🙂
Tak. Det vigtigste ved en tick-baseret model (selv hvis renderingen sker på klienten) er, at man skifter fra kontinuerlig tid til diskret tid. Det åbner op for mange muligheder for batching og caching.
Dit system bliver også mere deterministisk.
Er back pressure/antall ticks i sekundet noe du kontrollerer eksplisitt mot lasten på serveren? I så fall hvordan?
Påbegynd sampling i 20 sekunder efter det første overrun-tick, og log p50/95/99.
(let [sleep-time-ms
(- next-tick (System/currentTimeMillis))]
(when (< sleep-time-ms 0)
;; log overrun
(when (= @overruns [])
(Thread/startVirtualThread
(fn [] (Thread/sleep 20000)
(println "WARNING: tick overrun")
(println (u/stats @overruns))
(reset! overruns []))))
(swap! overruns conj
(- batch-tick-ms sleep-time-ms)))
(when (> sleep-time-ms 0)
(when (not (= @overruns []))
(swap! overruns conj batch-tick-ms))
(Thread/sleep ^long sleep-time-ms)))
WARNING: tick overrun
{:n 187, :p50 100, :p95 100, :p99 100, :max 376}
@andersmurphy dette minnet veldig om et par artikler
https://www.dgtlgrove.com/p/multi-core-by-default (forfatteren bak rad debugger, dine barriers og lane-ctx minnet meg om hans https://github.com/EpicGames/raddebugger/blob/2db9ec131279f665c6d5d8764c26e22328e70a38/src/base/base_thread_context.c#L85)
Casey Muratori om N+2 thinking https://www.youtube.com/watch?v=xt1KNDmOYqA
Tak for linkene! Jeg følger både Casey og Ryan, men har ikke læst nogen af disse artikler. Jeg er primært blevet inspireret af LMAX, Netty og gamedev.
But is this the best approach? Perhaps, instead of writing single-core code (which sometimes goes wide) by default, we can write multi-core code (which sometimes goes narrow) by default.> ☝️
dette er så gøy at delingsbehovet mitt er skyhøyt, til tross for off topic: nå skal vi migrere fra AWS til dedikerte servere hos servetheworld 🤩
gratulerer! Er det kostnader eller grensesnitt som driver valget?
Jeg har tuklet med egen VPS på Hetzner siden i sommer. Flyttet vekk fra (gratis) CloudFlare pages. Synes det har vært digg å bruke tid på å lære linux (caddy, ssh, rsync) i stedet for å lære CloudFlare. Så for meg har det vel vært en kombinasjon, jeg kan få ytelsen hvis jeg trenger den, og jeg investerer i åpne verktøy jeg bruker alle steder som gir meg en linux-boks, enten den er dedikert eller virtuell.
servetheworld er norske, gitt! Så kult! Så dere får suveren latency også! 😁 VPS-en min står i Helsinki; det er tregere enn jeg skulle ønsket.
jaggu, blir noe cloudflare også, tenker å bruke dem til load balancing og ha null offentlig IP på de fysiske serverne
nettverket til cloudflare har entry point i Oslo så latency blir lav åkke som
hva skal dere gjøre? Kjøre postgres på dedikerte servetheworld-servere?
jess, postgres og JVM-er og redis og litt diverse
beholder nok e-post og crypto (KMS) hos AWS enn så øenge
planen er enn så lenge og kjøre rett på jernet og ikke virtualisere ut skille mellom database, appservere, osv
supert hva man får av leverage av å ha appen tett på basen!
jess, og så er det jo litt gøy med fysiske servere. I bestillingen ba vi dem og sørge for at maskinene står nærmest mulig hverandre i nettverket, siden vi tenker to postgres-instanser med synkron replikering
Er det snakk om Clojure? Jeg har prøvd litt (i det små) å bruke @andersmurphy/https://github.com/andersmurphy/sqlite4clj/. Da kjører du SQLite gjennom C-FFI-et til SQLite i stedet for å gå over jdbc, som i noen tilfeller er veldig postitivt for ytelse. I noen tilfeller veldig mye raskere enn postgresql over JDBC. Edit, du skrev forskjellige fysiske servere, så det svarer på spørsmålet mitt!
blir et litt enklere oppsett og. I AWS kjører vi konstant på to datasentere og det blir litt random om appserver i A kontakter database i A eller B. Nå ser vi på multi-datasenter som manuell failover og kan leve med et par minutter nedetid om det skulle skje
Da har du i alle fall en håndbok som forteller deg hvordan du skal gjøre ting 🤓
Kan jeg spørre hva dere gjør med server-oppsett? Alt manuelt? Shell script? Noe IAC? (jeg har gjort alt for hånd på egen VPS og likt det; men jeg savner å kunne kjøre én restore-kommando og ha ny server klar til jobb)
vi lurer på om nixos kanskje er tingen, vi har ihvertfall tenkt å prøve
vi starter jo med to servere og hvis en av de dør på seg er det litt viktig at vi kan komme relativt raskt opp igjen med en ny
Mulig jeg bør gå NixOS selv. Det løser "kjapt opp" og "spor konfigurasjon"-problemene, og det er bredt nok til å dekke det jeg bruker av linux-verktøy for servere. Takk! Rart jeg ikke har vurdert NixOS seriøst til VPS-en tidligere; jeg har jo brukt NixOS på jobb-laptop tidligere.
ja nixos ser jo veldig lovende ut! Absolutt alt på OS-et er definert i config-fil, og den "reconciler" når du endrer på oppsettet så du slipper å gjøre full reset osv, virker jo helt killer