Architecture Decision Record

Active theme: Light

← Päätöstietueiden esimerkkejä

Microsoft Azure DevOps

Sisällys:

Yhteenveto

Ongelma

Haluamme käyttää devopsia projektiemme rakentamiseen, integrointiin, käyttöönottoon ja isännöintiin. Harkitsemme Microsoft Azure DevOpsia.

  • Haluamme kehittäjäkokemuksen olevan nopea ja luotettava, sekä devopsin käyttöönoton, esim. konfiguroinnin, että jatkuvan käytön, esim. nopeiden koontiaikojen, osalta.

  • Haluamme harkita Microsoft Azuren käyttöä kokonaisuutena projektisovellusten, tietokantojen jne. isännöintiin.

Päätös

Päätettiin Microsoft Azure DevOpsia vastaan.

Tila

Päätetty. Olemme avoimia uudelleenarvioinnille, jos/kun uutta merkittävää tietoa ilmaantuu.

Yksityiskohdat

Oletukset

Kaikki tavanomaiset devops-oletukset, kuten kirjassa Accelerate.

  • Nopeat koonnit auttavat merkittävästi. Tämä nopeuttaa palautesilmukoita.

  • Voimme vaihtaa osia sisään/ulos vaihtoehtoisilta toimittajilta eli saatamme haluta tuoda omat nopeammat koontipalvelimemme tai käyttää omaa valintaamme versionhallintajärjestelmästä tai koordinoida itseisännöidyn jatkuvan integroinnin palvelimen kanssa.

  • Sujuva käytettävyys auttaa merkittävästi kehittäjäkokemuksessa ja sen kautta hienovaraisilla alueilla, kuten johdonmukaisuus, selkeys, tietoturva ja oppimiskäyrän helppous.

  • Kun jokin on rikki tai ongelmallinen, haluamme tehokkaan tavan raportoida ongelmasta. Tämä on erityisen tärkeää kaikkien tietoturvaan liittyvien ongelmien osalta.

Rajoitteet

Ei tiedossa. Azurella on julkaistu sitoumus toimia hyvin ulkoisten työkalujen kanssa.

Kannat

Harkitsimme Microsoft Azure Devopsin käyttöä verrattuna AWS:ään, joka on vakiintunut toimija.

Kokeilimme Azure DevOpsia, Azure Pipelinesia, Azure Repoa ja uuden palvelimen käynnistämistä Azuressa Terraformin kautta.

Kokeilimme tuen saamista Microsoftin edustajilta.

Keräsimme tietoa vertaisilta blogeista ja Hacker Newsista.

Perustelu

Azure DevOps mainostaa erinomaista tarjontaa, mutta ne eivät pidä paikkaansa, eivät toimi hyvin yhdessä, ja tuki on heikkoa.

