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

Այնուհետև այն պետք է սկսի ապրել իրական աշխարհում։ Հայտնվում է երկրորդ սարքային տարբերակը։ Որոշ հաճախորդներ դեռևս օգտագործում են առաջին տարբերակը։ Ծրագրային ապահովման տարբերակները սկսում են տարբերվել։ Նոր կոնֆիգուրացիա է անհրաժեշտ այլ հաճախորդի կամ շուկայի համար, մինչդեռ հին սարքերը դեռևս կարիք ունեն թարմացումների և աջակցության։

Ոչինչ անպայմանորեն կոտրված չէ։ Սարքի հիմքում ընկած ծրագիրը պարզապես ձեռք է բերել իր սեփական կյանքի ցիկլը։

Այդ անցումը հեշտ է անտեսել, քանի որ նախատիպը կարող է շարունակել կատարելապես աշխատել։ Սակայն, երբ նույն ֆիզիկական արտադրանքի մի քանի տարբերակներ ստիպված են լինում համակեցության մեջ մտնել, backend-ը այլևս պարզապես սարքավորումների հետևում գտնվող ենթակառուցվածք չէ։ Այն դառնում է արտադրանքի ճարտարապետության մի մասը։

Գործող միացված նախատիպը դեռևս մասշտաբային արտադրանք չէ

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

Այն, ինչ այն սովորաբար չի ապացուցել, այն է, թե որքան լավ է նույն համակարգը կառավարում բազմազանությունը։

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

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

Նախատիպի պարտքը հաճախ սկսվում է այսպես. ոչ թե վատ որոշումից, այլ ժամանակավոր որոշումից, որը մնում է տեղում ապրանքի հետագա զարգացումից հետո։ Եվ առաջին բաներից մեկը, որը ստիպում է այդ անցումը տեսանելի դառնալ, հենց սարքավորումն է։ Նոր տարբերակը պարզապես չի փոխարինում հինին, այն պետք է համակեցության մեջ լինի դրա հետ։

Յուրաքանչյուր սարքավորման թարմացում ստեղծում է ծրագրային ապահովման կյանքի ցիկլի խնդիր

Նոր սարքավորումների վերանայումը հազվադեպ է լինում հնի մաքուր փոխարինող։ Գործնականում երկու տարբերակներն էլ մնում են շուկայում, երբեմն՝ տարիներ շարունակ։ Ավելացրեք անցումային խմբաքանակ, մի քանի ծրագրային ապահովման ճյուղեր և հաճախորդին հատուկ կարգավորումներ, և սարքավորումների նավատորմը արագորեն կդառնա ավելի բազմազան, քան ենթադրում է արտադրանքի սկզբնական մոդելը։

Ծրագրային շերտը այլևս չի կարող յուրաքանչյուր միավորը դիտարկել որպես վերացական «սարք»։ Այն պետք է իմանա, թե ինչի է ընդունակ այդ կոնկրետ միավորը։

Վերանայված տախտակը կարող է օգտագործել այլ սենսոր, կապի մոդուլ կամ կառավարիչ: Վերջին տարբերակի համար վավեր հրամանը կարող է չաջակցվել նախորդ տարբերակի կողմից: Կալիբրացման արժեքները կարող են փոխվել: Կարգավորման սահմանները կարող են փոխվել: Մեկ սերնդի համար հարմար ներկառուցված ծրագրային ապահովման փաթեթը կարող է անվտանգ չլինել մյուսի համար:

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

Դիտարկենք մի արտադրանք, որի առաջին վերանայումն օգտագործում է մեկ տրամաչափման ընթացակարգ, մինչդեռ երկրորդը ներմուծում է նոր սենսոր և պարամետրերի այլ հավաքածու։ Հաճախորդի համար երկու սարքերն էլ կարող են դեռևս նույն արտադրանքը լինել։ Հարթակի համար՝ ոչ։

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

Հին սարքավորումները հազվադեպ են անհետանում ժամանակացույցին համապատասխան։ Արտադրանքի թիմերը, բնականաբար, կենտրոնանում են ամենաթարմ տարբերակի վրա, մինչդեռ հաճախորդները հաճախ պահպանում են ավելի վաղ տարբերակները շատ ավելի երկար, քան սպասվում էր։ Հետևաբար, հարթակը պետք է միաժամանակ աջակցի մի քանի սերունդների, այլ ոչ թե ենթադրի, որ տեղադրված բազան երբևէ կհամընկնի մեկ ընթացիկ վիճակի հետ։

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

Եվ նախքան այդ հարցերից որևէ մեկին հուսալի պատասխան տալը, յուրաքանչյուր սարք պետք է համակարգ մտնի հետևողականորեն։

Նախապատրաստումը այն է, երբ ձեռքով ինժեներիան դադարեցնում է մասշտաբավորումը

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

Արտադրական մասշտաբով, սակայն, մատակարարումը գտնվում է սարքի ինքնության, հավատարմագրերի, սեփականության, կարգավորման և կենսական ցիկլի վիճակի հատման կետում: Ծրագրավորման ընթացքում թույլ տրված սխալը կարող է ազդել սարքի շահագործման և աջակցության վրա գործարանից դուրս գալուց երկար ժամանակ անց:

Աղյուսակը կարող է այլևս չհամապատասխանել իրականում տեղադրվածին։ Փոխարինող սարքին անհրաժեշտ է ճիշտ հաճախորդի ասոցիացիա՝ առանց սխալ ինքնություն ժառանգելու։ Գործարանային կարգավորումների վերականգնումը ստեղծում է գործընթացի մեկ այլ ուղի։ Տեղադրողը կարող է սարքը նշանակել սխալ հաշվի՝ թողնելով աջակցության ծառայությանը որոշելու, թե արդյոք այն անջատված է, սխալ է տրամադրված, թե պարզապես սխալ կարգավորումներ է կրում։

Երբ այդ հարցերին պատասխանելու համար մշակողը պարբերաբար պետք է ստուգի տվյալների բազան կամ աշխատեցնի ներքին սկրիպտ, գործընթացը դադարում է մասշտաբավորվել արտադրանքի հետ միասին։

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

Եվ դա հազվադեպ է միակ կարողությունը, որը պետք է դառնա վերօգտագործելի։

Հարթակի շերտը պետք է դառնա վերաօգտագործելի ենթակառուցվածք

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

Թիմերը հազվադեպ են ձգտում ստեղծել այս կրկնօրինակումը։ Յուրաքանչյուր ապրանքի շուրջ փոքր տարբերություններ են կուտակվում մինչև թիմը պահպանում է նույն ինժեներական պատասխանատվությունը դարձած մի քանի իրականացումներ։

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

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

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

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

Պահպանեք պատվերով պատրաստված ինժեներական լուծումները, որտեղ արտադրանքն իրականում տարբերվում է

Բազմակի օգտագործման հարթակը չպետք է կապակցված արտադրանքը դարձնի ավելի ընդհանուր։ Դրա խնդիրն է վերացնել կրկնվող ինժեներական միջամտությունները այն մասերից, որոնք տարբերակում չեն ստեղծում։

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

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

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

Իսկական փորձությունը գալիս է, երբ թիմը սկսում է աշխատել երկրորդ ապրանքի վրա։

Լավ հարթակը հաջորդ ապրանքը դարձնում է ավելի հեշտ, քան առաջինը

Եթե ​​երկրորդ ապրանքը պահանջում է գրեթե նույն հարթակային աշխատանքը, ինչ առաջին ապրանքը, ապա իրականում շատ քիչ բան է վերօգտագործվել։

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

Նոր սարքավորումների սերունդը նույն գաղափարը դնում է ավելի մեծ ճնշման տակ։ Դրա հնարավորությունները կարող են էապես փոխվել, քանի դեռ հին ստորաբաժանումները շարունակում են ակտիվ մնալ ոլորտում։ Հասուն հարթակը կարող է աջակցել երկուսին էլ՝ առանց թիմին ստիպելու պահպանել երկու առանձին հարթակային կույտեր այն բանի համար, ինչը հաճախորդները դեռևս ընկալում են որպես մեկ ապրանքային ընտանիք։

Սրանցից ոչ մեկը չի պահանջում մեկ մոնոլիտ ներքին համակարգ։ Տարբեր արտադրանքներ կարող են դեռևս կարիք ունենալ հստակ ճարտարապետական ​​սահմանների։ Կարևորը նույն ինժեներական պատասխանատվության երկրորդ ներդրումից խուսափելն է՝ առանց լավ պատճառի։

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

Հարթակը դիտարկեք որպես ապրանքի ճարտարապետության մաս

Ֆիզիկական արտադրանքը նախագծվում է վերանայումների, սպասարկելիության, արտադրելիության և ապագա փոփոխությունների հաշվառմամբ։ Կապակցված արտադրանքները ծրագրային ապահովման առումով նույն կարգապահության կարիք ունեն։

Առաջին backend-ը կարող է լինել ժամանակավոր։ Նույնը կարող է անել նաև առաջին մատակարարման սկրիպտը կամ աջակցության գործիքը։ Դրանում ինքնին ոչ մի վատ բան չկա։ Խնդիրները սկսվում են, երբ այդ ժամանակավոր մեխանիզմները աննկատելիորեն վերածվում են մշտական ​​ճարտարապետության, մինչդեռ արտադրանքն ինքը շարունակում է զարգանալ։

Այդ ժամանակ միացված արտադրանքը այլևս միայն սարքավորում, ներկառուցված ծրագիր և հավելված չէ։ Այն նաև կախված է այն ենթակառուցվածքից, որը նույնականացնում է յուրաքանչյուր սարքը, հասկանում դրա հնարավորությունները, կիրառում է ճիշտ կարգավորումները, աջակցում է թարմացումներին և օգնում է թիմերին ախտորոշել խնդիրները առաքումից տարիներ անց։

Երբ այդ շերտը դիտարկվում է որպես ապրանքի ճարտարապետություն, բաժանումն ավելի հստակ է դառնում. ստանդարտ մեխանիկան մնում է վերաօգտագործելի, մինչդեռ անհատական ​​աշխատանքը կենտրոնանում է մեկ ապրանքի կամ ապրանքային ընտանիքի մյուսից իրական տարբերակման վրա։

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

հեղինակ