Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Primo parva ratio. Quid factum est Duodecim Factor App?

In simplicibus verbis, hoc documentum ad simpliciorem progressionem applicationum SaaS destinatur, adiuvans informandos tincidunt et fabros DevOps de quaestionibus et exercitiis, quae saepissime occurrunt in evolutione applicationum recentiorum.

Documentum a tincidunt Heroku diam creatum est.

Duodecim Factor App applicari possunt ad applicationes in quavis programmandi lingua scriptas et utens quavis compositione officiorum exsistentium (databases, nuntius queues, cache, etc.).

Breviter de causis, in quibus haec methodus innititur;

  1. Codebase - One codebase idolum in versionis potestate - multiple deployments
  2. Dependentiae - diserte declaramus et recludet clientelas
  3. configuratione - salvum configuratione in runtime
  4. Backing Services - Vide tergum muneris ut obturaculum-in opibus
  5. Aedificare, dimittere, currere - Separate conventus et gradus executionis
  6. fiunt - Curre application ut vel stateless processibus
  7. Portus binding - Import officia per portum binding
  8. parallelismum - Ascendite vestri application processus usura
  9. Dispositio - Maximize reliability cum ieiunium et mundi shutdown startup
  10. Applicationem progressio / operatio pari - Retine progressionem, choragiam, ambitum productionis quam maxime similis
  11. Logging - View quasi lignum certe torrens
  12. negotia administrativa - Praestare administratione / administratione tasks uti ad hoc processuum

Plura de XII rebus ex his facultatibus cognoscere potes:

Quid est instruere Blue-Green?

Blue-Green instruere est methodus tradendi applicationis ad productionem ita tamen ut finis hic non videat vices suas. Id est, explicans applicationem cum nulla downtime.

Ordo BG Deploy schema spectat sicut illud quod in imagine infra monstratur.

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

  • In initio 2 corporis ministratores sunt cum eodem absolute codice, applicatione, incepto, et est iter itineris (balancer).
  • Iter initio omnes petitiones uni ex ministris dirigit (viridi,).
  • In momento, quo iterum dimittere debes, totum consilium in alio servo renovatur (hyacinthum), quod petitiones quaslibet non dispensat.
  • Post in codice est caeruleum Servo totaliter renovata est, mandatum iter ad commutandum e datum est viridi, on hyacinthum cultor.
  • Nunc omnes clientes videre eventum codice currit cum hyacinthum cultor.
  • Aliquamdiu, viridi, in server ut serves exemplum tergum ut si parum prospere deployment to hyacinthum server et in casu deficiendi et bugs, iter usoris permutat refluxus ad viridi, server cum veteri versione stabili, et novus Codex ad emendationem et probationem arcessitur.
  • Et in fine processus, eodem modo renovatur viridi, cultor. Et post adaequationem illam, iter itineris per petitionem refluunt ad stimulos viridi, cultor.

Omnia valde bona sunt et primo aspectu nulla problemata cum eo debent esse.
Sed quia in mundo huius temporis vivimus, optio cum commutatione physica ut in schemate classico indicatum est nobis non convenit. Informacionem nunc scribe, ad illud postea revertemur.

Malum et bonum consilium

Disclaimer: Exempla infra ostendunt utilitates/ methodologias quibus utor, alternis vel similibus functionibus absolute uti potes.

Plurima exempla uno modo vel alio secent cum evolutione interretiali (quod mirum est), cum PHP et Docker.

In sequentibus paragraphi simplicem practicam descriptionem usuum factorum certis exemplis utentes praebent: si plus de hoc argumento speculari vis, nexus supra fontem originis sequere.

1. Codebase

Utere FTP et FileZilla ad fasciculos oneres ministris singillatim, codicem nusquam alibi quam in servo productionis reponunt.

Project semper unicum codicem basis habere debet, id est, totum codicem ab uno oritur vade repositio. Servientes (productio, choragium, test1, test2...) utuntur codice e ramis unius repositorii communis. Hoc modo codicem constantiam consequi possumus.

2. Dependencie

Omnes bibliothecas in folders directe ad radicem project. Renovationes simpliciter fac transferendo novum codicem ad folder cum hodierna versione bibliothecae. Omnibus necessariis utilitatibus directe instrue in servo militiae quo 20 plura officia currunt.

Propositum semper lucide comprehendi debet clientium indicem (per clientelas etiam ambitum significo). Omnes dependentiae explicite definiri debent et seducere.
Sit exemplum Composer: ΠΈ Docker.

Composer: - procurator involucrum qui permittit ut bibliothecas in PHP instituas. Compositor permittit ut versiones stricte vel laxe definias, easque explicite definias. Possunt esse 20 diversae inceptae in calculonis servi et singulae indicem personalem fasciculorum et bibliothecarum alterius independentis habebunt.

Docker - quae utilitas permittit ut ambitum definias et recludas in quo applicatio currat. Proinde sicut cum compositore, sed diligentius, quid applicationis cum operante possumus determinare. PHP versionem specificam elige, tantum fasciculos ad opus operis necessarii institue, nihil addito extra. Maximeque sine impedimento fasciculorum et ambitus machinae et alia incepta. Hoc est, omnia opera quae in servo per Docker percurrendo uti possunt absolute quavis sarcinarum copia et ambitu omnino dissimili.

3. configurationis

Copia confis sicut constantes in codice. Separate constantes pro servo experimenti, separati ad productionem. Liga operationis applicationis secundum ambitum directe in negotiis logicae propositi utendi si aliud construas.

Configurationes - Hoc uno modo differre debet inceptio instruere. Specimen, configurationes per variabiles ambitus (env vars).

Hoc est, etiam si plures tabellas configurationis .config.prod .config.localas repone et eas renominandi tempore instruere ad .config (principale config ex quo applicatio data legit) - hoc non erit ius adventus, quia hoc in casu, notitia ex configurationibus publice praesto erit omnibus applicationibus tincidunt et notitia a servo productionis decipietur. Omnes configurationes condi debent directe in systemate instruere (CI/CD) et generari pro diversis ambitibus cum diversis valoribus necessariis ad specifica environment tempore instruere.

4. Tertia pars Services

Stricte ad ambitum ligandum, diversos nexus adhibes ad eadem officia in quibusdam ambitibus.

Re quidem vera, hoc punctum fortiter punctum de configurationibus trahit, cum sine hoc puncto normales notitiae conformatio fieri non possit, et generatim facultas conformandi in nihilum defluet.

Omnes nexus ad officia externa, ut queue servientes, databases, caching officia, idem esse debent pro ambitu locali et tertiae partium / productionis rerum. Aliis verbis, aliquando, filo nexu mutato, substituere possum vocat ad fundandum #1 cum basi #2 sine applicatione notae mutato. Vel prospicientes exemplum, cum servitutem scalas, nexum speciali modo denotare non debebis pro addito servo cache.

5. aedificare, dimittere, exequi

Sola ultima versio codicis in calculonis, nullo casu emissio revolutionis. Non opus est ut orbis tractus repleat. Quisquis putat se codicem in productionem cum errore dimittere posse, programmator malus est!

Omnes instituti gradus ab invicem separari debent.

Facultatem revolvere. Dimittite cum exemplaribus antiquis applicationis (iam collectis et paratis ad pugnam) in promptu accessu servatis, ut in casu errorum versionem veterem restituere possis. Id est, sub condicione est folder Releases ac folder Currentet bene instruere et congregare folder Current coniunctione symbolica cum novo emissione quae intus iacet Releases apud conventional nomine emissio numero.

Hoc est in quo instruere meminimus Blue-Green, quae te non solum inter codicem commutare sinit, sed etiam inter omnes facultates et ambitus commutandi cum facultate omnia revolvere.

6. Processus

Copia applicationis status notitiae directe intra ipsam applicationem. Sessiones in RAM utere ipsa applicatione. Utere tam communi inter officia tertia partium quam maxime. Hoc innititur quod applicationis processus unum tantum habere potest nec scalare admittit.

Quod ad sessiones attinet, notitia copia tantum in cella per officia tertia partium (memcached, redis) moderata est, ita etiam si viginti processuum applicationis cursus habebis, quaelibet eorum, cella accessa, operari cum cliente pergere poterit. eodem statu quo utens applicatione in alio processu laborabat. Cum hoc accessu evenit ut quotcumque exemplaria tertiae partis operae uteris, omnia regulariter et sine problematibus cum accessu ad data operabuntur.

7. Portus ligandi

Solus cultor interretialis scire debet quomodo servitia tertia factionis laborare debet. Vel melius adhuc, officia tertia-partium institue directe intra interretialem servientis. Exempli gratia, modulus PHP in Apache.
Omnia officia tua inter se pervia esse debent per accessum ad aliquam inscriptionem et portum (localgost:5432, localhost: 3000, nginx:80, php-fpm:9000), id est ab nginx accessum possum tam php- fpm et ad postgres, et a php-fpm ad postgres et nginx et actualiter ab unoquoque servitio possum aliud servitium accedere. Hoc modo viability servitii non ligatur viability alterius servitii.

8. Parallelismus

Opus cum uno processu, alioquin plures processus inter se obtinere non poterunt!

Relinque locum scalae. Docker examen magnum est ad hoc.
Docker examen instrumentum est ad ligaturas continentium conficiendas et componendas sive inter varias machinas et fasciculum continentia in eadem machina.

Examine utens, determinare possum quot facultates singulis processibus exponam et quot processus eiusdem muneris deducam, et librarius internus, dato portu accepto, sponte eam processibus procurabit. Cum igitur onus servo auctum sit, plures processus addere possum, inde onus certis processibus minuendo.

9. Disposability

Noli uti stantibus anteponere ad operandum cum processibus et data. Occidere unum processum totam applicationem afficere debet. Si unum officium descenderit, omnia descendunt.

Singulae processus et servitus quovis tempore averti possunt et hoc non debet alia officia afficere (sane hoc non significat servitutem ad aliud servitium perpendendum esse, sed aliud servitium post hoc non avertet). Omnes processus lepide terminantur, ita ut, cum terminantur, nulla notitia laedatur et ratio recte operetur proximo tempore quo inverteris. Hoc est, etiam in eventu terminationis subitis, notitia laedi non debet (adeptiis mechanismus hic aptus est, queritur in opere datorum solum in coetibus, et si saltem una quaestio e coetu deficiat vel cum effectu ponatur. error, nulla alia quaestio e coetu tandem re vera deficit).

10. Application progressio / operatio pari

Productio, choragi et applicatio localis diversae esse debent. In productione pro compage Lite Yii utimur, et localiter Yii, ut velocius in productione operetur!

Re quidem vera omnia opera et opera cum codice in ambitu fere pari (non loquimur de ferramentis physicis). Etiam quaevis evolutionis operarius codicem ad productionem, si opus sit, explicari debet, et non aliqua parte speciali exercitata, quae tantum ob singulares virium applicationem in productionem levare potest.

Hoc etiam Docker adiuvat. Si omnia puncta praecedentia observata sunt, usus navale processum faciet explicandi ambitus tam in productione quam in machina locali ad unum alterumve imperium ingrediendum.

11. Acta publica omnia

Acta scribimus ad files et databases! Scapis et databases ex lignis non purgamus. Modo emere coegi cum 9000 Peta bytes et bene est.

