
Alustuseks natuke teooriat. Mis on ?
Lihtsalt öeldes on see dokument, mis on mÔeldud SaaS rakenduste arendamise lihtsustamiseks, aidates arendajatel ja DevOps inseneridel teadlikuks saada probleemidest ja praktikatest, millega nad sageli kokku puutuvad modernsete rakenduste arendamisel.
Dokument on koostatud Heroku platvormi arendajate poolt.
Kaksteistfaktorit metoodikat (The Twelve-Factor App) saab rakendada mis tahes programmeerimiskeeles kirjutatud rakendustele, kasutades kÔiki kombinatsioone vÀlishaldusteenustest (backing services) (andmebaasid, sÔnumijÀrjekorrad, vahemÀlu jne).
LĂŒhidalt metoodika aluseks olevatest teguritest:
- Koodibaas â Ăks koodibaas, mis on jĂ€lgitav versioonikontrollis â mitmed juurutamised
- SĂ”ltuvused â Delegeerige ja isoleerige sĂ”ltuvused selgelt
- Konfiguratsioon â Salvestage konfigureerimine töötamisaja keskkonnas
- VĂ€lishaldusteenused (Backing Services) â Peate kĂ€sitlema vĂ€lishaldusteenuseid (backing services) ĂŒhendatavate ressurssidena
- Kogumine, vabastamine, tĂ€itmine â Eraldage kogumise ja tĂ€itmise etapid rangelt
- Protsessid â KĂ€itage rakendust kui ĂŒhte vĂ”i mitut olekuta protsessi (stateless)
- Pordiseondumine (Port binding) â Eksportige teenuseid portide seondumise kaudu
- Paralleelsus â Skaleerige rakendust protsesside kaudu
- Utiliseeritavus (Disposability) â Maximeerige usaldusvÀÀrsust kiire kĂ€ivitamise ja korrektse sulgemisega
- Rakenduse arenduse/operatsiooni pariteet â Hoidke arenduse, vahepealse ja tootmisjuurutuse keskkonnad vĂ”imalikult sarnased
- Logimine (Logs) â KĂ€sitlege logi kui sĂŒndmuste voogu
- HaldusĂŒlesanded â TĂ€itke haldus-/korrashoiuĂŒlesanded ĂŒhekordsete protsesside kaudu
Rohkem teavet 12 teguri kohta leiate jÀrgmistes allikates:
- â kindlasti lugeda
- â ametlik tĂ”lge
- â vĂ€rske pilk 12 tegurile, et neid tĂ€iustada.
Mis on Blue-Green tellimine?
Blue-Green tellimine on rakenduse tarnimise meetod production nii, et lÔppkasutaja ei nÀe oma nÀgemuses mingeid muutusi. TeisisÔnu, rakenduse juurutamine nulliga seisaku.
Klassikaline BG Deploy skeem nÀeb vÀlja nagu alloleval pildil.

