Sleurm DevOps: Gitist SRE-ni kÔigi peatustega

4-6 septemberil Peterburis toimuvas Selectel'i konverentsisaalis toimub kolmek ĐŽĐœĐ”ĐČine Sleurm DevOps.

Sleurm DevOps: Gitist SRE-ni kÔigi peatustega

Oleme koostanud programmi arvestades, et DevOpsi teoreetilistest töödest ja tööriistade kĂ€siraamatutest saab igaĂŒks ise lugeda. Huvi pakuvad just kogemused ja praktika: selgitused, kuidas teha ja mitte teha, ning jutud, kuidas meie teeme.

Igas ettevĂ”ttes, iga admini vĂ”i arendaja puhul on DevOpsi tase erinev. Ühed kasutavad Git'i valesti, teised rakendavad SRE-d. Kursus on korraldatud nii, et igaĂŒks leiaks midagi asjakohast, mida saaks kohe rakendada.

Alustame Git'ist, seejĂ€rel vaatame rakenduse arendust, koodi ja infrastruktuuri koostööd, ehitame CI/CD, kirjeldame infrastruktuuri koodina (IaC), testime saadud lahendust, seadistame jĂ€lgimise, kogume ja analĂŒĂŒsime logisid, ning lĂ”puks jĂ”uame SRE-ni: muudame usaldusvÀÀrsuse mÔÔdetavaks ja hallatavaks.

Git

Praegu ei kasuta Git'i ainult see, kes eile ostis enda esimese sĂŒle- vĂ”i tahvelarvuti. See on triviaalne ja ĂŒlipopulaarne tööriist, ning ometigi kohtame me sageli selle vale kasutamist: alustades sundpush'ist masterisse ja lĂ”petades failide kopeerimise Git'ist serverisse Ctrl-C, Ctrl-V abil.

RÀÀgime, kuidas ei tohi teha, kuidas tohib teha ja kuidas teevad Southbridge'is.
KÀime lÀbi praktika: Git'i pÔhialused, meeskonnatöö.

Teema nr 1: Git'i töö pÔhialused

  • PĂ”hikommandod git init, commit, add, diff, log, status, pull, push
  • Git flow, harud ja sildid, ĂŒhinemise strateegiad
  • Töötamine mitme kaugrepo'ga

Teema nr 2: Meeskonnatöö Git'iga

  • GitHub flow
  • Fork, remote, pull request
  • Konfliktid, vĂ€ljaanded, uuesti Gitflow ja muud flow'd meeskondadele rakendamiseks

Materjal on korraldatud nii, et adminnid ja arendajad saaksid kohe kÔik praktikaid töösse rakendada.

DevOpsi seisukohalt korralik Git'i kasutamine struktureerib ja automatiseerib arenduse ja haldamise protsesse, vÀlistab mitmed korduvad probleemid, suurendab töö efektiivsust.

DevOps arendaja

Vaatame DevOps'i arendaja silmade lÀbi: kÀivitame kohaliku keskkonna, kirjutame rakenduse, seadistame selle jÀlgimise ja logimise, testime seda kohalikult, korraldame muutujate/saladuste ja teenuste avastamise hoidmise, vaatame jÀlgimist (opentracing).

Teema nr 3: Rakenduse töö arenduse vaatenurgast

  • Kohaliku keskkonna seadistamine: praktilised soovitused
  • Kirjutame mikroteenuse Pythonis (kaasaarvatud testid)
  • Docker-compose kasutamine arenduses

Teema nr 4: Koodi ja infrastruktuuri koostoime

  • Praktika konfiguratsioonide kasutamisel

LÔpuks nÀevad arendajad, kuidas kood peab logisid saatma, kuidas seda testida ja kuidas seda hiljem siluda. Administratorid mÔistavad arendajate vajadusi: milliseid vigu koodis esineb, kuidas korraldada arendajatele testimist ja kuidas ise projekti testida.

Selles etapis lahendatakse DevOps'i peamine ĂŒlesanne: arendajate ja administraatorite vaheliste suhete loomine. See on vĂ”tme samm, et liikuda ĂŒlesannete edasiviimiselt vastutustundlikule koostööle.

