Աութսորսինգից մինչև զարգացում (Մաս 2)

В նախորդ հոդվածը, ես խոսեցի Veliam-ի ստեղծման նախապատմության և այն SaaS համակարգի միջոցով տարածելու որոշման մասին: Այս հոդվածում ես կխոսեմ այն ​​մասին, թե ինչ պետք է անեի ապրանքը ոչ թե տեղական, այլ հանրային դարձնելու համար։ Այն մասին, թե ինչպես է սկսվել բաշխումը և ինչ խնդիրների են բախվել։

Պլանավորում

Օգտագործողների համար ընթացիկ backend-ը Linux-ում էր: Գրեթե յուրաքանչյուր կազմակերպություն ունի Windows սերվերներ, ինչը չի կարելի ասել Linux-ի մասին։ Veliam-ի հիմնական ուժը NAT-ի հետևում գտնվող սերվերների և ցանցային սարքավորումների հետ հեռակա կապերն են: Բայց այս ֆունկցիոնալությունը շատ սերտորեն կապված էր այն փաստի հետ, որ երթուղիչը պետք է լինի Mikrotik: Եվ սա ակնհայտորեն շատերին չէր բավարարի։ Ես սկզբում սկսեցի մտածել ամենատարածված վաճառողների երթուղիչների համար աջակցություն ավելացնելու մասին: Բայց ես հասկացա, որ սա անվերջ մրցավազք էր՝ ընդլայնելու աջակցվող ընկերությունների ցանկը: Ավելին, նրանք, որոնք արդեն աջակցվում են, կարող են ունենալ NAT կանոնները մոդելից մոդել փոխելու այլ հրամանների շարք: Իրավիճակից միակ ելքը թվում էր VPN-ն էր։

Քանի որ մենք որոշեցինք տարածել արտադրանքը, բայց ոչ որպես բաց կոդով, անհնար դարձավ ներառել տարբեր գրադարաններ բաց արտոնագրերով, ինչպիսին է GPL-ը: Սա ընդհանրապես առանձին թեմա է, ապրանքը վաճառելու որոշում կայացնելուց հետո ստիպված էի գրադարանների կեսով անցնել GPL լինելու պատճառով։ Երբ նրանք գրում էին իրենց համար, դա նորմալ էր։ Բայց պիտանի չէ բաշխման համար: Առաջին VPN-ը, որը գալիս է մտքին, OpenVPN-ն է: Բայց դա GPL է: Մեկ այլ տարբերակ էր օգտագործել ճապոնական SoftEther VPN-ը: Նրա լիցենզիան թույլ տվեց նրան ներառել այն իր արտադրանքի մեջ: Մի քանի օր տարբեր թեստերից հետո, թե ինչպես կարելի է այն ինտեգրել այնպես, որ օգտագործողին ընդհանրապես ոչինչ կարգավորել և իմանալ SoftEther VPN-ի մասին, ստացվել է նախատիպ: Ամեն ինչ այնպես էր, ինչպես պետք է լիներ։ Բայց ինչ-ինչ պատճառներով այս սխեման դեռ շփոթեցրեց մեզ, և մենք ի վերջո հրաժարվեցինք դրանից: Բայց բնականաբար նրանք հրաժարվեցին այլ տարբերակից հետո։ Ի վերջո, ամեն ինչ արվեց սովորական TCP միացումների վրա: Որոշ կապեր աշխատում են համակարգողի միջոցով, ոմանք ուղղակիորեն Nat Hole Punching (NHP) տեխնոլոգիայի միջոցով, որը նույնպես ներդրվել է Free Pascal-ում: Պետք է ասեմ, որ նախկինում նույնիսկ չեմ լսել NHP-ի մասին: Ու մտքովս չէր անցնում, որ հնարավոր է միացնել 2 ցանցային սարք, երկուսն էլ ուղիղ NAT-ի ետևում են։ Ուսումնասիրեցի թեման, հասկացա գործողության սկզբունքը ու նստեցի գրելու։ Պլանն իրականացվում է, օգտատերը մեկ սեղմումով միանում է NAT-ի հետևում գտնվող ցանկալի սարքին RDP, SSH կամ Winbox-ի միջոցով՝ առանց գաղտնաբառեր մուտքագրելու կամ VPN տեղադրելու: Ավելին, այս միացումների մեծ մասը անցնում է մեր համակարգողի կողքով, ինչը լավ է ազդում ping-ի և այդ կապերի սպասարկման արժեքի վրա:

