Takaisin näkemyksiin
Kehitys10 min lukuaika

Miksi valitsemme Rustin backend-palveluihin

Vuosien Python- ja Node.js-käytön jälkeen vaihdoimme Rustiin kriittisille backend-palveluille. Tässä miksi kompromissit ovat sen arvoisia.

Perustelu Rustille

Rust antaa C-tason suorituskyvyn muistiturvallisuustakuilla. Ei roskienkeräystä, ei null-osoitinpoikkeuksia, ei datakilpailuja. Palveluille jotka tarvitsevat luotettavuutta ja nopeutta, sitä on vaikea voittaa.

Suorituskyky joka merkitsee

Rust API-palvelin käyttää tyypillisesti 10-50MB RAM:ia verrattuna 100-500MB:iin vastaavissa Node.js- tai Python-palveluissa. Kuormituksessa ero on vielä dramaattisempi.

  • Matalampi latenssi (ei GC-taukoja)
  • Parempi resurssien hyödyntäminen
  • Käsittele enemmän samanaikaisia yhteyksiä
  • Halvempi ajaa suuressa mittakaavassa

Turvallisuus ilman ajonaikaista kustannusta

Rustin kääntäjä nappaa bugit ennen tuotantoa:

  • Ei null-osoitinviittauksia
  • Ei puskurin ylivuotoja
  • Ei datakilpailuja rinnakkaisessa koodissa
  • Ei use-after-free-bugeja

Kääntäjä on tiukka, mutta se säästää tunteja debuggausta tuotannossa.

Ekosysteemi

Actix-web on kehysvalintamme:

  • Yksi nopeimmista web-kehyksistä millään kielellä
  • Asynkroninen oletuksena Tokiolla
  • Tyypiturvallinen pyyntöjen käsittely
  • Loistava middleware-ekosysteemi
sqlx tietokantapääsyyn - käännösaikana tarkistetut SQL-kyselyt. Serde serialisointiin - nollakustannus JSON-käsittely.

Oppimiskäyrä

Kyllä, Rustilla on oppimiskäyrä. Borrow checker taistelee vastaan aluksi. Mutta:

  • Useimmat konseptit loksahtavat 2-3 viikossa
  • Kääntäjän viestit ovat oikeasti hyödyllisiä
  • Kun se kääntyy, se yleensä toimii
  • Yhteisö on uskomattoman tervetuleva

Milloin EI käyttää Rustia

Rust ei ole aina oikea valinta:

  • Nopeat prototyypit (käytä Python/Node)
  • Skriptit ja automaatio (käytä Python/Bash)
  • Kun tiimisi ei tunne sitä vielä
  • Kun markkinoilletuloaika on kriittinen

Käytämme Rustia pitkäikäisille palveluille jotka tarvitsevat luotettavuutta. Kaikkeen muuhun valitsemme oikean työkalun tehtävään.

Reaalimaailman esimerkki

NortherCodes-alustan API on kirjoitettu Rustilla:

  • Käsittelee Git HTTP-protokollaa
  • Prosessoi tiedostolatauksia haittaohjelmaskannauksen kanssa
  • Palvelee API-pyyntöjä alle millisekunnin latenssilla
  • Pyörii pienellä VPS:llä reilusti pelivaralla

Tärkeimmät opit

  • Rust tarjoaa C-tason suorituskyvyn muistiturvallisuudella
  • Matalampi resurssien käyttö tarkoittaa matalampia hosting-kustannuksia
  • Tiukka kääntäjä nappaa bugit ennen tuotantoa
  • Parhaiten sopii pitkäikäisille palveluille joissa luotettavuus ratkaisee

Tarvitsetko apua toteutuksessa?

Voimme auttaa näiden käytäntöjen käyttöönotossa organisaatiossasi.

Tarvitsetko apua toteutuksessa?

Voimme auttaa näiden käytäntöjen käyttöönotossa organisaatiossasi.

Ota yhteyttä