Checklist foar it meitsjen en publisearjen fan webapplikaasjes

Om jo eigen webapplikaasje yn ús tiid te meitsjen, is it net genôch om it te ûntwikkeljen. In wichtich aspekt is it ynstellen fan ark foar ynset fan applikaasjes, tafersjoch, lykas it behearen en administrearjen fan 'e omjouwing wêryn't it wurket. As it tiidrek fan manuele ynset yn it ferjit ferdwynt, sels foar lytse projekten, kinne automatisearringsark taastbere foardielen bringe. By it ynsetten fan "mei de hân", kinne wy ​​​​faaks ferjitte om wat te ferpleatsen, dizze of dy nuânse rekken te hâlden, in fergetten test útfiere, dizze list kin nochal in lange tiid trochgean.

Dit artikel kin dejingen helpe dy't gewoan de basis leare fan it meitsjen fan webapplikaasjes en in bytsje wolle begripe oer de basisbetingsten en konvinsjes.

Dat, bouwapplikaasjes kinne noch wurde ferdield yn 2 dielen: alles wat relatearret oan de applikaasjekoade, en alles dat relatearret oan de omjouwing wêryn dizze koade wurdt útfierd. De applikaasjekoade is op syn beurt ek ferdield yn serverkoade (dyjinge dy't op 'e server rint, faaks: bedriuwslogika, autorisaasje, gegevensopslach, ensfh.), En kliïntkoade (dy't rint op 'e masine fan 'e brûker: faaks de ynterface, en relatearre logika dêrmei).

Litte wy begjinne mei woansdei.

De basis foar de wurking fan elke koade, systeem of software is it bestjoeringssysteem, dus hjirûnder sille wy nei de populêrste systemen op 'e hostingmerk sjen en har in koarte beskriuwing jaan:

Windows Server - deselde Windows, mar yn in tsjinner fariaasje. Guon funksjonaliteit beskikber yn 'e client (gewoane) ferzje fan Windows is hjir net oanwêzich, bygelyks guon tsjinsten foar it sammeljen fan statistiken en ferlykbere software, mar d'r is in set fan nutsfoarsjenningen foar netwurkbehear, basissoftware foar it ynsetten fan servers (web, ftp, ...). Yn it algemien, Windows Server liket gewoane Windows, quacks lykas gewoane Windows, lykwols, it kostet 2 kear mear as syn reguliere tsjinhinger. Lykwols, jûn dat jo nei alle gedachten sille ynsette de applikaasje op in tawijd / firtuele tsjinner, de definitive kosten foar jo, hoewol't it kin tanimme, is net kritysk. Sûnt it Windows-platfoarm in oerweldigjend plak ynnimt yn 'e konsumint OS-merk, sil de serveredysje de meast bekend wêze foar de measte brûkers.

Unix- ferlykber systeem. Tradisjoneel wurk yn dizze systemen fereasket net de oanwêzigens fan in bekende grafyske ynterface, en biedt de brûker allinich in konsole as kontrôleelemint. Foar in sûnder ûnderfining brûker kin wurkje yn dit formaat lestich wêze, krekt wat binne de kosten fan it ferlitten fan in tekstbewurker dy't frij populêr is yn gegevens Vim, in fraach yn ferbân mei dit hat al krigen mear as 6 miljoen views yn 1.8 jier. De wichtichste distribúsjes (edysjes) fan dizze famylje binne: Debian - in populêre distribúsje, pakketferzjes dêryn binne benammen rjochte op LTS (Lange termyn stipe - stipe foar in lange tiid), dat wurdt útdrukt yn in frij hege betrouberens en stabiliteit fan it systeem en pakketten; ubuntu - befettet distribúsjes fan alle pakketten yn har lêste ferzjes, dy't de stabiliteit kinne beynfloedzje, mar kinne jo de funksjonaliteit brûke dy't komt mei nije ferzjes; Red Hat Enterprise Linux - OS, gepositioneerd foar kommersjeel gebrûk, wurdt betelle, lykwols, befettet stipe fan software vendors, guon proprietêre pakketten en stjoerprogramma pakketten; CentOS - iepen boarne in fariaasje fan Red Hat Enterprise Linux, karakterisearre troch it ûntbrekken fan proprietêre pakketten en stipe.

Foar dyjingen dy't krekt begjinne dit gebiet te behearskjen, soe myn oanbefelling systemen wêze Windows Server, of ubuntu. As wy Windows beskôgje, dan is dit foaral de bekendheid fan it systeem, ubuntu - mear tolerânsje foar updates, en op syn beurt, bygelyks, minder problemen by it lansearjen fan projekten op technologyen dy't nije ferzjes nedich binne.

Dat, nei't jo besletten hawwe oer it OS, litte wy trochgean nei in set ark wêrmei jo de steat fan 'e applikaasje of har dielen op' e tsjinner kinne ynsette (ynstallearje), bywurkje en kontrolearje.

It folgjende wichtige beslút sil de pleatsing fan jo applikaasje en de tsjinner dêrfoar wêze. Op it stuit binne de meast foarkommende 3 manieren:

  • Hosting (hâlde) fan in tsjinner op jo eigen is de meast budzjetfreonlike opsje, mar jo moatte in statyske IP bestelle fan jo provider sadat jo boarne syn adres yn 'e rin fan' e tiid net feroaret.
  • Hiere in Dedicated Server (VDS) - en selsstannich beheare it en skaal loads
  • Betelje (faak jouwe se jo in kâns om de funksjonaliteit fan it platfoarm fergees te besykjen) foar in abonnemint op guon wolkhosting, wêr't it betellingsmodel foar de brûkte boarnen frij gewoan is. De meast foaroansteande fertsjintwurdigers fan dizze rjochting: Amazon AWS (se jouwe in fergees jier fan it brûken fan de tsjinsten, mar mei in moanlikse limyt), Google Cloud (se jouwe $ 300 oan it akkount, dat kin wurde bestege yn 't jier oan wolkhostingtsjinsten) , Yandex.Cloud (se jouwe 4000 roebel . foar 2 moannen), Microsoft Azure (jouwe fergees tagong ta populêre tsjinsten foar in jier, + 12 roebel foar elke tsjinsten foar ien moanne). Sa kinne jo ien fan dizze oanbieders besykje sûnder in penny út te jaan, mar in ungefearde miening te krijen oer de kwaliteit en it nivo fan de levere tsjinst.

Ofhinklik fan it keazen paad, it ienige ding dat sil feroarje yn 'e takomst is wa is foar in grut part ferantwurdlik foar dit of dat gebiet fan bestjoer. As jo ​​​​josels hostje, dan moatte jo begripe dat elke ûnderbrekking yn elektrisiteit, it ynternet, de server sels, de software dy't derop ynset is - dit alles leit folslein op jo skouders. Foar training en testen is dit lykwols mear dan genôch.

As jo ​​​​gjin ekstra masine hawwe dy't de rol fan in tsjinner spylje kin, dan wolle jo de twadde of tredde manier brûke. It twadde gefal is identyk oan it earste, mei de útsûndering dat jo de ferantwurdlikens foar de beskikberens fan 'e tsjinner en har macht nei de skouders fan' e hoster ferpleatse. Behear fan de tsjinner en software is noch ûnder jo kontrôle.

En as lêste, de opsje om de kapasiteit fan wolkproviders te hieren. Hjir kinne jo automatyske kontrôle fan hast alles ynstelle sûnder te folle technyske detail yn te gean. Dêrneist, yn stee fan ien masine, kinne jo hawwe ferskate parallel rinnende eksimplaren, dat kin, bygelyks, wêze ferantwurdlik foar ferskate dielen fan de applikaasje, wylst net ferskille folle yn kosten fan it besit fan in tawijd tsjinner. En ek binne d'r ark foar orkestraasje, kontenerisaasje, automatyske ynset, trochgeande yntegraasje en folle mear! Wy sille hjirûnder guon fan dizze dingen besjen.

Yn 't algemien sjocht de serverynfrastruktuer der sa út: wy hawwe in saneamde "orkestrator" ("orkestraasje" is it proses fan it behearen fan ferskate servereksimplaren), dy't miljeuferoarings beheart op in servereksimplaar, in virtualisaasjecontainer (opsjoneel, mar frijwat faak brûkt), wêrtroch jo de applikaasje kinne ferdiele yn isolearre logyske lagen, en Continuous Integration-software - wêrtroch updates foar hosted koade kinne wurde fia "skripts."

