Rust-utvikling
Backend-tjenester i Rust for situasjoner der ytelse, minnesikkerhet og forutsigbar drift betyr mer enn rask prototyping — fra API-er til tjenester som kjører uten tilsyn i månedsvis.

Verktøy og rammeverk vi bruker
- Rust
- Axum
- Tokio
- SQLite og rusqlite
- BDK (Bitcoin Dev Kit)
- rust-bitcoin og secp256k1
- Electrum
- JWT, Argon2 og TOTP
- rust-i18n
- Nostr
- Docker
Rust for backend-tjenester som skal være stabile
Rust gir ytelse på nivå med C og C++, men med et typesystem som forhindrer minnefeil og datakappløp allerede ved kompilering. Det gjør språket godt egnet for tjenester som skal kjøre lenge uten tilsyn, håndtere sensitive data eller tåle høy last uten å bruke unødvendig mye ressurser.
Vi har brukt Rust over tid i egne open source-prosjekter. Canary er en selvhostbar tjeneste for å overvåke bitcoin-lommebøker uten tilgang til private nøkler, med rundt 1 800 commits. Den er bygget med Axum og Tokio, bruker BDK og Electrum for å følge med på blokkjeden, og har innlogging med JWT, Argon2 og TOTP, varsler på e-post og Nostr, flere språk med rust-i18n og pakker for StartOS og myNode. Canary Mining er en Stratum V2-server for solo-mining som snakker med Bitcoin Core over IPC.
Rust, Go eller TypeScript — når vi anbefaler Rust og når vi ikke gjør det
Rust er et godt verktøy, men ikke et standardvalg. Vi anbefaler det når minst ett av disse kravene veier tungt:
- tjenesten skal kjøre i måneder uten tilsyn og håndtere nettverksfeil uten å stoppe
- den håndterer nøkler, innlogging eller finansielle data, der en minnefeil kan bli en sårbarhet
- den skal kjøre på begrenset maskinvare, for eksempel hos brukere som selvhoster
- en avgrenset komponent er en flaskehals for ytelse eller minnebruk
For vanlige CRUD-API-er, interne verktøy og produkter der kravene fortsatt endrer seg raskt, anbefaler vi det sjelden. Der gir TypeScript eller C# raskere fremdrift og et større utvalg av utviklere. Go er et godt mellomstandpunkt for nettverkstjenester som skal være enkle å lese og drifte, med kortere læringskurve enn Rust.
Prisen for Rust er lengre kompileringstider, en brattere læringskurve og færre utviklere å rekruttere fra. Den er verdt å betale når feil i produksjon er dyre — ikke ellers.
Minnesikkerhet og sikkerhetskritisk backend
Mange sårbarheter skyldes minnefeil. Rust fjerner de fleste av dem, men sikker programvare krever mer enn et trygt språk. Vi legger vekt på sikker lagring av passord med Argon2, tofaktorautentisering, minimal tilgang til sensitive data og avhengigheter som er modne og godt vedlikeholdt. I Bitcoin-sammenheng betyr det for eksempel å bygge løsninger som bare trenger offentlige nøkler og deskriptorer, slik at tjenesten aldri har tilgang til midlene den overvåker.
Typiske oppdrag
Langvarige bakgrunnstjenester
Tjenester som overvåker, synkroniserer eller varsler døgnet rundt, og som må håndtere feil i nettverk og eksterne systemer uten å stoppe.
Sikkerhetskritiske backends
API-er som håndterer innlogging, nøkler eller finansielle data, der Rusts typesystem og minnesikkerhet fjerner hele klasser av feil.
Ytelseskrevende komponenter
Enkeltkomponenter som må være raske eller bruke lite minne, skrevet i Rust og koblet til et eksisterende system.
Programvare for selvhosting
Tjenester som skal kjøre på brukerens egen maskinvare, pakket med Docker og for plattformer som StartOS og myNode.
Relevant erfaring
Prosjekter og åpen kildekode der teknologien er brukt i praksis.
Åpen kildekode
- canary
Selvhostbar overvåking av bitcoin-lommebøker uten tilgang til private nøkler, med varsler på e-post og Nostr. Skrevet i Rust med Axum, Tokio og BDK.
- canary-mining
Selvhostet Stratum V2-server for solo-mining mot Bitcoin Core via IPC, skrevet i Rust.
Vanlige spørsmål
Når lønner det seg å velge Rust?
Rust passer best når tjenesten skal kjøre lenge, håndtere sensitive data eller ha høye krav til ytelse og ressursbruk. For enkle CRUD-tjenester eller raske prototyper er TypeScript eller C# ofte et mer praktisk valg.
Kan dere skrive deler av et eksisterende system i Rust?
Ja. Vi kan skille ut en avgrenset komponent, for eksempel en bakgrunnsjobb eller en beregningstung tjeneste, og koble den til resten av systemet via et API eller en kø.
Hvilke rammeverk bruker dere?
For web-API-er bruker vi som regel Axum på Tokio, med SQLite eller Postgres som database. Valget av biblioteker avhenger av domenet, og vi foretrekker modne og godt vedlikeholdte avhengigheter.
Hvordan tester dere Rust-kode?
Vi kombinerer enhetstester med integrasjons- og systemtester som kjører tjenesten mot ekte avhengigheter i testmiljø. Testene kjører automatisk i CI ved hver endring.
Er Rust vanskelig å vedlikeholde for teamet vårt?
Rust har en brattere læringskurve enn mange andre språk, men kompilatoren fanger mange feil tidlig. Vi skriver tydelig kode, dokumenterer valgene og kan hjelpe teamet med å bli trygge på kodebasen.
Relaterte teknologier
Del av tjenesten: Backend og integrasjoner
TypeScript og Node.js
Backend-tjenester, integrasjoner og interne verktøy i TypeScript og Node.js, fra REST-API-er til automatisering av bygg og release.
Les mer.NET og C#
API-er, mikrotjenester og integrasjoner i C# og .NET, fra nye tjenester til modernisering av eldre kodebaser til .NET 10.
Les merGo-utvikling
API-er, bakgrunnsjobber og biblioteker i Go, med vekt på enkel drift og forutsigbar ytelse.
Les merTrenger dere hjelp med Rust?
Fortell kort om produktet, teamet eller systemet. Vi svarer med et konkret forslag til neste steg — enten det er en hel leveranse, senior kapasitet i teamet eller tekniske råd.
- Telefon
- 920 50 946
- Sted
- Oslo, Norge