Tulemusena suureneb töö kiirus ja kvaliteet.

CI/CD

Kaasaegne automatiseerimine hÔlmab CI/CD-d. Alustame sellest, et vaatame kÀsitsi automatiseerimist: make-failid, git hookid, skriptid. Arutame, millal need tööriistad on ikka veel asjakohased ja millal neid ei tohiks kasutada.

SeejÀrel vaatame kaasaegse CI parimaid praktikaid Gitlabi nÀitel.

Teema nr 5: CI/CD - sissejuhatus automatiseerimisse

  • Sissejuhatus automatiseerimisse
  • Tööriistad (bash, make, gradle)
  • Git-hookide kasutamine protsesside automatiseerimiseks
  • Tööstuslikud tootmisliinid ja nende rakendamine IT-s
  • NĂ€ide 'ĂŒhise' pipeline'i ĂŒlesehitamisest
  • Kaasaegne CI/CD tarkvara: Drone CI, BitBucket Pipelines, Travis jne.

Teema nr 6: CI/CD: Töö Gitlabiga

  • Gitlab CI - kokkuvĂ”te
  • Gitlab Runner, nende tĂŒĂŒbid ja kasutamine
  • Gitlab CI, seadistamise eripĂ€ra, parimad praktikad
  • Gitlab CI etapid
  • Gitlab CI muutujad
  • Kogumine, testimine, juurutamine
  • Teostuse kontroll ja piirangud: only, when
  • Töö artefaktidega
  • Ć abloonid .gitlab-ci.yml failis, tegevuste taaskasutamine erinevates pipeline'i osades
  • Include - sektsioonid
  • Kes centralized gitlab-ci.yml haldamine (ĂŒks fail ja automaatsed push’id teistesse hoidlatestse)

Administratorite ja arendajate koostöö tÔuseb uuele tasemele: administraator kirjutab CI ƥablooni, arendajad muudavad seda, ehitades oma CI iseseisvalt administraatorist.

Arendajate sÔltuvus administraatoritest vÀheneb, kÀsitööde arv vÀheneb, kaob probleem 'ainus inimene, kes teab, kuidas make-failiga töötada'. VÀljaanded toimuvad usaldusvÀÀrselt ja kiiresti.

. See on arusaadav. LĂ”ppude lĂ”puks, just nemad andsid vĂ”imaluse konfigureerida tĂ€ielikult virtuaalne andmekeskus: fĂŒĂŒsilisi servereid, riiuleid, vĂ”rgu komponente ei ole ning kogu infrastruktuuri saab kirjeldada skriptide ja konfiguratsioonifailide abil.

Teema Infrastructure as Code Terraformi nÀitel tutvustab Selecteli pilveadministraator Aleksei Stepanenko. Ta nÀitab, kuidas kiiresti ja automatiseeritult seadistada ja skaleerida servereid, kuidas automaatselt pakendada pilte ning kuidas kasutada konfiguratsioonimalle, et kohe saada seadistatud masinaid.

Inimene, kes on teinud tuhandeid IaC-lahendusi, rÀÀgib, kuidas teha Ôigesti ja kuidas mitte teha.

Selecteli lahendus sobib minimaalse muudatusega Google'i ja Amazoni pilvede jaoks.

Southbridge'i töötaja Nikolai Mesropjan nÀitab Ansible'i nÀitel, kuidas ilma seisakuteta juurutada töötavat rakendust ja kontrollida selle töökorrasolekut.

Kui muuta infrastruktuuri kĂ€sitsi (seada servereid, vajadusel installida teeke ja pakette), peate keskkonna koopia tĂ”stmisel meenutama ja kordama kĂ”iki oma toiminguid. See ĂŒlesanne vĂ”tab kergesti 3-5 pĂ€eva. Töö infrastruktuuriga kui koodiga tagab, et teil on ajakohane keskkonna kirjeldus, mille saate ĂŒles seada minutitega.

Nikolai rÀÀgib, kuidas kirjutada mÀngukavasid, millised vead esinevad ning miks mÔnikord mÀngukavad töötavad aeglaselt vÔi mitte nii, nagu oodati. See on aastatepikkuse kogemuse tulemus IaC rakendamisel Southbridge'is.

