Үздіксіз жеткізу - Continuous delivery

Бағдарламалық жасақтама жасау
Негізгі қызмет
Парадигмалар мен модельдер
Әдістемелер және шеңберлер
Қолдау пәндері
Тәжірибелер
Құралдар
Стандарттар және білім органдары
Глоссарийлер
Контурлар

Үздіксіз жеткізу (CD) Бұл бағдарламалық жасақтама Бағдарламалық жасақтаманың кез-келген уақытта сенімді түрде шығарылуын қамтамасыз ететін және бағдарламалық жасақтаманы шығарған кезде оны қолмен жасай отырып, бағдарламаларды қысқа циклдарда шығаратын тәсіл.[1][2] Ол бағдарламалық жасақтаманы құруға, сынауға және үлкен жылдамдықпен шығаруға бағытталған. Бұл тәсіл өндірістегі қосымшаларға біртіндеп жаңартулар енгізу арқылы өзгерістерді енгізу құнын, уақытын және тәуекелін азайтуға көмектеседі. Тікелей және қайталанатын орналастыру процесі үздіксіз жеткізу үшін маңызды.

CD-мен қарама-қайшы үздіксіз орналастыру, бағдарламалық қамтамасыз ету қысқа циклдарда, бірақ автоматтандырылған тәсілмен шығарылатын ұқсас тәсіл орналастыру қолмен емес.

DevOps-пен байланыс

Үздіксіз жеткізу және DevOps мағыналары жағынан ұқсас және жиі шатастырылған, бірақ олар екі түрлі ұғым.[3] DevOps ауқымы кеңірек,[4] және мәдени өзгерістердің айналасындағы орталықтар, атап айтқанда бағдарламалық жасақтама жеткізумен айналысатын әр түрлі топтардың ынтымақтастығы (әзірлеушілер, операциялар, сапа кепілдігі, менеджмент және т.б.), сондай-ақ бағдарламалық қамтамасыздандырудағы процестерді автоматтандыру.[4] Үздіксіз жеткізу, керісінше, жеткізу аспектісін автоматтандыруға бағытталған және әртүрлі процестерді біріктіруге және оларды тезірек және жиі орындауға бағытталған.[5] Осылайша, DevOps үздіксіз жеткізілім өнімі бола алады, ал CD тікелей DevOps-қа ағады.

Үздіксіз орналастырумен байланыс

Үздіксіз жеткізу - бұл қолмен шығарылымдар арқылы кез-келген уақытта орналастырылатын бағдарламалық жасақтаманы жеткізу мүмкіндігі; бұл автоматтандырылған орналастыруды қолданатын үздіксіз орналастырудан айырмашылығы.[6] Сәйкес Мартин Фаулер, үздіксіз орналастыру үздіксіз жеткізуді қажет етеді.[7] Академиялық әдебиеттер екі тәсілді қолдану әдісі бойынша ажыратады; автоматтандырылғанға қарсы қолмен.[2][8]

Қағидалар

Үздіксіз жеткізу процесі diagram.svg

Үздіксіз жеткізу әдеттегі а ұғымын қарастырады орналастыру құбыры[9] сияқты сүйену Пока-Йоке:[10] бағдарламалық жасақтаманың бір бөлігі өтуі керек болатын валидациялар жиынтығы босату. Код қажет болған жағдайда құрастырылады, содан кейін а өзгерген сайын құрастыру сервері пакетке салады көзді басқару репозиторийі, содан кейін оны босатуға болатындығына дейін бірнеше түрлі техникалармен сынақтан өткізіңіз (мүмкін қолмен тестілеуді қосыңыз).

Ұзақ циклмен жұмыс жасайтын әзірлеушілер CD-дискілерде жұмыс істеген кезде өз ойларын өзгертуі қажет болуы мүмкін. Кез-келген кодтық міндеттеме клиенттерге кез-келген уақытта жіберілуі мүмкін екенін түсіну маңызды. Сияқты өрнектер қосқыштар соңғы пайдаланушылар пайдалануға әлі дайын емес кодты ертерек жасау үшін өте пайдалы болуы мүмкін. Қолдану NoSQL деректерді көшіру және схемалардың өзгеру қадамдарын, көбінесе қолмен орындалатын қадамдарды немесе үздіксіз жеткізілім жұмысының ерекшеліктерін жоя алады.[11] Сияқты оқшауланған кодты әзірлеудің басқа пайдалы әдістері код тармақталуы CD әлемінде ескірмеген, бірақ CD принциптеріне сай бейімделуі керек - мысалы, ұзақ уақыт жұмыс жасайтын бірнеше код тармақтарын іске қосу мүмкін емес, өйткені шығарылатын артефакт CD процесінің басында бір код тармағынан тұрғызылуы керек егер ол құбырдың барлық фазалары арқылы өтетін болса.[түсіндіру қажет ]

Орналастыру құбыры

Орналастыру құбыры арқылы үздіксіз жеткізу қосылады. Орналастыру құбырының мақсаты үш компоненттен тұрады: көріну, кері байланыс және үнемі орналастыру.[12]

  • Көріну - Құру, орналастыру, тестілеу және босатуды қоса алғанда, жеткізу жүйесінің барлық аспектілері ынтымақтастықты дамыту үшін команданың әрбір мүшесіне көрінеді.
  • Кері байланыс - Топ мүшелері проблемалар туындаған кезде оларды мүмкіндігінше тезірек шеше алатындай етіп тезірек біледі.
  • Әрдайым орналастырыңыз - Толығымен автоматтандырылған процесс арқылы сіз бағдарламалық жасақтаманың кез-келген нұсқасын кез-келген ортаға орналастыра және шығара аласыз.

Құралдар / құралдар түрлері

Үздіксіз жеткізілім автоматтандыруды көздің бақылауынан өндіріске дейін алады. Осы процестің барлығын немесе бір бөлігін орындауға көмектесетін әртүрлі құралдар бар.[13] Бұл құралдар үздіксіз жеткізуді қамтитын орналастыру құбырының бөлігі болып табылады. Процестің әртүрлі бөліктерін орындайтын құралдардың түрлеріне мыналар жатады: үздіксіз интеграция, қосымшаларды шығаруды автоматтандыру, автоматика құру, қолдану циклін басқару.[14]

Үздіксіз жеткізуге арналған сәулет

Үздіксіз жеткізуді тиімді қолдану үшін бағдарламалық жасақтама жиынтығына сәйкес келуі керек архитектуралық маңызды талаптар (ASR), мысалы, орналастыру, модификациялау және тестілеу.[15] Бұл ASR жоғары басымдықты талап етеді және оларды жеңіл сатылымға қою мүмкін емес.

Микросервистер көбінесе үздіксіз жеткізу үшін архитектура кезінде қолданылады.[16] Микросервистерді қолдану бағдарламалық жасақтама жүйесінің қолданылуын және өзгертілуін арттыра алады. Орналастырудың жақсартылуын байқауға мыналар кіреді: орналастырудың тәуелсіздігі, орналастырудың қысқа уақыты, жай орналастыру процедуралары және нөлдік жұмыс уақыты. Модификациялаудың бақыланатын жақсартуларына мыналар кіреді: кішігірім функционалды өзгерістердің циклінің қысқа уақыты, технологияны таңдаудың оңай өзгеруі, атрибуттардың сапалық өзгерістері және тіл мен кітапхананы жеңілдету.[16]

Іске асыру және қолдану

Джез Хэмбл мен Дэвид Фарлидің жазған CD кітабы бұл терминді кеңінен насихаттады, бірақ оның пайда болуынан бастап анықтама алға қарай дамыды және енді анағұрлым дамыған мағынаға ие болды. Бүгінгі таңда компаниялар жеткізудің үздіксіз принциптерін және үздік тәжірибелерін енгізуде. Домендердегі айырмашылық, мысалы. медициналық және вебке қатысты, олар әлі де маңызды және оны енгізу мен қолдануға әсер етеді.[17] Мұндай тәсілге ие танымал компаниялар жатады Yahoo!,[18] Amazon,[19] Facebook,[20] Google,[21] Пэдди қуаты[1] және Уэллс Фарго.[22]

Пайдасы мен кедергілері

Үздіксіз жеткізудің бірнеше артықшылықтары туралы айтылды.[1][17]

  • Нарыққа жеделдетілген уақыт: CD ұйымға клиенттерге бағдарламалық жасақтаманың жаңа шығарылымдарына тән іскерлік құнды тез жеткізуге мүмкіндік береді. Бұл мүмкіндік компанияға бәсекелестіктің алдында бір сатыда тұруға көмектеседі.
  • Дұрыс өнімді құру: Жиі шығарылымдар қосымшаны әзірлеу топтарына пайдаланушылардың пікірлерін тез алуға мүмкіндік береді. Бұл оларға тек пайдалы функциялармен жұмыс істеуге мүмкіндік береді. Егер олар мүмкіндіктің пайдалы еместігін анықтаса, оған одан әрі күш жұмсамайды. Бұл оларға дұрыс өнімді құруға көмектеседі.
  • Жақсартылған өнімділік пен тиімділік: Автоматтандыру арқылы әзірлеушілер, тестерлер, пайдалану инженерлері және т.б. үшін уақытты айтарлықтай үнемдеу.
  • Сенімді шығарылымдар: Шығарумен байланысты тәуекелдер айтарлықтай азайды және босату процесі сенімді бола бастады. CD көмегімен орналастыру процесі мен сценарийлер өндіріске шығар алдында бірнеше рет тексеріледі. Сонымен, орналастыру процесінде және сценарийлерде көптеген қателер табылды. Жиі шығарылған сайын, әрбір шығарылымдағы кодтың саны азаяды. Бұл туындаған кез-келген ақауларды табу мен жоюды жеңілдетеді, олардың әсер ету уақытын қысқартады.
  • Өнімнің сапасы жақсарды: ашық қателер мен өндіріс оқиғалары саны айтарлықтай азайды.
  • Клиенттердің қанағаттануы жақсарады: тұтынушылардың жоғары деңгейіне қол жеткізіледі.

Кедергілер де зерттелді.[17]

  • Клиенттердің қалауы: Кейбір тұтынушылар өз жүйелерін үздіксіз жаңартқысы келмейді. Бұл әсіресе олардың жұмысындағы маңызды кезеңдерде байқалады.
  • Доменге қатысты шектеулер: кейбір домендерде, мысалы телекоммуникациялық және медициналық, ережелер жаңа нұсқаларға операция кезеңіне кіруге рұқсат беруден бұрын кең тестілеуді қажет етеді.
  • Сынақ автоматикасының жетіспеушілігі: сынақ автоматикасының жетіспеушілігі әзірлеушілердің сенімсіздігіне әкеледі және үздіксіз жеткізуді пайдаланудың алдын алады.
  • Қоршаған ортадағы айырмашылықтар: Әзірлеуде, сынауда және өндірісте қолданылатын әр түрлі орта өндірістік ортаға анықталмаған мәселелердің шығуына әкелуі мүмкін.
  • Адамның сөзіне мұқтаж тесттер: сапаның барлық атрибуттарын автоматтандыру арқылы тексеру мүмкін емес. Бұл атрибуттар адамдардан жеткізілім құбырын баяулатуды қажет етеді.

Бала асырап алудың тағы сегіз проблемасын Чен көтерді және дамытты.[6] Бұл қиындықтар ұйымдастырушылық құрылым, процестер, құралдар, инфрақұрылым, ескі жүйелер, компакт-дискіні архитектуралау, функционалды емес талаптарды үздіксіз тексеру және тестілерді орындауды оңтайландыру салаларында болып табылады.

Бала асырап алу қиындықтарын жеңу стратегиясы

Жеткізуді қабылдаудың үздіксіз қиындықтарын жеңудің бірнеше стратегиясы туралы баяндалды.[6]

CD-ді қабылдау қиындықтарын жеңу стратегиясы
СтратегияСипаттама
Ауырсынуды басатын дәрі ретінде CD сатуӘрбір мүдделі тараптың CD-нің шеше алатын ауырсыну нүктелерін анықтаңыз және CD-ны сол мүдделі тарапқа ауру сезімін басатын дәрі ретінде сатыңыз. Бұл стратегия ықшам дискіні іске асыруды талап ететін көптеген мүдделі тараптардың сатып алуына қол жеткізуге көмектеседі.
Көп тәртіптік құрамы бар арнайы командаАрнайы топсыз алға жылжу қиынға соғады, өйткені қызметкерлер көбінесе басқа құндылықтар ағынында жұмыс істеуге тағайындалады. Көпсалалы топ CD-ді іске асыру үшін қажетті дағдылардың кең спектрін беріп қана қоймай, сонымен бірге туыстық топтармен де қарым-қатынасты реттейді.
Үздіксіз жеткізуді үздіксіз жеткізуКомпакт-дискіні іске асыруды компанияға мүмкіндігінше ертерек жеткізе алатындай етіп ұйымдастырыңыз, көптеген жобаларға біртіндеп, аз-аздап кіріп, соңында бүкіл ұйымға CD таратыңыз. Бұл стратегия нақты артықшылықтарды осы жолда көріну арқылы қажет инвестицияларды ақтауға көмектеседі. Көрінетін артықшылықтар, өз кезегінде, CD-ге дейінгі ұзақ және қатал саяхатта өмір сүру үшін қажетті компанияның тұрақты қолдауы мен инвестицияларына қол жеткізуге көмектеседі.
Жеңіл, бірақ маңызды қосымшалардан бастаңызCD-ге көшіру үшін алғашқы қосымшаларды таңдағанда, тасымалдауға оңай, бірақ бизнес үшін маңыздыларын таңдаңыз. Көші-қонға жеңіл болу CD-нің артықшылықтарын тез көрсетуге көмектеседі, бұл іске асыру бастамасын өлтіруге жол бермейді. Бизнес үшін маңызды болу қажетті ресурстарды қорғауға көмектеседі, нақты және талассыз құнды көрсетеді, және CD-де ұйымда көріну деңгейін жоғарылатады.
CD дискісінің визуалды қаңқасыТопқа CD құбырының толық көрінісі бар, бірақ олар әлі жүзеге асыра алмайтын бос кезеңдері бар визуалды CD құбырының қаңқасын беріңіз. Бұл компакт-дискінің ойлау жүйесін қалыптастыруға және ықшам дискіні қабылдау серпінін сақтауға көмектеседі. Құбырлардың қаңқасы әсіресе команданың ықшам дискіге көшуі үлкен күш пен ойлаудың ұзақ уақыт бойы өзгеруі қажет болған кезде өте пайдалы.
Сарапшылардың құлдырауыДаму тобының аға мүшесі ретінде қатал жобаларға қосылу үшін CD сарапшысын тағайындаңыз. Командада сарапшының болуы топ ішінен CD-ге көшуге мотивация мен импульс қалыптастыруға көмектеседі. Бұл көші-қон үлкен күш пен ұзақ уақытты қажет ететін кезде серпінді сақтауға көмектеседі.

Сондай-ақ қараңыз

Әрі қарай оқу

  • Кішіпейіл, Джез; Фарли, Дэвид (2010). Үздіксіз жеткізілім: құрастыру, тестілеу және орналастыруды автоматтандыру арқылы сенімді бағдарламалық жасақтама. Аддисон-Уэсли. ISBN  978-0-321-60191-9.
  • Вольф, Эберхард (2017). Үздіксіз жеткізілімге арналған практикалық нұсқаулық. Аддисон-Уэсли. ISBN  978-0-134-69147-3.

Әдебиеттер тізімі

  1. ^ а б c Чен, Лянпин (2015). «Үздіксіз жеткізілім: үлкен артықшылықтар, бірақ қиындықтар да». IEEE бағдарламалық жасақтамасы. 32 (2): 50–54. дои:10.1109 / MS.2015.27.
  2. ^ а б Шахин, Моджтаба; Али Бабара, Мұхаммед; Чжу, Лиминг (2017). «Үздіксіз интеграция, жеткізу және орналастыру: тәсілдер, құралдар, қиындықтар мен тәжірибелерге жүйелі шолу». IEEE қол жетімділігі. 5: 3909–3943. arXiv:1703.07019. Бибкод:2017arXiv170307019S. дои:10.1109 / ACCESS.2017.2685629.
  3. ^ Хаммонд, Джеффри (9 қыркүйек 2011). «DevOps пен үздіксіз жеткізілім арасындағы байланыс». Forrester зерттеуі. Орманшы.
  4. ^ а б Кішіпейіл, Джез; Фарли, Дэвид (2011). Үздіксіз жеткізу: құрастыру, тестілеу және орналастыруды автоматтандыру арқылы сенімді бағдарламалық жасақтама. Pearson Education Inc. ISBN  978-0-321-60191-9.
  5. ^ Swartout, Paul (2012). Үздіксіз жеткізу және DevOps: Quickstart нұсқаулығы. Packt Publishing. ISBN  978-1849693684.
  6. ^ а б c Чен, Лянпин (2017). «Үздіксіз жеткізу: бала асырап алу мәселелерін жеңу». Жүйелер және бағдарламалық қамтамасыз ету журналы. 128: 72–86. дои:10.1016 / j.jss.2017.02.013.
  7. ^ «bliki: үздіксіз жеткізу». martinfowler.com. Алынған 2015-10-29.
  8. ^ Шахин, Моджтаба; Бабар, Мұхаммед Әли; Захеди, Мансуре; Чжу, Лиминг (2017). «Үздіксіз жеткізілімнен тыс: үздіксіз орналастыру мәселелерін эмпирикалық зерттеу». 2017 ACM / IEEE эмпирикалық бағдарламалық жасақтама және өлшеу бойынша халықаралық симпозиум (ESEM). 111-120 бб. дои:10.1109 / ESEM.2017.18. ISBN  978-1-5090-4039-1.
  9. ^ Кішіпейіл, Дж .; Оқу, С .; Солтүстік, Д. (2006). «Өндірісті орналастыру желісі». Agile 2006 (Agile'06). 113–118 бб. дои:10.1109 / AGILE.2006.53. ISBN  0-7695-2562-8.
  10. ^ Фицджеральд, Брайан (2014-06-03). Бағдарламалық жасақтаманы үздіксіз жасау және одан тысқары: тенденциялар мен проблемалар (PDF). Жылдам үздіксіз бағдарламалық жасақтама жасау бойынша 1-ші халықаралық семинар. Нью-Йорк, Нью-Йорк: Есептеу техникасы қауымдастығы. 1-9 бет. дои:10.1145/2593812.2593813. ISBN  978-1-4503-2856-2. Архивтелген түпнұсқа (PDF) 2014-10-25 аралығында. Алынған 2014-10-24.
  11. ^ Клюге, Ларс (12 қыркүйек 2013). «Kitchensurfing-те MongoDB-мен үздіксіз орналастыру». slideshare.net. Алынған 3 қаңтар 2014.
  12. ^ Дувалл, Пол (2012). «Үздіксіз жеткізу: бағдарламалық жасақтаманың өмірлік циклындағы өрнектер мен анти-үлгілер» (PDF). Refcardz. Алынған 9 қазан, 2015.
  13. ^ Филлипс, Эндрю (2014 жылғы 29 шілде). «Үздіксіз жеткізу құбыры - бұл не және бағдарламалық жасақтаманы құруда неге соншалықты маңызды». DevOps.com. Архивтелген түпнұсқа 2015 жылғы 28 қыркүйекте. Алынған 9 қазан, 2015.
  14. ^ Бинсток, Эндрю (16 қыркүйек 2014). «Үздіксіз жеткізілім: ептілік иесі». Доктор Доббтың бағдарламалық жасақтама жасау әлемі. Сан-Франциско: UBM.
  15. ^ Чен, Лянпин (2015). Үздіксіз жеткізілім үшін архитектураға. Бағдарламалық архитектура бойынша 12-ші IEEE / IFIP конференциясы (WICSA 2015). Монреаль, Канада: IEEE. дои:10.1109 / WICSA.2015.23.
  16. ^ а б Чен, Лянпин (2018). Микросервистер: үздіксіз жеткізу және DevOps архитектурасы. Бағдарламалық жасақтама архитектурасы бойынша IEEE халықаралық конференциясы (ICSA 2018). IEEE.
  17. ^ а б c Леппенен, М .; Макинен, С .; Пагелс, М .; Элоранта, В.П .; Итконен, Дж .; Мантыля, М.В .; Маннисто, Т. (2015-03-01). «Автомагистральдар мен елді мекендер үздіксіз орналастыруға апаратын жолдар». IEEE бағдарламалық жасақтамасы. 32 (2): 64–72. дои:10.1109 / MS.2015.50. ISSN  0740-7459.
  18. ^ «Yahoo!-да үздіксіз жеткізуді жүзеге асыру!». confreaks.tv. 23 қазан 2013.
  19. ^ «Жылдамдық 2011: Джон Дженкинс,» Жылдамдық мәдениеті"". youtube.com. 20 маусым 2011 ж.
  20. ^ «Масштабта жылдам босату». 2017-08-31.
  21. ^ Кішіпейіл, Джез (13 ақпан 2014). «Үздіксіз жеткізу туралы іс». thinkworks.com. Алынған 16 шілде 2014.
  22. ^ jFrog (желтоқсан 2014). «2014 жыл-үздіксіз интеграция-революция».