Dat, orkestraasje lit jo de status fan servers sjen, updates útrolje of weromdraaie nei de serveromjouwing, ensfh. Yn it earstoan is dit aspekt net wierskynlik om jo te beynfloedzjen, om't om alles te orkestrearjen hawwe jo ferskate servers nedich (jo kinne ien hawwe, mar wêrom is dit nedich?), En om ferskate servers te hawwen, hawwe jo se nedich. Under de ark yn dizze rjochting is de populêrste Kubernetes, ûntwikkele troch Google.

De folgjende stap is virtualisaasje op OS-nivo. Tsjintwurdich is it begryp "dockerization" wiidferspraat wurden, dat komt fan it ark Havenarbeider, dy't de funksjonaliteit leveret fan konteners isolearre fan elkoar, mar lansearre yn 'e kontekst fan ien bestjoeringssysteem. Wat betsjut dit: yn elk fan dizze konteners kinne jo in applikaasje útfiere, of sels in set applikaasjes, dy't leauwe dat se de iennigen binne yn it heule OS, sûnder sels it bestean fan in oar op dizze masine te fermoedzjen. Dizze funksje is heul nuttich foar it lansearjen fan identike applikaasjes fan ferskate ferzjes, of gewoan konfliktende applikaasjes, lykas ek foar it ferdielen fan stikken fan in applikaasje yn lagen. Dizze laach cast kin letter skreaun wurde yn in ôfbylding, dy't bygelyks brûkt wurde kin om in applikaasje yn te setten. Dat is, troch dizze ôfbylding te ynstallearjen en de konteners dy't it befettet yn te setten, krije jo in klearmakke omjouwing foar it útfieren fan jo applikaasje! Yn 'e earste stappen kinne jo dit ark brûke sawol foar ynformative doelen as om heul echte foardielen te krijen troch de applikaasjelogika yn ferskate lagen te dielen. Mar it is hjir te sizzen dat net elkenien dockerisaasje nedich is, en net altyd. Dockerization is rjochtfeardige yn gefallen dêr't de applikaasje is "fragminteare", ferdield yn lytse dielen, elk ferantwurdlik foar syn eigen taak, de saneamde "microservice arsjitektuer".

Derneist, neist it leverjen fan it miljeu, moatte wy soargje foar in foechhawwende ynset fan 'e applikaasje, dy't alle soarten koadetransformaasjes omfettet, ynstallaasje fan applikaasje-relatearre biblioteken en pakketten, útfierende tests, notifikaasjes oer dizze operaasjes, ensfh. Hjir moatte wy omtinken jaan oan sa'n konsept as "Continuous Integration" (CI - Trochrinnende yntegraasje). De wichtichste ark yn dit gebiet op it stuit binne Jenkins (CI-software skreaun yn Java kin oan it begjin in bytsje yngewikkeld lykje), Travis C.I. (skreaun yn Ruby, subjektyf, wat ienfâldiger Jenkins, lykwols is wat kennis op it mêd fan ynsetkonfiguraasje noch fereaske), Gitlab CI (skreaun op Ruby en Go).

Dat, nei't jo praat hawwe oer de omjouwing wêryn jo applikaasje sil wurkje, is it tiid om einlings te sjen hokker ark de moderne wrâld ús biedt foar it meitsjen fan dizze applikaasjes.