Omakohtainen kokemuksemme:

  • Azuren käyttöönotto on sotkua käyttöliittymiä, joista osa menee päällekkäin Microsoft-tilien kanssa ja osa ei. Esim. on Azure-kirjautuminen, Microsoft.com-kirjautuminen, Live.com-kirjautuminen jne. ja kaikki ovat samanaikaisesti pelissä.

  • Kohtasimme pienen tietoturvaongelman käyttöönoton aikana emmekä löytäneet ratkaisua. Yritimme monin tavoin raportoida siitä useille Microsoftin edustajille ilman tulosta. Raportoimme siitä onnistuneesti Microsoftin tietoturvalle, joka vastasi, ettei korjaa (won't fix).

  • Dokumentaatio on usein joko väärää tai vanhentunutta. Ainakin osa tästä johtuu Microsoftin heikosta hakukoneesta ja osa heikosta hakukoneoptimoinnista.

  • Terraform-käyttöönotto on hyvin dokumentoitu ja toimii. Terraform-tuki on kuitenkin heikkoa verrattuna AWS:ään, koska Microsoft rakentaa liikesuhteita toimittajien kanssa tehdäkseen ketjutettuja Terraform-käyttöönotto-esimerkkejä.

Vertaisten kokemukset:

  • Tehtyämme oman sokean arviomme etsimme vertaisten kokemuksia. Se, mitä löysimme, vahvisti kokemuksemme.

  • Vertaiset raportoivat lisäongelmista koontiajoissa ja ongelmista tuo-oma-koontipalvelin -vaihtoehdon kanssa. Nämä ongelmat ovat merkittävästi vakavampia kuin käyttöliittymäongelmat, koska koontien tekeminen on koontiputken ydintarkoitus, ja odotamme tekevämme niitä paljon päivässä.

  • Löysimme erinomaista Azure-tiimiläisten osallistumista keskustelualueilla. Kiitos Microsoftille tästä. Olemme erityisen vaikuttuneita Edward Thomsonista, Azure PM:stä ja koodaajasta, hänen osallistumisensa, suorapuheisuutensa ja teknisten selitystensä vuoksi.

Seuraukset

Microsoft Azure DevOpsin valitseminen näyttää todennäköisesti olevan kalliimpaa (~3x) ajassa ja kustannuksissa kuin Azuren valitsematta jättäminen.

Liittyvät

Liittyvät päätökset

Jos valitsemme Azure DevOpsin, on monia liittyviä tarjouksia, mukaan lukien Azure Repo, Azure Pipeline jne. Uskomme, että jos valitsemme Azure Devopsin, tämä voi helpottaa useampien Azuren ominaisuuksien käyttöä tai vaikeuttaa muiden toimittajien ominaisuuksien käyttöä.

Uskomme, että Microsoft ottaa suuria edistysaskelia kehittäjäkokemuksessa, ja näemme Microsoftin tekevän suuria yritysostoja kehittäjätyökaluista (esim. GitHub) ja riippuvuuksista (esim. Citus).

Jos valitsemme Azure DevOpsin, saatamme haluta painottaa Microsoftin yritysostettujen tarjousten valitsemista, ja saatamme haluta lähestyä yritysostettuja tarjouksia suuremmalla huolella/arvioinnilla mahdollisen kudoshylkimisreaktion, esim. henkilöstövaihtuvuusriskin, vuoksi.

Liittyvät vaatimukset

Haluamme koontiaikojen olevan erittäin nopeita. Hyväksymme korkean lisähinnan tästä. Tämä johtuu siitä, että haluamme iteroida erittäin nopeasti.

Haluamme luotettavuuden olevan erittäin korkea. Hyväksymme korkean lisähinnan tästä. Tämä johtuu siitä, että testaamme korkea-arvoisia käyttötapauksia, mukaan lukien rahoitustransaktiot, luottamukselliset transaktiot jne.

Neljä tärkeintä devops-KPI-mittariamme sisältävät keskimääräisen palautumisajan, mikä edellyttää nopeita koonteja ja korkeaa luotettavuutta.

Liittyvät artefaktit

Haluamme koontijärjestelmän tuottavan artefakteja, jotka sopivat käytettäviksi muissa järjestelmissä, kuten Artifactoryssa.

Liittyvät periaatteet

Helposti peruttavissa. Voimme arvioida Azure DevOpsia rinnakkain vakiintuneen AWS:n kanssa.

Huomiot

Microsoft Devops CI: epätyydyttävä seikkailu

https://toxicbakery.github.io/vsts-devops/microsoft-devops-ci/

Blogikirjoitus.

"Ohjelmistokehittäjänä tiedän omakohtaisesti, kuinka vaikeaa on rakentaa laadukkaita tuotteita nopeasti ja halvalla. Se on taiteenlaji, jonka teemme joskus oikein, ja toisinaan se rapistuu joksikin Obaman ajan terveydenhuollon valtionsivuston kaltaiseksi. Hallintamme lopputuotteeseen vaihtelee, ja syy epäonnistumiseen osuu usein väärille ihmisille päätöksentekohierarkiassa. Microsoftin Azure DevOps (aiemmin Visual Studio Team Services) on selvistä hyvistä aikeista huolimatta täydellinen myrsky huonoja päätöksiä ja heikkoa toteutusta."

Hacker News -keskustelun kohokohdat

https://news.ycombinator.com/item?id=18983586

"Käytämme Azure DevOpsia laajasti työpaikallani ja käytettyäni GitHubia, Gitlabia, itseisännöityjä ratkaisuja, Jenkinsiä, TeamCityä... Azure DevOps on aivan viimeisenä."

"Käyttöliittymä on kauhean kömpelö kaikkialla. Pahinta minulle ovat vetopyynnöt (pull request). Uskomattoman vaikeaa työskennellä ihmisten kanssa vetopyynnössä. En voi edes osoittaa "yhtä" tiettyä ongelmaa - meillä se on rikki kaikkialla."

"Azure Devops on jotain, mistä haluan pitää. Käyttöliittymä muuttuu jatkuvasti, mutta ei korjaa pohjimmaisia vikoja, jotka ovat olleet olemassa ikuisuuden."

"Työkalut eivät ole hyvin integroituja, käyttöliittymä on todella hidas, ei ole kojelautanäkymää aktiivisista vetopyynnöistä, koonneista, julkaisuista jne. lempitietovarastoilleni. Koonti-/käyttöönottoajat ovat älyttömän hitaita."

"Yritimme käyttää myös Azure Boardsia (Work Items, Boards, Backlogs jne.). Auts. Se on täydellinen käyttöliittymäsotku irrallisia ideoita. Yhden asian hyvin toteuttamisen sijaan he toteuttivat kaksi tusinaa asiaa kauheasti."

Windows Development MVP

Windows Development MVP täällä. Tuntuu, että minun on kannettava osa vastuusta siitä, etten ole ollut äänekkäämpi näistä ongelmista. Mutta on sanottava, että olen pettynyt kuullessani sinun olevan "yllättynyt" käyttökokemusongelmista. Olen kertonut väellesi käyttökokemuksen olevan kauhea (esim. jo ennen julkaisua) ja kuullut toistuvasti vastauksen "tiedämme, korjaamme sitä". Alan muotoilla palautetta virallisesti ja viedä sen putkien läpi, pysy kuulolla. Olen myös paikallinen (Bellevue) ja tulisin mielelläni käymään ja yrittämään viedä suhteellisen yksinkertaista oss .net/wpf/uwp-sovellustamme putkeen. Epäilen, että se avaa silmämme molemmille.

Joitakin esimerkkejä:

  • Putkea ei voi rakentaa git-tietovarastolle, joka sisältää alimoduuleja

  • Totesin mahdottomaksi muokata PATHia joillekin mukautetuille työkaluille

  • Uuden putken kokemus ei vain ole kovin järkevä, uudet käyttäjät, jotka klikkailevat ympäriinsä, päätyvät lopulta väärään dokumentaatioon.

Edward Thomsonin (Azure PM) yhteenveto

Kirjoitin koodin, joka yhdistää vetopyyntösi. Ohjelmapäällikkö Microsoftilla Azure DevOpsille; aiemmin ohjelmistoinsinööri versionhallintatyökalujen parissa GitHubilla, Microsoftilla, SourceGearilla.

https://www.edwardthomson.com/

libgit2:n yhteisylläpitäjä. https://libgit2.github.io

All Things Git -podcastin, Git-podcastin, yhteisjuontaja. https://www.allthingsgit.com/

Developer Tools Weekly -uutiskirjeen, kehitystyökaluista kertovan uutiskirjeen, kuraattori. https://developertoolsweekly.com/