Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով
Ստեղծեք ձեր առաջին DevOps շղթան հինգ քայլով սկսնակների համար:

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

Իմ ծանոթությունը DevOps-ին

Ես նախկինում աշխատում էի ամպերի հետ Citi Group-ում և մշակում IaaS վեբ հավելված՝ կառավարելու Citi-ի ամպային ենթակառուցվածքը, բայց ինձ միշտ հետաքրքրել է, թե ինչպես օպտիմալացնել զարգացման շղթան և բարելավել մշակույթը մշակողների շրջանում: Գրեգ Լավանդերը՝ Ամպային ճարտարապետության և ենթակառուցվածքների մեր CTO-ն, խորհուրդ տվեց ինձ այս գիրքը: «Փյունիկ» նախագիծ. Այն գեղեցիկ է բացատրում DevOps-ի սկզբունքները և կարդում է վեպի պես:

Հետևի աղյուսակը ցույց է տալիս, թե որքան հաճախ են ընկերությունները թողարկում նոր տարբերակներ.

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Ինչպե՞ս են Amazon-ին, Google-ին և Netflix-ին հաջողվում այդքան շատ տարածել: Եվ դա պարզ է՝ նրանք հասկացան, թե ինչպես ստեղծել գրեթե կատարյալ DevOps շղթա:

Citi-ում մեզ համար ամեն ինչ շատ տարբեր էր, մինչև մենք անցանք DevOps-ին: Այնուհետև իմ թիմն ուներ տարբեր միջավայրեր, բայց մենք մշակման սերվերին առաքումը կատարեցինք ձեռքով: Բոլոր ծրագրավորողներն ուներ մուտք գործելու միայն մեկ սերվեր, որը հիմնված է IBM WebSphere Application Server Community Edition-ի վրա: Առաքման միաժամանակյա փորձով սերվերը «ընկավ», և ամեն անգամ մենք ստիպված էինք «ցավով» բանակցել մեր միջև։ Մենք նաև ունեինք կոդի անբավարար ծածկույթ թեստերով, ձեռքով առաքման ժամանակատար գործընթաց, և որևէ առաջադրանքի կամ հաճախորդի պահանջի օգնությամբ կոդի առաքմանը հետևելու հնարավորություն չկար:

Պարզ էր, որ շտապ ինչ-որ բան պետք է անել, և ես գտա համախոհ գործընկերոջ։ Մենք որոշեցինք միասին ստեղծել առաջին DevOps շղթան. նա ստեղծեց վիրտուալ մեքենա և Tomcat հավելվածի սերվեր, իսկ ես հոգ տարա Ջենքինսի մասին, Atlassian Jira-ի և BitBucket-ի հետ ինտեգրումը, ինչպես նաև կոդերի ծածկույթը թեստերով: Նախագիծը հաջողված էր. մենք լիովին ավտոմատացրեցինք զարգացման շղթան, հասանք զարգացման սերվերի գրեթե 100% գործարկման, կարողացանք վերահսկել և բարելավել կոդերի ծածկույթը թեստերով, և Git մասնաճյուղը կարող էր կապված լինել Jira-ի առաքման և խնդրի հետ: Եվ գրեթե բոլոր գործիքները, որոնք մենք օգտագործել ենք DevOps շղթան կառուցելու համար, բաց կոդով էին:

Իրականում, շղթան պարզեցված էր, քանի որ մենք նույնիսկ չենք կիրառել առաջադեմ կոնֆիգուրացիաներ՝ օգտագործելով Jenkins-ը կամ Ansible-ը: Բայց մեզ հաջողվեց։ Թերեւս սա սկզբունքի հետեւանք է Պարետո (80/20 կանոնը):

DevOps-ի և CI/CD շղթայի համառոտ նկարագրությունը

DevOps-ն ունի տարբեր սահմանումներ: DevOps-ը, ինչպես Agile-ը, ներառում է տարբեր առարկաներ: Բայց շատերը կհամաձայնեն հետևյալ սահմանման հետ. DevOps-ը ծրագրային ապահովման մշակման մեթոդ կամ կյանքի ցիկլ է, որի հիմնական սկզբունքը մշակույթ ստեղծելն է, որտեղ մշակողները և այլ աշխատակիցները «միևնույն ալիքի երկարության վրա» են, ձեռքի աշխատանքը ավտոմատացված է, բոլորն անում են այն, ինչում լավագույնս են, մեծանում է առաքումների հաճախականությունը, բարձրանում է աշխատանքի արտադրողականությունը, մեծանում է ճկունությունը։

Թեև միայն գործիքները բավարար չեն DevOps միջավայր ստեղծելու համար, դրանք անփոխարինելի են: Դրանցից ամենակարևորը շարունակական ինտեգրումն է և շարունակական առաքումը (CI/CD): Յուրաքանչյուր միջավայրի համար շղթայում կան տարբեր փուլեր (օրինակ՝ DEV (մշակում), INT (ինտեգրում), TST (փորձարկում), QA (որակի ապահովում), UAT (օգտագործողի ընդունման փորձարկում), STG (պատրաստում), PROD (օգտագործում)) , ձեռքով առաջադրանքները ավտոմատացված են, մշակողները կարող են արտադրել որակյալ կոդ, մատուցել այն և հեշտությամբ վերակառուցել:

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

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Եկեք գործի անցնենք:

Քայլ 1. CI/CD հարթակ

Առաջին հերթին ձեզ հարկավոր է CI/CD գործիք: Jenkins-ը MIT-ի արտոնագրված, բաց կոդով CI/CD գործիք է, որը գրված է Java-ով, որը հանրահռչակեց DevOps շարժումը և դարձավ CICD-ի դե ֆակտո ստանդարտ:

Ինչ է Ջենկինսը: Պատկերացրեք, որ դուք ունեք կախարդական կառավարման վահանակ տարբեր ծառայությունների և գործիքների համար: Ինքնուրույն, Ջենկինսի նման CI/CD գործիքն անօգուտ է, բայց տարբեր գործիքների և ծառայությունների շնորհիվ այն դառնում է ամենակարող:

Բացի Ջենկինսից, կան բազմաթիվ այլ բաց կոդով գործիքներ, ընտրեք ցանկացածը:

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Ահա թե ինչ տեսք ունի DevOps գործընթացը CI/CD գործիքի միջոցով

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Դուք ունեք CI / CD գործիք localhost-ում, բայց դեռ շատ բան չկա անելու: Անցնենք հաջորդ քայլին։

Քայլ 2. Տարբերակի վերահսկում

CI/CD գործիքի կախարդանքը ստուգելու լավագույն (և, հավանաբար, ամենահեշտ) միջոցը այն ինտեգրելն է աղբյուրի կառավարման (SCM) գործիքի հետ: Ինչու՞ է ձեզ անհրաժեշտ տարբերակի վերահսկում: Ենթադրենք, դուք դիմում եք ներկայացնում: Դուք այն գրում եք Java, Python, C++, Go, Ruby, JavaScript կամ որևէ այլ լեզվով, որը վագոն է և փոքրիկ սայլակ: Այն, ինչ գրում ես, կոչվում է սկզբնաղբյուր: Սկզբում, հատկապես եթե միայնակ եք աշխատում, կարող եք ամեն ինչ պահել տեղական գրացուցակում: Բայց քանի որ նախագիծը մեծանում է, և ավելի շատ մարդիկ են միանում, ձեզ հարկավոր է տարբերակ՝ կիսվելու կոդի փոփոխություններով, բայց փոփոխությունները միաձուլելիս խուսափել կոնֆլիկտներից: Եվ դուք նաև պետք է ինչ-որ կերպ վերականգնել նախորդ տարբերակները՝ առանց կրկնօրինակներ օգտագործելու և կոդային ֆայլերի համար պատճենահանման տեղադրման մեթոդի օգտագործման:

Եվ այստեղ առանց SCM-ի ոչ մի տեղ: SCM-ը պահում է կոդը պահեստներում, կառավարում է դրա տարբերակները և համակարգում այն ​​մշակողների միջև:

Կան բազմաթիվ SCM գործիքներ, բայց Git-ը արժանիորեն դարձել է դե ֆակտո ստանդարտ: Խորհուրդ եմ տալիս օգտագործել այն, բայց կան այլ տարբերակներ։

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Ահա թե ինչ տեսք ունի DevOps խողովակաշարը SCM-ն ավելացնելուց հետո:

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

CI/CD գործիքը կարող է ավտոմատացնել սկզբնական կոդի վերբեռնումը և ներբեռնումը և թիմային համագործակցությունը: Վատ չի? Բայց հիմա ինչպե՞ս կարելի է դրանից միլիարդավոր օգտատերերի կողմից սիրված աշխատող հավելված պատրաստել:

Քայլ 3. Ստեղծեք ավտոմատացման գործիք

Ամեն ինչ ճիշտ է ընթանում։ Դուք կարող եք վերբեռնել կոդը և փոփոխություններ կատարել աղբյուրի կառավարման մեջ և հրավիրել ընկերներին աշխատել ձեզ հետ: Բայց դուք դեռ հավելված չունեք: Որպեսզի սա լինի վեբ հավելված, այն պետք է կազմվի և փաթեթավորվի բաշխման համար կամ գործարկվի որպես գործարկվող: (Այնպիսի մեկնաբանված ծրագրավորման լեզուն, ինչպիսին է JavaScript-ը կամ PHP-ն, կազմման կարիք չունի:)

Օգտագործեք կառուցման ավտոմատացման գործիք: Որ գործիքն էլ որ ընտրեք, այն կհավաքի կոդը ճիշտ ձևաչափով և կավտոմատացնի մաքրումը, հավաքումը, փորձարկումը և առաքումը: Կառուցման գործիքները տարբերվում են ըստ լեզվի, սակայն սովորաբար օգտագործվում են հետևյալ բաց կոդով տարբերակները:

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Կատարյալ! Այժմ եկեք տեղադրենք կառուցման ավտոմատացման գործիքի կազմաձևման ֆայլերը աղբյուրի կառավարման մեջ, որպեսզի CI/CD գործիքը կառուցի դրանք:

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Դա լավ է զգում: Բայց որտե՞ղ է այս ամենը դուրս գալու հիմա:

Քայլ 4. Վեբ հավելվածի սերվեր

Այսպիսով, դուք ունեք փաթեթավորված ֆայլ, որը կարող է գործարկվել կամ տարածվել: Որպեսզի հավելվածն իսկապես օգտակար լինի, այն պետք է ունենա ինչ-որ ծառայություն կամ ինտերֆեյս, բայց դուք պետք է այդ ամենը տեղադրեք ինչ-որ տեղ:

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

Կան մի քանի բաց վեբ հավելվածների սերվերներ:

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Մենք արդեն ունենք գրեթե աշխատող DevOps շղթա: Մեծ աշխատանք!

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Սկզբունքորեն, դուք կարող եք կանգ առնել այստեղ, այնուհետև կարող եք ինքներդ կարգավորել այն, բայց արժե խոսել կոդի որակի մասին:

Քայլ 5. Փորձարկման ծածկույթ

Փորձարկումը շատ ժամանակ և ջանք է պահանջում, բայց ավելի լավ է անմիջապես գտնել սխալներ և բարելավել կոդը՝ վերջնական օգտատերերին գոհացնելու համար: Այդ նպատակով կան բազմաթիվ բաց գործիքներ, որոնք ոչ միայն կփորձարկեն կոդը, այլեւ խորհուրդ կտան այն բարելավելու մասին: CI/CD գործիքների մեծ մասը կարող է միացնել այս գործիքներին և ավտոմատացնել գործընթացը:

Թեստավորումը բաժանված է երկու մասի՝ թեստեր գրելու և կատարելու համար թեստավորման շրջանակներ և կոդի որակը բարելավելու ակնարկներով գործիքներ:

Փորձարկման շրջանակներ

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Գործիքներ որակյալ խորհուրդներով

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Այս գործիքների և շրջանակների մեծ մասը գրված է Java-ի, Python-ի և JavaScript-ի համար, քանի որ C++-ը և C#-ը սեփականություն են (չնայած GCC-ն բաց կոդ է):

Մենք կիրառել ենք թեստային ծածկույթի գործիքները, և այժմ DevOps խողովակաշարը պետք է նման լինի դասընթացի սկզբի նկարին:

Լրացուցիչ քայլեր

Բեռնարկղեր

Ինչպես նախկինում ասացի, հավելվածի սերվերը կարող է տեղակայվել վիրտուալ մեքենայի կամ սերվերի մեջ, սակայն կոնտեյներներն ավելի տարածված են:

Ինչ են բեռնարկղերը? Մի խոսքով, վիրտուալ մեքենայում օպերացիոն համակարգը հաճախ ավելի շատ տեղ է զբաղեցնում, քան հավելվածը, և կոնտեյները սովորաբար բավական է մի քանի գրադարաններով և կոնֆիգուրացիայով: Որոշ դեպքերում վիրտուալ մեքենաներն անփոխարինելի են, բայց կոնտեյները կարող է տեղավորել հավելվածը սերվերի հետ միասին՝ առանց հավելյալ ծախսերի:

Կոնտեյներների համար սովորաբար վերցվում են Docker-ը և Kubernetes-ը, չնայած կան այլ տարբերակներ:

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Կարդացեք հոդվածներ Docker-ի և Kubernetes-ի մասին այստեղ Opensource.com- ը:

Միջին ծրագրերի ավտոմատացման գործիքներ

Մեր DevOps ցանցը կենտրոնացած է համատեղ ստեղծման և հավելվածի առաքման վրա, սակայն կան այլ հետաքրքիր բաներ, որոնք դուք կարող եք անել DevOps գործիքների միջոցով: Օրինակ, օգտագործեք Ենթակառուցվածքը որպես կոդ (IaC) գործիքներ, որոնք նաև հայտնի են որպես միջին ծրագրերի ավտոմատացման գործիքներ: Այս գործիքներն օգնում են ավտոմատացնել տեղադրումը, կառավարումը և միջին ծրագրերի այլ առաջադրանքները: Օրինակ, ավտոմատացման գործիքը կարող է ընդունել հավելվածները (վեբ հավելվածի սերվեր, տվյալների բազա, մոնիտորինգի գործիքներ) ճիշտ կոնֆիգուրացիաներով և մղել դրանք դեպի հավելվածի սերվեր:

Ահա մի քանի տարբերակ բաց միջին ծրագրային ավտոմատացման գործիքների համար.

Dummies ուղեցույց. DevOps շղթաների կառուցում բաց կոդով գործիքներով

Մանրամասները՝ հոդվածներում Opensource.com- ը:

Հիմա ինչ?

Սա միայն այսբերգի գագաթն է: DevOps շղթան կարող է շատ ավելին անել: Սկսեք CI/CD գործիքից և տեսեք, թե էլ ինչ կարող եք ավտոմատացնել՝ ձեր աշխատանքը հեշտացնելու համար: Մի մոռացեք մասին բաց հաղորդակցման գործիքներ արդյունավետ համագործակցության համար:

Ահա ևս մի քանի լավ DevOps հոդվածներ սկսնակների համար.

Դուք կարող եք նաև ինտեգրել DevOps-ը բաց արագաշարժ գործիքների հետ.

Source: www.habr.com

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