Teema №7: Infrastructure as Code

  • IaC: lĂ€henemine infrastruktuurile kui koodile
  • Pilveteenuse pakkujad kui infrastruktuuri tarnijad
  • SĂŒsteemide algatustööriistad, piltide koostamine (packer)
  • IaC Terraformi nĂ€itel
  • Konfiguratsioonide salvestamine, koostöö, rakenduste automatiseerimine
  • Ansible'i mĂ€ngukavade loomise praktika
  • Idempotentsus, deklaratiivsuse
  • IaC Ansible'i nĂ€itel
  • Database as a Code / PostgreSQL'i koormuskatkestustaluvus

Infrastruktuur omandab deklaratiivsuse ja idempotentsuse.
Administraator Ă”pib haldama keerulist infrastruktuuri: kiiresti luua uusi keskkondi, sĂ€ilitada kĂ”igi keskkondade ĂŒhtsus ning nĂ€ha muudatuste ajalugu, mis on kriitilise tĂ€htsusega, kui projekti kallal töötab mitu meeskonda.
Arendaja saab uurida infrastruktuuri, iseseisvalt seadistada endale keskkondi.

Sesse osa boonus – PostgreSQL'i koormuskatkestustaluvate andmebaasi klasside loomine ja seadistamine. Anname teile valmis mĂ€ngukava, mida kasutame Southbridge'is; te seate klastri ĂŒles Ă”ppekeskkonnas ja saate kasutada seda lahendust oma ettevĂ”ttes.

Infrastruktuuri testimine ja jÀlgimine

Automatiseerimine vÔimaldab viga koheselt rakendada tuhandele serverile. Iga muudatuse juures on vajalik testimine. Teisalt nÔuab kÀsitsi testimine nii palju aega, et see nullib automatiseerimise eelised.

NÀitame praktikas, kuidas kirjutada rollide testimist. Tulemusena suudate kirjutada teste oma ettevÔtte jaoks. Ei pea enam meeles pidama tehtud seadeid, vaid kirjeldage neid testides ja kontrollige automaatselt, et kÔik varasemad lahendused ja kiilud on kohas.

SeejÀrel Ôpime automaatselt lisama kÔik uued serverid jÀlgimise alla. Vaatame eraldi infrastruktuuri ja rakenduse jÀlgimist. NÀitame halbu ja hÀid praktikaid.

Teema nr 8: Infrastruktuuri testimine

  • Testimine ja pidev integratsioon koos Molecule'i ja Gitlab CI-ga
  • Vagrant'i kasutamine

Teema nr 9: Infrastruktuuri jÀlgimine Prometheus'ega

  • Miks on jĂ€lgimine vajalik
  • JĂ€lgimise tĂŒĂŒbid
  • Teated jĂ€lgimissĂŒsteemis
  • Kuidas luua tervislik jĂ€lgimissĂŒsteem
  • Inimesele loetavad teated, kĂ”igile
  • Health Check: millele tasub tĂ€helepanu pöörata
  • Automatiseerimine andmete pĂ”hjal jĂ€lgimisest

Vale jĂ€lgimine on jĂ€lgimise puudumine. Äri ei huvita, et internetipoe avaleht on kergesti kĂ€ttesaadav, kui maksevorm annab veateate.

JĂ€lgimise seadistamisel ja probleemide lahendamisel osalevad arendajad ja administraatorid vĂ”rdselt. Traditsiooniliselt lasuvad jĂ€lgimise ĂŒlesanded administraatoritel. Meie kursus nĂ€itab arendajatele, millist rolli nad mĂ€ngivad tĂ”husa jĂ€lgimise loomisel. Administraatorid saavad parimaid praktikaid Southbridge'is. Tulemuseks on, et veebisaidi vĂ”i rakenduse tĂ”rgete ja aeglustuste pĂ”hjustatud kahjude hulk vĂ€heneb kiiresti.

Jaotise boonus: automatiseerimine jÀlgimise alusel. NÀiteks jÀlgimine teatab, et saidile on tekkinud koormus, ja veebiserverite skaleerimine kÀivitub automaatselt.

Logimine