- Alustuseks on 2 fĂŒĂŒsilist serverit, millel on tĂ€iesti sama kood, rakendus, projekt ja seal on ruuter (koormuse tasakaalustaja).
- Ruuter suunab algselt kĂ”ik pĂ€ringud ĂŒhele serveritest (alfa).
- Kui tuleb aeg uuesti versioon vÀlja anda, uuendatakse kogu projekt teisel serveril (sinine), mis ei saada sellel hetkel mingeid pÀringuid.
- PĂ€rast seda, kui kood on sinisel serveril tĂ€ielikult uuendatud, antakse ruuterile kĂ€sk lĂŒlituda rohelisele . Tundub, et sinine server.
- NĂŒĂŒd nĂ€evad kĂ”ik kliendid koodi tööd siniselt servereid.
- Mingil hetkel alfa server teenib varukoopiana, kui juurutus peaks ebaÔnnestuma, ja probleemide korral suunab ruuter kasutajate voolu tagasi sinine serverisse, kus on vana stabiilne versioon, samas kui uus kood saadetakse edasi tÀiendamiseks ja testimiseks. alfa Ja protsessi lÔpus uuendatakse samuti
- serverit. Ja pÀrast selle uuendamist suunab ruuter pÀringute voolu tagasi alfa See kÔik nÀeb vÀlja vÀga hÀsti ja esialgu ei tohiks sellega mingeid probleeme olla. alfa server.
Kuid kuna me elame kaasaegses maailmas, ei sobi fĂŒĂŒsiline lĂŒlitus, nagu klassikalises skeemis, meile. Teave, palun, kinnitage hetkeks, me naaseme selle juurde hiljem.
Halvad ja head nÔuanded
: Allpool on nÀidatud utiliidid / meetodoloogiad, mida kasutan mina, saate kasutada mingeid alternatiive, millel on sarnased funktsioonid.
MĂ€rkusSuurem osa nĂ€idetest kattub mingil mÀÀral veebiarendusega (ĂŒllatus, ĂŒllatus), PHP ja Dockeriga.
Alltoodud punktides on lihtne praktiline kirjeldus, kuidas tegureid teatud nĂ€idetes kasutada, kui soovite rohkem teooriat selle teema kohta, vaadake ĂŒlal linke originaalallikasse.
1. Koodibaas
Kasutage FTP-d ja FileZillat, et ĂŒles laadida faile serveritesse ĂŒksikisikena, Ă€rge hoidke koodi kusagil mujal peale tootmisserveri.
Projektis peab alati olema ĂŒhtne koodibaas, see tĂ€hendab, et kogu kood tuleb ĂŒhest allikast.
Projektis peaks alati olema ĂŒhtne koodibaas, see tĂ€hendab, et kogu kood tuleb ĂŒhest kohast. Git hoidlast. Serverid (production, staging, test1, test2 âŠ) kasutavad koodi ĂŒhise hoidla harudest. Nii saavutame koodi jĂ€rjepidevuse.
2. SÔltuvused
Laadige kĂ”ik raamatukogud kaustadena otse projekti juurkausta. Uuendusi tehke lihtsalt uue koodi ĂŒleslaadimisega praeguse versiooni kausta. Paigaldage kĂ”ik vajalikud utiliidid otse hostiserverisse, kus töötab veel 20 teenust.
Projekt peab alati sisaldama selgelt mÔistetavat sÔltuvuste nimekirja (sÔltuvuste alla mÔistan ka keskkonda). KÔik sÔltuvused peavad olema selgelt mÀÀratletud ja isoleeritud.
NÀiteks vÔtame Composer ja Docker.
Composer â paketihaldur, mis vĂ”imaldab PHP raamatukogude installimist. Composer vĂ”imaldab tĂ€pselt vĂ”i mitte tĂ€pselt mÀÀrata versioone ning neid selgelt mÀÀratleda. Serveril vĂ”ib olla 20 erinevat projekti ja igal ĂŒhel neist on isiklik paketihaldus ja raamatukogud, mis ei sĂ”ltu ĂŒksteisest.
Docker â utiliit, mis vĂ”imaldab mÀÀrata ja isoleerida keskkonda, kus rakendus töötab. Vastavalt, nagu ka composeriga, saame paremini mÀÀratleda, millega rakendus töötab. Valida teatud versioon PHP-st, paigaldada ainult projekti töötamiseks vajalikud paketid, mitte midagi liigset lisamata. Ja mis kĂ”ige tĂ€htsam, mitte segada hostiserveri ja teiste projektide pakette ja keskkonda. See tĂ€hendab, et kĂ”ik serveris töötavad projektid Docker'i kaudu vĂ”ivad kasutada tĂ€iesti erinevaid pakette ja tĂ€iesti erinevat keskkonda.
3. Konfiguratsioon
Hoia konfiguraatoreid konstantidena otse koodis. Erinevad konstantid testserveri jaoks, erinevad tootmise jaoks. Siduge rakenduse töö keskkonna jÀrgi otse projekti Àrilogikas if else konstruktsioonide abil.
Konfiguratsioonid â see on ainus, millega projekti rakendused (deployment) peaksid eristuma. Ideaalis peaks konfiguratsioon edastatama keskkonnamuutujate (env vars) kaudu.
Seega isegi kui hoiate mitu konfigureerimisfaili .config.prod .config.local ja nimetate need deployimise hetkel ĂŒmber .config (peamine konfig, millest rakendus andmeid loeb) - see ei ole Ă”ige lĂ€henemine, kuna antud juhul on konfigureerimise teave kĂ”igile rakenduse arendajatele kergesti kĂ€ttesaadav ja tootmiserveri andmed vĂ”ivad olla ohustatud. KĂ”ik konfigureerimised peavad olema salvestatud otse töödegevussĂŒsteemi (CI/CD) ja genereeritud erinevate keskkondade jaoks erinevate vÀÀrtustega, mis on vajalikud konkreetse keskkonna jaoks just deployimise hetkel.
4. Kolmandad teenused (Backing Services)
Seotage tugevalt keskkonnaga, kasutage erinevaid ĂŒhendusi samadele teenustele teatud keskkondades.
Tegelikult kattub see punkt tugevalt konfigureerimispunktiga, kuna ilma selle punktita ei ole vĂ”imalik luua korralikke konfigureerimisandmeid ja ĂŒldse vĂ”imalust konfigureerimist ei ole.
KĂ”ik ĂŒhendused vĂ€liste teenustega, nagu jĂ€rjekorra serverid, andmebaasid, vahemĂ€lu teenused, peavad olema ĂŒhtsed nii kohalikus keskkonnas kui ka vĂ€lises / tootmis keskkonnas. TeisisĂ”nu, ma vĂ”in igal hetkel ĂŒhenduse stringi muutes asendada pĂ€ringud andmebaas #1 andmebaas #2-ga ilma rakenduskoodi muutmata. VĂ”i et mitte liiga kaugele minna, nĂ€iteks tuleb see, et teenuse skaleerimisel ei pea te tĂ€iendava vahemĂ€lu serveri jaoks ĂŒhendust mingil erilisel viisil nĂ€itama.
5. Kogumine, vÀljaandmine, tÀitmine
Olge serveris ainult lĂ”ppversiooniga kood, ilma vĂ”imaluseta tagasi relisi tagasi pöörduda. Ărge tĂ€itke kettaruumi. Kes arvab, et vĂ”ib tootmisse lasta viga sisaldava koodi, see on halb programmeerija!
KÔik deployimise etapid peavad olema omavahel eraldatud.
Olge vĂ”imalus tagasi pöörduda. Tehke vĂ€ljaanded, hoides kiirelt juurdepÀÀsetavaid vanu koopiaid rakendusest (juba koostatud ja valmis lahinguks), et vigade korral taastada vana versioon. Seega tinglikult on olemas kaust releases ja kaust current, ja pĂ€rast edukat deployâd ja koostamist seondub kaust current symbolilise lingiga uue vĂ€ljaandega, mis asub sees releases tinglikult versiooninumbri nimega.
Siin tuletame meelde Blue-Green deploymente, mis vÔimaldab mitte ainult koodi vahel vahetada, vaid ka vahetada kÔiki ressursse ja isegi keskkondi tagasi kerimise vÔimalusega.
6. Protsessid
Hoidke rakenduse olekuandmeid otse rakenduses enda sees. Kasutage rakenduse mĂ€lu seansse. Kasutage vĂ”imalikult palju teenuste vahel jagatavaid andmeid. Siduge ennast sellega, et rakendusel vĂ”ib olla ainult ĂŒks protsess ja Ă€rge lubage skaleerimist.
Seoste osas hoidke andmeid ainult kolmandate osapoolte hallatavas vahemĂ€lus (memcached, redis), nii et isegi kui teil on kĂ€imas 20 rakenduse protsessi, vĂ”ib ĂŒkskĂ”ik milline neist vahemĂ€lu poole pöördudes jĂ€tkata tööd kliendiga samas olekus, milles kasutaja rakendusega töötas teises protsessis. Sellise lĂ€henemisega töötab kĂ”ik sujuvalt ja ilma probleemideta andmete juurde pÀÀsemisel, olenemata sellest, kui palju kolmandate osapoolte teenuseid kasutate.
7. Portide sidumine (Port binding)
Kolmandate osapoolte teenuseid peab tundma ainult veebiserver. Veel parem on tĂ”sta kolmandate osapoolte teenuseid otse veebiserveris ĂŒles. NĂ€iteks nagu PHP moodul Apache's.
KĂIK teie teenused peavad olema ĂŒksteisele kergesti kĂ€ttesaadavad, helistades mĂ”nele aadressile ja pordile (localgost:5432, localhost:3000, nginx:80, php-fpm:9000), see tĂ€hendab, et nginxist pÀÀsen nii php-fpm'ile kui postgres'ile, ning php-fpm'ist postgres'ile ja nginx'ile, ning ĂŒldiselt saan iga teenuse kaudu juurde pÀÀseda teisele teenusele. Niisiis, teenuse elujĂ”ud ei sĂ”ltu teisest teenusest.
8. Paralellism
Töötage ĂŒhe protsessiga, et mitmed protsessid ĂŒksteisega hĂ€sti ei sobiks!
JÀtke skaleerimise vÔimalus. Docker Swarm sobib selleks suurepÀraselt.
Docker Swarm on tööriist, mis vĂ”imaldab luua ja hallata konteinerikliastreid nii erinevate masinate vahel kui ka palju konteinerite ĂŒhe masina peal.
Kasutades swarm'i, saan mÀÀrata, kui palju ressursse ma iga protsessi jaoks eraldan ja kui palju sama teenuse protsesse ma kÀitan, ning sisemine tasakaalustaja, vÔttes andmeid mÀÀratud portilt, suunab need automaatselt protsessidele. Seega, nÀhes, et serveri koormus on kasvanud, vÔin lisada rohkem protsesse, vÀhendades seelÀbi teatud protsesside koormust.
9. Utiliseeritavus (Disposability)
Ărge kasutage jĂ€rjekordi protsesside ja andmete töötlemiseks. Ăhe protsessi lĂ”petamine peaks mĂ”jutama kogu rakenduse tööd. Kui ĂŒks teenus kukub, kukub kĂ”ik.
Iga protsess ja teenus vĂ”ivad olla igal ajal vĂ€lja lĂŒlitatud ning see ei tohiks mĂ”jutada teisi teenuseid (jutt ei ole sellest, et teenus ei ole kergesti teistele teenustele kĂ€tte saadav, vaid et teine teenus ei lĂŒlitu vĂ€lja selle taga). KĂ”ik protsessid peaksid lĂ”petama pehmelt, nii et nende lĂ”petamisel ei kahjustata andmeid ja jĂ€rgmine kord, kui sĂŒsteem sisse lĂŒlitub, töötab see korrektselt. Seega ei tohi isegi eriolukordade lĂ”petamisel andmed kannatada, (siia sobib tehingute mehhanism, andmebaasi pĂ€ringud töötavad ainult gruppide kaupa ja kui ĂŒkski pĂ€ring grupi seest ei Ă”nnestunud vĂ”i Ă”nnestus vea tĂ”ttu, siis ei soorita tegelikult ĂŒhtegi teist pĂ€ringut grupist).
10. Arenduse/töö rakenduse paaritunne
Prodaktsioon, stseen ja kohalik versioon rakendusest peaksid olema erinevad. Prodaktsioonis on meil raamistik Yii Lite, aga kohalikult Yii, et tootmisprotsess kÀiks kiiremini!
Tegelikult peaks kĂ”ik juurutamised ja koodiga töötamine toimuma peaaegu identsetes keskkondades (jutt ei ole fĂŒĂŒsilisest riistvarast). Samuti peab igal arendaja töötajal olema vĂ”imalus vajadusel kood produktsioonis juurutada, mitte mingil erikoolitatud devops osakonnal, mis vaid erilise vĂ”ime tĂ”ttu suudab rakenduse produktsioonis ĂŒles tĂ”sta.
Selles aitab meid samuti Docker. Kui kĂ”ik eelnevad punktid on tĂ€idetud, toob Docker keskkonna juurutamise protsessi nii tootmises kui ka kohalikul masinal ĂŒhe-kahte kĂ€su sisestamiseni.
11. Logimine (Logs)
Kirjutame logid failidesse ja andmebaasi! Failide ja andmebaasi logisid ei puhastata. Ostame lihtsalt 9000 Petabaiti kÔvaketta ja on kÔik.
KĂ”iki logisid tuleks kĂ€sitleda kui sĂŒndmuste voogu. Rakendus ei tohi logide töötlemisega tegeleda. Logid peaksid kas ilmuma stdout-sse vĂ”i olema saadetavad protokolli kaudu nagu udp, et rakendusele ei tekiks logide töötlemisest probleeme. Selle jaoks sobib vĂ€ga hĂ€sti graylog. Graylog, mis vĂ”tab vastu kĂ”ik logid udp kaudu (selle protokolli puhul ei ole vajalik oodata kinnitust paketi edukast vastuvĂ”tmisest), ei sega rakendust mingil viisil ning tegeleb ainult logide struktureerimise ja töötlemisega. Rakenduse loogika ei muutu sarnaste lĂ€henemiste kasutamise korral.
12. Administratiivsed ĂŒlesanded
Andmete, andmebaasi jne vÀrskendamiseks kasutage eraldi loodud lÔpp-punkti API-s, mille kahe korda jÀrjestikune tÀitmine vÔib pÔhjustada andmete dubleerimist. Kuid te ei ole ju lollid, et vajutada kaks korda, ega me vajame migreerimisi.
KĂ”ik administratiivsed ĂŒlesanded peavad toimuma samas keskkonnas nagu kogu kood, versioonide tasemel. See tĂ€hendab, et kui me peame andmebaasi struktuuri muutma, siis me ei tee seda kĂ€sitsi, muutes veergude nimesid ja lisades uusi visuaalsete andmebaasi haldustööriistade kaudu. Selliste asjade jaoks loome eraldi skriptid â migreerimised, mis teostatakse kĂ”ikjal ja kĂ”igis keskkondades sama tulemuse saavutamiseks. KĂ”ikide teiste ĂŒlesannete jaoks, nĂ€iteks projekti andmete tĂ€itmiseks, tuleks rakendada sarnaseid meetodoloogiaid.
PHP, Laravel, Laradock, Docker-Compose nÀidisrakendus
P.S. KÔik nÀited on tehtud MacOS-il. Suurem osa neist sobib ka Linuxile. Windowsi kasutajad, palun andke andeks, aga ma ei ole Windowsiga pikka aega töötanud.
Kujutame ette olukorda, kus meie PC-s ei ole ĂŒhtegi PHP versiooni ega ĂŒldse midagi.
Paigaldame dockerit ja docker-compose'i uusimad versioonid. (seda saab leida internetist)
docker -v &&
docker-compose -v

1. Paigaldame
git clone https://github.com/Laradock/laradock.git &&
ls

Laradocki kohta vĂ”in öelda, et see on vĂ€ga hea asi, milles on kogutud palju konteinerit ja abivahendeid. Kuid kasutada Laradocki tootmisversioonis muutmata kujul â ma ei soovitaks selle ĂŒlemÀÀrasuse tĂ”ttu. Paremini on luua oma konteinerid, tuginedes Laradocki nĂ€idetele, sest niimoodi on optimeerimine vĂ”imalik, kuna keegi ei vaja kĂ”ike, mis seal on, korraga.
2. Konfigureerime Laradocki oma rakenduse tööde jaoks.
cd laradock &&
cp env-example .env

2.1. Avame habr kataloog (vanemapakk, kuhu laradock on kloonitud) mÔnes redaktoris. (Minu puhul PHPStorm)
Nendel etappidel paneme ainult projekti nime.

2.2. KÀivitame workspace'i pildi. (Teie puhul pildid ehitatakse mÔnda aega)
Workspace on spetsiaalselt ette valmistatud pilt raamistiku jaoks arendaja nime alt.
Siseneme konteinerisse jÀrgmise abil
docker-compose up -d workspace &&
docker-compose exec workspace bash

2.3. Installime Laravel'i
composer create-project --prefer-dist laravel/laravel application 
2.4. PÀrast installimist kontrollime, kas projekti kataloog on loodud, ja lÔpetame compose'i.
ls
exit
docker-compose down

2.5. Naaseme tagasi PHPStormi ning seame Ôigesti teed meie laravel rakenduse .env failis.

3. Lisame kogu koodi Git-i.
Selleks loome GitHubis (vÔi kusagil mujal) repositooriumi. Liigume terminalis habr katalooge ja tÀidame jÀrgmise koodi.
echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "esimene commit"
git remote add origin git@github.com:nzulfigarov/habr-12factor.git # siia tuleb teie repo link
git push -u origin master
git status
Kontrollime, kas kÔik on korras.

Mugavuse huvides soovitan kasutada mÔnda visuaalset liidest Git-i jaoks, minu puhul on see . (siin on suunamislink)
4. KĂ€ivitame!
Enne kÀivitamist veenduge, et 80 ja 443 pordil ei oleks midagi avatud.
docker-compose up -d nginx php-fpm 
Seega koosneb meie projekt 3 eraldi teenusest:
- nginx â veebiserver
- php-fpm â php veebiserverilt saadud pĂ€ringute vastuvĂ”tmiseks
- workspace â php arendaja jaoks
Praeguseks oleme saavutanud, et oleme loonud rakenduse, mis vastab juba 4 punktile 12-st, nimelt:
1. Koodibaas â kogu kood asub ĂŒhes repositooriumis (vĂ€ike mĂ€rkus: vĂ”ib-olla oleks Ă”igem tuua docker laraveli projekti, kuid see ei ole pĂ”himĂ”tteline).
2. SĂ”ltuvused â KĂ”ik meie sĂ”ltuvused on selgelt kirjas application/composer.json failis ja igas konteineri Dockerfile'is.
3. VĂ€lishaldusteenused (Backing Services) â Iga teenus (php-fpm, nginx, workspace) elab oma elu ning on vĂ€ljastpoolt ĂŒhendatud, ja kui töötame ĂŒhe teenusega, ei mĂ”juta see teist.
4. Protsessid â iga teenus on ĂŒks protsess. Iga teenus ei hoia sisemist seisundit.
5. Pordiseondumine (Port binding)
docker ps

Nagu nÀeme, on iga teenus kÀivitunud oma porti peal ja on saadaval kÔigile muudele teenustele.
6. Paralleelsus
Docker vÔimaldab meil tÔsta mitu protsessi sama teenuse jaoks automaatse koormuse tasakaalustamisega nende vahel.
LĂ”petame konteinerid ja kĂ€ivitame need uuesti lipu kaudu. âscale
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm

Nagu me nÀeme, on php-fpm konteinerite koopiad loodud. Me ei pea selle konteineri töös midagi muutma. JÀtkame selle poole pöördumist porti 9000 kaudu, samal ajal kui Docker reguleerib meie jaoks koormust konteinerite vahel.
7. Utiliseeritavus (Disposability) â iga konteinerit saab katkestada ilma teistele kahju tekitamata. Kaugjuhtimine vĂ”i konteineri taaskĂ€ivitamine ei mĂ”juta rakenduse toimimist jĂ€rgnevatel kĂ€ivitustel. Iga konteinerit saab ka igal ajal ĂŒles tĂ”sta.
8. Rakenduse arenduse/operatsiooni pariteet â kĂ”ik meie keskkonnad on ĂŒhesugused. Kui kĂ€itate sĂŒsteemi serveris tootmises, ei pea te oma kĂ€skudes midagi muutma. KĂ”ik pĂ”hineb tĂ€pselt samal Dockeril.
9. Logimine (Logs) â kĂ”ik logid nendes konteinerites voolavad otse ja on nĂ€htavad Dockeri konsoolis. (selles juhtumis, tegelikult vĂ”ib see teiste isetehtud konteinerite puhul olla erinev, kui te sellele ei mĂ”tle)
docker-compose logs -f 
Kuid siin on probleem selles, et PHP ja Nginxi vaikeseaded salvestavad samuti logid faili. 12 teguri nÔuete jÀrgimiseks on vajalik Saadaval on Firefox 121. Uued omadused: Toetatakse Waylandit. logide salvestamine faili iga konteineri eraldi seadistustes.
Docker pakub ka vÔimalust suunata logid mitte ainult stdout'i, vaid ka sellistesse asjadesse nagu graylog, millest rÀÀkisin varem. Ja graylogi sees saame logidega teha igasuguseid toiminguid, ilma et meie rakendus seda mÀrkaks.
10. HaldusĂŒlesanded â kĂ”ik haldusĂŒlesanded lahendab Laravel, kasutades artisan tööriista tĂ€pselt nii, nagu 12-faktori rakenduse loojaid sooviks.
NÀitena nÀitan, kuidas mÔned kÀsud tÀidetakse.
Siseneme konteinerisse.
docker-compose exec workspace bash
php artisan list