Litte wy begjinne mei de basis: backend (efterkant) - tsjinner diel. De taalkar, set fan basisfunksjes en foarôf definieare struktuer (kader) wurdt hjir benammen bepaald troch persoanlike foarkarren, mar dochs is it neamen wurdich foar beskôging (de miening fan de skriuwer oer talen is frij subjektyf, hoewol mei in claim nei in ûnbidige beskriuwing):

  • Python is in frij freonlike taal foar in sûnder ûnderfining brûker, it ferjout guon flaters, mar it kin ek frij strang wêze mei de ûntwikkelder, sadat hy neat ferkeard docht. Al in frij folwoeksen en sinfol taal, dy't ferskynde yn 1991.
  • Go - in taal fan Google, is ek frij freonlik en handich, it is frij maklik om te kompilearjen en in útfierber bestân te krijen op elk platfoarm. It kin ienfâldich en noflik wêze, of it kin kompleks en serieus wêze. Fris en jong, ferskynde relatyf koartlyn, yn 2009.
  • Rust is in bytsje âlder as syn foarige kollega, útbrocht yn 2006, mar is noch frij jong yn ferliking mei syn leeftydsgenoaten. Rjochte op mear erfarne ûntwikkelders, hoewol it noch altyd besiket in protte taken op leech nivo foar de programmeur op te lossen.
  • Java is in feteraan fan kommersjele ûntwikkeling, yntrodusearre yn 1995, en is ien fan 'e meast brûkte talen yn' e ûntwikkeling fan bedriuwsapplikaasjes hjoed. Mei syn basisbegripen en swiere opset kin de runtime frij útdaagjend wurde foar in begjinner.
  • ASP.net is in platfoarm foar applikaasjeûntwikkeling útbrocht troch Microsoft. Foar it skriuwen fan funksjonaliteit wurdt benammen de C#-taal (útsprutsen C Sharp), dy't ferskynde yn 2000, brûkt. De kompleksiteit dêrfan is te fergelykjen mei it nivo tusken Java en Rust.
  • PHP, oarspronklik brûkt foar HTML-foarferwurking, is op it stuit, hoewol it absolute liederskip yn 'e taalmerk hat, in trend nei in delgong yn gebrûk. It hat in lege yngongsdrompel en it gemak fan skriuwen fan koade, mar tagelyk, by it ûntwikkeljen fan frij grutte applikaasjes, kin de funksjonaliteit fan 'e taal miskien net genôch wêze.

No, it lêste diel fan ús applikaasje - it meast taastber foar de brûker - Foarste ein (frontend) - is it gesicht fan jo applikaasje; it is mei dit diel dat de brûker direkt ynteraksje.

Sûnder yn details te gean, stiet de moderne frontend op trije pylders, kaders (en net sa folle), foar it meitsjen fan brûkersynterfaces. Dêrtroch binne de trije populêrste:

  • ReactJS is gjin ramt, mar in bibleteek. Eigentlik ferskilt it ramt allinich fan har grutske titel by it ûntbrekken fan guon funksjes "út it fak" en de needsaak om se manuell te ynstallearjen. Sa binne d'r ferskate farianten fan 'e "tarieding" fan dizze bibleteek, dy't unike kaders foarmje. It kin in bytsje lestich wêze foar in begjinner, troch guon basisprinsipes, en frij agressive opset fan 'e bouwomjouwing. Foar in rappe start kinne jo lykwols it pakket "create-react-app" brûke.
  • VueJS is in ramt foar it bouwen fan brûkersynterfaces. Fan dizze trije-ienheid nimt it mei rjocht de titel fan it meast brûkerfreonlike ramt; foar ûntwikkeling yn Vue is de barriêre foar yngong leger dan dy fan 'e oare neamde bruorren. Boppedat is hy de jongste ûnder harren.
  • Angular wurdt beskôge as de meast komplekse fan dizze kaders, de ienige dy't fereasket typoskript (tafoeging foar Javascript-taal). Faak brûkt om grutte bedriuwsapplikaasjes te bouwen.

Gearfetsjend wat hjirboppe skreaun is, kinne wy ​​konkludearje dat no it ynsetten fan in applikaasje radikaal oars is as hoe't dit proses earder ferrûn. Nimmen stopet jo lykwols om de "ynset" op 'e âlderwetske manier te dwaan. Mar is de bytsje tiid besparre oan it begjin it enoarme oantal flaters wurdich dat in ûntwikkelder dy't dit paad kiest sil moatte stappe? Ik leau dat it antwurd nee is. Troch wat mear tiid te besteegjen oan fertroud te meitsjen mei dizze ark (en mear hawwe jo net nedich, om't jo moatte begripe oft jo se nedich binne yn jo hjoeddeistige projekt of net), kinne jo it útspielje, troch bgl. , gefallen fan geast flaters ôfhinklik fan de omjouwing en dy't ferskine allinnich op de produksje tsjinner, nachtlike analyze fan wat late ta de tsjinner crash en wêrom it sil net begjinne, en folle mear.

Boarne: www.habr.com

Add a comment