Սերվերի մասի տեղափոխում Linux-ից Windows

Windows-ին անցնելիս մի քանի խնդիր եղավ։ Առաջինն այն է, որ Windows-ում ներկառուցված wmic-ը թույլ չի տալիս WQL հարցումներ կատարել։ Իսկ մեր համակարգում ամեն ինչ արդեն կառուցված էր նրանց վրա։ Եվ մի բան էլ կար, բայց հիմա մոռացել եմ, թե ինչու վերջապես հրաժարվեցին դրա օգտագործումից։ Հնարավոր է տարբերություններ Windows-ի տարբերակների միջև: Իսկ երկրորդ խնդիրը բազմաթելային է: Չգտնելով լավ երրորդ կողմի կոմունալ ծրագիր մեզ համար «ընդունելի» լիցենզիայի ներքո, ես նորից գործարկեցի Lazarus IDE-ը: Եվ ես գրել եմ անհրաժեշտ օգտակարությունը: Մուտքը օբյեկտների պահանջվող ցանկն է և կոնկրետ ինչ հարցումներ պետք է արվեն, և ի պատասխան ես ստանում եմ տվյալներ: Եվ այս ամենը բազմաթելային ռեժիմով: Հիանալի:

Այն բանից հետո, երբ ես տեղադրեցի PHP Windows-ի համար pthreads, ես մտածեցի, որ ամեն ինչ կսկսվի անմիջապես, բայց դա այդպես չէր: Որոշ ժամանակ վրիպազերծումից հետո ես հասկացա, որ pthread-երը կարծես թե աշխատում են, բայց այն չի աշխատում մեր համակարգում: Պարզ դարձավ, որ Windows-ում pthread-ների հետ աշխատելու որոշակի յուրահատկություն կա։ Եվ այդպես էլ եղավ։ Ես կարդացի փաստաթղթերը, այնտեղ գրված էր, որ Windows-ի համար թելերի քանակը սահմանափակ է, և որքան հիշում եմ՝ անուղղակի։ Սա խնդիր դարձավ։ Քանի որ երբ ես սկսեցի կրճատել այն թեմաների քանակը, որոնց վրա գործարկվում էր հավելվածը, այն կատարեց աշխատանքը շատ դանդաղ: Ես նորից բացեցի IDE-ն, և նույն կոմունալում ավելացվեց օբյեկտների բազմաշերտ պինգինգի ֆունկցիոնալությունը: Դե, այնտեղ արդեն շատ նավահանգիստների սկանավորում կա: Փաստորեն, սրանից հետո PHP-ի համար pthread-ների կարիքը վերացավ, և այն այլևս չի օգտագործվում։ Ավելին, այս կոմունալին ավելացվել են ևս մի քանի ֆունկցիոնալություն, և այն դեռ աշխատում է մինչ օրս: Դրանից հետո հավաքվեց Windows-ի համար տեղադրող, որն իր մեջ ներառում էր Apache, PHP, MariaDB, PHP հավելվածը և համակարգի հետ փոխազդեցության մի շարք կոմունալ ծառայություններ, որոնք գրված էին Free Pascal-ով: Ինչ վերաբերում է տեղադրողին, ես կարծում էի, որ արագ կլուծեմ այս հարցը, քանի որ... Սա շատ տարածված բան է և անհրաժեշտ է գրեթե բոլոր ծրագրերի համար: Կամ սխալ տեղում էի փնտրում, կամ այլ բան։ Բայց ես անընդհատ հանդիպում էի այնպիսի ապրանքների, որոնք կա՛մ բավականաչափ ճկուն չէին, կա՛մ թանկ էին ու նաև՝ ոչ ճկուն: Եվ այնուամենայնիվ, ես գտա անվճար տեղադրող, որում հնարավոր կլինի ապահովել ցանկացած ցանկություն: Սա InnoSetup-ն է: Ես գրում եմ այս մասին այստեղ, քանի որ ստիպված էի փնտրել այն, եթե ինչ-որ մեկին ժամանակ խնայեմ:

