Kehittäjien Self-Service käyttöympäristöarkkitehtuuri

Valmis

Kehittäjän omatoiminen käyttökokemus perustuu käsitteiden, mallien ja työkalujen yhdistelmään sekä mukautettuihin, säilytettäviin ja avoimen lähdekoodin tekniikoihin. Tavoitteena on antaa kehittäjille mahdollisuus hallita tehtävien suorittamista ja valmistelua samalla kun säilytetään keskitetty näkyvyys. Pääpainon tulee olla tehtävissä, jotka ovat joko vaivalloisia tai kehittäjille liian monimutkaisia käsiteltäviksi itsenäisesti.

Kehittäjien Self-Service käyttöympäristön komponentit

Kehittäjän omatoiminen perusta koostuu useista keskeisistä osista, jotka toimivat yhdessä kehittäjien työnkulkujen virtaviivaistamiseksi ja automatisoimiseksi. Näitä osia ovat Developer Platform -ohjelmointirajapinnan, Developer Platform Graph, Developer Platform Orchestrator, Developer Platform Providers, sekä Käyttäjäprofiilin ja tiimin metatietojen.

-kehittäjäympäristön ohjelmointirajapinta- toimii keskeisenä vuorovaikutuspisteenä, joka toimii sopimuskäyttöliittymänä käyttökokemusten ja muiden järjestelmien välillä. Kehittäjäympäristön ohjelmointirajapinnan pitäisi mahdollistaa tietojen käyttö ja edistää valmistelutoimia eri käyttöliittymien kautta. Se toimii ensisijaisena todentamis- ja suojaustasona rajoittaen pohjana olevien raaka-ohjelmointirajapintojen käyttöoikeuksia yhdessä vastaavien tietojen ja toimintojen kanssa. Ohjelmointirajapinta hallitsee käyttäjäprofiileja, rooleja ympäristössä ja ensisijaisen tunnistetietopalvelun tunnistetietoja varmistaakseen asianmukaisen käyttöoikeuksien valvonnan.

Kehittäjäympäristön ohjelmointirajapintaa täydennetään Developer Platform Graph. Se on suojattu ja hallittu tietorakenne, joka helpottaa entiteettien ja mallien etsimistä ja liittämistä käyttöympäristössä. Entiteetit koostavat tietoja useista lähteistä, kun taas mallit ohjaavat käyttäjien syötteitä automatisoinnissa.

Developer Platform Graphin avulla voit liittää useiden palveluntarjoajien entiteettejä ja malleja hakukelpoiseen rakenteeseen. Vaikka näiden entiteettien tietoja ei tarvitse tallentaa suoraan kaaviotietokantaan, vuorovaikutukset palveluntarjoajien kanssa voidaan tallentaa välimuistiin tarvittavien metatietojen ohella. Tästä kaaviosta tulee erityisen arvokas, kun työskennellään useiden palveluntarjoajien kanssa käsiteltäessä yleisiä entiteettejä. Ohjelmointirajapinnat voivat olla peräisin esimerkiksi Azuren ohjelmointirajapintakeskuksesta, kun taas käyttöönotot ja ympäristöt voidaan vetää jatkuvista käyttöönottojärjestelmistä. Kaavion käyttäminen toimii käyttäjäkokemuksen kautta yhteisen ohjelmointirajapinnan kautta, ja sen avulla voidaan ottaa käyttöön etsiminen, haku ja hallinto.

Mallipohjaisten toimintojen suorittamiseksi Developer Platform Orchestrator reittejä ja seuraa pyyntöjä sekä tekee yhteistyötä erityisten kehittäjien alustan tarjoajien kanssa, jotka integroituvat jatkotason järjestelmiin. Järjestelejän avulla kehittäjät tai järjestelmät voivat pyytää toimintoja mallien avulla ilman, että toimintoja suoritetaan suoraan. Se koordinoi tehtävämoduulia, työnkulkumoduulia tai muuta välittäjää toimintojen suorittamiseksi. Tämä komponentti on välttämätön omatoimisen palvelun käyttöönoton kannalta, sillä sen avulla kehittäjät voivat käynnistää toimintoja ilman suoria käyttöoikeuksia. Toisin kuin CI/CD, näitä toimintoja ei ole rajoitettu sovelluksen lähdekoodiin. Työnkulkumoottorit, kuten GitHub Actions tai Azure Pipelines, voivat toimia järjestäjina, mutta abstraktio voi olla hyödyllistä tukea eri moduureja ajan mittaan. Joustavuus mahdollistaa moduulien siirtämisen, tukee manuaalisia vaiheita prosesseille, jotka voidaan myöhemmin automatisoida, ja ottaa huomioon muille kuin kehitysrooleille (esimerkiksi maksettavat) suunnatut toiminnot. Lisäksi yksinkertaisemmat tehtävät voidaan hoitaa HTTP-pyyntöjen kautta, mikä välttää monimutkaisten moottoreiden tarpeen.

kehittäjäympäristön palveluntarjoajat hallita entiteettien Luo-, Luku-, Päivitys- ja Poisto (CRUD) -toimintojen logiikkaa sekä toimintopyyntöjen suorittamista, jotka tukevat erilaisia työnkulkuja ja palveluita. Palveluntarjoajat ottavat käyttöön toimintoja ohjelmointirajapintaan laajennettavan palvelumallin avulla. Ne mahdollistavat tärkeimmät ominaisuudet, kuten automaation ja tietojen koostamisen. Tämä malli edistää löysää kytkintä, mikä mahdollistaa uusien toimintojen lisäävän integroinnin ja parantaa ylläpidettävyyttä. Edistämällä sisemmän lähteen mentaliteettia eri tiimit voivat vaikuttaa alustan toiminnallisuuteen ja ylläpitää sitä, mikä minimoi keskustiimien ylläpitotaakan. Vaikka on tärkeää tarkistaa palvelun koodi ja hallita käyttöoikeuksia huolellisesti, tämä laajennusmenetelmä auttaa skaalaamaan kehitystyötä koko organisaatiossa.

Se sisältää myös ominaisuuksia käyttäjäprofiilin ja tiimin metatietojen hallintaan, jotka sitovat yksittäiset ja tiimin tiedot tunnistetietopalvelun isännöimiin tileihin, kuten Microsoft Entra -tunnukseen. Näitä metatietoja käytetään ryhmittelyyn ja käyttöoikeuksien hallintaan kehittäjäympäristön ohjelmointirajapinnassa. Vaikka nämä tiedot voidaan tallentaa Developer Platform Graphiin, niiden erottaminen varmistaa selkeyden.

Kehittäjän omatoiminen perusta on käytettävissä keskitetyn käyttöliittymän/käyttäjäkokemuksen (UI/UX) kautta. Yhtenäisen käyttöoikeuspisteen tarjoaminen virtaviivaistaa vuorovaikutusta kehittäjille helpottaen työnkulkujen ja resurssien käyttöä saumattomasti ja intuitiivisesti.

kaavio, josta näkyy kehittäjän omatoiminen perusta, mukaan lukien palveluntarjoajat, ohjelmointirajapinta, käyttöliittymä ja käyttökokemus

Kehittäjän omatoimista säätiötä ei tarvitse luoda täysin alusta alkaen. Sen sijaan se toimii käsitteellisenä oppaana toiminnoille, joiden tavoitteena on ajan mittaan. Alustavia toteutuksia voidaan yksinkertaistaa käyttämällä olemassa olevia työkaluja, liittymiä tai luokkia, jotta voidaan ottaa huomioon tärkeimmät prioriteetit, jotka on määritetty asiakaspalautteen kautta. Aloittamalla pienestä ja iteroimalla perusta voi kehittyä vastaamaan tehokkaasti uusiin vaatimuksiin.

Avainkehittäjän käyttöympäristön toimittajan käsitteet

Kehittäjien ympäristössä resurssien tehokas hallinta ja orkestrointi perustuu entiteettien käyttöön sekä niiden ominaisuuksiin ja malleihin. Nämä avainkäsitteet tarjoavat rakenteen ja automaation, mikä mahdollistaa saumattoman integroinnin eri palveluntarjoajien välillä ja helpottaa johdonmukaisia työnkulkuja ja hallintoa.

Yhteisöt

