ՊՈՒՇՈԿ ՍՈՖԹՎԵՐ & Համայնք

image
image
image
image
image
image
image
image

Մենք ակտիվորեն օգտագործում ենք բաց կոդով ծրագրակազմ՝ մեր հաճախորդների համար վերջնական լուծումներ իրականացնելու համար: Սա ինչ-որ բան խնայելու միջոց չէ, իրականում որոշ կոմերցիոն լուծումներ առաջին հայացքից կարող են ավելի քիչ արժենալ: Սա ապագա ապացուցված արտադրանքի ներդրման միջոց է, որը երաշխավորված է ապագա սպասարկման համար: Եվ, իհարկե, մեր օրերում բաց կոդով է նաև անվտանգության հիմնական լուծումը (լավ, ճիշտ օգտագործելու դեպքում):

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

TingoDB / Tungus - Ներկառուցված MongoDB համատեղելի տվյալների բազա

TingoDB-ն ներկառուցված JavaScript NoSql տվյալների բազա է Node.js-ի և node-webkit-ի համար: Դրա API-ն և առանձնահատկությունները նախագծված են, որպեսզի համատեղելի լինեն MongoDB-ի և Node.js-ի դրա վարորդի հետ: Սա լրջորեն մտածեք: Դա պարզապես MongoDB API-ի մի տեսակ չէ միայն այն պատճառով, որ օգտագործում է նույն հարցման շարահյուսությունը: Սա ճշգրիտ պատճեն է, որը թույլ է տալիս ստեղծել հավելվածներ, որոնք կարող են թափանցիկ կերպով աջակցել ինչպես MongoDB-ին, այնպես էլ թեթև ներկառուցված տվյալների շարժիչներին: Հնարավոր է նույնիսկ ընդունել որոշ ածանցյալ գրադարաններ, որոնք կախված են MongoDB-ից: Լավ օրինակ է Mongoose.js ODM գրադարանը, որը կարելի է միացնել TingoDB-ին՝ օգտագործելով Tungus դրայվերը:

Ապահով(js) - Ներկայում ժառանգական գրադարան՝ JavaScript-ի «հետադարձ զանգի դժոխքի» խնդիրը լուծելու համար

Ի սկզբանե մոդուլը նախագծված էր ապահովելու մի շարք հարմար գործառույթներ, որոնք պետք է լուծեն նետված սխալները, հետ կանչերը և հանգույցների սխալները (առաջին ֆունկցիայի փաստարկը): Նպատակն էր դարձնել կոդը ավելի կայուն, ընթեռնելի և խուսափել որոշ սովորական զանգերից: Idea-ն ոգեշնչված է «Step» գրադարանից, որը բռնում է նետված սխալները և դրանք վերածում հետադարձ կապի գործառույթի կանչերի: Հետագայում գրադարանը ընդլայնվեց Async(js) գրադարանի ամբողջական փաթեթով, բայց արագության բարելավումներով և անվտանգ(js) սխալների կիրառմամբ:

Tinelic - Թեթև հավելվածի կատարողականություն, իրական օգտագործողի փորձ և սխալների մոնիտորինգ:

Մենք մշակողներ ենք։ Մենք շատ օգուտներ ենք տեսնում սխալների մասին հաշվետվությունների և հավելվածների մոնիտորինգի ծրագրաշար օգտագործելուց: Մենք փորձեցինք շատ գործիքներ օգտագործել, և մեզ ոչինչ չբավարարեց։ Մենք փորձեցինք բարելավել դրանցից մի քանիսը, բայց ի վերջո կառուցեցինք մերը: Բոլորն էլ նույնն են անում ;): Tinelic-ը Node.JS հավելվածն է, որն աշխատում է որպես հավելվածի և սխալների հաղորդման գործակալների և որպես GUI: Գործերը պարզեցնելու համար մենք չենք կատարել տվյալների բարդ մշակում և լիովին ապավինել ենք MongoDB-ի մասշտաբայնությանը: Այն մեզ տալիս է ճկունություն և բավարար հզորություն միջին չափի հավելվածների համար: Տվյալների հավաքագրման համար Tinelic-ը օգտագործում է հետևյալ գործակալները.

  • NewRelic APM գործակալ (ներկայումս փորձարկված է միայն Node.JS գործակալը): Գործակալը օգտագործվում է այնպես, ինչպես կա և պարզապես զեկուցում է Tinelic-ին սկզբնական սերվերի փոխարեն: Աջակցվում է հավելվածի կատարողականը և սխալի մասին հաշվետվությունը:
  • GetSentry (Raven.JS) գործակալ բրաուզերի սխալների հաղորդման համար: Գործակալը օգտագործվում է այնպես, ինչպես կա, և նույնը հաղորդում է Tinelic-ին:
  • GetSentry (Raven.NodeJS) գործակալ սերվերի կողմից սխալների հաղորդման համար: Օգտակար է, երբ ձեզ անհրաժեշտ է միայն սխալի մասին հաշվետվություն:
  • Tinelic կոդը վերջնական օգտագործողի դիտարկիչի կողային մոնիտորինգի համար (Ajax և էջի բեռնում)

TinyHook - թեթև JavaScript հաղորդագրությունների հերթի գրադարան

Գրադարանը ստեղծվել է մեկ նպատակով՝ ապահովել հուսալի և թեթև բաշխված EventEmitter-ի իրականացում: EventEmitter-ը կոնցեպտուալ Node.JS ինտերֆեյս է՝ իրադարձությունների բաշխման համար: Մեզ համար հուսալի լինելը նշանակում է, որ հավելվածը պետք է բաղկացած լինի տասնյակ պրոցեսներից, որոնք աշխատում են կեռիկներ և կարգավորել օրական միլիոնավոր հաղորդագրություններ՝ առանց խնդիրների, պրոցեսորի բարձր օգտագործման և հիշողության մեծ սպառման:

TinyBatch(js) - անվտանգ միջոց՝ հաջորդական տվյալների որոնման սերվերի կողմից

Շատ շուտով ցանցի հետաձգումը կարող է այլևս խնդիր չլինել: Այնուամենայնիվ, այս պահի դրությամբ գործառույթների կատարումը (REST զանգերը) տառապում են ցանցի ուշացումից: Սա հատկապես մտահոգիչ է, երբ գործառույթները չեն կարող կատարվել զուգահեռ և կախվածություն ունեն միմյանցից: Մենք բազմաթիվ փորձեր ենք արել լուծելու այս խնդիրը՝ օգտագործելով տարբեր մոտեցումներ, ինչպիսիք են նախապես հաստատված կամ ստորագրված սկրիպտները, որոնք մղվում են հաճախորդից սերվեր: Կամ տվյալների որոնման «ճկուն» մոտեցումներ, ինչպիսիք են graphql-ը (որոնք իրականում կապված են հասանելի իրականացման վրա և ավելի հարմար են որոնման համար, քան ճկուն): Կամ օգտագործել սահմանափակ սցենարներ՝ օգտագործելով Lua կամ Lisp: Այստեղ առաջնային խնդիրն է ճկուն, բայց ապահով ֆունկցիոնալություն ապահովելը, որը նույնպես անվտանգ կլինի սերվերի համատեքստում ռեսուրսների օգտագործման առումով: