Gjør Roon raskere — Sam Soffes
Lagt ut på
I går kveld implementerte jeg noen endringer i Roon som gjorde ting mye raskere. Drew sa til meg at jeg burde skrive om det, så her er vi. Jeg gjorde tre ting:
CloudFront
Eiendelene våre tok en stund å laste fordi S3 er litt treg. Vi bruker den fantastiske asset_sync for å betjene eiendeler fra S3 i stedet for Heroku. Dette er en stor ytelse (og kostnads) seier i seg selv siden Heroku er dyrt og er bedre egnet til å betjene dynamiske forespørsler.
Hovedproblemet her er webfonter. Brukere kan ikke se noen tekst på sidene våre før skriften lastes inn for første gang. Dette er en stor sak for en blogg-app. Enda verre, på grunn av iOS-sikkerhet, hvis du treffer Roon i Tweetbot (eller en annen app som bruker UIWebView), vil den måtte laste den ned siden den ikke deler HTTP-bufferen for systemet av sikkerhetsgrunner. Alt dette fikk Roon til å føle seg veldig treg – spesielt på mobil.
Det tok mindre enn ett minutt å sette opp en CloudFront-distribusjon rettet mot S3-bøtten vår og ganske enkelt bytte ressursvert. Nå er alle fontene (så vel som CSS og JavaScript) ganske raske. Det var lett!
Mindre spørringer
Seeren (den delen som tjener brukernes blogger) er vår første bekymring når det gjelder ytelse. Vi ønsker absolutt å gjøre den beste skriveopplevelsen mulig, men folk som leser innholdet ditt er prioritert. Jeg satte meg ned i 30 minutter eller så og brukte miniprofiler for å se hvilke søk som ble utført og hvorfor. Det viser seg at det var et par ting vi kunne optimalisere. Det viktigste her var å forhåndshente relasjoner på objekter, slik at det ville gjøre det n forespørsler.
Tok det fra ganske mange spørringer for å laste ned siden til bare en håndfull. Føler meg mye bedre med ting der. Jeg vil definitivt jobbe med å forbedre ting med jevne mellomrom.
Enhjørning
Jeg tror var en av våre største seire i de siste endringene. Vi byttet fra Puma til Unicorn. Unicorn er en veldig rask Ruby-webserver med flere prosesser. Jeg har brukt det tidligere, men jeg hørte at Puma er den nye hotten, så jeg har brukt det til prosjekter i det siste.
Jeg så en tale av Andre Arko (han er @indirekte og på Bundlers kjerneteam). Det var et virkelig flott foredrag om å skalere en nettjeneste. Du burde se den. Seriøst.
Uansett, han sa at det å bruke Unicorn over Puma virkelig hjalp tingene deres og forklarte samtidig ting. Jeg trodde det var verdt et forsøk. Overraskende nok forbedret det virkelig tiden det tok fra Heroku-ruteren rapporterte en forespørsel til Rails som behandlet den. Jeg er ikke sikker på hva avtalen var med Puma, men en enkel bytte til Unicorn og nå er alt mye raskere.
Nyte
Så jeg håper du liker disse hastighetsforbedringene. Hele siden er definitivt merkbart raskere. Hvis du ikke har prøvd Roon, sjekk det ut. Kanskje skrive om hva du gjør på en gjennomsnittlig dag på jobb eller noe. Du vil bli overrasket over de interessante tingene du finner når du bare setter deg ned for å skrive om et emne.
