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
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