Entiteetit ovat avainobjekteja, joita kehittäjän tai järjestelmän on seurattava, päivitettävä, esitettävä tai joihin sen on toimittava sisäisessä kehittäjäympäristössä. Näillä entiteetillä voi olla suhteita toisiinsa. Ne muodostavat kaavion, joka tarjoaa tärkeitä tietoja käyttöympäristöstä. Kehittäjäympäristön palveluntarjoajat voivat tulostaa entiteettejä tukemaan erilaisia keskeisiä ominaisuuksia, kuten ulkoisten resurssien löytämistä, riippuvuusanalyysien suorittamista tai omistajuuden ja ylläpidon tietojen avaamista. Hyvin määritetty palveluntarjoajan käyttöliittymä yksinkertaistaa integrointia, testausta ja käyttöönottoa samalla, kun kehittäjätiimit voivat toimia itsenäisesti.

Yleiset ominaisuudet

Jotta entiteettejä voidaan hallita tehokkaasti, on hyödyllistä määrittää joukko yleisiä ominaisuuksia. Joitakin ehdotettuja ominaisuuksia ovat yksilöllinen tunniste, nimi, alkuperäinen palvelu ja valinnaiset yhteydet käyttäjille, tiimeille tai muille entiteeteille. Nämä ominaisuudet ovat tärkeitä roolipohjaisen käytön hallinnan (RBAC), etsimisen ja tietojen koostamisen kannalta. RBAC:n käyttöönotto alusta alkaen on erittäin tärkeää suojauksen ja käyttöympäristön skaalaamisen kannalta ajan mittaan. Käyttäjä- ja ryhmäyhdistykset ovat erityisen arvokkaita, sillä ne auttavat etsinnässä ja yhteistyössä. Ne mahdollistavat tehokkaan uudelleenkäytön, tuen ja sisäisen hankintaympäristön sisällä.

Yleiset ja palvelukohtaiset entiteetit

Sinun tulee myös määrittää joukko yleisiä, korkean tason normalisoituja entiteettejä, joita useat palveluntarjoajat voivat tulostaa. Näitä voivat olla ympäristöt, resurssit, ohjelmointirajapinnat, säilöt, komponentit ja työkalut. Näiden entiteettien tulee olla käsitteellisiä, ja ne keskittyvät laajaan luokitteluun (kuten ympäristöihin) rakeisten teknisten tietojen (esimerkiksi sisäisen infrastruktuurin) sijasta. Tämä korkean tason näkymä helpottaa tietojen löytämistä ja ottaa käyttöön tietojen koostamisen ajan kuluessa osoittaessasi järjestelmän ulkopuolisia alemman tason tietoja. Lisäksi ympäristösi kehittyessä saatat joutua mukautumaan kasvavaan palveluun liittyvään entiteettityyppien joukkoon, jotta voit vastata erilaisiin käyttötapauksiin.

Malleja

Mallit on suunniteltu sellaisten toimintojen, kuten infrastruktuurin valmistelun, säilön luonnin tai muiden pitkäkestoisten prosessien, ohjaamiseen. Nämä mallit ovat käytettävissä kehittäjäympäristön palveluntarjoajien kautta, ja ne sisältävät yleisiä ominaisuuksia, kuten entiteettiliitoksia ja vaadittuja syötteitä (esimerkiksi resurssien nimiä). Mallit voivat edustaa eri muotoja, kuten IaC (Infrastructure-as-Code) -malleja, sovellusmalleja tai parametrisoituja komentosarjoja. Ne ovat usein palvelukohtaisia, ja niissä on erilaisia esityksiä käytössä olevasta teknologiasta riippuen. Tällaisia esityksiä ovat esimerkiksi Terraform- tai Bicep-mallit, Helm-kaaviot, parametrisoidut GitHub Actions -työnkulut, Azure-putket, yksinkertaiset komentosarjat tai mukautetut muodot, jotka on räätälöity tietyille palveluntarjoajan ekosysteemille.

Vaikka malleja ei tarvitse tallentaa keskitetysti, niiden on oltava käytettävissä palveluntarjoajan kautta yhdenmukaisen käytön varmistamiseksi koko käyttöympäristössä. Ne voivat olla olemassa eri säilöissä, rekistereissä tai luetteloissa käyttötapauksen mukaan. Esimerkiksi GitHub-mallisäilöjä voidaan käyttää sovellusmalleissa, kun taas IaC-mallit voivat sijaita rajoitetussa luettelosäilössä, jota kehittäjät käyttävät epäsuorasti Azuren käyttöönottoympäristöjen kaltaisten työkalujen kautta. Muut IaC-mallit voidaan tallentaa OCI (Open Container Initiative) -artefaktirekisteriin, kuten Helm-kaavioihin. Joissakin tapauksissa malli voi viitata yksinkertaisesti parametrisoituun HTTP-päätepisteeseen.