NĂŒĂŒd saame kasutada mingeid kĂ€ske. (pange tĂ€hele, et me ei ole andmebaasi ja vahemĂ€lu seadistanud, seega ei toimi pooled kĂ€sud korrektselt, kuna need on mĂ”eldud vahemĂ€lu ja andmebaasiga töötamiseks).

11. Konfiguratsioonid ja 12. Kogumine, vabastamine, tÀitmine
Selle osa soovisin pĂŒhendada Blue-Green Deployment'ile, kuid see osutus selle artikli jaoks liiga keeruliseks. Kirjutan sellest eraldi artikli.
LĂŒhidalt öeldes pĂ”hineb kontseptsioon CI/CD sĂŒsteemidel nagu Jenkinsile ja Gitlab CI. N nii selles kui ka teises saab seada keskkonna spetsiifilisi keskkonnamuutujate vÀÀrtusi. SeetĂ”ttu tĂ€idetakse selle korralduse punkt Seadistuste.
Ja punkt seoses Kogumine, vabastamine, tÀitmine lahendatakse mÔlema utiliidi sisseehitatud funktsioonide abil nimega Pipeline.
Pipeline vÔimaldab jagada deploimentprotsessi mitmeks etapiks, eraldades ehitamise, vabastamise ja teostamise faasid. Samuti saate Pipeline'is luua varukoopiaid ja tegelikult teha mida iganes. See on tööriist, millel on piiramatu potentsiaal.
Rakenduse kood asub .
Ărge unustage submodule algatada, kui kloonite seda hoidlat.
P.S.: KÔiki neid lÀhenemisviise saab kasutada ka muude utiliitide ja programmeerimiskeeltega. Peamine on, et sisu ei erineks.
Allikas: habr.com
