Ohjelmointi

10 avoimen lähdekoodin projektia, jotka todistavat Google Go: n voiman

Nyt kymmenen vuotta luonnossa Google's Go -ohjelmointikieli on varmasti tehnyt itselleen nimen. Kevyt ja nopeasti koottava Go on herättänyt huomattavaa kiinnostusta anteliaisien kirjastojensa ja abstraktioidensa ansiosta, jotka helpottavat samanaikaisten ja hajautettujen (lue: pilvi) -sovellusten kehittämistä.

Mutta minkä tahansa ohjelmointikielen todellinen menestyksen mittari on projektit, jotka kehittäjät luovat sen avulla. Go on osoittautunut ensimmäiseksi valinnaksi verkkopalvelujen, ohjelmistoinfrastruktuuriprojektien ja kaikenlaisten kompaktien ja tehokkaiden työkalujen nopeaan kehittämiseen.

Tässä on 10 huomionarvoista Go-ohjelmassa kirjoitettua projektia, joista monista on tullut tunnetumpia kuin kieli, jolla ne kirjoitettiin. Kaikki heistä ovat tehneet merkittävän merkin omilla toimialueillaan. Kaikkia täällä esiteltyjä projekteja isännöidään GitHubissa, joten uteliaisilla on helppo kurkistaa Go-koodia, joka saa heidät rasti.

Satamatyöläinen

Sinulla olisi vaikea löytää parempaa menestystarinaa Go: lle kuin Docker. Hieman yli vuoden kuluttua tästä ohjelmistojen säilytysteknologiasta tuli julistaja Go: n soveltuvuudesta laajamittaisiin, hajautettuihin ohjelmistoprojekteihin. Docker-tiimi piti Go: sta, koska se tarjosi joukon etuja: staattinen kokoaminen ilman riippuvuuksia, vahva vakiokirjasto, täydellinen kehitysympäristö ja kyky rakentaa useille arkkitehtuureille vaivattomasti.

Kubernetes

Jos Docker kirjoitetaan Go: ssa, on järkevää, että muut merkittävät pilvipainotteiset konttiprojektit kirjoitettaisiin myös Go: hon. Googlen konttiorkesteriprojekti Kubernetes on Go-projekti, samoin kuin suurin osa Kubernetes-alikomponenteista ja ekosysteemeistä. Tapaus: Erittäin kevyt Kubernetes-spinoff, k3s, ihmisille, jotka tarvitsevat vain Kubernetesin perusteet eikä mitenkään enemmän.

Google harkitsi Kubernetesin kirjoittamista muilla kielillä, mukaan lukien C / C ++, Java ja Python. Mutta Kubernetesin perustajan ja entisen teknisen johtajan, tällä hetkellä VMwaren pääinsinöörin Joe Bedan mukaan mikään näistä kielistä ei osunut "makeaan paikkaan", kuten Go. Kuten Beda sanoi, "Go ei ole liian korkea eikä liian matala."

Fedora CoreOS

CoreOS (nyt Red Hat -hanke) käyttää Dockeria muuttaakseen Linuxin laumaksi löyhästi kytkettyjä kontteja, mikä on mahdollinen tie pois riippuvuuksien sotkeutuneesta viivasta sine qua non Linux-paketinhallinnasta. Ei siis ole mikään yllätys, että CoreOS hyödyntää Dockeria tämän taian saavuttamiseksi - ja että kaksi CoreOS: n peruspalvelua, Etcd ja Fleet, on kirjoitettu Go-kirjassa. Fleet antaa sinun "kohdella CoreOS-klusteriasi ikään kuin sillä olisi yhteinen aloitusjärjestelmä." Etcd, hajautettu avainarvosäilö, hoitaa asetusten synkronoinnin Docker-sovellusten ja CoreOS-ilmentymien välillä. Molemmat kirjoitettiin Go: ssa Go: n "erinomaisen alustojenvälisen tuen, pienten binääritiedostojen ja sen takana olevan suuren yhteisön" takia.

InfluxDB

InfluxDB on "hajautettu aikasarjatietokanta, jossa ei ole ulkoisia riippuvuuksia". Termi "aikasarja" tarkoittaa, että InfluxDB on pääasiassa tarkoitettu mittareiden tai tapahtumien vastaanottamiseen ja niiden analysointiin reaaliajassa. "Ei ulkoisia riippuvuuksia" tarkoittaa, että InfluxDB: n käyttämiseen ei tarvita muita ohjelmistoja; se on täysin itsenäinen (kuten Go-sovellukset yleensä ovat). Tiedot voidaan kirjoittaa tai lukea tietokantaan REST-puheluilla, jotka lähettävät JSON: n, ja kyselyt voidaan tehdä yksinkertaisen SQL-kielen kautta, joka sallii jopa regexes. InfluxDB on erittäin joustava ja vaakasuunnassa skaalautuva, ja todennäköisesti Go valittiin kieleksi näiden ominaisuuksien mahdollistamiseksi ja helpottamiseksi.

Istio

Istio-projekti, joka on osa Kubernetes-universumia, käsittelee ongelmaa, joka on sekä ymmärretty että hoidettu huonosti monissa yrityssovellusympäristöissä: Kuinka käsittelet verkkoyhdistelmää, joka yhdistää palvelusi toisiinsa ja ulkomaailmaan? Istio tarjoaa ohjelmoitavan "palveluverkon" tai verkkopalvelinten kerroksen Kubernetes-klusterin jokaisen säilön välillä sekä näiden konttien ja ulkomaailman välillä, jotta kaikki muutokset verkkoon voidaan tehdä ohjelmallisesti jaetun ohjaustason kautta. Go sopi hyvin tähän, koska Kubernetes kirjoitettiin myös Go: ssa, mutta myös siksi, että Go soveltui hajautettuihin, hajautettuihin verkostoprojekteihin.

Traefik

Toinen Go-ohjelmassa kirjoitettu verkkoon liittyvä projekti on Traefik, verkkopalvelujen käänteinen välityspalvelin ja kuormituksen tasapainottaja. Traefik on suunniteltu toimimaan monenlaisten orkestrointivaihtoehtojen kanssa, Kubernetesista ja Docker Swarmista Amazon ECS: ään ja Azure Service Fabriciin. Traefik luo automaattisesti reitit, joita näiden orkesterien alla kulkevat mikropalvelut tarvitsevat puhuakseen ulkomaailman kanssa. Se tuottaa myös orkesterisi kannalta sopivia jäljitystietoja ja tilastoja.

Hugo

Staattiset sivustogeneraattorit ovat nyt kaikki raivoa. Loppujen lopuksi ne tarjoavat nopean ja kätevän tavan luoda nopea, turvallinen verkkosivusto, jossa on vain staattinen HTML, CSS ja JavaScript. Hugo on staattinen sivustogeneraattori, joka käyttää monia Go-ominaisuuksia hyväksi toimiakseen nopeasti ja sujuvasti - nimittäin Go: n HTML-mallinnustyökalut, sen verkkokirjastot, kansainvälistymistoiminnot ja kyky ottaa käyttöön yhtenä jakelukelpoisena alustana syntyperäisenä binaarina. Kaikkien näiden Go-ominaisuuksien ansiosta Hugo on helppo purkaa, ajaa ja käyttää sivustojen rakentamiseen nopeasti.

Terraform

HashiCorp - jonka perusti Vagrant, Ruby-pohjainen työkalu kehitysympäristöjen hallintaan, hyödynsi Go: n nopeutta ja voimaa rakentaakseen suuremman ja kunnianhimoisemman projektin: Terraform, järjestelmä IT-infrastruktuurin rakentamiseksi tiloihin tai pilveen määritelmätiedostoista muuttuen koodiksi. Kaikki tekemäsi muutokset voidaan siirtää eteenpäin tai taaksepäin, ja saat kattavan selvityksen siitä, mitä tarkalleen tapahtuu - ts. Toteutussuunnitelma -ennen vedot koodisi.

TorakkaDB

Goa käytetään monenlaisten hajautettujen, pilvipohjaisten sovellusten rakentamiseen. CockroachDB, joka on nimetty joustavuudestaan, on hajautettu tietokanta, joka on suunniteltu selviytymään kaikenlaisista onnettomuuksista (jopa palvelinkeskuksen virheistä) ja vastaamaan edelleen SQL-kyselyihisi. CockroachDB on kirjoitettu kokonaan Go-muodossa, lukuun ottamatta C ++: n smidgeniä edistyksellisestä RocksDB-projektista otettuihin suorituskykyyn perustuviin ydintoimintoihin.

Painovoiman teleportti

Go-ohjelmasta on tullut oletuskieli monille verkostoprojekteille ja niihin perustuville loppupään hankkeille. Tapaus: Go: n SSH: n käyttöönotto on itsessään hyödyllinen, ja se toimii Gravitational Teleportin kaltaisten projektien perustana. Painovoiman teleportin avulla käyttäjät voivat käyttää palvelimia turvallisesti kuoren kautta. Se varmistaa tietoturvan kertakirjautumisen kautta, mutta ilman sellaisia ​​hallinnollisia yleiskustannuksia (esim. Avainten hallinta ja kierto) tällaiset asiat yleensä tarvitsevat.