Պլագինից հրաժարվելը հօգուտ ձեր հաճախորդի

Ես նախկինում գրել էի, որ հաճախորդի հատվածը բրաուզեր է «պլագինով»: Այսպիսով, եղել են դեպքեր, երբ Chrome-ը թարմացվում էր, և դասավորությունը մի փոքր ծուռ էր, այնուհետև Windows-ը թարմացվում էր, և սովորական uri սխեման անհետանում էր: Ես իսկապես չէի ուզում ունենալ այս տեսակի անակնկալներ արտադրանքի հանրային տարբերակում: Ավելին, մաքսային uri-ն սկսեց անհետանալ Windows-ի յուրաքանչյուր թարմացումից հետո: Microsoft-ը պարզապես ջնջեց բոլոր ոչ իր մասնաճյուղերը պահանջվող բաժնում: Բացի այդ, Google Chrome-ն այժմ թույլ չի տալիս ձեզ հիշել մաքսային uri-ից հավելված բացելու կամ չբացելու ընտրությունը և տալիս է այս հարցը ամեն անգամ, երբ սեղմում եք մոնիտորինգի օբյեկտի վրա: Դե, ընդհանուր առմամբ, անհրաժեշտ էր նորմալ փոխազդեցություն օգտագործողի տեղական համակարգի հետ, ինչը զննարկիչը չի տրամադրում: Այս սխեմայի ամենապարզ տարբերակը կարծես պարզապես ձեր սեփական բրաուզերի ստեղծումն է, ինչպես հիմա շատերն են անում Electron-ի միջոցով: Բայց շատ բաներ արդեն գրված էին Free Pascal-ում, այդ թվում՝ սերվերի մասում, ուստի մենք որոշեցինք հաճախորդը դարձնել նույն լեզվով, այլ ոչ թե ստեղծել կենդանաբանական այգի։ Այսպես է գրվել Chromium-ով հաճախորդը: Դրանից հետո այն սկսեց ձեռք բերել տարբեր կապանքներ։

Ազատ արձակել

Վերջապես մենք ընտրեցինք համակարգի անունը: Մենք անընդհատ անցնում էինք տարբեր տարբերակների միջով, մինչ ընթանում էր տեղական տարբերակից SaaS-ի փոխակերպման գործընթացը: Քանի որ ի սկզբանե նախատեսում էինք մուտք գործել ոչ միայն ներքին շուկա, անվան ընտրության հիմնական չափանիշը «.com» գոտում չզբաղեցված կամ ոչ շատ թանկ դոմենի առկայությունն էր։ Որոշ գործառույթներ/մոդուլներ դեռ չեն տեղափոխվել տեղական տարբերակից Veliam, բայց մենք որոշեցինք, որ դրանք կթողարկենք ընթացիկ ֆունկցիոնալությամբ, իսկ մնացածը կլրացնենք որպես թարմացումներ: Հենց առաջին տարբերակում չկար HelpDesk, Veliam Connector, անհնար էր փոխել ծանուցման գործարկիչների շեմերը և շատ ավելին: Մենք գնեցինք Code Sign Certificate և ստորագրեցինք հաճախորդի և սերվերի մասերը: Մենք ապրանքի համար գրեցինք կայք, սկսեցինք ծրագրային ապահովման, ապրանքանիշի գրանցման ընթացակարգեր և այլն: Ընդհանուր առմամբ, մենք պատրաստ ենք սկսել։ Թեթևակի էյֆորիա կատարված աշխատանքից և այն փաստից, որ միգուցե ինչ-որ մեկը կօգտագործի ձեր արտադրանքը, թեև մենք կասկած չունեինք այս հարցում: Եվ հետո կանգ առեք: Գործընկերն ասաց, որ առանց մեսենջերների միջոցով ծանուցումների շուկա դուրս գալն անհնար է։ Առանց շատ այլ բաների հնարավոր է, բայց առանց սրա՝ ոչ։ Որոշ բանավեճից հետո ավելացվեց Telegram-ի հետ ինտեգրումը, որը մեզ հարմար էր։ Բոլոր ներկայիս ակնթարթային մեսենջերներից սա միակն է, որն անվճար և առանց որևէ բարդ հաստատման ընթացակարգերի մուտք է ապահովում իր API-ներին: Նույն WhatsApp-ն առաջարկում է կապվել պրովայդերների հետ, ովքեր լավ գումար են գանձում իրենց ծառայություններից օգտվելու համար, բոլոր նամակները, որոնք խնդրում են մուտք գործել առանց միջադիրների, անտեսվել են: Դե, Viber... Ես չգիտեմ, թե ով է օգտագործում այն ​​հիմա, քանի որ ... սպամն ու գովազդն այնտեղ դուրս են գծապատկերներից: Դեկտեմբերի վերջին, ընկերների շրջանում մի շարք ներքին թեստերից և թեստերից հետո, գրանցումը բացվեց բոլորի համար և ծրագրակազմը հասանելի դարձավ ներբեռնման համար:

Բաշխման սկիզբ

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

Այստեղ պետք է ասել, որ շուկա մտնելը, երբ ձեր ընկերությունը հայտնի անուն չունի, և միևնույն ժամանակ առանց գործակալի մոնիտորինգի գործառույթ ապահովելը, որում պետք է հաշիվներ մուտքագրել ձեր սերվերներից և աշխատատեղերից, շատ դժվար է: Սա վախեցնում է շատ մարդկանց: Մենք ի սկզբանե հասկացանք, որ այս հարցում խնդիրներ կլինեն և պատրաստ էինք դրան թե՛ տեխնիկապես, թե՛ բարոյապես։ Բոլոր հեռակա կապերը, չնայած այն հանգամանքին, որ RDP-ն և SSH-ն արդեն լռելյայն գաղտնագրված են, լրացուցիչ կոդավորված են մեր ծրագրաշարի կողմից՝ օգտագործելով AES ստանդարտը: Տեղական սերվերների բոլոր տվյալները փոխանցվում են ամպին HTTPS-ի միջոցով: Հաշիվները պահվում են կոդավորված ձևով: Բոլոր ենթահամակարգերի գաղտնագրման բանալիներն անհատական ​​են բոլոր հաճախորդների համար: Հեռավոր կապերի համար սովորաբար օգտագործվում են նստաշրջանի կոդավորման բանալիներ:

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

Շատերի համար ծրագրաշարի հարմարավետությունն ու ֆունկցիոնալությունը գերազանցում են վախը, և նրանք գրանցվում են: Որոշ անհատներ VK-ում հրապարակված գրառումներում գրել են, որ այս ծրագիրը չի կարող օգտագործվել, քանի որ Սա նրանց գաղտնաբառերի հավաքածու է և, ընդհանուր առմամբ, անանուն ընկերություն: Պետք է ասել, որ այս կարծիքը մեկից ավելի մարդ է եղել։ Շատերը պարզապես չեն հասկանում, որ երբ նրանք տեղադրում են այլ սեփական ծրագրակազմ սերվերի վրա, որն աշխատում է որպես ծառայություն, այն նաև ունի ամբողջական իրավունքներ համակարգում, և նրանց հաշիվներ պետք չեն՝ անօրինական բան անելու համար (պարզ է, որ դուք կարող եք փոխել օգտվող, որից գործարկվել է ծառայությունը, բայց այստեղ նույնպես կարող եք մուտքագրել ցանկացած հաշիվ): Իրականում մարդկանց վախերը հասկանալի են. Սերվերի վրա ծրագրակազմ տեղադրելը սովորական բան է, բայց հաշիվ մուտքագրելը մի փոքր վախենալու և մտերիմ է, քանի որ մարդկանց լավ կեսն ունի նույն գաղտնաբառը բոլոր ծառայությունների համար, և նույնիսկ փորձարկման համար առանձին հաշիվ ստեղծելը ծույլ է: Բայց այս պահին կան հսկայական թվով ծառայություններ, որոնց մարդիկ վստահում են իրենց հավատարմագրերով և ավելին: Եվ մենք ձգտում ենք դառնալ նրանցից մեկը։

Բազմաթիվ մեկնաբանություններ եղան, որ ասում էին, թե ինչ-որ տեղ գողացել ենք: Սա մեզ մի փոքր զարմացրեց. Լավ, լավ, մեկ մարդու կարծիքը, բայց նման մեկնաբանություններ կային տարբեր հրապարակումներում տարբեր մարդկանց կողմից։ Սկզբում նրանք չգիտեին, թե ինչպես արձագանքել դրան. Կամ տխրել, որ ոմանց մոտ կարծիք կա, որ Ռուսաստանում ոչ ոք ինքնուրույն ոչինչ չի կարող անել, այլ կարող է միայն գողանալ, կամ ուրախանալ, որ կարծում են, թե սա միայն կարելի է գողանալ։

Այժմ մենք ավարտել ենք EV Code Sign Certificate ստանալու կարգը: Այն ձեռք բերելու համար դուք պետք է անցնեք մի շարք ստուգումներ և ուղարկեք մի շարք փաստաթղթեր ընկերության մասին, որոնցից մի քանիսը պետք է վավերացված լինեն փաստաբանի կողմից: Համաճարակի ժամանակ EV Code Sign վկայական ստանալը հոդվածի առանձին թեմա է: Պրոցեդուրան տեւել է մեկ ամիս։ Եվ դա ոչ թե սպասման, այլ հավելյալ փաստաթղթերի մշտական ​​պահանջների ամիս էր։ Միգուցե համաճարակը դրա հետ կապ չունե՞ր, և պրոցեդուրան այդքան երկար տևեց բոլորի համար: Կիսվել։

Ոմանք ասում են, որ մենք չենք օգտագործի այն, քանի որ FSTEC վկայագիր չկա: Մենք պետք է բացատրենք, որ մենք չենք կարող ստանալ այն և չենք ստանա, քանի որ այս վկայականը ստանալու համար գաղտնագրումը պետք է համապատասխանի ԳՕՍՏ-ին, և մենք նախատեսում ենք ծրագրակազմը տարածել ոչ միայն Ռուսաստանում և օգտագործել AES:

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

Աշխատակիցների համար հեռահար մուտքի գործառույթի ավելացում

Հաճախորդների հաճախակի առաջադրանքներից մեկն այն է, որ «Վանյային տնից մուտք գործի իր համակարգիչը»: Մենք բարձրացրինք VPN-ը Mikrotik-ում և օգտատերերի համար ստեղծեցինք հաշիվներ: Բայց սա իրական խնդիր է։ Օգտատերերը չեն կարողանում դիտել հրահանգները և քայլ առ քայլ հետևել դրանց՝ VPN-ի միջոցով միանալու համար: Windows-ի տարբեր տարբերակներ: Մի Windows-ում ամեն ինչ լավ է միանում, մյուսում այլ պրոտոկոլ է անհրաժեշտ։ Եվ ընդհանրապես, դա միշտ կապված էր ցանցային սարքավորումների վերակազմավորման հետ, որը գործում էր որպես VPN սերվեր, և ոչ բոլոր աշխատակիցներն ունեն մուտք դեպի այն, և դա անհարմար էր:

Բայց մենք արդեն ունենք հեռավոր կապեր սերվերների և ցանցային սարքավորումների հետ: Ինչու՞ չօգտագործել պատրաստի տրանսպորտ և ստեղծել առանձին փոքրիկ կոմունալ, որը կարող եք պարզապես տալ օգտվողին միանալու համար: Ես ուղղակի ուզում էի համոզվել, որ օգտատերը այնտեղ անհեթեթ բան չի մուտքագրել։ Ընդամենը մեկ կոճակ «միացնել»: Բայց ինչպե՞ս կհասկանա այս օգտակար ծրագիրը, թե որտեղ պետք է միանալ, եթե այն ունի միայն մեկ կոճակ: Գաղափար կար մեր սերվերների վրա առցանց ստեղծել անհրաժեշտ հավելվածը: Համակարգի ադմինիստրատորը կտտացնում է «ներբեռնման դյուրանցում» կոճակը, և հրաման է ուղարկվում մեր ամպին՝ ստեղծելու անհատական ​​երկուական՝ հաղորդալարային տեղեկատվության հետ՝ RDP-ի միջոցով ցանկալի սերվերին/համակարգչին միանալու համար: Ընդհանուր առմամբ, դա կարելի էր անել: Բայց դա երկար ժամանակ է պահանջում, ադմինիստրատորը պետք է նախ սպասի, մինչև երկուականը կազմվի, ապա ներբեռնվի: Իհարկե, հնարավոր կլիներ պարզապես կոնֆիգով ավելացնել երկրորդ ֆայլը, բայց սա արդեն 2 ֆայլ է, և պարզության համար օգտագործողին անհրաժեշտ է մեկը։ Մեկ ֆայլ, մեկ կոճակ և ոչ մի տեղադրող: Google-ում մի փոքր կարդալուց հետո ես եկել եմ այն ​​եզրակացության, որ եթե կազմված «.exe»-ի վերջում ավելացնեք որոշ տեղեկություններ, ապա այն չի վատանում (լավ, գրեթե): Դուք կարող եք գոնե այնտեղ ավելացնել պատերազմն ու խաղաղությունը, և դա կաշխատի նախկինի պես։ Սրանից չօգտվելը մեղք կլինի։ Այժմ դուք կարող եք պարզապես բացել հավելվածը շարժման ընթացքում, հենց հաճախորդի մեջ, ի դեպ, այն կոչվում է Veliam Connector, և պարզապես վերջում ավելացնել դրան միանալու համար անհրաժեշտ տեղեկատվությունը: Եվ հավելվածն ինքը գիտի, թե ինչ անել դրա հետ: Ինչու՞ ես մի փոքր ավելի բարձր փակագծերում գրեցի «լավ համարյա»: Քանի որ դուք պետք է վճարեք այս հարմարության համար, քանի որ հավելվածը կորցնում է իր թվային ստորագրությունը: Բայց այս փուլում մենք կարծում ենք, որ սա փոքր գին է նման հարմարության համար:

Երրորդ կողմի մոդուլի լիցենզիաներ

Ես արդեն գրել եմ վերևում, որ այն բանից հետո, երբ որոշվեց արտադրանքը հանրությանը հասանելի դարձնել, և ոչ միայն մեր օգտագործման համար, մենք ստիպված էինք քրտնաջան աշխատել և փոխարինող փնտրել որոշ մոդուլների համար, որոնք մեզ թույլ չեն տվել ներառվել մեր արտադրանքի մեջ: Բայց թողարկումից հետո պատահաբար բացահայտվեց մի շատ տհաճ բան. Veliam սերվերը, որը գտնվում էր հաճախորդի կողմից, ներառում էր MariaDB DBMS: Եվ դա GPL լիցենզավորված է: GPL լիցենզիան ենթադրում է, որ ծրագրաշարը պետք է լինի բաց կոդով, և եթե մեր արտադրանքը ներառում է MariaDB-ն, որն ունի այս լիցենզիան, ապա մեր արտադրանքը պետք է լինի այս լիցենզիայի ներքո: Բայց, բարեբախտաբար, այս լիցենզիայի նպատակը բաց կոդով է, այլ ոչ թե դատարանում պատահաբար սխալներ թույլ տվածներին պատժելը: Եթե ​​հեղինակային իրավունքի սեփականատերը պահանջ ունի, ապա գրավոր տեղեկացնում է խախտողին, և նա պարտավոր է 30 օրվա ընթացքում վերացնել խախտումը։ Մենք ինքներս հայտնաբերեցինք մեր սխալը և ոչ մի նամակ չստացանք և անմիջապես սկսեցինք դիտարկել խնդիրը, թե ինչպես լուծել: Լուծումը պարզվեց ակնհայտ՝ անցնել SQLite-ին։ Այս տվյալների բազան լիցենզավորման սահմանափակումներ չունի: Ժամանակակից բրաուզերների մեծ մասը օգտագործում է SQLite և մի շարք այլ ծրագրեր: Ինտերնետում տեղեկություն գտա, որ SQLite-ը համարվում է աշխարհում ամենատարածված DBMS-ը, հենց բրաուզերների պատճառով, բայց ապացույց չեմ փնտրել, հետևաբար սա ոչ ճշգրիտ տեղեկատվություն է։ Ես սկսեցի ուսումնասիրել SQLite-ին անցնելու վտանգները։

Սա դառնում է ոչ տրիվիալ խնդիր, երբ հաճախորդները ունեն մի քանի հարյուր սերվերներ, որոնք տեղադրված են MariaDB-ով և դրա մեջ գտնվող տվյալների հետ: MariaDB-ի որոշ առանձնահատկություններ հասանելի չեն SQLite-ում: Դե, օրինակ, կոդում մենք օգտագործել ենք նման հարցումներ

Select * FROM `table` WHERE `id`>1000 FOR UPDATE

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

PRAGMA journal_mode=WAL;

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

Նոր HelpDesk

Անհրաժեշտ էր HelpDesk համակարգը ներքին տարբերակից տեղափոխել SaaS տարբերակ, սակայն որոշ փոփոխություններով։ Առաջին բանը, որ ես ուզում էի անել, հաճախորդի տիրույթի հետ ինտեգրվելն էր՝ համակարգում օգտագործողի թափանցիկ թույլտվության առումով: Այժմ HelpDesk մուտք գործելու և համակարգում հարցում թողնելու համար օգտատերը պարզապես սեղմում է աշխատասեղանի դյուրանցման վրա, և բրաուզերը բացվում է: Օգտագործողը չի մուտքագրում որևէ հավատարմագիր: Apache SSPI-ի մոդուլը, որը Veliam Server-ի մի մասն է, ավտոմատ կերպով լիազորում է օգտվողին տիրույթի հաշվի տակ: Համակարգում հարցում թողնելու համար, երբ օգտատերը կորպորատիվ ցանցից դուրս է, նա սեղմում է կոճակի վրա, և նա իր էլ.փոստում ստանում է հղում, որի միջոցով առանց գաղտնաբառերի մուտք է գործում HelpDesk համակարգ: Եթե ​​օգտվողը անջատված է կամ ջնջված է տիրույթում, ապա HelpDesk հաշիվը նույնպես կդադարի աշխատել: Այսպիսով, համակարգի ադմինիստրատորը կարիք չունի վերահսկելու հաշիվները ինչպես տիրույթում, այնպես էլ անձամբ HelpDesk-ում: Աշխատակիցը հեռանում է. նա անջատում է իր հաշիվը տիրույթում և վերջ, նա համակարգ չի մտնի ոչ կորպորատիվ ցանցից, ոչ հղման միջոցով: Որպեսզի այս ինտեգրումն աշխատի, համակարգի ադմինիստրատորը պետք է ստեղծի մեկ GPO, որը ավելացնում է ներքին կայք ներցանցային գոտուն и տարածում է դյուրանցում աշխատասեղանի բոլոր օգտվողներին.

Երկրորդ բանը, որ մենք ծայրահեղ անհրաժեշտ ենք համարում HelpDesk համակարգերի համար, գոնե մեզ համար, դիմումատուին միանալն է անմիջապես հավելվածից մեկ սեղմումով։ Ավելին, կապերը պետք է անցնեն, եթե համակարգի ադմինիստրատորը գտնվում է այլ ցանցում: Աութսորսինգի համար դա պարտադիր է, իսկ լրիվ դրույքով համակարգի ադմինիստրատորների համար դա նույնպես հաճախ շատ անհրաժեշտ է: Արդեն կան մի քանի ապրանքներ, որոնք հիանալի աշխատանք են կատարում հեռահար միացումների համար: Եվ մենք որոշեցինք ինտեգրումներ անել նրանց համար։ Մենք այժմ ինտեգրվել ենք VNC-ի համար, իսկ ապագայում նախատեսում ենք ավելացնել Radmin և TeamViewer: Օգտագործելով մեր ցանցային տրանսպորտը հեռավոր ենթակառուցվածքային միացումների համար, մենք ստիպեցինք VNC-ին միանալ NAT-ի հետևում գտնվող հեռավոր աշխատանքային կայաններին: Նույնը տեղի կունենա Ռադմինի հետ: Այժմ, օգտատիրոջը միանալու համար, պարզապես անհրաժեշտ է սեղմել «Միացեք դիմորդին» կոճակը հենց հավելվածում: VNC հաճախորդը բացվում և միանում է դիմորդին, անկախ նրանից՝ դուք նույն ցանցում եք, թե տանը նստած եք հողաթափերով։ Նախ, համակարգի ադմինիստրատորը, օգտագործելով GPO-ն, պետք է տեղադրի VNC սերվերը բոլորի աշխատանքային կայաններում:

Այժմ մենք ինքներս ենք անցնում նոր HelpDesk-ին և օգտագործում ենք ինտեգրումը տիրույթի և VNC-ի հետ: Սա մեզ շատ հարմար է։ Այժմ մենք կարող ենք խուսափել TeamViewer-ի համար վճարելուց, որը մենք օգտագործում ենք ավելի քան երեք տարի մեր աջակցության ծառայությունը գործարկելու համար:

Ի՞նչ ենք մենք նախատեսում անել հաջորդիվ:

Երբ մենք թողարկեցինք ապրանքը, մենք ոչ մի վճարովի սակագին չենք կատարել, այլ պարզապես սահմանափակել ենք անվճար սակագինը 50 մոնիտորինգի օբյեկտներով։ Հինգ տասնյակ ցանցային սարքեր և սերվերներ պետք է բավարար լինեն բոլորի համար, մտածեցինք: Եվ հետո սկսեցին պահանջներ գալ սահմանաչափը բարձրացնելու համար: Ասել, որ մենք մի փոքր ցնցված էինք, նշանակում է ոչինչ չասել: Արդյո՞ք այդքան շատ սերվերներ ունեցող ընկերությունները իսկապես հետաքրքրված են մեր ծրագրաշարով: Մենք անվճար երկարացրել ենք սահմանաչափը նրանց համար, ովքեր նման խնդրանքներ են ներկայացրել։ Իրենց խնդրանքին ի պատասխան՝ ոմանց հարցրինք, թե ինչի համար են այդքան անհրաժեշտ, իսկապե՞ս ունեին այդքան մեծ թվով սերվերներ և ցանցային սարքավորումներ։ Եվ պարզվեց, որ համակարգի ադմինիստրատորները սկսեցին օգտագործել համակարգը այնպես, ինչպես մենք ընդհանրապես չէինք նախատեսել: Ամեն ինչ պարզվեց. մեր ծրագրաշարը սկսեց վերահսկել ոչ միայն սերվերները, այլև աշխատանքային կայանները: Ուստի սահմանափակումները ընդլայնելու բազմաթիվ խնդրանքներ կան: Այժմ մենք արդեն ներդրել ենք վճարովի սակագներ, և սահմանաչափերը կարող են ինքնուրույն ընդլայնվել։

Սերվերները գրեթե միշտ աշխատում են կա՛մ պահեստավորման համակարգերի, կա՛մ RAID զանգվածի տեղական սկավառակների հետ: Եվ մենք ի սկզբանե արտադրանքը պատրաստեցինք նրանց համար: Իսկ SMART մոնիտորինգը հետաքրքիր չէր այս առաջադրանքի համար։ Բայց հաշվի առնելով այն հանգամանքը, որ մարդիկ հարմարեցված են ծրագրային ապահովման մոնիտորինգի աշխատանքային կայանների համար, հայտեր են հայտնվել SMART մոնիտորինգի իրականացման համար։ Շուտով կիրականացնենք։

Veliam Connector-ի գալուստով ավելորդ դարձավ կորպորատիվ ցանցում VPN սերվեր տեղադրելը կամ RDGW անելը կամ պարզապես RDP-ի միջոցով միանալու համար անհրաժեշտ մեքենաներին պորտերը փոխանցելը: Շատ մարդիկ օգտագործում են մեր համակարգը միայն այս հեռակա կապերի համար: Veliam Connector-ը հասանելի է միայն Windows-ի համար, և ընկերության որոշ օգտատերեր MacOS-ով աշխատող տնային նոթբուքներից միանում են կորպորատիվ ցանցի աշխատանքային կայաններին կամ տերմինալներին: Եվ պարզվում է, որ համակարգի ադմինիստրատորը ստիպված է մի քանի օգտատերերի պատճառով դեռ վերադառնալ վերահասցեավորման կամ VPN-ի հարցին։ Հետևաբար, մենք այժմ ավարտում ենք MacOS-ի համար Veliam Connector-ի տարբերակը: Իրենց սիրելի Apple տեխնոլոգիայի օգտատերերը նույնպես հնարավորություն կունենան միանալ կորպորատիվ ենթակառուցվածքին մեկ սեղմումով։

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

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

Source: www.habr.com

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