Ավելի վաղ մենք ասաց Continuous Integration (CI) մասին։ Շարունակենք շարունակական առաքումը: Սա ծրագրային ապահովման մշակման մեթոդների մի շարք է: Այն օգնում է համոզվել, որ ձեր կոդը պատրաստ է տեղակայման:
Շարունակական առաքում արտահայտությունը կարելի էր տեսնել նորից արագաշարժ մանիֆեստ 2001 թվականից սկսած՝ հիմնական սկզբունքների ցանկի սկզբում. «Առաջնահերթությունը հաճախորդների խնդիրների լուծումն է՝ արդի ծրագրային ապահովման շարունակական մատակարարման միջոցով»:
2010 թվականին Ջեզ Համբլը և Դեյվիդ Ֆարլին ազատ են արձակվել книгу շարունակական առաքմամբ: Ըստ հեղինակների՝ CD-ն լրացնում է մոտեցումը Շարունակական ինտեգրում և թույլ է տալիս պարզեցնել տեղակայման համար կոդի պատրաստումը:
Գրքի հրատարակումից հետո մոտեցումը սկսեց ժողովրդականություն ձեռք բերել և ընդամենը մի քանի տարի անց այն դարձավ գրեթե համընդհանուր ընդունված: Համաձայն հարցում600-ին ավելի քան 2014 ծրագրավորողների և ՏՏ մենեջերների միջև անցկացված տեխնիկական մենեջերների 97%-ը և ծրագրավորողների 84%-ը ծանոթ էին Continuous Delivery-ին:
Այժմ այս մոտեցումը մնում է ամենատարածվածներից մեկը: Համաձայն 2018-ի ուսումնասիրության, որը ներառում էր ՏՏ համայնքի DevOps և Jenkins համայնքը, այն օգտագործում հարցված հազարից ավելի հարցվածների կեսը:
Ինչպե՞ս է աշխատում շարունակական առաքումը:
CD-ի հիմքը կոդի պատրաստակամությունն է տեղակայման համար: Այս խնդիրն իրականացնելու համար օգտագործվում է թողարկման համար ծրագրակազմի պատրաստման գործընթացի ավտոմատացում: Այն պետք է լինի ստանդարտ զարգացման տարբեր միջավայրերում, ինչը կօգնի արագ գտնել թույլ կետերը և օպտիմալացնել դրանք: Օրինակ, արագացրեք փորձարկումը:
Շարունակական առաքման գործընթացի օրինակը հետևյալն է.
Եթե Continuous Integration մոտեցումը պատասխանատու է առաջին երկու փուլերի ավտոմատացման համար, ապա Continuous Delivery-ը պատասխանատու է հաջորդ երկուսի համար: Գործընթացի կայունությունն ապահովվում է, ի թիվս այլ բաների, համակարգերի կողմից կոնֆիգուրացիայի կառավարում. Նրանք վերահսկում են ենթակառուցվածքների, տվյալների բազաների և կախվածության փոփոխությունները: Տեղակայումն ինքնին կարող է ավտոմատացված լինել կամ ձեռքով անել:
Գործընթացին դրվում են հետևյալ պահանջները.
Արտադրական միջավայր մուտք գործելու պատրաստակամության և անհապաղ թողարկման պատրաստության մասին տեղեկատվության առկայություն (CD գործիքները փորձարկում են կոդը և հնարավորություն են տալիս գնահատել թողարկման փոփոխությունների ազդեցությունը):
Ընդհանուր պատասխանատվություն վերջնական արտադրանքի համար: Արտադրանքի թիմը՝ մենեջերներ, մշակողներ, փորձարկողներ, մտածում են արդյունքի մասին, և ոչ միայն իրենց պատասխանատվության ոլորտի մասին (արդյունքը աշխատանքային թողարկում է, որը հասանելի է արտադրանքի օգտատերերին):
Սկավառակներում այն սովորաբար օգտագործվում է կոդի վերանայում, իսկ հաճախորդների կարծիքներ հավաքելու համար՝ սկզբունքը մութ արձակում. Օգտագործողների մի փոքր հատվածի համար սկզբում թողարկվում է նոր գործառույթ՝ արտադրանքի հետ շփվելու նրանց փորձը օգնում է գտնել թերություններ և սխալներ, որոնք չեն նկատվել ներքին թեստավորման ժամանակ:
Ո՞րն է օգուտը
Շարունակական առաքումն օգնում է պարզեցնել կոդերի տեղաբաշխումը, ինչը դրականորեն է ազդում արտադրողականության վրա և նվազեցնում է աշխատողների այրման հավանականությունը: Ի վերջո, դա նվազեցնում է զարգացման ընդհանուր ծախսերը: Օրինակ, CD-ն օգնեց HP թիմերից մեկին նվազեցնել նման ծախսերը 40%-ով։
Բացի այդ, 2016 թվականի ուսումնասիրության համաձայն (էջ 28 փաստաթուղթը) - CD-ներ ներդրած ընկերությունները 50%-ով ավելի արագ են լուծում տեղեկատվական անվտանգության խնդիրները, քան նրանք, ովքեր չեն օգտագործում մոտեցումը: Որոշ չափով այս տարբերությունը կարելի է բացատրել գործընթացների ավտոմատացման գործիքների կատարմամբ:
Մեկ այլ գումարած թողարկումների արագացումն է: Շարունակական առաքում Ֆինլանդիայի զարգացման ստուդիայում օգնեց բարձրացնել կոդի հավաքման արագությունը 25%-ով:
Պոտենցիալ դժվարություններ
Առաջին և հիմնական խնդիրը ծանոթ գործընթացների վերակառուցման անհրաժեշտությունն է: Նոր մոտեցման առավելությունները ցույց տալու համար արժե աստիճանաբար անցնել CD-ին՝ սկսած ոչ ամենաաշխատատար հավելվածներից։
Երկրորդ պոտենցիալ խնդիրը կոդի ճյուղերի մեծ քանակությունն է: «Ճյուղավորման» հետևանքը հաճախակի կոնֆլիկտներն են և ժամանակի հետագա կորուստը։ Հնարավոր լուծում՝ մոտեցում ոչ ճյուղեր.
Մասնավորապես, որոշ ընկերություններում հիմնական դժվարությունները ծագում են թեստավորման հետ կապված՝ դա չափազանց շատ ժամանակ է պահանջում: Փորձարկման արդյունքները հաճախ պետք է վերլուծվեն ձեռքով, սակայն հնարավոր լուծումը կարող է լինել թեստերի զուգահեռությունը CD-ի իրականացման վաղ փուլերում:
Պետք է նաև աշխատակիցներին վերապատրաստել նոր գործիքներով աշխատելու համար. նախնական կրթական ծրագիրը կխնայի ծրագրավորողների ջանքերն ու ժամանակը:
Ահա մի քանի բաց գործիքներ շարունակական առաքման համար.
GoCD — Java-ում և JRuby on Rails-ում շարունակական առաքման սերվեր: Թույլ է տալիս վերահսկել հավելվածի առաքման ողջ գործընթացը՝ build-test-release: Գործիքը տարածվում է Apache 2.0 լիցենզիայի ներքո: Դուք կարող եք գտնել այն պաշտոնական կայքում տեղադրման ուղեցույց.
Կապիստրանո — շրջանակ՝ սկրիպտներ ստեղծելու համար, որոնք ավտոմատացնում են հավելվածների տեղակայումը Ruby-ում, Java-ում կամ PHP-ում: Capistrano-ն կարողանում է հրամաններ կատարել հեռավոր մեքենայի վրա՝ միանալով դրան SSH-ի միջոցով: Աշխատում է շարունակական ինտեգրման և առաքման այլ գործիքների հետ, ինչպիսիք են Integrity CI սերվերը:
Դասարան բազմահարթակ գործիք է, որն ավտոմատացնում է հավելվածների մշակման ողջ ցիկլը: Gradle-ն աշխատում է Java-ի, Python-ի, C/C++-ի, Scala-ի և այլնի հետ: Կա ինտեգրում Eclipse-ի, IntelliJ-ի և Jenkins-ի հետ:
բզզոց - CD հարթակ Go լեզվով: Անօդաչու սարքը կարող է տեղակայվել տեղում կամ ամպի մեջ: Գործիքը կառուցված է բեռնարկղերի վրա և օգտագործում է YAML ֆայլեր՝ դրանք կառավարելու համար:
Spinnaker — բազմաբնույթ ամպային համակարգերում կոդի շարունակական առաքման հարթակ: Netflix-ի կողմից մշակված Google-ի ինժեներները մեծ դեր են խաղացել գործիքի մշակման գործում: Տեղադրման հրահանգներ գտնել այն պաշտոնական կայքում.