Daugiau nei prieš metus klausiau savo skaitytojų kokį Ruby on Rails hostingą pasirinkti. Atsakymu gavau tik Karolio palinkėjimą, taigi pribrendus reikalui teko rinktis tik savo nuožiūra, remiantis tiesiog internete rastais šaltiniais. Per paskutinį mėnesį jau ne vienas žmogus manęs klausė to paties - ką galima rinktis talpinti Rails projektus? Noriu pasidalinti mintimis ir pastebėjimais iš savo ieškojimų, o jeigu turėsit ką pridėti, būtinai pasidalinkit.
Ruby on Rails talpinimas, kaip ir kitų technologijų, jau gali būti skiriamas į shared (bendras) ir dedicated arba private (nuosavas).
Shared Lietuvoje
Nėra :-( Lyg ir kažkas kažkur nuaidėjo, kad tai gali būti įgyvendinta, tačiau žinių kol kas jokių ir turbūt specialiai laukti šios paslaugos Lietuvoje nevertėtų.
Shared užsienyje
Kalba eina apie 3 ir daugiau USD už mėnesį. >90% atvejų tai bus Phussion Passenger (mod_rails) sprendimas - būtent jo atsiradimas sudarė sąlygas Rails shared hostingui apskritai paplisti. Shared hostingai, kaip galite įtarti, pasižymi dideliu resursų ribojimu ir kaina tai atspindi. Dažniausiai tai bus aplikacijų skaičiaus, atminties kiekio, procesų skaičiaus ribojimas. Nepulkite susižavėti dideliais skaičiais prie vietos ir srauto - visada skaitykite sąlygas ir tikriausiai rasite kur kabliukas. Dažnai tai būna failų skaičiaus ribojimas, vartotojų, prisijungusių vienu metu ribojimas ir panašiai. Keli iš akies patikimesni variantai:
www.hostingrails.com - galima paleisti vieną mod_rails aplikaciją, tačiau skelbiasi, jog netaiko ribojimų fastcgi procesams. Siūlo neprastus VPS planus.
www.site5.com - būtinai perskaitykite visas sąlygas, pernai metais jie ribojo failų skaičių iki berods 5000.
www.dreamhost.com - nepavyko rasti ar jie prisijaukino mod_rails, nes su fcgi viskas atrodo lėėėta… Apskritai, kalbama kad šis hostingas gerokai perkrautas.
www.speedyrails.com/shared - atrodo sąžiningai, tačiau mažoka informacijos, būtinai klauskit supporto apie ribojimus.
www.ocssolutions.com - siūlo garantuotą atmintį (kaip ir speedyrails) jau nuo mažiausių planų + “nemokamą” (t.y. susimokat kartu su hostingu) subversion/git hostingą. Siūlo neblogus VPS planus.
Rinkdamiesi shared tipo hostingą įsitikinkite, kad yra SSH prieiga. Be jo jūsų rankos didelei daliai darbų surištos, įskaitant ir automatizuotą įkėlimą (deployment) su Capistrano.
VPS Lietuvoje
Kalbame apie virtualius privačius serverius, nes kai prireiks tikro dedikuoto serverio, ko gero būsite viską iššniukštinėję geriau negu aš. Kaina nuo 50 Lt už mėnesį. VPS privalumas tas, kad galite jį valdyti kaip norite, vadinasi neapsiribojate vien tik Rails, tačiau pigiausiuose planuose visada privalėsite galvoti apie gan žemas atminties lubas.
www.serveriai.lt/dedikuoti.html - pirmi pradėjo siūlyti sukonfigūruoto serverio Rails talpinimui paslaugą. Tiesa, siūloma konfigūracija greičiausiai pilnai užkimš minimalaus plano atmintį (256Mb) - kišamas apache, proftpd, sendmail, webmin… Protingesnis variantas būtų konfigūruotis sistemą pačiam.
www.hostex.lt/virtualus_dedikuoti_serveriai - kainos didesnės nei serveriai.lt varianto ir ko gero tiesiog sumokat už Parallels Plesk programinę įrangą - už saldainiukus akims serveriui administruoti.
www.vpserver.lt - siūlo VPS nuo 128Mb. Rails talpinimui to greičiausiai neužteks (nors įmanoma, tik tektų atsisakyti mysql, apache ir naudotis sqlite, thin), tačiau geras variantas “pasičiupinėti”. Puiku, kad jie pateikia detalius savo planų limitus. Nesuteikia swap.
www.tera.lt/hostingas.php?spt=3 - atkreipkite dėmesį į gan ribotą CPU, nes Ruby gan reiklus procesoriui.
Mano sprendimas buvo nesirinkti VPS talpinimo Lietuvoje, nors užsieniui praktiškai nieko netalpinu. Įvairios istorijos su lūžimais ir prarastais duomenimis pasitikėjimo nekelia, o kad technikai bus prisijaukinę ir žino kas tai yra (ne tik įdiegti “gem install rails”) Ruby on Rails - abejoju, bėdos atveju nesinorėtų likti tiesiog ant ledo. Todėl pažiūrėkite ką siūlo užsienis.
VPS užsienyje
Čia pasirinkimo laukas labai platus. Aš rinkdamasis ieškojau tiesiog tinkamos kainos ir gerų vartotojų atsiliepimų. Tiksliau, blogų atsiliepimų nebuvimo. Kaina čia svyruoja nuo 20$ už mėnesį, taigi su dabartiniu dolerio kursu suma panaši kaip ir Lietuvoje - lietuviai mėgsta nurodyti kainas be PVM. (45 Lt be PVM = 53.1 su PVM)
www.slicehost.com - mano dabartinis pasirinkimas. Gera kaina, blogų atsiliepimų nepavyko rasti, didelis community supportas, patys talpina Rails projektus (ir serverio valdymo sistema padaryta su Rails) - vadinasi, jie žino ką daro. Greitis taip pat neprastas - šis blogas slicehost’e, įvertinkit. Turi straipsnelių-tutorialų puslapį, pritaikytą konkrečioms operacinėms sistemoms - labai geras resursas pradedantiesiems.
http://vpslink.com/ruby-on-rails-vps/ - taip pat protinga kaina, tačiau community ne toks didelis.
http://railsmachine.com/hosting - palyginus su kitais kaina tikrai didelė, tačiau ko gero dažniausiai sutinkamas sakinys prie šio vardo yra “best Rails hosting”.
http://rimuhosting.com/ - nors atrodo baisiai, tačiau atsiliepimai neblogi. Tokie variantai atrodo patikimiau, negu perkrauti, “super discount” baneriais permarginti pasiūlymai.
http://railsplayground.com - lygos vidutiniokai, tačiau verti dėmesio dėl 15$/mėn kainą už 256Mb VPS.
…ir dar daug daug įvairiausių variantų…
Išvados
Viskas priklauso nuo to, ko jums reikia:
- tiesiog pabandyti - shared
- smulkiai aplikacijai - shared
- vidutinei aplikacijai - vps, o jei finansai spaudžia, tai rimtesnį shared
- rimtai verslo aplikacijai - vps
- multifunkciniam serveriui - vps
O dėl klausimo Lietuvoje/užsienyje, tai tik patys nuspręsite kas yra svarbiau - patikimumas/patirtis ar serveris už 50km.
Faktas yra vienas - šiai dienai be žiupsnelio *nix žinių Rails aplikacijos tinkamai nepatalpinsite. Bent jau logus tikrai norėsite pažiūrėti :-)
Rinkitės atsakingai ;-)


