Table of Contents
Blue-green käyttöönotto on julkaisun hallintastrategia, joka vähentää seisokkia ja riskejä käyttämällä kahta samanlaista tuotantoympäristöä.Tämä lähestymistapa mahdollistaa nopean uudelleenvedon ja tarjoaa puhtaan eron vanhan ja uuden koodin välillä. Kun uusi versio sovelluksesta on valmis, se on otettu käyttöön inaktiivisessa ympäristössä, perusteellisesti testattu, ja sitten liikenne siirtyy yli. Tämä lähestymistapa poistaa tarpeen huoltoikkunat, mahdollistaa pikaisen uudelleenvedon ja tarjoaa puhtaan eron vanhan ja uuden koodin välillä. Alun perin suosittu Martin Fowler ja Jez Humble, sinivihreä käyttöönotto on tullut kulmakiveksi nykyaikaisten DevOps käytäntöjä, erityisesti kun ne on liitetty vankat CI/CD putkistot.
Miksi sinivihreä käyttöönotto
Perinteiset käyttöönottomenetelmät - kuten liikkuvan päivityksen tai kanarialinnun julkaisut - altistavat käyttäjät osittain seisonta- tai vajaatoimintaan siirtymisten aikana. Sinisen vihreän käyttöönoton avulla vanha ympäristö pysyy täysin toimintakunnossa, kunnes uusi on tarkistettu. Tämä antaa ryhmille luottamusta ottaa käyttöön usein, jopa operaatiokriittisiin järjestelmiin.
- Nopeus- ja aika-asennuksia [ ei ole, kun sovellusta ei ole saatavilla.
- Välitön peruutus:[ Peru liikenne vanhaan ympäristöön sekunneissa, jos ongelmia ilmenee.
- Erilliset testit tuotannossa:[ Validoidaan uusi versio reaalimaailman olosuhteissa vaikuttamatta käyttäjiin.
- Yksinkertaistetut tietokantojen muuttovirrat:[] Voidaan käsitellä huolellisella schemaversioinnilla ja taaksepäin yhteensopivuutta.
- Parempi tiiminopeus:[ Kehittäjät voivat vapauttaa useammin vähemmän pelolla.
Sinisen vihreän käyttöönoton integrointi CI/CD-putkistoihin
CI/CD-putkistot automatisoivat rakennus-, testi- ja käyttöönottovaiheet. Kun putkisto yhdistetään sinivihreään, siitä tulee ympäristökytkimen orkestraattori. Tyypillinen virtaus näyttää tältä:
- Rakennus ja testi:[ Koodi sitoutuu laukaisemaan rakennuksen. Yksikkötestit, integrointitestit ja turvaskannaukset käynnissä.
- Palvelu aktiiviseen ympäristöön:[ Putkistossa käytetään esinettä ympäristöön, joka ei tällä hetkellä palvele liikennettä (esim. vihreä, jos sininen on aktiivinen).
- Smoke and Acceptance Testit:[ Automatisoitujen testien tarkoituksena on varmistaa toiminnan, suorituskyvyn ja tietojen johdonmukaisuus.
- Siirtoliikenne:[] Lastaustase tai DNS-tietue päivitetään siten, että kaikki käyttäjäliikenne ohjataan uuteen ympäristöön.
- Vähittäisvaltuutus:[ Terveystarkastukset ja seuranta jatkuvat viilenemisajan.
- Siivous (valinnainen):[] Vanha ympäristö joko pidetään takaisinvientikohteena tai tuhoutuu jäähdytyksen jälkeen.
Kahden samanlaisten ympäristöjen luominen
Ympäristön pariteetti on ratkaiseva. Sinisen ja vihreän ympäristön on oltava identtinen laitteistossa, konfiguraatiossa, verkkotopologiassa ja datassa.Käytä infrastruktuuria koodina (IaC) työkaluina kuten Terraform, CloudFormation tai Pulumi, jotta molemmat ympäristöt voidaan toimittaa samasta mallista. Tietokannan kopiointi tulisi perustaa siten, että molemmat ympäristöt jakavat saman aineiston (tai on siirtymästrategia, joka mahdollistaa turvallisen skeeman muutokset).
Tietokannan tarkastelu
Osaamis- ja innovaatioyhteisöt
- Takaisin yhteensopivat siirtymät:[ Käytä muutoksia, jotka toimivat sekä vanhan että uuden koodin kanssa (esim. lisää sarakkeita, mutta älä pudota niitä).
- Replikaatio ja lukea kopiot:[ Osoita molemmat ympäristöt samaan tietokantaan, mutta varmista kirjoittaa tapahtuu vain aktiivisessa ympäristössä.
- Stema-per-environment:[ Eristä tietokannat kunkin ympäristön ja käsitellä synkronointia kanssa migraatiotyökalu.
Flywayn tai Liquibase-laitteen kaltaiset työkalut voivat hallita sinivihreille virroille turvallisia advertisaatioita.
Automatoidaan liikenteenvaihto
Liikennekytkin voidaan toteuttaa kuormataseessa (Layer 7), DNS (Layer 4/7) tai reitittimen tasolla. Pilvilähtöön, palveluihin kuten AWS ALB, Google Cloud Load Balanceriin tai Kubernetes Service+Ingress -palveluun. CI/CD-putkiston pitäisi laukaista kytkin API-puhelujen tai konfiguraatiopäivitysten kautta.
- Terveydentarkastukset:[ Kuorma-auton tasapainottajan on tarkistettava, että uusi ympäristö on terve ennen liikenteen hyväksymistä.
- Kaunis valutus: [ Vanhan ympäristön pitäisi saada lennon aikana tehdyt pyynnöt päätökseen ennen kuin ne poistetaan kiertokulusta.
- Session stability:[ Jos sovelluksesi käyttää tahmeita istuntoja, varmista, että kytkin ei riko käyttäjän kontekstia. Harkitse ulkoisia istuntokauppoja (Redis, Mescached).
Työkalut, jotka yksinkertaistavat sinivihreää CI/CD:llä
Erilaisilla CI/CD-alustoilla ja käyttöönottotyökaluilla on oma tuki sinivihreälle strategialle.
Jenkins Ansible- tai Spinnaker-kankaalla
Jenkins on erittäin joustava. Voit määritellä putkiston vaiheet, jotka kutsuvat Ansible playbooks päivittää kuorman tasapainotin kokoonpanon tai käyttää Spinnakers sisäänrakennettu punainen / musta strategia. Spinaker tarjoaa jopa visuaalisen käyttöliittymän manuaaliseen hyväksyntään ennen kytkintä.
GitLab CI Auto DevOps -toiminnolla
GitLab Auto DevOps sisältää sisäänrakennetun sinivihreän käyttöönottovaiheen. Se luo kaksi käyttöönottoa (sininen ja vihreä) ja palvelun, joka kääntää ...aktiivisenSelector. []GitLab...
GitHub-toiminnot AWS-koodillaOhjeet
AWS CodeDeploy tukee sinivihreää käyttöönottoa natiivisti. GitHub-toimintotyövirta voi työntää koodin S3-kauhalle ja käynnistää sitten CodeDeploy-sovellustarkistuksen. Käyttöönottoryhmä tarjoaa automaattisesti uusia tapauksia, tarkistaa terveyttä ja siirtää liikennettä. [WS-dokumentaatio selittää asetukset[.
Argo Rollouts Kubernetes
Argo Rollouts tarjoaa kehittyneitä käyttöönottostrategioita, kuten sinivihreä. Se integroituu sisäänmenon ohjaimia ja palvelun verkkoja automatisoida liikenteen siirtymistä. Rollbacks ovat ilmaisia ja voidaan käynnistää automaattisesti perustuu metrit. Opi lisää Argo Rollouts[.
Tuotantoa ja työpanosta koskevat parhaat käytännöt
Toteuttaminen sinivihreä on enemmän kuin vain vaihtamalla palvelimia. Välttää yhteisiä sudenkuoppia, noudata näitä parhaita käytäntöjä:
Automatisoi kaiken
Manuaaliset vaiheet tuovat virhe. Koko putkisto rakennuksesta liikenteen vaihtamiseen.Käytä versio-ohjattuja putkimääritelmiä (esim. ., . Jenkinsfile ., .gitlab-ci.yml., työnkulku YAML) ja varmista, että testit suoritetaan automaattisesti kunkin käyttöönoton.
Käytä Ominaisuuslippuja
Yhdistä sinivihreä ja ominaisuus liput irrottaa käyttöönotto julkaisusta. Voit ottaa käyttöön koodin uusia ominaisuuksia piilotettu ja mahdollistaa ne vähitellen kautta lipunhallinta työkaluja (LaunchDarkly, PostHog, Unleash). Tämä välttää tarvetta kääntää koko ympäristö, jos yksi ominaisuus epäonnistuu.
Toteuta kattava testaus
Smoke tests olisi tarkistettava perus HTTP vastauksia, tietokanta liitettävyys, ja kriittinen käyttäjä matkoja. Käytä synteettisiä seurantatyökaluja (esim., Checkly, Datadog Synthetics) tehdä selaimen testejä inaktiivista ympäristöä ennen vaihtoa. Sisällytä kuormitustestaus saalis suorituskykyä regressioita.
Monitori jatkuvasti
Kun kytkin, seurata sovellusmittareita, virheluvut, latenssi, ja liiketoiminnan KPI. Käytä hälytys (PagerDuty, Opsgenie) käynnistää automaattisen uudelleenkäynnistyksen, jos poikkeavuus raja-arvot ylitetään. Esimerkiksi jos 5xx virheet kasvavat 50%, palauttaa liikenteen vanhaan ympäristöön.
Suunnitelma valtion osa-alueita varten
Tiedostolataukset, käyttäjäistuntojen ja työjonojen käsittely on tarpeen. Käytä ulkoista jaettua tallennustilaa (S3, EFS) ja jaettuja välimuistia (Redis, Memcached), joihin molemmat ympäristöt voivat päästä. Jonojen osalta varmista, että viestit eivät mene kytkimen aikana.
Määrittele jäähdytysaika
Kun liikenne on vaihdettu, pitää vanha ympäristö käynnissä tietty aika (esim. 30 minuuttia), jotta nopea paluu, jos hienovarainen vika löytyy. Sen jälkeen voit poistaa sen säästää kustannuksia.
Haasteita ja miten voittaa heidät
Tietokanta Schema Muuttoliike
Suurin haaste on käsitellä tietokantamuutoksia, jotka rikkovat taaksepäin yhteensopivuus. Ratkaisuja ovat:
- Käytä vain lisäaineen migraatioita (lisätään sarakkeita, ei pudoteta niitä).
- Poista vanhat sarakkeet erillisestä, siirtymisen jälkeisestä siirtymästä.
- Poista tietokantamuutokset ennen uutta sovellusversiota, varmistaen vanhan koodin edelleen käynnissä.
Kustannukset
Kaksi samanlaista tuotantoympäristöä kaksinkertaistaa infrastruktuurikustannukset. Mitoitus: käyttää pienempiä tapauksia inaktiivisessa ympäristössä testauksen aikana, tai käyttää konttien jakaminen jakaa taustalla resursseja. Cloud auto-skaalaus voi myös vähentää jätettä.
Istunto ja välimuistin lämpeneminen
Kun liikennekytkimet, välimuistit ovat kylmät. Esilämmitä uusi ympäristö simuloimalla tyypillisiä käyttäjäpyyntöjä ennen vaihtoa. Gatlingin tai k6:n kaltaiset työkalut voivat tuottaa realistisen kuormituksen.
Verkkoasetukset
Palomuurin sääntöjen, DNS-rekistereiden ja SSL-sertifikaatit on oltava identtisiä eri ympäristöissä. Käytä IaC-järjestelmää johdonmukaisuuden varmistamiseksi. Jos käytät DNS-pohjaista kytkentää, ilmoita etenemisaika (TTL).
Real-World Esimerkki: Sähköinen kaupankäyntialusta
Verkkokauppias, jossa on 10 miljoonaa päivittäistä kävijää, tarvitsi ottaa käyttöön uusia ominaisuuksia joka viikko ilman seisokkia. He hyväksyivät sinivihreän käyttöönoton seuraavin järjestelyin:
- Kaksi AWS Auto Scaling-ryhmää (sininen, vihreä) ALB:n takana.
- Terraformi, joka tarjoaa identtisen infrastruktuurin.
- GitLab CI putkisto: rakentaa, testata, käynnistää vihreä, suorittaa Playwright savutestit, sitten käynnistää ALB kohderyhmä kytkin.
- Redis eri ympäristöissä jaetuille istunnoille.
- Tietokannan muutto: taaksepäin yhteensopiva, Flyway.
- Automaattinen peruutus, jos virhetaso > 1% ensimmäisten 5 minuutin aikana.
Tulos: käyttöönottotiheys kasvoi kuukausista viikoittaisiin, jolloin kuuden kuukauden aikana ei ollut seisokkijaksoja.
Päätelmät
Sinisen vihreän käyttöönoton, kun se on integroitu modernin CI/CD-putken kanssa, tarjoaa tehokkaan tavan vapauttaa ohjelmisto turvallisesti ja usein. Se poistaa seisokin, mahdollistaa hetkellisen palautuksen ja antaa insinööreille luottamusta muutosten vauhdittamiseen nopeasti. Vaikka haasteita, kuten tietokantamuuttoja ja infrastruktuurikustannuksia on olemassa, niitä voidaan hallita huolellisella suunnittelulla ja oikealla työkalulla. Automatoimalla koko prosessin ... ympäristön tarjonnasta liikenteen vaihtoon. Joukkueet voivat saavuttaa jatkuvan toimituksen minimaalisella riskillä. Aloita pieni, toteuta todiste konseptista yhdellä palvelulla ja mittakaavalla sieltä. Sinivihreän käyttöönoton investointi maksaa osinkoja pienemmässä tapahtuma-ajassa ja parannettua käyttäjäkokemusta.