Սկսեք օգտագործել DevOps-ի լավագույն գործիքներն այսօր:
DevOps-ի հեղափոխությունը վերջապես գրավել է աշխարհը, և DevOps գործիքները դարձել են աներևակայելի հանրաճանաչ: Ըստ ծառայության
DevOps մեթոդաբանությունն ընդգրկում է ծրագրաշարի մշակման ողջ ցիկլը, այնպես որ մասնագետները կարող են ընտրել տարբեր գործիքներից: Բայց, ինչպես գիտեք, ոչ մի գործիք չի կարող դառնալ ունիվերսալ գործիք բոլորի համար։ Այնուամենայնիվ, որոշ լուծումներ առաջարկում են գործառույթների այնպիսի լայն շրջանակ, որ կարող են հաղթահարել գրեթե ցանկացած խնդիր:
Եկեք բաժանենք DevOps գործիքները կատեգորիաների և համեմատենք դրանք անալոգների հետ.
- գործիքների մշակում և կառուցում
- փորձարկման ավտոմատացման գործիքներ
- տեղակայման կազմակերպման գործիքներ
- Runtime գործիքներ
- համագործակցության գործիքներ.
Հաջող և մտածված իրականացում
Մշակում և ստեղծման գործիքներ
Սա CI/CD խողովակաշարի կույտի հիմքն է: Ամեն ինչ սկսվում է հենց այստեղ: Այս կատեգորիայի լավագույն գործիքները կարող են կառավարել բազմաթիվ իրադարձությունների հոսքեր և հեշտությամբ ինտեգրվել այլ ապրանքների հետ:
Զարգացման կյանքի ցիկլի այս փուլում կան գործիքների երեք խումբ.
- տարբերակի կառավարման համակարգ (SCM)
- շարունակական ինտեգրում (CI)
- Տվյալների կառավարում
GIT-ը դրական արդյունք է գրանցել 2020 թվականին, ուստի ձեր SCM գործիքը պետք է անխափան աջակցություն ունենա GIT-ին: CI-ի համար նախապայմանը մեկուսացված կոնտեյների միջավայրում կառուցումներ կատարելու և գործարկելու ունակությունն է: Երբ խոսքը վերաբերում է տվյալների կառավարմանը, այն պահանջում է տվյալների բազայի սխեմայում փոփոխություններ կատարելու և տվյալների բազան ըստ հավելվածի տարբերակի պահպանելու կարողություն:
SCM + CI գործիք #1
Հաղթող ` GitLab և GitLab-CI
2020 DevOps ցիկլի լավագույն գործիքը, անկասկած, GitLab-ն է, և մոտ ապագայում այն հաստատ կշարունակի առաջնորդել նորարարությունը:
GitLab-ի հիմնական գործառույթը Git պահեստի հարմարավետ կառավարումն է: Վեբ ինտերֆեյսը ինտուիտիվ է և հեշտ օգտագործման համար: GitLab-ը տրամադրում է այն ամենը, ինչ ձեզ անհրաժեշտ է անվճար տարբերակով և գալիս է որպես SaaS և on-prem (օգտագործելով ձեր սեփական ռեսուրսները՝ ծրագրակազմը հյուրընկալելու համար):
Ոչ մի այլ SCM գործիք չի օգտագործել շարունակական ինտեգրում (CI) անմիջապես ձեր պահոցում, և GitLab-ը դա անում է երկար ժամանակ: GitLab-CI-ն օգտագործելու համար դուք պետք է ավելացնեք .gitlab-ci.yml ֆայլ ձեր ելակետային կոդի արմատին, և նախագծի ցանկացած փոփոխություն կսկսի գործողություններ՝ հիմնվելով հենց ձեր նշածի վրա: GitLab-ը և GitLab-CI-ն արժանիորեն ճանաչվում են որպես շարունակական ինտեգրման ոլորտում առաջատարներ (CI-as-code):
Հիմնական առավելությունները
- Հուսալիություն - Ապրանքը շուկայում է 2013 թվականից; կայուն; լավ աջակցություն.
- Բաց կոդով - GitLab-ի անվճար տարբերակը չի սահմանափակում այն հիմնական գործառույթները, որոնք անհրաժեշտ են մշակողների թիմերին: Վճարովի ծառայությունների փաթեթներն ապահովում են լրացուցիչ օգտակար հնարավորություններ տարբեր չափերի և կարիքների ընկերությունների համար:
- Ներկառուցված CI – Շուկայում ոչ մի այլ գործիք չի ստեղծել շարունակական ինտեգրում անմիջապես SCM-ում, ինչպես GitLab-CI-ն: Docker-ի օգտագործումն ապահովում է առանց դժվարության մեկուսացված կառուցվածքներ, իսկ ներկառուցված հաշվետվությունները հեշտացնում են վրիպազերծումը: Մենք չենք պահանջում միաժամանակ մի քանի գործիքների համալիր ինտեգրում և կառավարում:
- Անսահմանափակ ինտեգրումներ – GitLab-ն ապահովում է ձեզ անհրաժեշտ DevOps գործիքների հեշտ ինտեգրում: Սա ապահովում է, որ մշակման և սպասարկման թիմերը ունենան տեղեկատվության մեկ աղբյուր իրենց կիրառման վերաբերյալ ցանկացած միջավայրում:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Այս կատեգորիայի այլ հայտնի գործիքներ կան, բայց դրանք այնքան լավը չեն, որքան GitLab-ը: Եվ ահա թե ինչու.
GitHub — Սա SaaS տարբերակի կառավարման հիանալի համակարգ է փոքր ընկերությունների և զարգացման վաղ փուլերի համար: Խոշոր ընկերությունների համար, որոնց համար կարևոր է IP հասցեները պահել սեփական ցանցում, GitHub-ի միակ լուծումը .OVA վիրտուալ մեքենան էր՝ առանց բարձր հասանելիության համակարգերի աջակցության: Սա դժվարացնում է նախնական սպասարկումը, բացի այդ, .OVA-ն հարմար է միայն միջին բիզնեսի համար, հակառակ դեպքում սերվերը պարզապես խափանում է ավելի մեծ ծանրաբեռնվածության տակ: GitHub Actions-ի բացակայությունը (մինչև վերջերս և դեռ ոչ նախնական տարբերակում) կամ CI-as-code-ի բացակայությունը նշանակում է, որ դուք պետք է ընտրեք առանձին CI գործիք և այնուհետև կառավարեք այդ ինտեգրումը: Վերջապես, GitHub-ը շատ ավելի թանկ է, քան GitLab-ի ցանկացած տարբերակ:
Jenkins — Թեև Ջենկինսը լռելյայն համարվում է ստանդարտ շարունակական ինտեգրման գործիքների շարքում, այն միշտ զուրկ է եղել տարբերակների կառավարման հնարավորություններից: Ստացվում է, որ դուք օգտագործում եք Jenkins գումարած ինչ-որ SCM գործիք: Չափազանց դժվար է, երբ GitLab-ը կարող է երկուսն էլ անել: Միջակ UX դիզայնը հարմար չէ ժամանակակից վեբ հավելվածի համար և շատ բան է թողնում:
BitBucket/Bamboo — Ես պետք է նրան ճանաչեմ որպես ավտոմատ պարտվող. ինչու՞ երկու գործիք, երբ GitLab-ն ամեն ինչ անում է ամբողջովին անկախ: BitBucket Cloud-ն աջակցում է GitLab-CI/GitHub Action ֆունկցիոնալությունը, սակայն նորաստեղծից ավելի մեծ ընկերություն չի կարող հեշտությամբ իրականացնել այն: On-prem BitBucket սերվերը նույնիսկ չի աջակցում BitBucket խողովակաշարերին:
#1 Տվյալների կառավարման գործիք
Հաղթող ` FlywayDB
Վեբ հավելվածների մշակման ժամանակ տվյալների բազայի ավտոմատացմանը սովորաբար կարևորություն չի տրվում։ Հավելվածի նոր տարբերակների համար տվյալների բազայի սխեմայի փոփոխությունների տեղակայման գաղափարը ուշանում է: Սխեմայի փոփոխությունները հաճախ հանգեցնում են սյունակների կամ աղյուսակների ավելացման և վերանվանմանը: Եթե հավելվածի տարբերակը չի համապատասխանում սխեմայի տարբերակին, հավելվածը կարող է խափանվել: Բացի այդ, հավելվածը թարմացնելիս տվյալների բազայի փոփոխությունները կառավարելը կարող է դժվար լինել, քանի որ կան երկու տարբեր համակարգեր: FlyWayDB-ն լուծում է այս բոլոր խնդիրները:
Հիմնական առավելությունները
- Տվյալների բազայի տարբերակավորում – Flyway-ը թույլ է տալիս ստեղծել տվյալների բազայի տարբերակներ, հետևել տվյալների բազայի միգրացիաներին և հեշտությամբ փոխանցել կամ ետ վերադարձնել սխեմայի փոփոխությունները՝ առանց դրա համար լրացուցիչ գործիքի:
- Երկուական կամ ներկառուցված - Մենք կարող ենք ընտրել Flyway-ը գործարկել որպես հավելվածի մաս կամ որպես երկուական գործարկվող: Flyway-ը ստուգում է տարբերակների համատեղելիությունը գործարկման ժամանակ և սկսում է համապատասխան միգրացիաները՝ պահպանելով տվյալների բազայի և հավելվածի տարբերակները համաժամեցված: Օգտագործելով cmd line ad-hoc հրամանը, մենք ճկունություն ենք ապահովում առկա տվյալների բազաներին՝ առանց ամբողջ հավելվածը վերակառուցելու:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Այս ոլորտում շատ գործիքներ չկան: Դիտարկենք դրանցից մի քանիսը.
LiquiBase — Liquibase-ը նման է FlywayDB-ին: Ես կցանկանայի տեղադրել այն Flyway-ի վերևում, եթե իմ թիմում լիներ որևէ մեկը, ով ավելի մեծ փորձ ունի Liquibase-ի հետ:
Ֆլոկեր - Կարող է աշխատել միայն բեռնարկղային ծրագրերի համար: Կոնտեյներային տվյալների բազաները հաջողությամբ գործարկելու համար ամեն ինչ պետք է կատարյալ պլանավորվի: Ես խորհուրդ եմ տալիս օգտագործել RDS (Relational Database Service) տվյալների բազաների համար և խորհուրդ չեմ տալիս կարևոր տեղեկությունները պահել տարայի մեջ:
Փորձարկման ավտոմատացման գործիքներ
Եկեք սկսենք թեստային ավտոմատացման գործիքների մեր քննարկումը` դրանք դասակարգելով փորձարկման բուրգի հիման վրա:
Փորձարկման բուրգը (թեստերը) ունի 4 մակարդակ.
- Միավոր թեստեր - Սա ամբողջ ավտոմատացված թեստավորման գործընթացի հիմքն է: Պետք է ավելի շատ միավորային թեստեր լինեն՝ համեմատած այլ տեսակի թեստերի հետ: Մշակողները գրում և գործարկում են միավորի թեստեր՝ համոզվելու համար, որ հավելվածի մի մասը (հայտնի է որպես «միավոր») համապատասխանում է իր դիզայնին և վարվում է այնպես, ինչպես սպասվում էր:
- Բաղադրիչների փորձարկումներ - Բաղադրիչի փորձարկման հիմնական նպատակը ստուգել է փորձարկման օբյեկտի մուտքային/ելքային վարքագիծը: Մենք պետք է ապահովենք, որ փորձարկման օբյեկտի ֆունկցիոնալությունը ճիշտ իրականացվի՝ ըստ սպեցիֆիկացիայի:
- Ինտեգրման թեստեր - Թեստավորման մի տեսակ, որի ժամանակ առանձին ծրագրային մոդուլները համակցվում և փորձարկվում են խմբով:
- End-to-End Tests - Այս քայլը ինքնին բացատրելի է: Մենք վերահսկում ենք ամբողջ հավելվածը և համոզվում, որ այն գործում է այնպես, ինչպես նախատեսված է:
Քանի որ միավորի թեստերը և բաղադրիչների փորձարկումն իրականացվում են միայն մշակողների կողմից և հաճախ հատուկ են ծրագրավորման լեզվին, մենք չենք գնահատի այս գործիքները DevOps տիրույթի համար:
#1 Ինտեգրման փորձարկման գործիք
Հաղթող ` Վարունգ
Վարունգը միավորում է բնութագրերը և փորձարկման փաստաթղթերը մեկ կենդանի փաստաթղթի մեջ: Տեխնիկական պայմանները միշտ թարմացվում են, քանի որ դրանք ավտոմատ կերպով փորձարկվում են Cucumber-ի կողմից: Եթե ցանկանում եք զրոյից ստեղծել ավտոմատ թեստավորման շրջանակ և մոդելավորել օգտատիրոջ վարքագիծը վեբ հավելվածում, ապա Selenium WebDriver-ը Java-ով և Cucumber BDD-ով հիանալի միջոց է վարունգը նախագծում սովորելու և իրականացնելու համար:
Հիմնական առավելությունները
- BDD մոտեցում (Behavior Driven Development – «զարգացում վարքագծի միջոցով»՝ ի տարբերություն «փորձարկման վրա հիմնված զարգացման» մոտեցման) – Վարունգը նախատեսված է BDD թեստավորման համար, այն ի սկզբանե ստեղծվել է հենց այս առաջադրանքի համար:
- Կենդանի Փաստաթղթեր - Փաստաթղթավորումը միշտ ցավ է: Քանի որ ձեր թեստերը գրված են որպես կոդ, Cucumber-ը փորձարկում է ավտոմատ կերպով ստեղծված փաստաթղթերը՝ համոզվելու, որ թեստերն ու փաստաթղթերը համաժամանակյա են:
- Աջակցություն - Մենք կարող ենք ընտրել բազմաթիվ գործիքներից, սակայն Cucumber-ն ունի անհրաժեշտ ֆինանսական ռեսուրսներ և լավ կազմակերպված աջակցության համակարգ՝ օգնելու օգտատերերին ցանկացած բարդ իրավիճակում:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Ի թիվս այլ շրջանակների և տեխնոլոգիային հատուկ գործիքների՝ միայն վարունգը կարելի է համարել ունիվերսալ լուծում:
End-to-End Testing Tools
Ավարտից մինչև վերջ թեստավորում անցկացնելիս պետք է կենտրոնանալ երկու հիմնական կետի վրա.
- ֆունկցիոնալ փորձարկում
- Սթրեսի թեստավորում.
Ֆունկցիոնալ թեստավորման ժամանակ մենք ստուգում ենք, թե արդյոք իրականում տեղի է ունենում այն ամենը, ինչ ցանկանում ենք: Օրինակ, երբ ես սեղմում եմ իմ SPA-ի որոշակի տարրերի վրա (մեկ էջանոց հավելված), լրացնում եմ ձևաթղթերը և ընտրում «Ներկայացնել», տվյալները հայտնվում են տվյալների բազայում և էկրանին հայտնվում է «Հաջողություն» հաղորդագրությունը:
Մեզ համար կարևոր է նաև ստուգել, որ նույն սցենարով աշխատող օգտատերերի որոշակի քանակ կարող է մշակվել առանց սխալների:
Այս 2 տեսակի թեստավորման բացակայությունը զգալի թերություն կլինի ձեր CI/CD խողովակաշարում:
Թիվ 1 ծայրից ծայր փորձարկման գործիք: Ֆունկցիոնալ փորձարկում
Հաղթող ` SoapUI Pro
SoapUI-ն երկար ժամանակ եղել է API-ի փորձարկման տարածքում, քանի որ SOAP-ի վրա հիմնված վեբ ծառայությունները ստանդարտ էին: Թեև մենք այլևս չենք ստեղծում նոր SOAP ծառայություններ, և գործիքի անունը չի փոխվել, դա չի նշանակում, որ այն չի զարգացել: SoapUI-ն ապահովում է հիանալի շրջանակ ավտոմատացված հետին ֆունկցիոնալ թեստեր ստեղծելու համար: Թեստերը կարող են հեշտությամբ համակցվել շարունակական ինտեգրման գործիքների հետ և օգտագործվել որպես CI/CD խողովակաշարի մաս:
Հիմնական առավելությունները
- Մանրամասն փաստաթղթեր - SoapUI-ն շուկայում եղել է բավականին երկար ժամանակ, ուստի կան բազմաթիվ առցանց ռեսուրսներ, որոնք կարող են օգնել ձեզ հասկանալ, թե ինչպես կարգավորել թեստերը:
- Օգտագործման հեշտություն – Թեև գործիքն աջակցում է API-ների փորձարկման բազմաթիվ արձանագրություններ, SoapUI-ի մի քանի ծառայությունների համար ընդհանուր ինտերֆեյսի առկայությունը հեշտացնում է թեստեր գրելը:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Selenium այս խմբի ևս մեկ հիանալի գործիք է: Ես խորհուրդ եմ տալիս օգտագործել այն, եթե կառուցում և գործարկում եք Java-ի վրա հիմնված հավելված: Այնուամենայնիվ, եթե դուք կառուցում եք ամբողջական վեբ հավելված մի քանի տեխնոլոգիաներով, այն կարող է անգործունակ դառնալ ոչ Java բաղադրիչների համար:
Թիվ 1 ծայրից ծայր փորձարկման գործիք: Սթրեսի թեստավորում
Հաղթող ` LoadRunner
Բացատրություն: Երբ գալիս է ձեր հավելվածի յուրաքանչյուր տարրը բեռնելու ժամանակը, միայն LoadRunner-ը կարող է կատարել առաջադրանքը: Այո, սկզբում դա թանկ է և դժվար, բայց LoadRunner-ը միակ գործիքն է, որն ինձ՝ որպես տեխնիկական ճարտարապետի, լիարժեք վստահություն է տալիս, որ նոր կոդը կաշխատի ծայրահեղ ծանրաբեռնվածության պայմաններում: Բացի այդ, ես կարծում եմ, որ ժամանակն է, որ LoadRunner-ը ստանձնեն մշակողների թիմերը, այլ ոչ թե փորձարկման թիմերը:
Հիմնական առավելությունները
- Ընդարձակ փաստաթղթեր - LoadRunner-ը բավականին երկար ժամանակ է, ինչ շուկայում է, ուստի կան բազմաթիվ առցանց ռեսուրսներ, որոնք կօգնեն ձեզ հասկանալ, թե ինչպես կարգավորել բեռնման թեստերը:
- Արձանագրության աջակցություն – Load Runner-ն աջակցում է ամեն ինչ՝ ODBC-ից մինչև AJAX, HTTPS և ցանկացած այլ ոչ տրիվիալ արձանագրություն, որը կարող է օգտագործել ձեր հավելվածը: Մենք փորձում ենք չօգտագործել բազմաթիվ գործիքներ բեռնվածության փորձարկման համար, քանի որ դա միայն բարդացնում է գործընթացը:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Կրկին, այս ոլորտում շատ ունիվերսալ գործիքներ չկան, ուստի լավագույն լուծումն այն է, որը կաշխատի ցանկացած միջավայրում՝ ցանկացած տեխնոլոգիայով:
Տեղակայման գործիքներ
Տեղակայման գործիքները, հավանաբար, զարգացման ամենաքիչ հասկացված կողմն են: Գործառնական թիմի համար, որը չի հասկանում հավելվածի կոդը և ֆունկցիոնալությունը, դժվար է օգտագործել նման գործիքներ: Մշակողների համար տեղակայման կառավարումը նոր պարտականություն է, ուստի նրանք դեռ չունեն նման գործիքների հետ աշխատելու բավարար փորձ:
Նախ, եկեք բոլոր տեղակայման գործիքները բաժանենք երեք ենթակատեգորիաների.
- արտեֆակտի կառավարում
- կոնֆիգուրացիայի կառավարում
- տեղակայել.
#1 Արտեֆակտի կառավարման գործիք
Հաղթող ` Կապանքներ
Nexus artifact-ի պահոցն աջակցում է գրեթե բոլոր հիմնական տեխնոլոգիաներին՝ Java-ից մինչև NPM մինչև Docker: Մենք կարող ենք օգտագործել այս գործիքը մեր օգտագործած բոլոր արտեֆակտները պահելու համար: Հեռավոր փաթեթների կառավարիչների վստահեցումը նաև զգալիորեն արագացնում է CI-ի կառուցման գործընթացը՝ փաթեթները դարձնելով ավելի մատչելի կառուցման համար: Մեկ այլ առավելություն է մի քանի ծրագրային նախագծերում օգտագործվող բոլոր փաթեթների ամբողջական պատկերացում ստանալու հնարավորությունը՝ արգելափակելով անապահով բաց կոդով փաթեթները (դրանք կարող են հանդես գալ որպես հարձակման վեկտոր):
Հիմնական առավելությունները
- Տեխնիկական աջակցություն - Հուսալի արտադրանք; լավ աջակցություն.
- Բաց կոդով - Անվճար տարբերակը չի սահմանափակում այն հիմնական գործառույթները, որոնք անհրաժեշտ են մշակողների թիմերին:
#1 Կազմաձևման կառավարման գործիք
Հաղթող ` Հղիություն
Անսիբլը առաջատար է մեկ պարզ պատճառով՝ քաղաքացիություն չունեցող: Նախկինում նմանատիպ գործիքները կենտրոնացած էին կոնֆիգուրացիայի վիճակի կառավարման վրա: Երբ գործարկվի, նման գործիքը, ստանալով ցանկալի կոնֆիգուրացիան, կփորձի շտկել ընթացիկ հավելվածի կազմաձևը: Իսկ նոր մոտեցմամբ առկա են միայն քաղաքացիություն չունեցող բաղադրիչներ։ Կոդի նոր տարբերակները արտեֆակտներ են, որոնք տեղադրվում են գոյություն ունեցողներին փոխարինելու համար: Սա կարելի է համարել մի տեսակ անցողիկ, կարճաժամկետ միջավայր։
Հիմնական առավելությունները
- Քաղաքացիություն չունեցող - Playbook-ը գործարկվում է տեղակայման մեքենայից և գործարկվում թիրախային սերվերների վրա: Ես չպետք է անհանգստանամ հեռավոր օբյեկտի վիճակի մասին՝ օգտագործելով Packer-ի նման գործիք՝ տեղակայվող օբյեկտներ ստեղծելու համար:
- Բաց կոդով – CentOS-ի նման, Ansible-ն աջակցվում է նաև RedHat-ի կողմից: Այն օգնում է պահպանել համայնքը և ապահովում է բարձրորակ, հեշտ օգտագործման մոդուլներ:
- Փորձարկում մոլեկուլով (Ansible շրջանակ) - Քանի որ կազմաձևման կառավարումը կոդ է, ինչպես մնացած ամեն ինչ, փորձարկումը կարևոր է: Molecule-ի Ansible դերերի փորձարկման շրջանակն աշխատում է անթերի, ապահովելով, որ կոնֆիգուրացիան նույն որակի է և հետևում է նույն CI/CD խողովակաշարին, ինչ հավելվածի կոդը:
- YAML - Համեմատած այլ գործիքների հետ, YAML-ն ավելի հեշտ է հասկանալ: Քանի որ կոնֆիգուրացիայի կառավարումը սովորաբար նոր մարտահրավեր է DevOps պրակտիկա իրականացնողների համար, պարզությունը դրա հաղթաթուղթն է:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
OpsCode խոհարար — Ես սկսեցի իմ DevOps կարիերան որպես խոհարարական գրքերի մշակող: Ruby-ն ու Chef-ը, իհարկե, շատ հոգեհարազատ են ինձ համար, բայց նրանք պարզապես չեն լուծում ժամանակակից քաղաքացիություն չունեցող, ամպային մայրենի հավելվածների խնդիրները: OpsCode Chef-ը հիանալի գործիք է ավելի ավանդական հավելվածների համար, սակայն այս հոդվածում մենք կենտրոնացած ենք ապագայի վրա:
Տիկնիկ — Տիկնիկը երբեք շատ երկրպագուներ չի ունեցել, հատկապես Շեֆ-խոհարարի և Անսիբլի համեմատությամբ։ Այն հիանալի է ապարատային ապահովման և դրա հետ աշխատելու համար, սակայն չունի վեբ հավելվածի կոնֆիգուրացիայի կառավարման ժամանակակից աջակցություն:
Տեղակայման գործիք թիվ 1
Հաղթող ` Terraform
Terraform-ը լուծում է ձեր ենթակառուցվածքը որպես կոդ նկարագրելու խնդիրը՝ ցանցի բաղադրիչներից մինչև ամբողջական սերվերի պատկերներ: Այս արտադրանքը երկար ճանապարհ է անցել իր սկզբնական թողարկումից հետո, քանի որ ստեղծվել են այնքան շատ հավելումներ և ստեղծվել է այնպիսի ուժեղ համայնք, որ դուք անպայման օգնություն կստանաք տեղակայման ցանկացած սցենարում: Ցանկացած տեսակի միջավայր (տարածքում, ամպի մեջ կամ այլուր) աջակցելու ունակությունը անզուգական է: Վերջապես, վերջին տարբերակը HCL-ում ապահովում է նույն տրամաբանական գործառույթների և դասերի մեծ մասը, ինչ ցանկացած այլ ավանդական ծրագրավորման լեզու՝ դարձնելով Terraform-ը հեշտ և արագ ընկալվող ծրագրավորողների համար:
Հիմնական առավելությունները
- Environment agnostic – Terraform-ը օգտագործում է գործառույթներ, որոնք գործում են որպես միջերես ձեր Terraform կոդի, բոլոր API-ների և ներքին տրամաբանության միջև՝ ենթակառուցվածքի մատակարարի հետ հաղորդակցվելու համար: Սա նշանակում է, որ ես կյուրացնեմ ընդամենը մեկ գործիք, այնուհետև կարող եմ աշխատել ցանկացած վայրում:
- Բաց կոդով – Դժվար է հաղթել անվճար գործիքներին: Համայնքի աջակցություն ամենաբարձր մակարդակով:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
AWS ամպի ձևավորում — Նույնիսկ եթե դուք աշխատում եք միայն AWS ամպային միջավայրում, ձեր հաջորդ աշխատանքը կարող է օգտագործել այլ գործիք: Ձեր ամբողջ ժամանակն ու էներգիան միայն մեկ հարթակին նվիրելը անհեռատես որոշում է: Բացի այդ, շատ նոր AWS ծառայություններ հաճախ հասանելի են որպես Terraform մոդուլներ՝ նախքան դրանք հասանելի լինել CloudFormation-ում:
Runtime գործիքներ
Զարգացման ցանկացած նախագծի վերջնական նպատակը հավելվածը արտադրության մեջ գործարկելն է: DevOps աշխարհում մենք ցանկանում ենք լիովին տեղյակ լինել մեր միջավայրի հետ կապված բոլոր հնարավոր խնդիրների մասին, ինչպես նաև ցանկանում ենք նվազագույնի հասցնել ձեռքով միջամտությունը: Գործարկման ժամանակի գործիքների ճիշտ հավաքածու ընտրելը կարևոր է հավելվածների զարգացման նիրվանային հասնելու համար:
Գործարկման ժամանակի գործիքների ենթակատեգորիաներ.
- X-as-a-service (XaaS)
- նվագախումբ
- Դիտարկման
- ծառահատումներ.
X-tool-որպես-ծառայություն #1
Հաղթող ` Amazon Web Services
Amazon-ը միշտ առաջատար է եղել ամպային տեխնոլոգիաների ոլորտում, սակայն այն չի սահմանափակվում դրանով. մշակողների համար նոր ծառայությունների բազմազանությունը աչք է բացում: Բերեք ցանկացած տեխնոլոգիա և ձևանմուշ AWS, և այն կկառուցվի և կաշխատի: Գործիքի արժեքը բավականին ողջամիտ է. համեմատեք այն ձեր սեփական տվյալների կենտրոնում սարքավորումների հավաքման, կառավարման և պահպանման հետ: Անվճար տարբերակը թույլ է տալիս գումար ծախսելուց առաջ փորձարկել և ճիշտ որոշում կայացնել։
Հիմնական առավելությունները
- Տարածվածություն - Եթե AWS-ում հավելվածներ ստեղծելու փորձ ունեք, կարող եք աշխատել ցանկացած վայրում: Բիզնեսները սիրում են AWS-ը, և ստարտափները նույնպես գնահատում են դրա ցածր արժեքը:
- Անվճար տարբերակը իսկապես կարևոր գործոն է, որն առանձնացնում է AWS-ին իր հասակակիցներից: Թույլ տվեք փորձել ծառայությունը և տեսնել, թե ինչպես է այն աշխատում, նախքան գնման որոշում կայացնելը, ես չեմ ուզում հազարավոր դոլարներ ծախսել ավելորդ բանի վրա: Անվճար տարբերակը միշտ բավարար է, որպեսզի փորձարկեմ ցանկացած հայեցակարգ:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Երկնագույն «Azure-ը երկար ճանապարհ է անցել իր առաջին թողարկումից հետո, և դա գովելի է: Սակայն տարբերվելու ցանկությունը հանգեցրել է ծառայությունների տարօրինակ անունների, ինչը հաճախ բարդացնում է աշխատանքը։ Ի՞նչ է նշանակում «բլբի պահեստավորում»: Եվ չնայած .NET կոդը ավելի լավ է աշխատում Microsoft-ի էկոհամակարգում, դժվար թե դուք օգտագործեք միայն .NET-ը ձեր հավելվածի յուրաքանչյուր բաղադրիչի համար:
Heroku — Ես երբեք այլ բան չէի գործարկի Heroku-ում անձնական նախագծից՝ հուսալիության և թափանցիկության ցածր մակարդակի պատճառով, ուստի ընկերությունները չպետք է օգտագործեն այն որպես հարթակ: Հերոկուն հիանալի է բլոգում ինչ-որ բան ցուցադրելու համար, բայց գործնական օգտագործման համար. «Ոչ, շնորհակալություն»:
#1 Նվագախմբի գործիք
Հաղթող ` OpenShift- ը
Դուք հավանաբար օգտագործում եք Docker կամ այլ բեռնարկղեր ձեր հավելվածի փաթեթում: Առանց սերվերի հավելվածները հիանալի են, բայց դրանք կարող են չհամապատասխանել յուրաքանչյուր ճարտարապետության: Առանց նվագախմբի պլատֆորմի բեռնարկղեր վարելը պարզապես չի աշխատի: Kubernetes Core-ը (K8s) անմրցակից է անվտանգության և գործիքակազմի առումով: OpenShift-ը Kubernetes-ի վրա հիմնված միակ պլատֆորմն է, որը կարող է հավաքել Source2Image-ը, աջակցում է ավտոմատ տեղակայմանը պատյաններում և աջակցում է հետևելուն և մոնիտորինգին: OpenShift-ը կարող է գործարկվել on-prem, ամպում կամ on-prem և cloud-ում միաժամանակ:
Հիմնական առավելությունները
- Ներկառուցված անվտանգություն – K8s անվտանգության կառավարումը կարող է պահանջել առաջադեմ աստիճան: Յուրաքանչյուր մանրուք պետք է ուշադիր մտածել և հաշվի առնել: OpenShift-ով լռելյայն ներկառուցված անվտանգության մեխանիզմները վերացնում են ծրագրավորողների բեռը և ապահովում են ավելի ապահով հարթակ հավելվածների համար:
- «Բոլորը մեկում» լուծում. Ի տարբերություն հիմնական K8-ների, որոնք լռելյայնորեն չեն ներառում բեռների հավասարակշռման գործիքներ, OpenShift-ն ունի ամեն ինչ: Ես կարող եմ օգտագործել այն կոնտեյներներ ստեղծելու և հյուրընկալելու, CI/CD գործիքներ գործարկելու, արտաքին գործընթացները կառավարելու, բանալիները կառավարելու և շատ ավելին: Չնայած օգտատիրոջ գրաֆիկական ինտերֆեյսը դեռ հեռու է կատարյալ լինելուց, API-ի վրա հիմնված մոտեցումը նշանակում է, որ ամեն ինչ կարելի է նկարագրել սցենարով: Ի տարբերություն K8-ի այլ GUI-ների, OpenShift-ը շատ ավելի հեշտ է դարձնում Kubernetes-ի հիմունքները սովորելը: Դուք նույնիսկ պետք չէ աստիճան ստանալ:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Docker ամբոխ — Docker Swarm-ը փորձեց պարզեցնել K8-ները՝ ազատվելով շատ բաներից: Այն հիանալի է փոքր ծրագրերի համար, բայց ձեռնարկատիրական ծրագրերի համար այն պարզապես չի աշխատում: Բացի այդ, լուծումները, ինչպիսին է AWS ECS-ը, նման մոտեցում ունեն, բայց հեշտացնում են այլ ծառայությունների հետ աշխատելը, որոնց հետ ես կարող եմ նաև շփվել (Lambda, IAM և այլն):
Մոնիտորինգի գործիք #1
Հաղթող ` Նոր մասունք
New Relic-ի վաղ թողարկումները մի բան լավ արեցին՝ APM (Application Performance Monitoring) մոնիտորինգը: Այն այժմ լիարժեք մոնիտորինգի գործիք է, որը թույլ է տալիս վերահսկել սերվերի, կոնտեյների, տվյալների բազայի աշխատանքը, վերջնական օգտագործողի փորձի մոնիտորինգը և, իհարկե, հավելվածի կատարողականի մոնիտորինգը:
Հիմնական առավելությունները
- Օգտագործման հեշտություն - Երբ ես աշխատում էի որպես համակարգերի ինժեներ, ես օգտագործում էի մոնիտորինգի բազմաթիվ գործիքներ, բայց ես երբեք չեմ հանդիպել այնպիսի պարզ և հեշտ օգտագործման, որքան New Relic-ը: Դա SaaS է, այնպես որ դուք պետք չէ ինքներդ տեղադրել այն:
- Վերջից մինչև վերջ տեսանելիություն – Այլ գործիքներ փորձում են վերահսկել ձեր հավելվածի մեկ կոնկրետ տարր: Օրինակ՝ պրոցեսորի օգտագործման չափանիշ կամ ցանցային տրաֆիկ, բայց այս ամենը պետք է համակողմանիորեն վերահսկվի, որպեսզի հավելվածը ճիշտ աշխատի: New Relic-ը ձեզ հնարավորություն է տալիս համախմբել ձեր բոլոր տվյալները՝ կատարվածի համապարփակ պատկերացում կազմելու համար:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Zabbix- ը — Իմ առաջին և սիրելի մոնիտորինգի համակարգը, բայց այն մնացել է անցյալում՝ ամպային տեխնոլոգիաների զարգացման բացակայության և APM հավելվածների կատարողականի մոնիտորինգի ոլորտում: Zabbix-ը դեռ լավ է անում ավանդական սերվերի ենթակառուցվածքի մոնիտորինգը, բայց դա դրա մասին է:
DataDog — Չափից շատ կենտրոնացած է հավելվածի արտադրական միջավայրի կառավարման գործընթացի վրա, և ոչ թե բուն կոդի վրա: DevOps թիմերի հետ, որոնցում ներգրավված են մշակողներ, մենք կարիք չունենք ապավինել դժվար օգտագործվող գործիքներին՝ բարձրակարգ աջակցություն տրամադրելու համար:
Գրանցման գործիք #1
Հաղթող ` Splunk
Դժվար է մրցել Splunk-ի հետ: Երկար ժամանակ նա մնում է անտառահատումների առաջատարը՝ շարունակելով դա անել բոլորից լավ։ On-prem և SaaS առաջարկներով դուք կարող եք օգտագործել Splunk-ը ցանկացած վայրում: Մեծ թերությունը դրա գինն է. Splunk-ը դեռ շատ թանկ է:
Հիմնական առավելությունները
- Համատարածություն - Բիզնեսները սիրում են Splunk-ը, և ընկերությունները փող ունեն այն գնելու համար:
- Թեև ստարտափները փորձում են փոխհատուցել ծախսերը, շատ գործառույթներ կարող են լուծվել բաց կոդով անալոգների շնորհիվ:
- Պահպանելիություն - Պարզ ասած, Splunk-ն աշխատում է և լավ է անում: Այն գալիս է բազմաթիվ լռելյայն կարգավորումներով և օգտագործման համար պատրաստ գործառույթներով: Կարիք չկա ժամանակ վատնել՝ կարդալով փաստաթղթեր և փորձելով ստիպել Splunk-ին աշխատել կամ վերծանել որևէ բան:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
ELK Stack (ElasticSearch, LogStash և Kibana) «Այս գործիքները, թվում է, ֆավորիտ են, քանի որ դրանք օգտագործելու համար դուք նույնիսկ կարիք չունեք վաճառել ձեր լյարդը»: Այնուամենայնիվ, քանի որ տեղեկամատյանների հավաքածուն մեծանում է, և նավի վրա հայտերի քանակը մեծանում է, աշխատանքն ավելի ու ավելի է դժվարանում: Splunk-ի համեմատ, ELK Stack-ի հետ ես շատ ավելի շատ ժամանակ եմ ծախսել գործիքավորումը կարգավորելու համար, նախքան որևէ վահանակ ստեղծելը, քան երբևէ ունեցել եմ նախկինում:
Համագործակցության գործիքներ
DevOps-ը հիմնականում վերաբերում է կազմակերպության մշակույթը փոխելուն: Որևէ գործիք գնելը մեկ գիշերվա ընթացքում չի փոխի ընթացիկ պրակտիկան, բայց դա, անշուշտ, կարող է խրախուսել համագործակցությունը և փոխգործակցության նոր ուղիները:
Համագործակցության գործիքների ենթակատեգորիաներ.
- առաջադրանքների հետևում
- ChatOps
- փաստաթղթեր.
Թիվ 1 Խնդիրների հետևման գործիք
Հաղթող ` Ջիրա
Ժիրան պահպանում է իր առաջատար դիրքը, թեև մրցակցությունն այս ոլորտում մեծանում է։ Jira-ի անհավանական ճկունությունը թույլ է տալիս մշակման և սպասարկման թիմերին կառավարել նախագծային աշխատանքը և սպրինտի առաջադրանքները: Agile տերմինաբանության օգտագործմամբ ներկառուցված ստանդարտները հեշտացնում են աշխատանքի ավանդական եղանակներից ավելի արդյունավետ գործընթացների անցնելը:
Հիմնական առավելությունները
- Հանրաճանաչություն - Ինչպես շատ այլ գործիքներ, Jira-ն օգտագործվում է գրեթե ամենուր: Փոքր թիմերն օգտագործում են ավելի էժան, ավելի մատչելի տարբերակը և ստանում են իրենց անհրաժեշտ ամեն ինչ, մինչդեռ ավելի մեծ ընկերությունները կարող են իրենց թույլ տալ ավելի թանկ արտոնագիր:
- Ինտեգրումներ - Ժիրան իր ոլորտում առաջամարտիկ է: Այս փաստը և արտադրանքի արագ զարգացումը հանգեցնում են նրան, որ այլ ընկերություններ ընտրում են Jira-ն սեփական ինտեգրացիաներ ստեղծելու համար՝ այդպիսով բարձրացնելով գործիքի արժեքը: Մենք կարող ենք Jira-ին ինտեգրել այս հոդվածում թվարկված բոլոր գործիքներին առանց տուփի մի փոքր կոնֆիգուրացիայով:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Trello — Trello-ն արագ ժողովրդականություն ձեռք բերեց իր անվճար Kanban գործիքի շնորհիվ: Այնուամենայնիվ, երբ գործընթացները մեծանում են և տասնյակ առաջադրանքներից դառնում եք հազարավոր, Trello-ն դժվարանում է նավարկելու, որոնելու և զեկուցելու համար:
Pivotal Tracker- ը — Ես այս գործիքի մեծ երկրպագու էի, երբ աշխատում էի ստարտափում: Այնուամենայնիվ, Pivotal Tracker-ը ավելի շատ կենտրոնացած է արտադրանքի կառավարման վրա, այլ ոչ թե տեխնիկական առաջադրանքների վրա: Թեև Jira-ում արտադրանքի կառավարումը մի փոքր ավելի բարդ է, այն դեռ կարող է իրականացվել այնտեղ՝ առանց լրացուցիչ գործիք օգտագործելու:
ChatOps գործիք #1
Հաղթող ` MatterMost
Բացատրություն: Թերևս ամենամեծ անակնկալը ձեզ համար իմ ընտրության մեջ, և դա լավ նորություն է: MatterMost-ը ժողովրդականություն է ձեռք բերել՝ վերցնելով նախորդ գործիքներից լավագույնը, բայց դրանք տեղադրելով պրեմիում: Սա շատ կարևոր է ընկերությունների համար. MatterMost-ը թույլ է տալիս վերահսկել ձեր տվյալները և նաև օգնում է ձեզ ինտեգրել դրանք տեղական աշխատող գործիքների հետ: Աշխատանքային զրույցները ստուգելու համար այլևս կարիք չկա դուրս գալ firewall-ից:
Հիմնական առավելությունները
- Բաց կոդով – MatterMost-ի բաց կոդով տարբերակը հիանալի է աշխատում ինչպես միջին, այնպես էլ մեծ թիմերի համար: Ի տարբերություն Slack-ի անվճար ծրագրի, որը ջնջում է ձեր հաղորդագրությունների պատմությունը, ձեր սեփական սերվերի գործարկումը նշանակում է, որ դուք պահպանում եք ձեր բոլոր տվյալները:
- Ինտեգրումներ – Քանի որ API-ն գրեթե 100%-ով հիմնված է Slack API-ի վրա, Slack-ի գրեթե բոլոր ինտեգրումները կարող են ուղղակիորեն օգտագործվել MatterMost-ի հետ:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Անգործություն — Slack-ը հիանալի է, բայց այս տղաներն այնքան են աճել, որ սկսել են շահույթ փնտրել: Մոտենում է բիզնեսի վերադարձի փուլը, որը խլում է նրանց հիմնական արժեքը. Slack-ը անվճար մատուցում է ծառայություններ; Անվճար տարբերակի ամենակարեւոր թերությունը չաթի պատմության ջնջումն է։
Microsoft թիմերը — Փորձեք ինտեգրել Microsoft-ի արտադրանքը մի բանի հետ, որը չի պատկանում Microsoft-ին... Հաջողություն: Ահա այն ամենը, ինչ ես պետք է ասեմ այս գործիքի մասին:
Փաստաթղթավորման գործիք #1
Հաղթող ` Հորդություն
Որակյալ տեխնիկական փաստաթղթերի ստեղծումն ու պահպանումը բարդ գործընթաց է, անկախ նրանից, թե ինչ գործիք եք օգտագործում: Թեև վերջերս շուկա են հայտնվել SaaS-ի փաստաթղթավորման բազմաթիվ գործիքներ, ես դժվարանում եմ երրորդ կողմին փոխանցել տեխնիկական փաստաթղթերի պահպանումը, որոնք վերաբերում են առաքելության կարևորագույն ծրագրերին: Նախընտրելի է տվյալները և փաստաթղթերը պահել պրեմում, և Confluence-ն այսպես է լուծում:
Հիմնական առավելությունները
- Հեշտ է գործել - Առանձին գործիքների մեծամասնությունը կարող է մի փոքր բարդ լինել տեղադրման և շահագործման համար, և դրանց պահպանման համար պահանջվում է որոշակի գիտելիքներ: Confluence Server-ը հիանալի է աշխատում 10 կամ 10,000 օգտագործողների համար:
- Փլագիններ – Փառք Confluence-ին գեղեցիկ, հեշտ օգտագործվող նավարկություն, և գրեթե ամեն ինչի համար պլագին ավելացնելու հնարավորության համար բացում է Վիքիի նման ներուժը:
Մրցակիցներ
Մասնակցել է ճակատամարտին, բայց չի հաղթել
Կարդացեք փաստաթղթերը — Հիանալի է բաց կոդով, բայց նույնիսկ մի մտածեք այստեղ կրիտիկական գիտելիքներ պահելու մասին:
Մարկդաուն - Հիանալի է կոդը փաստաթղթավորելու համար, բայց դժվար է տեղադրել ճարտարապետություն, գործընթացներ կամ փաստաթղթերի այլ տեսակներ MarkDown-ի հատուկ ձևաչափման պատճառով:
Ջեկիլլ — Տեխնիկական գիտելիքները փաստաթղթավորելիս ես չեմ ցանկանում ստեղծել նոր ստատիկ կայք, որը կտեղակայվի ամեն անգամ, երբ փոփոխություն լինի: Confluence-ի տարբերակների վերահսկման պարզ համակարգը մեծապես հեշտացնում է ներքին փաստաթղթերը:
Ամփոփել
Շուկայում կան բառացիորեն հարյուրավոր DevOps գործիքներ, ինչը դժվարացնում է իմանալ, թե որոնք օգտագործել և երբ դրանք պետք է իրականացվեն: Հետևեք այս պարզ ուղեցույցին, որպեսզի ընտրեք DevOps գործիքներ ամբողջական CI/CD խողովակաշարի համար:
Համոզվեք, որ ընտրեք գործիքներ բոլոր հինգ կատեգորիաներից.
- գործիքների մշակում և կառուցում
- փորձարկման ավտոմատացման գործիքներ
- տեղակայման գործիքներ
- Runtime գործիքներ
- համագործակցության գործիքներ.
Հիմնական առաջարկություն. Ավտոմատացրեք ամեն ինչ:
Շնորհակալություն Zach Shapiro!
Source: www.habr.com