Kriittiseen infrastruktuuriin sopivien työkalujen valinta on vaativa tehtävä. Auttaaksemme sinua tekemään perustellun päätöksen binäärirepositorion hallintajärjestelmistä otimme selvää kolmesta johtavasta ratkaisusta. Miten Artifactory, Nexus ja ProGet siis pärjäävät vertailussa?
Sofus Albertsen
Sofus is a Continuous Delivery Trainer and Consultant in Copenhagen. Before joining Eficode Praqma he was assistant professor on an Applied Science Bachelor program. He flies kites and in the summer he escapes the modern world by spending two weeks in a beach hut without electricity or network coverage.
Vastuuvapauslauseke: Tämän artikkelin ensimmäinen versio julkaistiin syyskuussa 2018. Sen jälkeen on muuttunut paljon. Kävimme kaikki kolme tuotetta perusteellisesti uudelleen läpi päivittääksemme vanhan artikkelin ja sisällyttääksemme siihen nämä muutokset.
Aika, jolloin pystyimme tallentamaan julkaisumme jaettuun asemaan tai julkiselle FTP-palvelimelle ja silti kutsumaan itseämme ammattimaisiksi ohjelmistokehittäjiksi, on ohi. Pystymme hallitsemaan lähdekoodiamme versionhallintajärjestelmillä repository managerien, kuten Bitbucketin tai GitHubin, kypsässä ekosysteemissä. Kun kyse on kuitenkin tuotteistamme eli buildiemme tuotoksista, olemme ymmällämme. Binäärirepository managerit (BRM) parantavat jäljitettävyyttä ylläpitämällä yhtä luotettavaa binäärien lähdettä, ja ne voivat jopa lyhentää läpimenoaikoja poistamalla tarpeettomat buildit.
BRM:ään tallennamme DLL-tiedostot, JAR-tiedostot ja kontti-imaget. BRM voi auttaa hallitsemaan tietoturvaa ja lisenssejä toimimalla välityspalvelimena julkisille paketinhallinnoille, kuten pipille tai apt-getille.
Kokeilu
Mutta minkä niistä valitset? Ja miten teet päätöksen? Lähdimme selvittämään suosituimpien binäärirepository managerien hyviä ja huonoja puolia.
Vertailuumme valitsimme: JFrogin Artifactoryn (v.7.7.3), Sonatypen Nexuksen (v.3.26.1) ja Inedon ProGetin (v.5.3.10).
Kaikkia kehitetään aktiivisesti, ne tukevat useita repository-tyyppejä ja tarjoavat tukipalveluita lisenssin hankinnan yhteydessä.
Päätimme vertailla binäärirepository managereita seuraavien, koko DevOps-kirjon kattavien kriteerien perusteella:
Repositoryt
Joustavuus ja haettavuus
REST API ja työkalut
CI/CD-promotion
Siivous
Käyttäjätunnistautuminen
Käyttäjä- ja käyttöoikeuksien hallinta
Tallennustila
Laajennettavuus
Näin saimme kattavimman perustan voittajan valintaan. Hinnoittelu on jätetty vertailusta tarkoituksella pois, koska maksutavat vaihtelevat suuresti tarjolla olevien ominaisuuksien mukaan. Kokeilu toteutettiin yleisimmässä ympäristössä: yhden noodin kokoonpanossa pro- tai basic-lisenssillä. Tämä kattaa suurimman osan asiakkaillamme näkemistämme käyttötapauksista.
Kokeilulisenssit
Yhtä kaikille sopivaa ratkaisua on harvoin, eivätkä BRM:t ole poikkeus. Kannattaa siis kokeilla jokaista niistä ja nähdä, miten ne sopivat työskentelytapoihisi.
Voit hyödyntää asennusskriptejämme, joista saat tarvittavat tiedot arviointien nopeaan aloittamiseen.
Artifactory
Rekisteröidy heidän verkkosivustollaan kokeilulisenssiä varten, niin saat sen sähköpostiisi. Kokeilujakso kestää 30 päivää, ja sitä voi pidentää ottamalla yhteyttä myyntiin.
Nexus
Artikkelin edellisen päivityksen jälkeen Nexus-tiimi on parantanut kokeiluavainten jakeluaan. Käy vain heidän verkkosivustollaan ja pyydä 14 päivän kokeilujakso. Pian sen jälkeen saat sähköpostiisi ohjeet aloittamiseen.
ProGet
Saat ProGetin kokeilulisenssin osoitteesta https://my.inedo.com. Pyydä verkkokäyttöliittymässä kokeilulisenssiavain. Kokeilujakso kestää 30 päivää.
Voittaja
Artifactory ja ProGet voittavat tämän kategorian niukasti, sillä niiden kokeilujakso on kaksi kertaa pidempi kuin Nexuksella. Lisenssin hankintanopeus oli sama kaikilla kolmella kilpailijalla, ja ne kaikki tarjoavat Docker-imaget nopeaa kokeilua varten.
Dev
Repositoriot
Useiden repositoriotyyppien tuki on tärkeää, jos organisaatiossasi käytetään eri kieliä eri alustoilla. Alla on luettelo kunkin alustan tukemista repositoriotyypeistä. Vertaa niitä tarpeisiisi.
X = kaupallinen tuki C = yhteisötuki U = epävirallinen tuki “()” tarkoittaa tukea viimeisimmän tarkastelun aikana “{}” tarkoittaa epävirallista tukea muiden repositoriotyyppien kautta Vihreä tarkoittaa, että tuki on lisätty viimeisimmän arvioinnin jälkeen
Artifactory | Nexus 3 | ProGet | |
Bower | X | X | X |
Docker | X | X | X |
GitLFS | X | X | |
Maven | X | X | X |
.NET/NuGet | X | X | X |
npm | X | X | X |
PyPi | X | X | X |
Raw | X | X | X |
RubyGems | X | X | X |
RMP (Yum) | X | X | X |
Apt (Debian) | X | X (C) | X |
Conan | X | X (C) | |
CPAN | C | ||
ELPA | C | ||
Helm | X | X (C) | X |
Eclipse P2 | X | X (C) | |
R | X | X (C) | |
Chef | X | C | |
CocoaPods | X | X | |
Go | X | X | |
Gradle | X | {X} | |
Ivy | X | {X} | |
Opkg | X | ||
PHP Composer | X | C | |
Puppet | X | C | |
SBT | X | {X} | |
Vagrant | X | ||
Powershell | X | X | X |
Chocolatey | X | X | X |
Romp | X | ||
VSIX | X | ||
Upack | X | ||
Conda | X | X | |
APK (Alpine Linux) | X | C | |
Android | X | ||
MSBuild | X | ||
Cargo | C |
Lisätietoja saat kunkin toimittajan omalta verkkosivustolta:
Artifactory-tyypit: JFrog Artifactory supports main packages, build tools & CI servers
Nexus-tyypit
Artifactory
Artifactory sisältää valtavan määrän repositorioita heti käyttövalmiina. JFrog ei salli käyttäjien omia repositorioita.
Nexus
Viimeisimmän tarkastelun jälkeen Nexus on päivittänyt viisi yhteisön repositoriotyyppiä virallisesti tuetuiksi. Lisäksi on ilmestynyt viisi uutta yhteisön repositoriotyyppiä, mikä on kasvattanut tuettujen repositorioiden määrää merkittävästi viimeisten kahden vuoden aikana.
ProGet
ProGetissa on vähiten repositoriotyyppejä, eikä omia voi lisätä. On kuitenkin syytä mainita, että yritys tukee uusien tyyppien kehittämistä yhteisön pyynnöstä. Lue lisää täältä.
Voittaja
Edellisessä tarkastelussa Artifactory vei voiton laajan tuettujen repositoriotyyppien valikoimansa ansiosta. Sen jälkeen Nexus on selvästi parantanut suoritustaan, joten tämän kategorian mitali on jaettava näiden kahden kesken.
Artifactory on hieman edellä tuettujen repositoriotyyppien määrässä, mutta Nexus tarjoaa OSGi-rajapinnat, joiden avulla voit tarvittaessa luoda mukautettuja repositoriotyyppejä.
Joustavuus / haettavuus
Kun kaikki binäärisi ovat yhdessä paikassa, artefaktien valtava määrä voi tuntua haastavalta, ja juuri tarvitsemasi artefaktin löytäminen voi olla vaikeaa. Joillakin organisaatioilla on työnkulkuja, joita oletusarvoiset repositorioasettelut eivät tue, joten joustavuus on tärkeä vahvuus.
Artifactory
Artifactoryssa on sisäänrakennettu mukautettujen layoutien konsepti, რომლის avulla voit luoda omia layouteja eri repositoriotyypeille. Jokaisella repositoriolla on tyyppi (Maven, NPM jne.) ja siihen liitetty layout. Ole varovainen käyttäessäsi mukautettuja layouteja, sillä useimmissa asiakaspuolella käytettävissä repositorioteknologioissa (kuten Gradle ja PIP) ei ole ominaisuutta, joka tunnistaisi automaattisesti epästandardin layoutin. Tämä olisi voitu ratkaista, jos Artifactory kääntäisi layoutit lennossa end-pointille, mutta valitettavasti ominaisuutta ei ole toteutettu eikä se ole tulossa pipelineen.
Hakutoimintojen osalta Artifactory tarjoaa monia tapoja löytää tarvittava. Voit hakea käyttöliittymässä suoraan nimen, tarkistussumman, binäärityypin, ominaisuuksien ja muiden tietojen perusteella. Jos haluat yhdistää kaikki mahdolliset hakutavat, voit tehdä kyselyitä Artifactorysta sen omalla kyselykielellä, AQL:llä. Se ei ole käytettävissä käyttöliittymässä, vaan ainoastaan REST API:n ja työkalujen kautta.
Nexus
Nexus ei tarjoa joustavuutta layoutien suhteen, mutta sen avulla voit tehdä deploymenteja layoutin ulkopuolelle. Tällöin artifactit ovat saatavilla vain REST API:n kautta, eivät esimerkiksi Mavenin tai Gradlen kautta.
Käyttöliittymän hakutoiminnot ovat Artifactoryn tasolla: voit käyttää samanaikaisesti useita hakuehtoja nimen, attribuuttien, version ja tarkistussumman perusteella.
Vuodesta 2018 lähtien käytössä on ollut haku-API, joka hyödyntää samoja ominaisuuksia kuin käyttöliittymä. Voit siis hakea ja ladata artifacteja useiden hakuehtojen perusteella. Tämä on suuri etu automaation kannalta.
ProGet
ProGetissa ei ole layoutin käsitettä. Sen sijaan lataat tarvittavat tiedostot ProGetiin, joka sijoittaa ne oikeaan hierarkkiseen järjestykseen repositoriotyypin mukaan. Jos tämä tiukka tapa käsitellä tiedostoja sopii tarpeisiisi, kyseessä on selkeä toteutusratkaisu, joka vähentää monimutkaisuutta.
Hakutoiminto on sidottu tiettyyn repositoriofeediin, joten sinun on tiedettävä, mihin artifactisi on tallennettu ennen kuin voit hakea sen. Testissämme hakukenttä näytti toimivan vain artifactin nimellä.
Voittaja
Artifactory oman kyselykielensä AQL:n ansiosta, Nexuksen seuratessa aivan kannoilla. Sekä Nexus että Artifactory tarjoavat monia hakutapoja ja mahdollisuuden deployata paketteja standardilayoutin ulkopuolelle. ProGet vaikuttaa hakutoimintonsa osalta hyvin rajalliselta ja kehittymättömältä, eikä se tarjoa joustavuutta layoutien suhteen (jos tarvitset sitä).
Käyttö REST API + työkalut
Toimiva verkkokäyttöliittymä on erinomainen ihmisten väliseen käyttöön, mutta modernissa ohjelmistokehitysputkessa suurin osa päivittäisistä toiminnoista suoritetaan putkissa. Vaikka kaikki arvioidut ratkaisut tukevat latauksia Gradlen ja NPM:n kaltaisilla työkaluilla, esimerkiksi repositorioiden luonti ja promootiot eivät vielä kuulu vakiotoimintoihin. Siksi hyvä REST API ja CLI-työkalut päivittäisen työn automatisointiin voivat tuoda tiimillesi paljon arvoa.
Artifactory
Artifactorylla on kattavasti dokumentoitu REST API, johon voit tutustua täällä.
Se kattaa lähes kaikki kuviteltavissa olevat toiminnot arkipäiväisistä tehtävistä, kuten artifactien lataamisesta, käyttäjien päivittämiseen ja reverse proxyjen konfigurointiin. Myös käyttöliittymä hyödyntää APIa laajasti, mikä kertoo työkalun kypsyydestä.
Lisäksi tarjolla on ”jFrog CLI”, sovellus, jolla voit käyttää useita heidän tuotteitaan, myös Artifactorya, jos REST-asiakas ei ole käytettävissä. jFrog CLI tukee muun muassa artifactien lataamista, lataamista palvelimelta, siirtämistä ja kopiointia sekä buildien käsittelyä.
Dotnetin käyttäjille Artifactory tarjoaa jopa esimerkkikäyttötapauksia, joissa työkalu sijoitetaan MSBuild-projektin rinnalle ja komentoja käytetään osana build-prosessia syntyvien artifactien lataamiseen.
Nexus
Kuten aiemmin todettiin, Nexus julkaisi vuonna 2018 uuden ja huomattavasti parannetun API:n. Sen käyttöliittymän hallintaosiossa on Open API -selain sekä Swagger-tiedostot, jotka dokumentoivat järjestelmässä käytössä olevan version ominaisuudet.
Open API -määritys mahdollistaa asiakas- ja palvelintoteutusten automaattisen luonnin useimmilla suosituilla ohjelmointikielillä. APIa hyödyntävien asiakkaiden kirjoittaminen on siis erittäin helppoa, ja määritys tarjoaa kattavan, kieliriippumattoman API-dokumentaation. Tämä on erittäin hyvä ominaisuus.
API tarjoaa endpointit moniin, ellei kaikkiin, Nexuksen ominaisuuksiin. Voit tehdä muutoksia käyttäjiin, repositorioihin, blob-tallennukseen ja muihin toimintoihin. Tämän toteuttamiseen on selvästi käytetty aikaa ja huolellisuutta.
Nexus hyödyntää myös sivutustokenia. Sen sijaan, että palautettaisiin suuri määrä kohteita, palautetaan pienempi joukko, ja token voidaan välittää kyselyn mukana seuraavan sivun palauttamiseksi. Testiemme mukaan assetien listauksen raja on 20 kohdetta, eikä sitä voi muuttaa. Strategian etuna on, että sivutus on helppo toteuttaa, kun rakennat työkaluja API:n päälle, vaikka sivutustapa kannustaakin pitämään datasiirrot maltillisina.
API:n ominaisuuksien laajentamiseksi Nexus tarjoaa endpointin Groovy-skriptien lataamiseen ja suorittamiseen. Vaikka tätä tulisi käyttää tuotannossa äärimmäisen varovasti, mahdollisuus koota dataa lähempänä lähdettä ja lähettää takaisin vain yhteenveto voi säästää paljon kaistanleveyttä. Ominaisuus voidaan myös myöntää erikseen rooleille ja käyttäjille, jotta se on käytettävissä vain todelliseen tarpeeseen. Esimerkkejä skriptiendpointin käyttötapauksista löydät heidän GitHub-repositoriostaan.
Nexus ei virallisesti tarjoa Nexus CLI:tä, vaikka se on julkaissut siitä yrityksen open source -yhteisölle. Valitettavasti näyttää siltä, että viimeisten seitsemän kuukauden aikana ei ole ollut aktiivisuutta.
ProGet
ProGetissä pakettien lataaminen ja feedien käyttö on kuvattu hyvin monimutkaisesti ja hajanaisesti. Tämä tarkoittaa esimerkiksi sitä, että Maven-pakettia ei voi ladata ProGetiin sen API:n kautta. ProGet tarjoaa päätepisteen, mutta Maven-repositorion käyttö täytyy selvittää itse tai abstrahoida kolmannen osapuolen julkaisutyökalulla, kuten Gradlella.
ProGet myöntää avoimesti kirjoittavansa vain minimimäärän dokumentaatiota ja ohjaa etsimään Googlesta ratkaisuja API-ongelmiin. Sanomattakin on selvää, että tämä lähestymistapa on puutteellinen ja sitä tulisi parantaa.
Kun viimeksi tarkastelimme ProGetin API:a, se sisälsi vain Assert Directory API:n ja Package Promotion API:n. Artikkelin edellisen version jälkeen käyttöön on tullut useita uusia päätepisteitä. Nyt API sisältää Feed Management API:n, Repackaging API:n, Connector Health API:n ja Webhook Management API:n. Näiden lisäysten avulla artifacteja voi hallita automaation avulla, mutta käyttöliittymän tarve ei vielä poistu kokonaan, sillä API:sta puuttuvat edelleen User Management -ominaisuudet.
Kirjoitushetkellä ProGet on ilmoittanut, että Security Management API on tulossa pian. Kritiikki on kuitenkin edelleen aiheellista, kunnes API julkaistaan.
ProGetille ei ole saatavilla CLI-työkalua.
Voittaja
Ensimmäisessä versiossa Artifactory julistettiin tämän kategorian voittajaksi, mutta sen jälkeen Nexus on parantanut jokaista osa-aluetta. Open API/Swaggerin hyödyntäminen ja mahdollisuus laajentaa API:a tarvittaessa antavat Nexusille pienen edun Artifactoryyn nähden, mutta ratkaisu on tiukka.
Jos käytät dotnetiä, ProGet on parantunut edelliskerrasta ja tarjoaa enemmän vaihtoehtoja automaatioon. Maven- ja muiden repositoriotyyppien lataamiseen API:n kautta liittyy kuitenkin edelleen haasteita.
CI/CD-promootio
Artifactory
Artifactory on sisällyttänyt buildit toimialamalliinsa ja käyttöliittymäänsä. Yhdessä promootio-ominaisuuden kanssa toimialamalli tarjoaa kattavan jäljitettävyyden siitä, mihin artifactit on aiemmin tallennettu. Promootio-ominaisuutta voi käyttää JFrog CLI:n, RESTin tai Artifactoryn Jenkins Pluginin kautta.
Metadataominaisuudet ovat kypsiä: kaikille artifacteille ja buil deille voi tallentaa sekä yksi- että moniarvoisia ominaisuuksia.
Nexus
Nexus tukee artifactien promootiota ja siirtämistä. Promootio-ominaisuutta voi käyttää vain REST API:n kautta. Siirrettävien repositorioiden täytyy kuitenkin olla samassa blob-storessa (lisätietoja backend-osiosta), jotta siirtotoiminto voidaan suorittaa.
Nexus tukee artifactien taggausta, mutta toiminto vaikutti toimivan tarkoitetusti vain, kun jokaiselle build-työlle käytettiin yksilöllistä tagia. Kohdasimme ongelman, kun taggattuja kohteita siirrettiin repositorioon, jossa oli jo kohteita samalla tagilla. Tämä tarkoittaa, että putkessa ei voi olla useita yksikkötestausvaiheita, jotka promotoivat yksittäisiä artifacteja samalla tagilla. Sonatype ohjeistaa dokumentaatiossaan käyttämään yhtä tagia build-työtä kohden, mutta tällöin osia ei voisi siirtää yksitellen, vaan kaikki buildin artifactit olisi ladattava ja promotoitava kerralla.
ProGet
ProGet ei tue metadataa millään tavalla (lukuun ottamatta nimeä, kuvausta ja versiota). Jos haluat siirtää tai promotoida artifactin repositoriosta toiseen, se on tehtävä REST API:n kautta.
ProGet ei tarjoa jäljitettävyyttä siitä, mihin artifactit on tallennettu. ProGet ei tue artifactien taggausta.
Voittaja
Artifactory voittaa, koska se tarjoaa jäljitettävyyden siitä, mihin artifactit on aiemmin tallennettu.
Tämä perustuu toimialamalliin sisältyvään build-objektiin, jonka avulla haluttujen artifactien siirtäminen on helppoa ja selkeää.
Puhdistus
Säilytysajat
CI/CD-virrassa rakennetaan paljon versioituja binääriartifacteja. Tallennustila voi loppua usein jo hyvin lyhyessä ajassa. On tärkeää hallita hyvin, mitä säilytetään ja mitä poistetaan, jotta tallennustilan käyttö pysyy kohtuullisena. Joillakin toimialoilla on lisäksi vaatimustenmukaisuuteen liittyviä vaatimuksia siitä, mitä artifacteja on oltava saatavilla ja kuinka pitkään. Näissä tapauksissa hyvin määritellyt puhdistuskäytännöt eivät ole vain tärkeitä, vaan välttämättömiä.
Artifactory
Artifactoryssa ei ole sisäänrakennettuja säilytysmekanismeja. Sen sijaan se hyödyntää kyselykieltään AQL:ää artefaktien tunnistamiseen sekä CLI:tä tai RESTiä niiden poistamiseen. Lue lisää.
Tämä tekee siitä hieman muita hankalamman toteuttaa, mutta se tarjoaa huomattavasti enemmän joustavuutta sääntöjen luomiseen ajan tai käytön lisäksi myös hakukyselyiden perusteella. Jos pystyt tekemään kyselyn, voit poistaa sen avulla löytyvät artefaktit.
Nexus
Nexus tarjoaa ajoitettuja siivoustehtäviä kaikille repositoriotyypeilleen. Voit määrittää suodattimen, joka kuvaa, mihin artefakteihin siivouskäytäntöä sovelletaan. Suodatin hyödyntää tiedostojen täsmäytyksessä säännöllisiä lausekkeita ja tukee kriteereinä aikaa, latauksia ja julkaisun tyyppiä.
ProGet
ProGetissa siivous hoidetaan Retention Rules -säännöillä. Niiden avulla voit poistaa artefakteja viimeisimmän käytön, artefaktiversioiden kokonaismäärän tai regex-tyylisten kuvioiden perusteella.
ProGetissa on myös Quotas-toiminto. Voit määrittää, suoritetaanko säännöt joka kerta (ei kiintiötä), kun feed ylittää tietyn koon, vai kun säilytyssääntöä vastaavat artefaktit ylittävät tietyn koon. Kun raja saavutetaan, ProGet pitää kiintiön raja-arvossaan poistamalla tiedostoja.
Viimeksi kritisoimme ProGetia siitä, ettei poistokäytäntöä voinut testata. Tämä kritiikki ei enää päde, sillä ProGetissa on nyt tämä ominaisuus. ProGet tarjoaa myös DryRun-ominaisuuden, jonka avulla voit tehdä testiajoja vaikuttamatta artefakteihin.
Voittaja
Nexusissa on vähiten kypsä käyttöliittymä siivoussääntöjen luomiseen, mutta sen toiminnallisuus on samalla tasolla ProGetin kanssa. ProGetin ratkaisu on kuitenkin intuitiivisempi, mikä auttaa luotaessa käytäntöjä, jotka voivat poistaa artefakteja, joita ei ole tarkoitettu poistettaviksi. Tästä huolimatta Artifactory tarjoaa kehittyneimmän tavan siivoukseen ja on valintamme, vaikka sitä varten täytyykin ajaa erillistä palvelua.
Ylläpito
Käyttäjät ja autentikointi
Kaikilla BRM:illä on oma tietokanta, jossa voit luoda käyttäjiä, ja ne integroituvat useisiin muihin palveluihin. Integraatio Active Directoryyn tai vastaavaan on olennaista yrityksille ja ylläpitäjille, jotka haluavat välttää useita paikkoja käyttäjien lisäämiseen ja poistamiseen.
Artifactory
LDAP; Active Directory; tukee OAuthia GitHubissa, Googlessa, Cloud Foundryssa ja OpenID:ssä; sekä tukee SAML SSO:ta, joten voit määrittää oman palveluntarjoajasi, kuten esimerkiksi salasanojen hallinnan LastPassin tai vastaavan. Huomaa kuitenkin, että GitHub-integraatio toimii vain GitHub Enterprisessa, koska se myöntää kirjautumisoikeuden _kaikille_ instanssin käyttäjille. Tämä tarkoittaa, että kuka tahansa github.com-tilin omistava voi kirjautua sisään, jos valitset tämän vaihtoehdon.
Nexus
LDAP, Atlassian Crowd, SAML ja RUT
ProGet
LDAP, Active Directory ja SAML
Voittaja
Koska LDAP on standardi ja kaikki toteuttavat myös yritysprotokolla SAMLin, kaikki voittavat.
Käyttäjä-, ryhmä- ja roolirajoitukset
Pääsyn rajoittaminen on välttämätön ominaisuus, olipa kyseessä pieni autotalliyritys tai suuri konserni.
Kaikilla kolmella vaihtoehdolla on käyttäjiä, ryhmiä ja rooleja tavalla tai toisella. Siksi arvioinnissamme keskitymme rajoitusten käytettävyyteen sen sijaan, että tarkastelisimme, onko niitä ylipäätään olemassa.
Artifactory
sisältää käyttäjistä, ryhmistä ja oikeuksista koostuvan käyttöoikeusmallin, jossa painottuvat ryhmiin kuuluvat käyttäjät ja ryhmiin liitetyt roolit. Roolit ovat tässä oikeuksia, jotka määrittävät, mitä eri ryhmät ja käyttäjät saavat tehdä repositoriossa: hallita, poistaa/korvata, julkaista/välimuistittaa, kommentoida tai lukea sisältöä.
Nexus
Sen käyttäjä-, ryhmä- ja käyttöoikeusjärjestelmä on yksi kömpelöimmistä ja monimutkaisimmista, joita olen koskaan nähnyt – eikä tämä ole missään nimessä kehu.
Nexusissa on rooleja, mutta niiden lisäksi myös etuoikeuksia. Ongelmana on rooliin lisättävien erilaisten etuoikeuksien suuri määrä. Kun rooliin lisätään satoja erilaisia etuoikeuksia, on lähes mahdotonta hahmottaa, millaisia käyttöoikeuksia tietyn tehtävän suorittamiseen tarvitaan.
Käyttäjät voidaan myös poistaa käytöstä, jolloin he eivät voi kirjautua sisään.
ProGet
ProGetin käyttöoikeusmalli koostuu käyttäjistä, ryhmistä ja tehtävistä, joilla tarkoitetaan käytännössä rooleja. Käyttäjiä voi luoda ilman tehtävien määrittämistä, jolloin oletusarvona on “none” eli anonyymi. Käytettävissä on pieni joukko valmiita tehtäviä globaalin ylläpitäjän, repositorion ylläpitäjän sekä lataus-, poisto- ja latausoikeuksien määrittämiseen. Jos ne eivät vastaa tarpeitasi, voit määrittää uusia.
Voittaja
ProGet ja Artifactory ovat melko samankaltaisia, mutta ProGetilla on pieni etu, sillä se tarjoaa hieman enemmän mahdollisuuksia hallita muita toimintoja, kuten ajastettujen tehtävien tarkastelua ja tunnistetietojen hallintaa. Voittaja on siis ProGet.
Tallennus
Artifactory
Artifactory tukee edelleen eniten ulkoisia tiedostotallennuksia Enterprise-lisenssillä. Viime kerran jälkeen JFrog on tuonut Azure Blob Storage -integraation Pro-lisenssin asiakkaiden saataville versiosta 6.15.0 alkaen.
Jos kuitenkin haluat hyödyntää laajaa valikoimaa saatavilla olevia tallennuksia, tarvitset edelleen Enterprise-lisenssin, joka maksaa kymmenkertaisesti Pro-lisenssiin verrattuna. Artifactory käyttää binäärien deduplikointia hash-arvon perusteella, joten samasta tiedostosta voi olla useita esiintymiä ilman, että tiedostotallennus kasvaa tarpeettomasti.
Nexus
Nexus tarjoaa sekä OSS- että Pro-versioissa kaksi backend-tallennusratkaisua: paikallisen tallennuksen ja S3:n.
Se tukee useita “blob store” -nimisiä tallennustiloja, ja molemmat tallennustyypit voivat olla käytössä samanaikaisesti. Tähän liittyy kuitenkin joitakin rajoituksia. Repository voi olla kerrallaan vain yhdessä tallennuksessa, eikä siirtyminen tallennuksesta toiseen ole helppoa, esimerkiksi paikallisesta tallennuksesta S3-bucketiin. Lisäksi artefakteja voi siirtää vain sellaisten repositoryjen välillä, jotka ovat samassa blob storessa. Varmista siis, että kaikki artefaktin elinkaaren repositoryt ovat samassa tallennuksessa.
Nexus ei tarjoa blobien tai artefaktien deduplikointia, vaikka ominaisuutta pyydettiin jo yli kolme vuotta sitten.
Vuonna 2019 Nexus julkaisi ammattiasiakkailleen uuden GroupBlobStore-tallennustyypin. Ryhmä on käytännössä kokoelma blob storeja, joita käsitellään yhtenä blobina. Blob storejen välillä on kaksi jakelutapaa: ‘Round Robin’ ja ‘Write to first’ – joko vuorotellen kaikkien blobien välillä tai kirjoittamalla vain yhteen tallennukseen.
Sonatype suosittelee ryhmien käyttöä blob-tallennustilan kasvattamiseen useiden laitteiden avulla ja/tai kirjoitus- ja lukutoimintojen jakamiseen useiden blob storejen kesken.
ProGet
ProGet tarjoaa oletuksena paikallisen tallennuksen sekä virallisten laajennusten kautta S3- ja Azure Blob -tallennuksen.
Se tarjoaa myös seitsemänvaiheisen oppaan paikallisten tallennusrepositoryjen siirtämiseen pilveen, mutta ei toiseen suuntaan. ProGet ei myöskään tarjoa blobien tai artefaktien deduplikointia.
Voittaja
Voittajaa on tässä vaikea valita. ProGet on hyvä sellaisenaan, kun taas Nexus voi hyödyntää useiden blob store -toimittajien tallennuksia ja jakaa yhden blob storen usealle laitteelle. Artifactoryn ominaisuuksista saa todellisen hyödyn vasta suurimmalla lisenssillä ja oikealla käyttöönotolla, mutta Azure Blob Storage on nyt saatavilla myös Pro-käyttäjille. Niukka voittaja on ProGet.
Laajennettavuus
Artifactory
Siinä ei ole plugin-markkinapaikkaa, mutta se tarjoaa repositorion, jossa on runsaasti esimerkkejä, vaikka yksittäisten ”user-pluginien” dokumentaation laatu ja syvyys vaihtelevat erittäin paljon. Laajennettavuus toteutuu ”Events”-toiminnolla eli periaatteella ”kun Artifactoryssa tapahtuu jotain, tee tämä”, joten voit periaatteessa tehdä lähes mitä tahansa. Haasteena on kuitenkin se, että useimmiten sinun on itse selvitettävä miten. Lopulta saatat päätyä helpoimpaan vaihtoehtoon: poistat plugin-logiikan ja jätät sen jäljelle muistomerkiksi.
Nexus
Nexuksessa on jonkin verran plugin-tukea ja markkinapaikka. Markkinapaikan käyttöliittymä ei ole erityisen hyvä, mutta siinä voi suodattaa tuotteen ja version mukaan. Nexuksessa käytettävissä on noin 25 pluginia.
Pluginien asennus on manuaalinen prosessi. Pluginit perustuvat OSGi-kontteihin (katso).
Pluginin asentaminen edellyttää Nexus-palvelun pysäyttämistä, XML-konfiguraatiotiedostojen muokkaamista ja pluginin lataamista. Joissain tapauksissa plugin on myös buildattava itse. Prosessi on työläs, ja sitä tulisi pitää pikemminkin koodin injektointina kuin varsinaisena plugin-toiminnallisuutena.
ProGet
ProGet on ainoa, joka tarjoaa varsinaista plugin-toiminnallisuutta, jota kutsutaan laajennuksiksi. Käyttöliittymästä löytyy vain muutamia sisäänrakennetuiksi laajennuksiksi kutsuttuja laajennuksia, jotka voi asentaa yhdellä klikkauksella ja uudelleenkäynnistyksellä. Kaikki saatavilla olevat laajennukset ja niiden asennusohjeet löytyvät täältä. Tällä hetkellä käyttöliittymästä voi asentaa 8 laajennusta, kun verkkosivulla niitä on yhteensä 26. Jos valikoima ei vastaa tarpeitasi, Nexus tarjoaa SDK:n, jonka avulla voit kehittää oman laajennuksesi.
Voittaja
Ylivoimaisesti paras käyttökokemus on ProGetilla, vaikka pluginien valikoima on melko pieni eikä ole juurikaan kasvanut edelliskerran jälkeen. Se vain toimii!
Yhteenveto
Artifactory tukee useimpia repositoriotyyppejä ja tarjoaa hyvän hakutavan oman kyselykielensä AQL:n avulla. JFrog tarjoaa sekä REST API:n että JFrog CLI:n Artifactoryn käyttöön. Ne tukevat eri artifactien Promotion-toiminnallisuutta täydellä jäljitettävyydellä. Siivous hoidetaan AQL:n avulla, mikä tarjoaa erittäin joustavan ja tehokkaan siivousmekanismin. Autentikointi voidaan yhdistää lähes kaikkiin kirjautumispalveluihin, ja käyttörooleja sekä käytäntöjä voi mukauttaa laajasti. Pilvitallennus ei ole enää vain enterprise-ominaisuus. Ainoa heikkous on, ettei laajennettavuus ole yhtä hyvä kuin muissa tuotteissa, kuten ProGetissa ja Nexuksessa.
Nexus on kehittynyt paljon uuden REST API:nsa myötä. Siinä on Open API -määritys ja swagger-tiedostot. Tämä mahdollistaa asiakas- ja palvelinrunkojen koodin generoinnin useimmilla suosituilla ohjelmointikielillä, mikä tekee API:n käytöstä ja laajentamisesta helppoa. Promotion-toiminnallisuus vaikuttaa hieman keskeneräiseltä, sillä artifacteja ei voi siirtää repositorioon, jossa on jo samalla tagilla varustettuja artifacteja. Tallennuksen osalta Nexus on kehittynyt monin tavoin, niin pilvitallennuksen kuin useita blob storeja hyödyntävien ryhmätallennusten osalta.
Koska ProGet tulee .NET-maailmasta, se suhtautuu binääriartifakteihin tiukemmin. Jos voit elää sen suppeamman tuettujen repositorioiden valikoiman kanssa ja käytät artifakteillesi web-keskeistä roll-forward-lähestymistapaa, ProGet vastaa tarpeisiisi.
Suosituksen antaminen ei ole yhtä suoraviivaista kuin tämän artikkelin edellisessä versiossa. Suosittelemme tutustumaan eri tuotteisiin ja niiden tukemiin repositoriotyyppeihin ennen kuin valitset tarpeisiisi ja budjettiisi sopivan ratkaisun.
Jos sinulla on kommentteja, ota meihin yhteyttä.
- DevOps
- CI/CD
Subscribe to our newsletter
Related blogs