Վեբ հավելվածներ ստեղծելու և հրապարակելու ստուգացանկ

Մեր ժամանակներում ձեր սեփական վեբ հավելվածը ստեղծելու համար բավական չէ այն զարգացնել կարողանալը։ Կարևոր ասպեկտ է հավելվածների տեղակայման, մոնիտորինգի, ինչպես նաև այն միջավայրը կառավարելու և կառավարելու գործիքների ստեղծումը, որտեղ այն գործում է: Քանի որ ձեռքով տեղակայման դարաշրջանը մոռացության է մատնվում, նույնիսկ փոքր նախագծերի համար, ավտոմատացման գործիքները կարող են շոշափելի օգուտներ բերել: «Ձեռքով» տեղակայելիս մենք հաճախ կարող ենք մոռանալ ինչ-որ բան տեղափոխել, հաշվի առնել այս կամ այն ​​նրբերանգը, կատարել մոռացված թեստ, այս ցանկը կարելի է երկար շարունակել։

Այս հոդվածը կարող է օգնել նրանց, ովքեր նոր են սովորում վեբ հավելվածների ստեղծման հիմունքները և ցանկանում են մի փոքր հասկանալ հիմնական պայմաններն ու պայմանագրերը:

Այսպիսով, հավելվածների կառուցումը դեռևս կարելի է բաժանել 2 մասի՝ այն ամենը, ինչ վերաբերում է հավելվածի կոդին, և այն ամենը, ինչ վերաբերում է այն միջավայրին, որտեղ այս կոդը կատարվում է: Հավելվածի կոդը, իր հերթին, նույնպես բաժանվում է սերվերի կոդի (այն, որն աշխատում է սերվերի վրա, հաճախ՝ բիզնես տրամաբանություն, թույլտվություն, տվյալների պահպանում և այլն) և հաճախորդի կոդի (այն, որն աշխատում է օգտագործողի մեքենայի վրա. հաճախ. ինտերֆեյսը և դրա հետ կապված տրամաբանությունը):

Սկսենք չորեքշաբթիից։

Ցանկացած կոդի, համակարգի կամ ծրագրաշարի շահագործման հիմքը Օպերացիոն համակարգն է, ուստի ստորև մենք կանդրադառնանք հոսթինգի շուկայում ամենահայտնի համակարգերին և կտանք դրանց համառոտ նկարագրությունը.

Windows Server- ը - նույն Windows-ը, բայց սերվերի տարբերակով: Windows-ի հաճախորդի (սովորական) տարբերակում առկա որոշ ֆունկցիոնալություններ չկան այստեղ, օրինակ՝ վիճակագրության հավաքագրման և նմանատիպ ծրագրերի որոշ ծառայություններ, սակայն կա ցանցի կառավարման կոմունալ ծառայություններ, սերվերների տեղակայման հիմնական ծրագրակազմ (վեբ, ftp, ...): Ընդհանուր առմամբ, Windows Server-ը սովորական Windows-ի տեսք ունի, սովորական Windows-ի նման, սակայն այն արժե 2 անգամ ավելի, քան իր սովորական գործընկերը: Այնուամենայնիվ, հաշվի առնելով, որ դուք, ամենայն հավանականությամբ, հավելվածը կտեղակայեք հատուկ/վիրտուալ սերվերի վրա, ձեզ համար վերջնական արժեքը, թեև այն կարող է աճել, կարևոր չէ: Քանի որ Windows պլատֆորմը ճնշող տեղ է զբաղեցնում սպառողական ՕՀ-ի շուկայում, դրա սերվերային տարբերակը կլինի ամենաճանաչվածը օգտվողների մեծամասնության համար:

Յունիքս- նմանատիպ համակարգ. Այս համակարգերում ավանդական աշխատանքը չի պահանջում ծանոթ գրաֆիկական ինտերֆեյսի առկայություն՝ օգտատիրոջը որպես կառավարման տարր առաջարկելով միայն կոնսոլ: Անփորձ օգտատիրոջ համար այս ձևաչափով աշխատելը կարող է դժվար լինել, պարզապես ինչ արժե տեքստային խմբագրիչից դուրս գալը, որը բավականին տարածված է տվյալների մեջ: եռանդ, սրա հետ կապված հարց 6 տարում արդեն ավելի քան 1.8 միլիոն դիտում է հավաքել։ Այս ընտանիքի հիմնական բաշխումները (հրատարակություններն) են՝ Debian - հանրաճանաչ բաշխում, փաթեթային տարբերակները դրանում կենտրոնացած են հիմնականում LTS-ի վրա (Երկարաժամկետ աջակցություն – երկարատև աջակցություն), որն արտահայտվում է համակարգի և փաթեթների բավականին բարձր հուսալիությամբ և կայունությամբ. Ubuntu – պարունակում է բոլոր փաթեթների բաշխումները իրենց վերջին տարբերակներում, ինչը կարող է ազդել կայունության վրա, սակայն թույլ է տալիս օգտագործել նոր տարբերակների հետ կապված ֆունկցիոնալությունը. Red Hat Enterprise Linux – ՕՀ, որը տեղադրված է առևտրային օգտագործման համար, վճարովի է, սակայն ներառում է աջակցություն ծրագրային ապահովման վաճառողներից, որոշ գույքային փաթեթներ և վարորդական փաթեթներ. CentOS - բաց կոդով Red Hat Enterprise Linux-ի տարբերակ, որը բնութագրվում է սեփականության փաթեթների և աջակցության բացակայությամբ:

Նրանց համար, ովքեր նոր են սկսում տիրապետել այս ոլորտին, իմ խորհուրդը կլինի համակարգերը Windows Server- ըԿամ Ubuntu. Եթե ​​հաշվի առնենք Windows-ը, ապա սա առաջին հերթին համակարգի ծանոթությունն է, Ubuntu – ավելի շատ հանդուրժողականություն թարմացումների նկատմամբ, և իր հերթին, օրինակ, ավելի քիչ խնդիրներ՝ նոր տարբերակներ պահանջող տեխնոլոգիաների նախագծերի մեկնարկի ժամանակ:

Այսպիսով, որոշելով OS-ն, եկեք անցնենք գործիքների մի շարքին, որոնք թույլ են տալիս տեղակայել (տեղադրել), թարմացնել և վերահսկել հավելվածի կամ դրա մասերի վիճակը սերվերում:

Հաջորդ կարևոր որոշումը կլինի ձեր հավելվածի և դրա համար սերվերի տեղադրումը: Այս պահին ամենատարածվածը 3 եղանակ է.

  • Սերվերի ինքնուրույն հոսթինգը (պահելը) ամենաբյուջետային տարբերակն է, բայց դուք ստիպված կլինեք պատվիրել ստատիկ IP ձեր մատակարարից, որպեսզի ձեր ռեսուրսը ժամանակի ընթացքում չփոխի իր հասցեն:
  • Վարձակալեք հատուկ սերվեր (VDS) – և ինքնուրույն կառավարեք այն և մեծացրեք բեռները
  • Վճարեք (հաճախ նրանք ձեզ հնարավորություն են տալիս անվճար փորձարկել հարթակի ֆունկցիոնալությունը) որոշ ամպային հոսթինգի բաժանորդագրության համար, որտեղ օգտագործվող ռեսուրսների համար վճարման մոդելը բավականին տարածված է: Այս ուղղության ամենահայտնի ներկայացուցիչները՝ Amazon AWS (նրանք տալիս են ծառայություններից օգտվելու անվճար տարի, բայց ամսական սահմանաչափով), Google Cloud (հաշվին տալիս են $300, որը կարող է տարվա ընթացքում ծախսվել ամպային հոսթինգի ծառայությունների վրա) , Yandex.Cloud (տանում են 4000 ռուբլի . 2 ամսով), Microsoft Azure (անվճար մուտք դեպի հանրաճանաչ ծառայություններ մեկ տարի, + 12 ռուբլի ցանկացած ծառայության համար մեկ ամսվա համար)։ Այսպիսով, դուք կարող եք փորձել այս պրովայդերներից որևէ մեկը՝ առանց մի կոպեկ ծախսելու, բայց ստանալով մոտավոր կարծիք մատուցվող ծառայության որակի և մակարդակի մասին։

Կախված ընտրված ուղուց, միակ բանը, որ կփոխվի ապագայում, այն է, թե ով է մեծապես պատասխանատու կառավարման այս կամ այն ​​ոլորտի համար: Եթե ​​դուք հյուրընկալում եք ինքներդ ձեզ, ապա պետք է հասկանաք, որ էլեկտրաէներգիայի, ինտերնետի, հենց սերվերի, դրա վրա տեղադրված ծրագրաշարի ցանկացած ընդհատում այս ամենը ամբողջովին ձեր ուսերին է: Այնուամենայնիվ, վերապատրաստման և փորձարկման համար սա ավելի քան բավարար է:

Եթե ​​դուք չունեք լրացուցիչ մեքենա, որը կարող է խաղալ սերվերի դեր, ապա դուք կցանկանաք օգտագործել երկրորդ կամ երրորդ ճանապարհը: Երկրորդ դեպքը նույնական է առաջինի հետ, բացառությամբ, որ սերվերի հասանելիության և դրա հզորության պատասխանատվությունը տեղափոխում եք հոսթերի ուսերին։ Սերվերի և ծրագրաշարի կառավարումը դեռ ձեր վերահսկողության տակ է:

Եվ վերջապես՝ ամպային պրովայդերների կարողությունները վարձակալելու տարբերակը։ Այստեղ դուք կարող եք կարգավորել գրեթե ամեն ինչի ավտոմատ կառավարում՝ առանց չափազանց շատ տեխնիկական մանրամասների մեջ մտնելու: Բացի այդ, մեկ մեքենայի փոխարեն կարող եք ունենալ մի քանի զուգահեռ գործարկվող ատյաններ, որոնք, օրինակ, կարող են պատասխանատու լինել հավելվածի տարբեր մասերի համար՝ միաժամանակ ծախսերով առանձնապես չտարբերվելով հատուկ սերվեր ունենալուց: Եվ նաև, կան գործիքներ նվագախմբի, կոնտեյներացման, ավտոմատ տեղակայման, շարունակական ինտեգրման և շատ ավելին: Ստորև մենք կանդրադառնանք այս բաներից մի քանիսին:

Ընդհանուր առմամբ, սերվերի ենթակառուցվածքն այսպիսի տեսք ունի. մենք ունենք այսպես կոչված «նվագավորող» («նվագավորությունը» մի քանի սերվերի օրինակների կառավարման գործընթաց է), որը կառավարում է շրջակա միջավայրի փոփոխությունները սերվերի օրինակում, վիրտուալացման կոնտեյներ (ըստ ցանկության, բայց բավականին հաճախ օգտագործվող), որը թույլ է տալիս հավելվածը բաժանել մեկուսացված տրամաբանական շերտերի և Continuous Integration ծրագրային ապահովման՝ թույլ տալով թարմացումներ հոսթինգի կոդը «սկրիպտների» միջոցով:

Այսպիսով, խմբավորումը թույլ է տալիս տեսնել սերվերների կարգավիճակը, դուրս բերել կամ հետ ուղարկել սերվերի միջավայրի թարմացումները և այլն: Սկզբում այս ասպեկտը դժվար թե ազդի ձեզ վրա, քանի որ որևէ բան կազմակերպելու համար ձեզ հարկավոր են մի քանի սերվեր (կարող եք ունենալ մեկը, բայց ինչո՞ւ է դա անհրաժեշտ), և մի քանի սերվեր ունենալու համար ձեզ անհրաժեշտ են դրանք: Այս ուղղությամբ գործիքների շարքում ամենատարածվածը Kubernetes-ն է, որը մշակվել է Google.

Հաջորդ քայլը վիրտուալացումն է ՕՀ մակարդակում: Մեր օրերում լայն տարածում է գտել «dockerization» հասկացությունը, որը գալիս է գործիքից դոկեր, որն ապահովում է միմյանցից մեկուսացված, բայց մեկ օպերացիոն համակարգի համատեքստում գործարկված բեռնարկղերի ֆունկցիոնալությունը։ Ի՞նչ է սա նշանակում. այս կոնտեյներներից յուրաքանչյուրում կարող եք գործարկել հավելված կամ նույնիսկ մի շարք հավելվածներ, որոնք կհավատան, որ դրանք միակն են ողջ ՕՀ-ում, նույնիսկ չկասկածելով այս մեքենայի վրա ուրիշի գոյությունը: Այս ֆունկցիան շատ օգտակար է տարբեր տարբերակների նույնական կամ պարզապես հակասական հավելվածներ գործարկելու, ինչպես նաև հավելվածի մասերը շերտերի բաժանելու համար: Այս շերտը կարող է հետագայում գրվել պատկերի մեջ, որը կարող է օգտագործվել, օրինակ, հավելված տեղակայելու համար: Այսինքն՝ տեղադրելով այս պատկերը և տեղակայելով դրա մեջ պարունակվող բեռնարկղերը՝ դուք ստանում եք պատրաստի միջավայր՝ ձեր հավելվածը գործարկելու համար: Առաջին քայլերում դուք կարող եք օգտագործել այս գործիքը ինչպես տեղեկատվական նպատակներով, այնպես էլ շատ իրական օգուտներ ստանալու համար՝ բաժանելով հավելվածի տրամաբանությունը տարբեր շերտերի։ Բայց այստեղ արժե ասել, որ ոչ բոլորին պետք է դոկերիզացիա, և ոչ միշտ: Dockerization-ը արդարացված է այն դեպքերում, երբ հավելվածը «հատված» է, բաժանված է փոքր մասերի, որոնցից յուրաքանչյուրը պատասխանատու է իր առաջադրանքի համար, այսպես կոչված, «միկրոծառայության ճարտարապետություն»:

