Perustelu Rustille
Rustin omistajuusmalli auttaa ehkäisemään muistiturvallisuusvirheitä ja datakilpailuja turvallisessa Rust-koodissa. Unsafe-koodi, ulkoiset kirjastot ja järjestelmärajapinnat edellyttävät erillistä huolellisuutta. Kieli ei estä kaikkia sovelluslogiikan virheitä.
Suorituskyvyn arviointi
Muistinkulutus ja vasteaika riippuvat työkuormasta, tietokannasta, kirjastoista ja ympäristöstä. Pelkkä ohjelmointikieli ei määritä tulosta.
- Mittaa edustavilla pyynnöillä ja samankaltaisilla ympäristöillä
- Raportoi kuormitus, virheet sekä vasteajan jakauma
- Mittaa muistinkulutus myös kuormituksessa
- Vertaa ylläpidettävyyttä ja kehitysaikaa suorituskyvyn rinnalla
Muistiturvallisuuden rajat
Turvallisen Rustin kääntäjätarkistukset auttavat ehkäisemään esimerkiksi vapautetun muistin käyttöä. Unsafe-lohkot ja FFI-rajapinnat siirtävät osan velvoitteista toteuttajalle.
Autentikointi, käyttöoikeudet, syötteiden validointi ja riippuvuuksien ylläpito on silti suunniteltava ja testattava.
Ekosysteemi
Actix Web on yksi vaihtoehto HTTP-palveluihin. SQLx tarjoaa tietokantatyökaluja ja Serde tietorakenteiden serialisointiin.
Valitse kirjasto tuen, ominaisuuksien ja tiimin osaamisen perusteella. Serialisoinnilla, tietokantakyselyillä ja verkkoliikenteellä on ajonaikainen kustannus.
Oppimiskäyrä
Omistajuus, lainaaminen ja asynkroninen ohjelmointi vaativat perehtymistä. Varaa aikaa katselmointiin ja testaukseen. Onnistunut käännös ei todista sovelluslogiikkaa oikeaksi.
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.
Mittaa ennen lupausta
Ennen muistinkulutus- tai latenssilupauksia määrittele toistettava kuormitustesti. Kirjaa ohjelmistoversiot, palvelinresurssit, testidata ja mittausmenetelmä.
Ilman vertailukelpoisia mittauksia emme esitä yleistä nopeuskerrointa tai yksittäisen tuotteen vasteaikatakuuta.