Peamine viga logide haldamisel on see, et administraatorid ja arendajad vaatavad neid otse serverites. Kui teil on rohkem kui ĂŒks server, vĂ”ib see vĂ”tta kaua aega. See ei ole turvaline: arendaja siseneb serverisse, kus ta ei peaks olema.

DevOps nĂ”uab keskset logide kogumist, töötlemist ja analĂŒĂŒsi.

Teema nr 10: Rakenduse logimine ELK-ga

  • PĂ”hikasutused ja vĂ”imalused Elasticis (otsing, salvestamine, skalatsioonifunktsioonid, seadistuse paindlikkus)
  • Kibana ĂŒlevaade (pĂ”hifunktsioonid, pĂ€ringute keel, juhtimine armatuurlaudade, diagrammide loomine)
  • Toodete ĂŒlevaade, mis pĂ”hinevad Elasticus ja nende rakendamine
  • Kogume mÔÔdikud APM-is (rakenduste jĂ€lgimine)
  • TĂ€iendav: Uue toote ĂŒlevaade — SIEM

Selle lĂ€henemise rakendamine muudab logid lihtsaks ja arusaadavaks tööriistaks rakenduse ja infrastruktuuri analĂŒĂŒsimiseks, seadistamiseks ja hÀÀlestamiseks.

SRE

Ja me jÔuame teema juurde, millele Southbridge alles pilku heidab ja mille pÀrast teised esinejad soovivad jÀÀda Slërm'i viimasel pÀeval. Meil on hea meel, et selle lugemist nÔustus ette vÔtma Ivan Kruglov Booking.com-ist.

Projekt elab reaalajas maailmas, kus usaldusvÀÀrsus ei ole kunagi absoluutne ja iga otsus maksab raha.

Mis on SLA keerulise projekti kontekstis? Oletame, kuidas hinnata, et veebisait on saadaval, kuid pildid laaditakse viivitusega. Millised on SLA mÔÔdikud, kust neid vÔtta, kuidas neid koguda?

Kuidas kehtestada SLA? Kuidas neid tÀita?

Teema nr 11: SRE
SLA, SLO, Error Budget mÀÀratlemine ja muud hirmuÀratavad terminid SRE maailmas
SRE: SLI ja SLO jÀlgimise praktika
SRE: Error Budgeti rakendamise praktika
SRE: Katkestuste ja operatiivkoormuse haldamine (apigateway, teenuse mesh, circuit brackers)
Äri soovib SRE-d. Õigemini vĂ€hemalt kĂ”ige lihtsamal tasemel: vĂ”tta varuserver vĂ”i taaskĂ€ivitada varukoopiast? Üks andmebaas vĂ”i klaster? Kas paigaldada DDoS kaitse ennetavalt vĂ”i ainult rĂŒnnaku kĂ€igus?

Direktorile ei piisa jutuajamisest, et "veebisait töötab", kui klient helistab ja teatab, et tellimisvorm ei avane.

SeepÀrast on DevOps-insenerile oluline vÀhemalt pinnapealselt mÔista SRE-d, et rÀÀkida ettevÔtte vajadustest adekvaatselt.

KokkuvÔte

Aja jooksul Slërm DevOps administraatorid ja arendajad Ôpivad:
— Ă”igesti töötama Gitiga;
— korraldama kohalikku arendust;
— seadistama (administraatorid) ja kasutama (arendajad) CI/CD-d;
— töötama infrastruktuuriga nagu koodiga;
— testima infrastruktuuri;
— jĂ€lgima infrastruktuuri ja rakendust;
— seadistama logimist;
— mĂ”istma ja ideaalis — kasutama SRE-d.

Hoolikatele lugejatele — promokoodi habrapost abil 15% soodustus.

Igasuguseid punkte silmas pidades valmistame praktikat ja tööriistu. Nii et iga osaleja saab pÀrast Slörmi tagasi tulles viia oma ettevÔtte jÀrgmisele DevOpsi tasemele.

Ärimaailmas tĂ€hendab see haldamise ja arendamise odavnemist, seisakute vĂ€henemist, suuremat usaldusvÀÀrsust, kiiremat funktsioonide tarnimist ja bugide kĂ”rvaldamist.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster