Awọn ilana fun idagbasoke awọn ohun elo ode oni lati NGINX. Apa 1

Hello ọrẹ. Ni ifojusona ti ifilole ti awọn dajudaju PHP backend developer, ni aṣa ṣe alabapin pẹlu rẹ itumọ awọn ohun elo to wulo.

Sọfitiwia yanju awọn iṣẹ ṣiṣe lojoojumọ ati siwaju ati siwaju sii, lakoko ti o di pupọ ati siwaju sii. Gẹgẹbi Marc Andressen ni ẹẹkan sọ, o nlo agbaye.

Awọn ilana fun idagbasoke awọn ohun elo ode oni lati NGINX. Apa 1

Bi abajade, ọna ti awọn ohun elo ti ni idagbasoke ati jiṣẹ ti yipada ni iyalẹnu ni awọn ọdun diẹ sẹhin. Iwọnyi jẹ awọn iṣipopada ti iwọn tectonic ti o yorisi eto awọn ipilẹ. Awọn ilana wọnyi ti fihan pe o ṣe iranlọwọ ni kikọ ẹgbẹ, ṣiṣe apẹrẹ, idagbasoke, ati jiṣẹ ohun elo rẹ si awọn olumulo ipari.

Awọn ilana le ṣe akopọ bi atẹle: ohun elo naa yẹ ki o jẹ kekere, orisun wẹẹbu, ati ki o ni faaji-centric ti o dagbasoke. Pẹlu awọn ipilẹ mẹta wọnyi ni lokan, o le ṣẹda ohun elo to lagbara, ipari-si-opin ti o le yarayara ati jiṣẹ ni aabo si olumulo ipari, ati ni irọrun iwọn ati extensible.

Awọn ilana fun idagbasoke awọn ohun elo ode oni lati NGINX. Apa 1

Ọkọọkan awọn ilana ti a dabaa ni nọmba awọn aaye ti a yoo jiroro lati ṣafihan bi ilana kọọkan ṣe ṣe alabapin si ibi-afẹde ti o ga julọ, eyiti o jẹ ifijiṣẹ iyara ti awọn ohun elo igbẹkẹle ti o rọrun lati ṣetọju ati lo. A yoo wo awọn ilana ni ibatan si awọn idakeji wọn lati le ṣe alaye ohun ti o tumọ si, sọ, "Rii daju pe o lo. Kekere opo».

A nireti pe nkan yii yoo gba ọ niyanju lati lo awọn ipilẹ ti a dabaa fun kikọ awọn ohun elo ode oni, eyiti yoo pese ọna iṣọkan lati ṣe apẹrẹ ni aaye ti akopọ imọ-ẹrọ ti n dagba nigbagbogbo.

Nipa lilo awọn ilana wọnyi, iwọ yoo rii ara rẹ ni anfani ti awọn aṣa tuntun ni idagbasoke sọfitiwia, pẹlu awọn DevOps si idagbasoke ati ifijiṣẹ awọn ohun elo, lilo awọn apoti (fun apẹẹrẹ, Docker) ati awọn ilana iṣeto ohun elo (fun apẹẹrẹ, Kubernetes), awọn lilo ti microservices (pẹlu Microservice Architecture NGINX и faaji ibaraẹnisọrọ nẹtiwọki fun microservice awọn ohun elo.

Kini ohun elo igbalode?

Awọn ohun elo igbalode? Modern akopọ? Kini gangan tumọ si "igbalode"?

Pupọ julọ awọn olupilẹṣẹ ni imọran gbogbogbo ti kini ohun elo igbalode jẹ ninu, nitorinaa o jẹ dandan lati ṣalaye imọran yii ni kedere.

Ohun elo ode oni ṣe atilẹyin awọn alabara lọpọlọpọ, boya o jẹ wiwo olumulo ikawe React JavaScript, ohun elo alagbeka Android tabi iOS, tabi ohun elo kan ti o sopọ si API miiran. Ohun elo ode oni tumọ si nọmba ailopin ti awọn alabara fun eyiti o pese data tabi awọn iṣẹ.

Ohun elo ode oni n pese API lati wọle si data ati awọn iṣẹ ti o beere. API yẹ ki o jẹ aiyipada ati igbagbogbo, ati pe ko kọ ni pataki fun ibeere kan pato lati ọdọ alabara kan pato. API naa wa lori HTTP(S) ati pese iraye si gbogbo iṣẹ ṣiṣe ti o wa ninu GUI tabi CLI.

Data naa gbọdọ wa ni ọna ti o wọpọ, ti o le ṣiṣẹ gẹgẹbi JSON. API ṣe afihan awọn nkan ati awọn iṣẹ ni mimọ, ọna ti a ṣeto, bii API RESTful tabi GraphQL pese wiwo to bojumu.

Awọn ohun elo ode oni ni a kọ sori akopọ ode oni, ati akopọ ode oni jẹ akopọ ti o ṣe atilẹyin iru awọn ohun elo, lẹsẹsẹ. Iṣakojọpọ yii ngbanilaaye olupilẹṣẹ lati ṣẹda ohun elo ni irọrun pẹlu wiwo HTTP ati awọn aaye ipari API kuro. Ọna ti a yan yoo gba ohun elo rẹ laaye lati gba ni irọrun ati firanṣẹ data ni ọna kika JSON. Ni awọn ọrọ miiran, akopọ ode oni ni ibamu si awọn eroja ti Ohun elo Factor-mejila fun microservices.

Awọn ẹya olokiki ti iru akopọ yii da lori Java, Python, ipade, Ruby, PHP и Go. Microservice Architecture NGINX duro fun apẹẹrẹ ti akopọ ode oni ti a ṣe imuse ni ọkọọkan awọn ede ti a mẹnuba.

Jọwọ ṣe akiyesi pe a ko ṣe agbero ọna microservice iyasọtọ. Pupọ ninu yin n ṣiṣẹ pẹlu awọn monoliths ti o nilo lati dagbasoke, lakoko ti awọn miiran n ṣe pẹlu awọn ohun elo SOA ti o pọ si ati idagbasoke lati di awọn ohun elo microservice. Awọn miiran tun n lọ si awọn ohun elo ti ko ni olupin, ati diẹ ninu awọn n ṣe awọn akojọpọ ti awọn loke. Awọn ilana ti a ṣe ilana ninu nkan naa kan si ọkọọkan awọn eto wọnyi pẹlu awọn iyipada kekere diẹ nikan.

Awọn ilana

Ni bayi ti a ni oye ti o wọpọ ti kini ohun elo ode oni ati akopọ ode oni, o to akoko lati besomi sinu faaji ati awọn ipilẹ idagbasoke ti yoo ṣe iranṣẹ fun ọ daradara ni idagbasoke, imuse, ati mimu ohun elo ode oni.

Ọkan ninu awọn ilana naa dabi “ṣe awọn ohun elo kekere”, jẹ ki a kan pe Kekere opo. Nibẹ ni o wa ti iyalẹnu eka ohun elo ti o wa ni ṣe soke ti ọpọlọpọ awọn gbigbe awọn ẹya ara. Ni ọna, kikọ ohun elo lati kekere, awọn paati ọtọtọ jẹ ki o rọrun lati ṣe apẹrẹ, ṣetọju, ati ṣiṣẹ pẹlu rẹ lapapọ. (Akiyesi pe a sọ pe "rọrun" kii ṣe "jẹ ki o rọrun").

Ilana keji ni pe a le ṣe alekun iṣelọpọ idagbasoke nipasẹ ṣiṣe iranlọwọ fun wọn ni idojukọ lori awọn ẹya ti wọn dagbasoke, lakoko ti o gba wọn laaye lati awọn amayederun ati awọn ifiyesi CI / CD lakoko imuse. Nitorinaa, ni kukuru, ọna wa lojutu lori kóòdù.

Ni ipari, ohun gbogbo nipa ohun elo rẹ gbọdọ ni asopọ si nẹtiwọọki naa. Ni awọn ọdun 20 sẹhin, a ti ṣe awọn ilọsiwaju nla si ọna iwaju nẹtiwọọki bi awọn nẹtiwọọki ṣe yiyara ati awọn ohun elo diẹ sii. Gẹgẹbi a ti rii tẹlẹ, ohun elo igbalode gbọdọ ṣee lo lori nẹtiwọọki nipasẹ ọpọlọpọ awọn alabara oriṣiriṣi. Lilo ero nẹtiwọọki si faaji ni awọn anfani pataki ti o lọ daradara pẹlu Kekere opo ati imọran ti ọna, developer Oorun.

Ti o ba tọju awọn ipilẹ wọnyi ni ọkan nigbati o ṣe apẹrẹ ati imuse ohun elo kan, iwọ yoo ni anfani ti ko ni sẹ ninu idagbasoke ati ifijiṣẹ ọja rẹ.

Jẹ ki a wo awọn ilana mẹta wọnyi ni awọn alaye diẹ sii.

Ilana Kekere

O ṣoro fun ọpọlọ eniyan lati ni oye iye nla ti alaye ni akoko kanna. Ninu ẹkọ imọ-ọkan, ọrọ fifuye oye n tọka si iye lapapọ ti akitiyan ọpọlọ ti o nilo lati ṣe idaduro alaye ni iranti. Idinku fifuye oye lori awọn olupilẹṣẹ jẹ pataki nitori pe o gba wọn laaye lati dojukọ lori yanju iṣoro naa dipo titọju awoṣe eka lọwọlọwọ ti gbogbo ohun elo ati awọn ẹya ti o dagbasoke ni ori wọn.

Awọn ilana fun idagbasoke awọn ohun elo ode oni lati NGINX. Apa 1

Awọn ohun elo ti bajẹ fun awọn idi wọnyi:

  • Din fifuye imo lori Difelopa;
  • Isare ati simplification ti igbeyewo;
  • Ifijiṣẹ yarayara ti awọn ayipada ninu ohun elo.


Awọn ọna pupọ lo wa lati dinku fifuye oye lori awọn olupilẹṣẹ, ati pe eyi ni ipilẹ ti kekere wa sinu ere.

Nitorinaa eyi ni awọn ọna mẹta lati dinku fifuye imọ:

  1. Din awọn fireemu akoko ti won ni lati ro nigbati sese titun kan ẹya-ara – awọn kikuru awọn akoko fireemu, isalẹ awọn imo fifuye.
  2. Din iye ti koodu lori eyi ti ọkan-akoko ise ti wa ni ti gbe jade - kere koodu - kere fifuye.
  3. Rọrọrun ilana ti ṣiṣe awọn ayipada afikun si ohun elo kan.

Idinku akoko fireemu idagbasoke

Jẹ ki a pada si awọn ọjọ nigbati ilana naa waterfall jẹ boṣewa fun ilana idagbasoke, ati awọn fireemu akoko ti oṣu mẹfa si ọdun meji fun idagbasoke tabi imudojuiwọn ohun elo jẹ iṣe ti o wọpọ. Ni deede, awọn onimọ-ẹrọ yoo kọkọ ka awọn iwe aṣẹ ti o ni ibatan gẹgẹbi awọn ibeere ọja (PRD), iwe itọkasi eto (SRD), ilana ilana faaji, ati bẹrẹ lati darapọ gbogbo nkan wọnyi papọ sinu awoṣe oye kan, ni ibamu si eyiti wọn ṣe koodu. Bii awọn ibeere ati, nitori naa, faaji naa yipada, igbiyanju pataki ni lati sọ fun gbogbo ẹgbẹ nipa awọn imudojuiwọn si awoṣe oye. Irú ọ̀nà bẹ́ẹ̀, tí ó burú jù lọ, lè rọ́wọ́ mú iṣẹ́ náà.

Iyipada ti o tobi julọ ninu ilana idagbasoke ohun elo ni iṣafihan ilana agile. Ọkan ninu awọn ẹya akọkọ ti ilana naa agile jẹ idagbasoke aṣetunṣe. Ni ọna, eyi nyorisi idinku ninu fifuye oye lori awọn onise-ẹrọ. Dipo ti o nilo ẹgbẹ idagbasoke lati ṣe ohun elo ni ọna gigun kan, agile ona faye gba o lati idojukọ lori kekere oye akojo ti koodu ti o le ni kiakia ni idanwo ati ki o ransogun, nigba ti tun gbigba esi. Ẹru oye ti ohun elo naa ti yipada lati oṣu mẹfa si fireemu akoko ọdun meji pẹlu iye nla ti awọn alaye lẹkunrẹrẹ fun afikun ọsẹ meji tabi ẹya ti o n fojusi oye diẹ sii ti ohun elo nla kan.

Yiyi idojukọ lati ohun elo nla kan si awọn ẹya kekere kan pato ti o le pari ni isunmọ ọsẹ meji kan, laisi ẹya diẹ sii ju ẹyọkan lọ siwaju sisẹ atẹle ni lokan, jẹ iyipada nla. Eyi gba wa laaye lati mu iṣelọpọ idagbasoke pọ si lakoko ti o dinku fifuye oye, eyiti o yipada nigbagbogbo.

Ni ilana agile Ohun elo ikẹhin ni a nireti lati jẹ ẹya iyipada diẹ ti imọran atilẹba, nitorinaa aaye ipari ti idagbasoke jẹ dandan aibikita. Nikan awọn esi ti kọọkan kan pato ṣẹṣẹ le jẹ ko o ati kongẹ.

Awọn ipilẹ koodu kekere

Igbesẹ ti o tẹle ni idinku fifuye oye ni lati dinku koodu koodu. Gẹgẹbi ofin, awọn ohun elo ode oni jẹ nla - logan, ohun elo ile-iṣẹ le ni ẹgbẹẹgbẹrun awọn faili ati awọn ọgọọgọrun egbegberun awọn laini koodu. Da lori bii awọn faili ṣe ṣeto, awọn ọna asopọ ati awọn igbẹkẹle laarin koodu ati awọn faili le han gbangba, tabi ni idakeji. Paapaa ipaniyan koodu ti n ṣatunṣe funrararẹ le jẹ iṣoro, da lori awọn ile-ikawe ti a lo ati bii awọn irinṣẹ aṣiṣe ṣe iyatọ laarin awọn ile-ikawe / awọn idii / awọn modulu ati koodu aṣa.

Ilé awoṣe ọpọlọ ti n ṣiṣẹ ti koodu ohun elo le gba iye akoko iwunilori, ati lekan si gbe ẹru oye nla sori olutayo naa. Eyi jẹ otitọ paapaa fun awọn ipilẹ koodu monolithic, nibiti iye koodu nla wa, ibaraenisepo laarin awọn paati iṣẹ-ṣiṣe ti eyiti ko ṣe alaye ni kedere, ati iyapa awọn nkan ti akiyesi jẹ igbagbogbo nitori awọn aala iṣẹ ko bọwọ fun.

Ọkan ninu awọn ọna ti o munadoko lati dinku ẹru oye lori awọn onimọ-ẹrọ ni lati lọ si faaji microservice kan. Ni ọna microservice, iṣẹ kọọkan dojukọ awọn ẹya ara ẹrọ kan; lakoko ti itumọ ti iṣẹ naa jẹ asọye nigbagbogbo ati oye. Awọn aala ti iṣẹ kan tun han gbangba - ranti pe ibaraẹnisọrọ pẹlu iṣẹ kan ni a ṣe nipasẹ API, nitorinaa data ti ipilẹṣẹ nipasẹ iṣẹ kan le ni irọrun kọja si omiiran.

Ibaraṣepọ pẹlu awọn iṣẹ miiran nigbagbogbo ni opin si awọn iṣẹ olumulo diẹ ati awọn iṣẹ olupese diẹ ti o lo awọn ipe API ti o rọrun ati mimọ, gẹgẹbi lilo REST. Eyi tumọ si pe fifuye oye lori ẹlẹrọ ti dinku ni pataki. Ipenija ti o tobi julọ si wa ni oye awoṣe ibaraenisepo iṣẹ ati bii awọn nkan bii awọn iṣowo ṣe ṣẹlẹ kọja awọn iṣẹ lọpọlọpọ. Bi abajade, lilo awọn iṣẹ microservices dinku fifuye oye nipa idinku iye koodu, asọye awọn aala iṣẹ ti ko o, ati pese oye ti ibatan laarin awọn olumulo ati awọn olupese.

Awọn iyipada iwọn kekere

Awọn ti o kẹhin ano ti opo kekere jẹ iṣakoso iyipada. O jẹ idanwo kan pato fun awọn olupilẹṣẹ lati wo ipilẹ koodu (paapaa boya tiwọn, koodu agbalagba) ati sọ pe, “Eyi jẹ inira, a nilo lati tun kọ gbogbo rẹ.” Nigba miiran eyi jẹ ipinnu ti o tọ, ati nigba miiran kii ṣe. O fi ẹru ti iyipada awoṣe agbaye sori ẹgbẹ idagbasoke, eyiti o yori si fifuye oye nla. O dara julọ fun awọn onimọ-ẹrọ lati dojukọ awọn ayipada ti wọn le ṣe lakoko isunmi, ki wọn le yi iṣẹ ṣiṣe ti o yẹ jade ni ọna ti akoko, botilẹjẹpe diẹdiẹ. Ọja ikẹhin yẹ ki o jọ eyi ti a ti gbero tẹlẹ, ṣugbọn pẹlu diẹ ninu awọn iyipada ati idanwo lati baamu awọn iwulo alabara.

Nigbati o ba n atunkọ awọn ipin nla ti koodu, nigbami ko ṣee ṣe lati yarayara jiṣẹ iyipada nitori awọn igbẹkẹle eto miiran wa sinu ere. Lati le ṣakoso ṣiṣan awọn ayipada, o le lo fifipamọ ẹya ara ẹrọ. Ni opo, eyi tumọ si pe iṣẹ ṣiṣe wa ni iṣelọpọ, ṣugbọn ko si ni lilo awọn eto oniyipada ayika (env-var) tabi diẹ ninu awọn ẹrọ atunto miiran. Ti koodu naa ba ti kọja gbogbo awọn ilana iṣakoso didara, lẹhinna o le pari ni iṣelọpọ ni ipo wiwaba. Sibẹsibẹ, ilana yii ṣiṣẹ nikan ti ẹya naa ba ṣiṣẹ nikẹhin. Bibẹẹkọ, yoo ṣabọ koodu naa nikan yoo ṣafikun fifuye oye ti olupilẹṣẹ yoo ni lati koju lati le ni iṣelọpọ. Iyipada iṣakoso ati awọn iyipada afikun funrara wọn ṣe iranlọwọ lati tọju ẹru oye awọn olupilẹṣẹ ni ipele ti ifarada.

Awọn onimọ-ẹrọ ni lati bori ọpọlọpọ awọn iṣoro paapaa pẹlu iṣafihan irọrun ti iṣẹ ṣiṣe afikun. Ni apakan ti iṣakoso, yoo jẹ oye lati dinku ẹru ti ko wulo lori ẹgbẹ ki o le dojukọ awọn eroja iṣẹ ṣiṣe pataki. Awọn nkan mẹta wa ti o le ṣe lati ṣe iranlọwọ fun ẹgbẹ idagbasoke rẹ:

  1. Lo ilana agilelati se idinwo awọn akoko fireemu ninu eyi ti awọn egbe gbọdọ idojukọ lori bọtini awọn ẹya ara ẹrọ.
  2. Mu ohun elo rẹ ṣiṣẹ bi awọn iṣẹ microservice lọpọlọpọ. Eyi yoo ṣe idinwo nọmba awọn ẹya ti o le ṣe imuse ati fikun awọn aala ti o tọju fifuye oye ni iṣẹ.
  3. Fẹ awọn ayipada afikun lori nla ati ailagbara, yi koodu kekere pada. Lo fifipamọ ẹya ara ẹrọ lati ṣe awọn ayipada paapaa ti wọn kii yoo han lẹsẹkẹsẹ lẹhin fifi kun.

Ti o ba lo ilana ti kekere ninu iṣẹ rẹ, ẹgbẹ rẹ yoo ni idunnu pupọ, ni idojukọ daradara lori imuse awọn ẹya pataki, ati pe o ṣee ṣe diẹ sii lati yi awọn ayipada didara jade ni iyara. Ṣugbọn eyi ko tumọ si pe iṣẹ naa ko le di idiju diẹ sii, nigbamiran, ni ilodi si, iṣafihan iṣẹ ṣiṣe tuntun nilo iyipada ti awọn iṣẹ pupọ, ati pe ilana yii le nira sii ju iru lọ ni faaji monolithic. Ni eyikeyi idiyele, awọn anfani ti gbigbe ọna kekere jẹ tọ si.

Ipari ti akọkọ apa.

Láìpẹ́ a óò tẹ apá kejì ìtumọ̀ náà jáde, àti nísinsìnyí a ń dúró de àwọn ìdáhùn rẹ a sì pè ọ́ sí Open Day, eyi ti yoo waye loni ni 20.00.

orisun: www.habr.com

Fi ọrọìwòye kun