14 nuomonių
Įrašo komentarų RSS Grįžtamasis adresasSiūlyčiau per daug nesukti galvos - rinktis tik VPS ir serverį konfigūruoti automatizuotais įrankiais Centostrano/Deprec, kurie paruoš sistemą tvarkingam ir patogiam dislokavimui naudojant Capistrano.
Lietuviškiems projektams esu linkęs rinktis lietuvišką hostingą, o užsienietiškiems - užsienietišką, kuo pralaidesnis/patikimesnis tiklapio vartotojus ir serverį jungiantis kanalas, tuo geriau.
Dėl shared hostingo Lietuvoje, aš pats juo nesinaudočiau, o apklausos metu potencialių naudotojų aktyvumas buvo apgailėtinai mažas (atsiliepė tik šio blogo autorius :). Jei atsirastų pakankamai daug norinčių, tai būtų galima tai įgyvendinti.
Būtent taip ir nutiko, kad susižavėjau “unlimited” žodeliais ir už 10$ turiu hostinga be ssh ar kitokios konsolės, o tai ne kas kita kaip “sh”. :)
Ištversiu mėnesiuką ir bėgsiu kuo toliau..
Dėl shared lietuvoje
Jei kainos nesikandžios - didelė tikimybė, kad susigundyčiau naudot.
Kalbėjote apie atminties sunaudojimą esant Rails talpinimo paslaugai. Iš esmės, jei kalbėti apie serveriai.lt variantą, tai sudiegus Apache, Proftpd, MySQL, Webmin etc. minimaliai konfig8ruojant tarnybų parametrus, atminties sunaudojimas siekia ~80-90Mb. Kiekvienas mongrel procesas naudoja 30-50Mb.
Taip išeina, kad turint 256MB galite turėti apie 3 mongrelio procesus, o veikti aplikacija gali ir esant vienam procesui.
nebent “hello world” rails aplikacijai :) Bent kiek normalesne aplikacija tikrai nores min kokiu 50-60.
Būtent. Dėl konkretaus serveriai.lt pasiūlymo kiek keisti du sprendimai: jei tai tik Rails hostingas, tai sunkaus griozdiško Apache naudojimas kaip mongrel_cluster proxy (nginx?) ir proftpd - kas suvokdamas savo veiksmus (tarkime, kad tipinis Rails developeris supranta :)) naudosis FTP kai yra SSH?
Na matai, Apache naudojimą ko gero nulemia keli faktoriai, vienas jų, tai pasirinktas valdymo pultas bei jo funkcionalumas. Resursų suvartojimą galima reguliuoti keičiant tarnybos parametrus. Jei nereikalingas FTP klientas, juk niekas nedraudžia pašalinti šio paketo.
Aišku, viską gal ir galima būtų apkarpyti iki kokių 70-80MB plius mongrelio procesai. Bet apkritai nėra ko tikėtis, kad turint 256MB atminties, super galingas ne “hello world” projektas suksis kaip bitė :)
Nenaudoju jokių valdymo pultų, FTP serverių ir kitokio šlamšto. Front-end’ui naudoju Nginx, mažiems projektams dažniausiai naudoju PostgreSQL. 256MB’uose tada sukasi iki 5 Rails aplikacijų (po vieną mongrel procesą kiekvienai, o Merb aplikacijų galima būtų dar daugiau). Be abejo, čia kalba eina apie visokius blogus ir kitokias kešuojamas ir nedaug resursų reikalaujančias aplikacijas. Tiesa, kronas jas pastoviai perkrovinėja, nes griozdiškesnėse aplikacijose dažnai yra defektų, sukeliančių atminties leak’inimą, o VPS’ai swap’o tai neturi. Rimtoms sistemoms reikia rimto hostingo, kalba tikrai neina apie VPS’ą su 256MB.
Na, yra VPS’ų ir su swapu, pvz Slicehost visų planų swap=2xRAM, kaip priklauso. Aišku, apie kažkokį greitą veikimą, į procesą įsijungus swapinimui, nereikėtų kalbėti, bet situaciją kartais gelbsti.
Tiesa, Sauliau, gal gali pakomentuot PostgreSQL pasirinkimą?
PostgreSQL ryja labai mažai atminties, keletą megabaitų tik, nepalyginimai mažiau nei MySQL. Tiek Rails, tiek Merb adapteriai PostgreSQL duombazei yra pakankamai geri, tad paprastoms aplikacijoms nepajusi jokio skirtumo, išskyrus žymiai mažesni atminties naudojimą.
Super. Kažkodėl buvau susidaręs klaidingą nuomonę (ir neišbandęs to pats), kad PostgreSQL’as imlesnis resursams nei MySQL. Būtinai pabandysiu :-)
Na, norėčiau paprieštarauti Sauliaus išsakytai nuomonei, kas gero iš to, jei DBVS naudoja vos kelis megabaitus atminties? Kokia iš to nauda? Taip DBVS veikia greičiau? Atvirkščiai.
Jei sudiegus PostgreSQL ir MySQL su nustatymais pagal nutylėjimą, PostgreSQL naudos mažiau resursų, tai toli gražu nereiškia, kad MySQL yra imlesnis resursams.
Iš esmės MySQL savo vidiniams reikalams naudoja labai mažai resursų, visi resursai pagrinde yra išskiriami išoriniams uždaviniams. O kiek yra ko išskiriama, priklauso nuo konfigūracijos.
O išoriniai uždaviniai tai užklausų apdorojimas ir pan., o veiks viskas greičiau tuomet, kai kuo daugiau operacijų bus atliekama atmintyje, o ne diske.
Todėl vertinti vienos ar kitos DBVS gerumą pagal sunaudojamą atmintį, manau būtų neobjektyvu.
MySQL su “small” configu man ryja 120MB, norėčiau gauti konfigą, su kuriuo MySQL ryja ne daugiau nei PostgreSQL su standartine konfigūracija, t.y. 16MB. Reiktų pabrėžti, kad čia žmonės kiekvieną megabaitą skaičiuoja, o ne našumu rūpinasi.
Negaliu pasakyti kaip PostgreSQL dirba su atmintimi, bet kas liečia MySQL, vienas pagrindinių atminties sunaudojimą po tarnybos paleidimo lemiančių kintamųjų yra užklausų podėlis (cache). Po tarnybos paleidimo iš karto yra rezervuojamas visas atminties kiekis, kiek nurodo šis kintamasis. Tačiau ši atmintis yra tik rezervuojama tolimesniam naudojimui, realiai MySQL po paleidimo naudoja vos 2-3MB. Visų kitų buferių atmintis rezervuojama tik esant reikalui.
Tikrai norėčiau pamatyt konfigūracinį failą, kuris sumažina MySQL serverio( su aktyvuotu INNODB) naudojamos atmintį kiekį iki bent jau 30MB. Atminties naudojimą gali stebėti “free” komanda.
Tavo nuomonė: