Programavimas

10 atvirojo kodo projektų, įrodančių „Google Go“ galią

Dabar 10 metų laukinėje gamtoje „Google’s Go“ programavimo kalba tikrai išgarsėjo. Lengvas ir greitai kompiliuojamas „Go“ sukėlė didelį susidomėjimą dėl savo dosnių bibliotekų ir abstrakcijų, kurios palengvina vienu metu veikiančių ir paskirstytų (skaityti: debesų) programų kūrimą.

Bet tikrasis bet kurios programavimo kalbos sėkmės matas yra projektai, kuriuos kuria kūrėjai. „Go“ pasirodė esanti pirmasis pasirinkimas greitai plėtojant tinklo paslaugas, programinės įrangos infrastruktūros projektus ir kompaktiškus bei galingus visų rūšių įrankius.

Čia yra 10 dėmesio vertų projektų, parašytų „Go“, iš kurių daugelis tapo labiau žinomi nei ta kalba, kuria jie buvo parašyti. Visi jie padarė reikšmingą ženklą savo atitinkamose srityse. Visi čia rodomi projektai yra talpinami „GitHub“, todėl smalsuoliams lengva žvilgtelėti į „Go“ kodą, kuris priverčia juos pažymėti.

Dokeris

Jums būtų sunku rasti geresnę „Go“ sėkmės istoriją nei „Docker“. Per kiek daugiau nei metus ši programinės įrangos talpinimo technologija tapo „Go“ tinkamumo plataus masto, platinamiems programinės įrangos projektams plakatu. „Docker“ komandai patiko „Go“, nes ji pasiūlė daugybę privalumų: statinį kompiliavimą be jokių priklausomybių, tvirtą standartinę biblioteką, pilną kūrimo aplinką ir galimybę kurti daugeliui architektūrų su minimaliu vargu.

Kubernetes

Jei „Docker“ parašyta „Go“, savaime suprantama, kad kiti reikšmingi į debesį orientuoti konteinerių projektai taip pat būtų parašyti „Go“. „Google“ konteinerių orkestravimo projektas „Kubernetes“ yra „Go“ projektas, kaip ir dauguma „Kubernetes“ subkomponentų bei ekosistemos. Šiuo atveju: ypač lengvas „Kubernetes“ spinoffas, k3s, skirtas žmonėms, kuriems reikia tik Kubernetes pagrindų, o ne daugiau.

„Google“ svarstė galimybę rašyti „Kubernetes“ kitomis kalbomis, įskaitant C / C ++, „Java“ ir „Python“. Tačiau, pasak Joe Beda, „Kubernetes“ įkūrėjo ir buvusio techninio vadovo bei šiuo metu pagrindinio „VMware“ inžinieriaus, nė viena iš šių kalbų nepasiekė tokios „saldžios vietos“ kaip „Go“. Kaip sakė Beda, „Go nėra nei per aukštas, nei per žemas lygis“.

„Fedora CoreOS“

„CoreOS“ (dabar „Red Hat“ projektas) naudoja „Docker“, kad „Linux“ paverstų laisvai sujungtų konteinerių banda, galimu keliu toliau nuo susivėlusios priklausomybių sruogos, kuri tapo sine qua non „Linux“ paketų valdymo. Todėl nenuostabu, kad „CoreOS“ pasitelkia „Docker“ šią magiją ir kad dvi pagrindinės „CoreOS“ paslaugos - „Etcd“ ir „Fleet“ - yra parašytos „Go“. „Fleet“ leidžia jums „elgtis su„ CoreOS “grupe taip, lyg ji turėtų bendrą inicijavimo sistemą“. „Etcd“, paskirstyta raktų reikšmių saugykla, vykdo nustatymų sinchronizavimą tarp „Docker“ programų ir „CoreOS“ egzempliorių. Abu jie buvo parašyti „Go“, nes „Go“ puikiai palaiko įvairias platformas, mažus dvejetainius failus ir puikią bendruomenę.

„InfluxDB“

„InfluxDB“ yra „paskirstytų laiko eilučių duomenų bazė be išorinių priklausomybių“. Terminas „laiko eilutė“ reiškia, kad „InfluxDB“ daugiausia susijęs su metrikos ar įvykių priėmimu ir leidimu juos analizuoti realiuoju laiku. „Nėra išorinių priklausomybių“ reiškia, kad norint naudoti „InfluxDB“ nereikia jokios kitos programinės įrangos; tai visiškai savarankiška (kaip būna „Go“ programose). Duomenis galima įrašyti į duomenų bazę arba nuskaityti iš jos naudojant REST skambučius, kurie pateikia JSON, o užklausas galima pateikti naudojant paprastą SQL kalbą, leidžiančią netgi atlikti reguliatyviuosius veiksmus. „InfluxDB“ yra labai elastinga ir horizontaliai keičiama, ir tikėtina, kad „Go“ buvo pasirinkta kaip kalba, kad šios funkcijos būtų įmanomos ir paprastos.

Istio

Projektas „Istio“, kuris yra „Kubernetes“ visatos dalis, sprendžia problemą, kuri yra suprantama ir blogai sprendžiama daugelyje įmonės taikomųjų programų aplinkų: kaip elgiatės su tinklo struktūra, jungiančia jūsų paslaugas viena su kita ir su išoriniu pasauliu? „Istio“ pateikia programuojamą „paslaugų tinklą“ arba tinklo tarpinių serverių sluoksnį tarp kiekvieno „Kubernetes“ grupės konteinerio ir tarp tų konteinerių bei išorinio pasaulio, kad bet kokius to tinklo pakeitimus būtų galima atlikti programiškai per bendrą valdymo plokštumą. „Go“ buvo tinkamas tam, nes „Kubernetes“ taip pat buvo parašyta „Go“, bet ir dėl „Go“ tinkamumo decentralizuotiems, paskirstytiems tinklo projektams.

Traefik

Kitas „Go“ parašytas su tinklu susijęs projektas yra „Traefik“, atvirkštinis tarpinis serveris ir tinklo paslaugų apkrovos balanseris. „Traefik“ sukurtas dirbti su įvairiausiais orkestravimo variantais, pradedant „Kubernetes“ ir „Docker Swarm“, baigiant „Amazon ECS“ ir „Azure Service Fabric“. „Traefik“ automatiškai sukuria maršrutus, reikalingus mikroorganizmams, važiuojantiems tiems orkestratoriams, norint kalbėtis su išoriniu pasauliu. Tai taip pat generuoja jūsų orkestratoriui tinkamą sekimo duomenis ir statistiką.

Hugo

Statinių svetainių generatoriai šiuo metu yra labai įniršę. Galų gale, jie siūlo greitą ir patogų būdą sukurti greitą, saugią svetainę su tik statiniu HTML, CSS ir „JavaScript“. „Hugo“ yra statinis svetainių generatorius, kuris, naudodamasis daugeliu „Go“ funkcijų, veikia greitai ir sklandžiai - būtent „Go“ įrankiai HTML atvaizdavimui, tinklo bibliotekos, internacionalizavimo funkcijos ir galimybė diegti kaip vieną platinamą platformą, kuriai būdingas dvejetainis failas. Visos šios „Go“ funkcijos leidžia „Hugo“ išpakuoti, paleisti ir naudoti greitai kuriant svetaines.

„Terraform“

„HashiCorp“, kurį įkūrė „Vagrant“, „Ruby“ pagrindu sukurto įrankio, skirto vystymo aplinkoms valdyti, kūrėjas, pasitelkdamas „Go“ greitį ir galią sukūrė didesnį ir ambicingesnį projektą: „Terraform“ - IT infrastruktūros statybų patalpose ar debesyse sistemą. apibrėžimo failai paversti kodu. Bet kokius atliktus pakeitimus galima slinkti į priekį ar atgal, ir jūs gausite išsamią informaciją, kas tiksliai įvyks, t. Y., Vykdymo planą.prieš tai jūs pasinaudojate savo kodu.

TarakonasDB

„Go“ naudojama kuriant daug rūšių platinamų debesų programų. „CockroachDB“, taip pavadintas dėl savo atsparumo, yra paskirstyta duomenų bazė, sukurta išgyventi visų rūšių nelaimes (net ir duomenų centro gedimus) ir vis tiek atsakyti į jūsų SQL užklausas. „CockroachDB“ yra parašytas tik „Go“, išskyrus C ++ šimtinę, kad būtų galima atlikti daug funkcijų reikalaujančias pagrindines funkcijas, paimtas iš pirmtako projekto „RocksDB“.

Gravitacinė teleportas

„Go“ tapo numatytąja kalba daugeliui tinklų projektų ir jų pagrindu vykdomiems projektams. Šiuo atveju „Go“ naudingas SSH yra naudingas tokių projektų kaip „Gravitational Teleport“ pagrindas. „Gravitational Teleport“ leidžia vartotojams saugiai pasiekti serverius per apvalkalą. Tai užtikrina saugumą per vieną prisijungimą, tačiau nereikalaujant tokių administracinių išlaidų (pvz., Raktų valdymo ir rotacijos), tokių dalykų paprastai reikia.