Omnia acta pro rivo eventuum considerari debent. Applicatio ipsa in lignis dispensandis implicari non debet. Tigna output debent esse vel stdout vel mitti per protocollum ut udp, ut cum lignis operando quaestiones ad applicationem non creet. graylog bonum est ad hoc. Graylog accepto omnia ligna per udp (hoc protocollum non requirit exspectationem responsionis de felici receptione fasciculi) nullo modo impedit applicationem et solum agit de lignis structuris et dispensandis. Applicatio logica non mutat ad operandum accessiones.

12. administrationis opera

Ad datas renovationes, databases, etc., utere terminos distinctos in API creatos, illud exsequens 2 vicibus in ordine in omnibus duplicatis proveniet. Sed non stultus es, bis non premes, et migratione non indigemus.

Omnia administrationis officia in eodem ambitu ac toto codice peragi debent, in gradu emissione. Hoc est, si structuram datorum mutare necesse est, id manually mutatis nominibus columnarum non faciemus et novas addendo per instrumenta instrumentorum visivae datorum. Talia enim scripta separamus - migrationes, quae ubique et in omnibus ambitibus efficiuntur eodem modo communi et intellectu communi. Ad omnia alia opera, ut ad implendum documentum cum notitia, methodologiae similes adhibendae sunt.

Exemplum exsecutionis in PHP, Laravel, Laradock, Docker-Compone

PS Omnia exempla in MacOS facta sunt. Plerique Linux quoque conveniunt. Windows utentes, ignosce mihi, sed cum Fenestra diu non laboravi.

Putemus condicionem ubi nullam versionem PHP in nostra PC constituto et nihil omnino non habemus.
Instrue recentissimas versiones in nauale et docker-componere. (Hoc potest inveniri in Internet)

docker -v && 
docker-compose -v

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

1. Put Laradock

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

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

De Laradock dicam, rem frigidissimam esse, quae multa vasa et auxiliares continet. Sed nolo Laradock ut huiusmodi sine modificationibus in productione uti propter redundantiam. Melius est vascula tua creare in exemplis in Laradock, hoc multo magis optimized, quia nemo omnia quae simul ibi sunt eget.

2. Configure Laradock ad nostram applicationem currendam.

cd laradock && 
cp env-example .env

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

2.1. Aperi directorium habr (parentis folder in quod laradock cloned est) in aliquo editore. (In mea PHPStorm causa)

Hac in scaena tantum nomen damus.

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

2.2. Lorem workspace imaginem. (In casu tuo imagines aliquod tempus aedificandi erunt)
Workspace est imago specialiter praeparata ad operandum cum compage pro elit.

Intramus in utens in quo est

docker-compose up -d workspace && 
docker-compose exec workspace bash

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

2.3. Installing Laravel

composer create-project --prefer-dist laravel/laravel application

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

2.4. Post institutionem inspicimus num directorium cum incepto creatum sit et occidere componas.

ls
exit
docker-compose down

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

2.5. Eamus ad PHPStorm et rectam semitam ad applicationes laravel in pagina .env pone.

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

3. Adde totum codicem ad Git.

Ad hoc promptarium creabimus in Github (vel alibi). Eamus ad directorium habr in termino et sequenti codice exequi.

echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # здСсь Π±ΡƒΠ΄Π΅Ρ‚ ссылка Π½Π° ваш Ρ€Π΅ΠΏΠΎ
git push -u origin master
git status

Si omnia ordine scriptor reprehendo.

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Pro commodo, suadeo utendo aliquo instrumento visuali pro Git, in casu meo est GitKraken. (hic est deferre link)

4. Demus!

antequam incipias, fac ut in portubus nihil pendeat 80 et 443 .

docker-compose up -d nginx php-fpm

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Ita consilium nostrum consistit in 3 servitiis separatis;

  • nginx - web server
  • php-fpm - php petitionibus accipiendis a web server
  • workspace - php pro developers

In momento, nos adepti sumus applicationem quae in 4 punctis 12 obviat, nempe;

1. Codebase β€” totum codicem in uno repositorio est (perpaucae notae: fortasse recte in larvel inclusum addere, sed hoc non est magni momenti).

2. Dependentiae - Omnes nostrae clientelae explicite scriptae sunt in applicatione/composer.json et in unoquoque vase dockerfile.

3. Backing Services β€” Quaelibet officia (php-fom, nignx, workspace) vitam suam vivit et extrinsecus iungitur et cum uno servitio operatur, alterum non afficietur.

4. fiunt β€” singula opera unus processus est. Quaelibet officia statum internum non tenet.

5. Portus binding

docker ps

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Ut videre licet, unumquodque ministerium in suum portum currit et omnibus aliis officiis est patens.

6. parallelismum

Docker sinit nos plures processus pariendi eiusdem muneris latis onere inter eos aequante.

Stemus vasis et curramus per vexillum --scale

docker-compose down && 
docker-compose up -d --scale php-fpm=3 nginx php-fpm

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Ut videre est, exemplaria facta sunt ex php-fpm continente. Non opus est nobis aliquid mutare in hoc vase operando. Etiam in portu 9000 accedere pergimus, et Docker onus inter vasa nobis moderatur.

7. Dispositio β€” Uterque continens necari potest sine alterius laesione. Reprimendo vel restarting continens operationem applicationis in immissis subsequentibus non tanget. Singula continens etiam quolibet tempore elevari potest.

8. Applicationem progressio / operatio pari β€” Omnes nostri ambitus idem sunt. Systema currendo servo in productione, nihil mutandum in mandatis tuis habebis. Omnia eodem modo in Docker fundabuntur.

9. Logging β€” omnia ligna in his vasis ad rivum eunt et in Docker console apparent. (hoc enim casu, cum aliis vasis homemades, hoc fieri non potest, si id non caves)

 docker-compose logs -f

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Sed captura est quod Valores Default in PHP et Nginx ligna etiam ad limam scribunt. Ad 12 factores occurrere, necesse est intercludebat scribebat tigna ad fasciculum in configurationibus singulorum continens separatim.

Docker etiam facultatem praebet non solum ad stdout ligna mittendi, sed etiam ad ea quae supra dixi. Et intra graylogum, tigna operare possumus ut lubet, et applicatio nostra nullo modo id observabit.

10. negotia administrativa - omnia administrationis officia per laravel solvuntur per instrumentum artificis prorsus sicut creatores applicationis 12 factoris solvuntur.

Exempli causa, ostendam quomodo aliqua mandata exequantur.
In vas imus.

 
docker-compose exec workspace bash
php artisan list

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

Praeceptis autem uti nullo modo possumus. (Quaeso nota quod nos datorum et cella non configurare, ideo dimidium mandatorum recte exsecutioni non erit, quia ad opus cum cella datorum et datorum designantur).

Applicationem progressionis et instruere Blue-Green, innixa est methodologia duodecim Factor App cum exemplis in php et docker.

11. Configurationes Et MD. Aedificare, dimittere, currere

Hanc partem instruere volui Blue-Green, sed hoc articulum nimis prolixum evasit. Articulum de hoc singulari scribam.

In nuce notio fundatur CI/CD systemata similia Imago ΠΈ Gitlab CI. In utroque ambitu variabiles ambitus specificae coniungi potes. Quocirca in hoc situ, punctum c implebitur Configurationes.

et punctum fere Aedificare, dimittere, currere solvitur ab constructum-in munera cum nomine pipeline.

pipeline permittit vobis ut processus in plures gradus instruere possitis, quatenus conventus, emissio et exsecutio. Item in Pipeline, tergum creare potes, et quidem aliquid. Hoc instrumentum est cum potentia infinita.

Quod est ad applicationem codice Github.
Noli oblivisci submodulum initialize cum hoc repositorium exquisite.

PS: Omnes hae accessiones omnibus aliis utilitatibus et programmandis linguis adhiberi possunt. Summa est quod essentia non differt.

Source: www.habr.com