Բացի այդ, միջավայր ապահովելուց բացի, մենք պետք է ապահովենք հավելվածի իրավասու տեղաբաշխումը, որը ներառում է բոլոր տեսակի կոդերի փոխակերպումներ, հավելվածների հետ կապված գրադարանների և փաթեթների տեղադրում, փորձարկումներ, այդ գործողությունների մասին ծանուցումներ և այլն: Այստեղ մենք պետք է ուշադրություն դարձնենք այնպիսի հայեցակարգի վրա, ինչպիսին է «Շարունակական ինտեգրում» (CI – շարունակական ինտեգրում) Այս ոլորտում այս պահին հիմնական գործիքներն են Jenkins-ը ( Java-ով գրված CI ծրագրակազմը սկզբում կարող է մի փոքր բարդ թվալ), Թրևիս CI (գրված է Ruby-ով, սուբյեկտիվ, մի փոքր ավելի պարզ Ջենկինս, այնուամենայնիվ, տեղակայման կազմաձևման ոլորտում որոշակի գիտելիքներ դեռևս պահանջվում են), Gitlab CI (գրված է Ruby and Go).

Այսպիսով, խոսելով այն միջավայրի մասին, որտեղ կաշխատի ձեր հավելվածը, ժամանակն է վերջապես տեսնել, թե ժամանակակից աշխարհն ինչ գործիքներ է առաջարկում մեզ հենց այս հավելվածները ստեղծելու համար:

Սկսենք հիմունքներից. backend (backend) – սերվերի մաս: Լեզվի ընտրությունը, հիմնական գործառույթների հավաքածուն և նախապես սահմանված կառուցվածքը (շրջանակը) այստեղ որոշվում է հիմնականում անձնական նախասիրություններով, բայց, այնուամենայնիվ, արժե հաշվի առնել (լեզուների մասին հեղինակի կարծիքը բավականին սուբյեկտիվ է, թեև պնդում է. անաչառ նկարագրության համար):

  • Python-ը բավականին բարեհամբույր լեզու է անփորձ օգտագործողի համար, այն ներում է որոշ սխալներ, բայց կարող է նաև բավականին խիստ լինել ծրագրավորողի նկատմամբ, որպեսզի նա վատ բան չանի։ Արդեն բավականին հասուն և բովանդակալից լեզու, որը հայտնվել է 1991 թ.
  • Go - լեզու Google-ից, նույնպես բավականին ընկերական է և հարմար, այն բավականին հեշտ է կազմել և ստանալ գործարկվող ֆայլ ցանկացած հարթակում։ Դա կարող է լինել պարզ և հաճելի, կամ կարող է լինել բարդ և լուրջ: Թարմ ու երիտասարդ, ի հայտ եկավ համեմատաբար վերջերս՝ 2009թ.
  • Rust-ը մի փոքր ավելի մեծ է, քան իր նախորդ գործընկերը, որը թողարկվել է 2006 թվականին, բայց դեռ բավականին երիտասարդ է՝ համեմատած իր հասակակիցների հետ: Միտված է ավելի փորձառու ծրագրավորողներին, թեև այն դեռ փորձում է լուծել ծրագրավորողի համար ցածր մակարդակի բազմաթիվ խնդիրներ:
  • Java-ն առևտրային զարգացման վետերան է, որը ներկայացվել է 1995 թվականին և այսօր ձեռնարկությունների հավելվածների մշակման մեջ ամենատարածված լեզուներից մեկն է: Իր հիմնական գաղափարներով և ծանրաբեռնված կարգավորումներով, գործարկման ժամանակը կարող է բավականին դժվար դառնալ սկսնակների համար:
  • ASP.net-ը Microsoft-ի կողմից թողարկված հավելվածների մշակման հարթակ է: Ֆունկցիոնալությունը գրելու համար հիմնականում օգտագործվում է C# լեզուն (արտասանվում է C Sharp), որը հայտնվել է 2000 թվականին։ Դրա բարդությունը համեմատելի է Java-ի և Rust-ի միջև եղած մակարդակի հետ:
  • PHP-ն, որն ի սկզբանե օգտագործվում էր HTML-ի նախնական մշակման համար, ներկայումս, չնայած այն բացարձակ առաջատարն է լեզվի շուկայում, նկատվում է օգտագործման անկման միտում: Այն ունի մուտքի ցածր շեմ և կոդ գրելու հեշտություն, բայց միևնույն ժամանակ, բավականին մեծ հավելվածներ մշակելիս, լեզվի ֆունկցիոնալությունը կարող է բավարար չլինել:

Դե, մեր հավելվածի վերջին մասը՝ օգտագործողի համար առավել շոշափելի. Դիմային մաս (frontend) – ձեր հավելվածի դեմքն է, հենց այս մասի հետ է օգտատերը անմիջականորեն փոխազդում:

Առանց մանրամասների խորանալու, ժամանակակից ճակատը կանգնած է երեք սյուների, շրջանակների (և ոչ այնքան) վրա՝ օգտատերերի միջերեսներ ստեղծելու համար: Ըստ այդմ, երեք ամենատարածվածներն են.

  • ReactJS-ը շրջանակ չէ, այլ գրադարան։ Իրականում, շրջանակը տարբերվում է իր հպարտ վերնագրից միայն որոշ գործառույթների բացակայության և դրանք ձեռքով տեղադրելու անհրաժեշտության պատճառով: Այսպիսով, կան այս գրադարանի «պատրաստման» մի քանի տարբերակներ՝ ձևավորելով յուրահատուկ շրջանակներ։ Սկսնակների համար դա կարող է մի փոքր դժվար լինել՝ որոշ հիմնական սկզբունքների և կառուցապատման միջավայրի բավականին ագրեսիվ տեղադրման պատճառով: Այնուամենայնիվ, արագ սկսելու համար կարող եք օգտագործել «create-react-app» փաթեթը:
  • VueJS-ը օգտատերերի միջերեսներ ստեղծելու շրջանակ է: Այս եռամիասնությունից այն իրավամբ վերցնում է օգտատերերի համար առավել հարմար շրջանակի տիտղոսը, Vue-ում զարգացման համար մուտքի արգելքն ավելի ցածր է, քան մյուս նշված եղբայրներինը: Ընդ որում, նա ամենաերիտասարդն է նրանց մեջ։
  • Angular-ը համարվում է այս շրջանակներից ամենաբարդը, միակը, որը պահանջում է TypeScript- ը (լրացում Javascript լեզվի համար): Հաճախ օգտագործվում է խոշոր ձեռնարկությունների հավելվածներ ստեղծելու համար:

Ամփոփելով վերևում գրվածը, կարող ենք եզրակացնել, որ այժմ հավելվածի տեղակայումը արմատապես տարբերվում է նախկինում այս գործընթացից: Այնուամենայնիվ, ոչ ոք ձեզ չի խանգարում «տեղակայումը» կատարել հին ձևով: Բայց արդյո՞ք սկզբում խնայված քիչ ժամանակը արժե այն հսկայական թվով սխալներ, որոնց վրա պետք է ոտքի կանգնի մշակողը, ով ընտրում է այս ճանապարհը: Ես հավատում եմ, որ պատասխանը ոչ է: Մի քիչ ավելի շատ ժամանակ տրամադրելով՝ ծանոթանալով այս գործիքներին (և դրանից ավելին ձեզ հարկավոր չէ, քանի որ դուք պետք է հասկանաք՝ դրանք ձեզ անհրաժեշտ են ձեր ընթացիկ նախագծում, թե ոչ), դուք կարող եք այն խաղալ՝ զգալիորեն նվազեցնելով, օրինակ. , ուրվականի սխալների դեպքեր՝ կախված շրջակա միջավայրից և որոնք հայտնվում են միայն արտադրական սերվերում, գիշերային վերլուծություն, թե ինչն է հանգեցրել սերվերի խափանման և ինչու այն չի գործարկվի, և շատ ավելին։

Source: www.habr.com

Добавить комментарий