Kun toinen perustajamme ja insinööritoverimme Dmitriy Zaporozhets päätti rakentaa GitLabin, hän valitsi Ruby on Railsin, vaikka työskenteli tuolloin pääasiassa PHP:llä. GitHub, GitLabin inspiraation lähde, perustui myös Railsiin, joten se oli looginen valinta ottaen huomioon hänen kiinnostuksensa kyseiseen kehykseen. GitLabin toimitusjohtaja Sid Sijbrandij on sitä mieltä, että hänen toinen perustajansa teki hyvän valinnan:
”Se on toiminut todella hyvin, koska Ruby on Rails -ekosysteemi antaa mahdollisuuden muotoilla paljon toiminnallisuutta laadukkaasti”, hän selitti. ”Jos katsot GitLabia, siinä on valtava määrä toiminnallisuutta. Ohjelmistokehitys on hyvin monimutkaista, ja sen helpottamiseksi tarvitsemme paljon toiminnallisuutta, ja Ruby on Rails on keino tehdä se”. Koska siellä on kaikki nämä parhaat käytännöt, jotka ovat onnellisella tiellä, se on myös tapa pitää koodi yhtenäisenä, kun toimitat jotain GitLabin kaltaista. Sinua tavallaan ohjataan tekemään oikeita asioita.”
Hyödyllisistä helmistä riippuvainen
Rubyn helmillä on olennainen rooli GitLabin rakentamisessa, sillä se lataa Sidin mukaan yli tuhat ei-yksilöllistä gemiä. Hän kutsuu Ruby on Rails -kehystä ”hyvin omapäiseksi” ja pitää sitä vahvana ympäristönä GitLabin kaltaisen monimutkaisen sovelluksen rakentamiselle.
”Ympärillä on loistava ekosysteemi, jossa gemit voivat tehdä oletuksia siitä, miten teet asioita, ja siinä suhteessa Ruby on Rails -ekosysteemi on mielestäni edelleen vertaansa vailla”, hän sanoo. ”Jos katsot meidän Gemfile, se antaa sinulle viitteitä siitä, kuinka suuri torni on riippuvuuksia, joita voimme rakentaa. Ruby on Railsilla on uskomattomat hartiat, joiden varassa seistä, ja GitLabin kehittäminen millä tahansa muulla kehyksellä olisi ollut paljon hitaampaa.”
Haasteiden voittaminen
Ei tämä tarkoita, etteikö GitLabin rakentamisessa Ruby on Railsin avulla olisi ollut haasteita. Suorituskyky on ollut ongelma, jota kehittäjämme ovat pyrkineet parantamaan monin tavoin, kuten kirjoittamalla koodia uudelleen Go-kielellä ja käyttämällä Vue-kehystä. Jälkimmäistä käytetään usein käytettyjen sivujen, kuten ongelmien ja yhdistämispyyntöjen, uudelleenkirjoittamiseen niin, että ne latautuvat nopeammin ja parantavat käyttäjäkokemusta.
Goa käytetään muiden latausaikoihin vaikuttavien ongelmien ratkaisemiseen ja muistin käytön vähentämiseen.
”Ruby optimoitiin kehittäjiä varten, ei sitä varten, että sitä voitaisiin käyttää tuotannossa”, Sid sanoo. ”Niille asioille, joita käytetään paljon ja joiden on oltava hyvin suorituskykyisiä tai joiden on esimerkiksi odotettava hyvin pitkään järjestelmän IO:ta, kirjoitamme ne uudelleen Go:lla … Yritämme edelleen saada GitLabin käyttämään vähemmän muistia. Meidän on siis otettava käyttöön monisäikeistäminen. Kun kehitimme GitLabia, se ei ollut yleistä Ruby on Rails -ekosysteemissä. Nyt se on yleisempää, mutta koska meillä on nyt niin paljon koodia ja niin paljon riippuvuuksia, se tulee olemaan meille pidempi tie päästä siihen. Sen pitäisi auttaa; se ei tee siitä huikean nopeaa, mutta ainakin se käyttää vähemmän muistia.”
Gon lisääminen GitLabin työkalupakkiin johti erillisen Gitaly-nimisen palvelun luomiseen, joka käsittelee kaikki Git-pyynnöt.
Building on GitLab’s mission
Ruby on Railsin kehyksen organisoitu, jäsennelty tyyli sopii yhteen keskeisen tehtävämme kanssa. Koska Rails on virtaviivainen, kuka tahansa voi hypätä GitLabiin ja osallistua, mikä teki siitä Sidille erityisen houkuttelevan alusta alkaen.
”Missiomme on, että jokainen voi osallistua”, hän selittää. ”Koska Ruby on Railsissa on todella paljon mielipiteitä siitä, mitkä osat menevät mihinkin, uusien kehittäjien on paljon helpompi päästä mukaan koodipohjaan, koska tiedät, mihin ihmiset ovat laittaneet tavaroita. Esimerkiksi jokaisessa keittiössä, johon astut sisään, et koskaan tiedä, missä veitset ja lautaset ovat. Mutta Ruby on Railsin kanssa menet keittiöön ja se on aina samassa paikassa, ja haluamme pitää siitä kiinni.
Jokaiseen keittiöön astuessasi et koskaan tiedä, missä veitset ja lautaset sijaitsevat. Mutta Ruby on Railsin kanssa menet keittiöön ja se on aina samassa paikassa, ja haluamme pitää siitä kiinni.”
”Olin todella rohkaistunut, kun avasin projektin ja näin sen ensimmäistä kertaa vuosi sen jälkeen, kun Dmitriy aloitti sen. Avasin sen ja se on idiomaattinen Rails. Hän noudatti kaikkia periaatteita. Hän ei yrittänyt kokeilla jotain villitystä, josta hän oli kiinnostunut. Hän teki siitä tuotantosovelluksen. Dmitriy tarkisti huolellisesti kaikki osuudet varmistaakseen, että ne noudattavat näitä konventioita, ja näin on edelleen. Mielestäni meillä on erittäin hieno koodipohja, jonka päälle muut ihmiset voivat rakentaa. Yksi ala-arvoistamme on tylsät ratkaisut: älä tee mitään hienoa. Näin muut voivat rakentaa sen päälle. Mielestäni olemme onnistuneet siinä todella hyvin … ja olemme todella kiitollisia siitä, että Ruby on ollut meille niin vakaa ekosysteemi, jonka varaan voimme rakentaa.”
Cover image by Elvir K on Unsplash
Vastaa