Käyttöympäristön teknikot tai toimialueasiantuntijat laativat yleensä nämä mallit ja jakavat ne kehitystiimeille uudelleenkäyttöä varten. Mallien keskittäminen järjestelmään helpottaa mallien käyttöä organisaation standardien ja käytäntöjen täytäntöönpanon aikana. Tämä prosessi auttaa säilyttämään hallinnan ja vaatimustenmukaisuuden koko ympäristössä ja samalla antamaan kehittäjille mahdollisuuden työskennellä entistä tehokkaammin.

GitHub Actions alustan tarjoajina

Palvelun toiminnan havainnollistamiseksi huomioidaan GitHub Actions ja Azure Pipelines. Kumpi tahansa niistä voi toimia kehittäjäympäristön tarjoajana käynnistämällä työnkulkuja tai putkia, jotka suoritetaan niiden ohjelmointirajapintojen kautta, kuten GitHub Actions REST -ohjelmointirajapinta tai Azure DevOps Pipeline -ohjelmointirajapinta. Näitä työnkulkuja tai putkia ei tarvitse säilyttää sovelluslähdekoodisäilöissä, jolloin käyttöympäristön teknikot voivat ylläpitää niitä keskeisissä yksityisissä säilöissä. Tässä mallissa kehittäjillä ei ole suoraa pääsyä työnkulkuihin, mutta he voivat käyttää niitä kehittäjäympäristön palveluntarjoajan avulla. Palvelu voi hallita tarvittavia salaisuuksia, kuten tunnistetietoja tai ohjelmointirajapinta-avaimia, integroimalla Azure Key Vaultin kaltaisiin palveluihin. Työnkulkujen suorittamisen aikana palveluntarjoaja seuraa tilaansa käyttämällä GitHub Actionsin webhookeja ja Azure-putkien palveluliitoksia edistymisen seuraamiseksi. Kun työnkulku on valmis, kaikki tuotetut artefaktit, kuten koontiversio- tai käyttöönottotulokset, tallennetaan ja julkaistaan. Nämä artefaktit sekä syöteparametrit ja viittaukset työnkulkuihin voidaan lisätä kehittäjän ympäristön kaavioon. Tämän lähestymistavan ansiosta voit myös käyttää mielivaltaisia CLIs-liitintä joustavasti ja tukea useita erilaisia automaatiotehtäviä ajan mittaan. Lisäksi GitHub Actionsin tai Azure Pipelinesin käyttö tässä kontekstissa on riippumaton niiden perinteisestä roolista CI/CD:ssä, mikä tarjoaa laajemman sovellettavuuden eri prosessien ja mallien hallintaan.

kaavio, josta näkyvät Developer Platform API, Developer Platform Orchestrator ja GitHub Actions Provider.

On olemassa muuntyyppisiä kehittäjäympäristön palveluntarjoajia, jotka voivat käsitellä erilaisia tehtäviä mallien kautta. Lähdekoodin hallinnan toiminnoissa palveluntarjoajat voivat auttaa hallitsemaan Git-tehtäviä, kuten luomaan säilöjä, lähettämään PR:iä tai muita Git-toimintoja ilman yleisiä työnkulkumoottoreita. Infrastruktuurin valmistelua voidaan virtaviivaistaa erillisillä palveluntarjoajilla, kuten Azuren käyttöönottoympäristöillä tai Terraform Cloudilla, keskittyen infrastruktuuri koodina (IaC) -infrastruktuuriin suojauksella ja tehokkuudella. Sovellusrakennepalvelut, kuten Azuren kehittäjien komentorivikäyttöliittymä, tukevat sovelluslähdepuiden luomista ja työntämistä lähdesäilöihin, mikä lisää joustavuutta eri ekosysteemiin. Manuaalisia prosesseja, kuten pull-pyyntöjen (PR:ien) luomista tai muiden kuin kehittäjien työnkulkujen automatisointia, voidaan hallita myös mallipohjaisten palveluntarjoajien kautta, mikä mahdollistaa asteittaisen automaation. Näissä esimerkeissä korostetaan, miten laajennettavuus ja mukautuvuus kehittäjäympäristön tarjoajissa voivat parantaa automaation ominaisuuksia ajan mittaan.