हमारे पिछले लेख पर टिप्पणियों में
, हमारे द्वारा उपयोग की जाने वाली तकनीकों के बारे में कई सवाल थे। इस लेख में, मैं - इगोर मोसयागिन, आर एंड डी डेवलपर ऑफ लमोडा - मैं उनके बारे में बताऊंगा। कटौती के तहत आपको भाषाओं, उपकरणों, प्लेटफार्मों और प्रौद्योगिकियों की एक विस्तृत सूची मिलेगी जो हमारे हाथों से गुजरी हैं। दृश्यपटल, बैकएंड, डेटाबेस, संदेश दलाल, कैश और निगरानी, विकास और संतुलन एक विस्तृत कहानी है कि हम आज क्या उपयोग करते हैं और हमने क्या छोड़ दिया है।

मेरे सहकर्मी और मैं टिप्पणियों में या कंपनी के स्टैंड हाईलाड ++ 2018 पर चर्चा करने के लिए तैयार हैं।
यहां बड़े और विस्तृत में रडार देखें।जैसा कि हमने पहले ही कहा है, लमोडा में विभिन्न तकनीकों और उपकरणों की एक बड़ी संख्या शामिल है। और यह कोई संयोग नहीं है। अन्यथा, हम लोड का सामना नहीं कर सकते हैं! हमारे पास एक बड़ा स्वचालित गोदाम है। हमारे कॉल-सेंटर को 500 कर्मचारियों द्वारा सेवा दी जाती है, और हमने जो प्रक्रियाएं बनाई हैं, वह ऑर्डर देने के बाद 5 मिनट के भीतर ग्राहक को वापस कॉल करने की अनुमति देती हैं। हमारी डिलीवरी सेवा 15-मिनट के अंतराल पर चल रही है। लेकिन हमारे अपने सिस्टम के अलावा, हमारे पास अन्य ऑनलाइन स्टोर के साथ बी 2 बी एकीकरण है। इस तरह के विभिन्न कार्यों और ई-कॉमर्स जैसे गतिशील व्यवसाय की आवश्यकताओं के साथ, तकनीकी स्टैक की वृद्धि अपरिहार्य है, क्योंकि हम प्रत्येक समस्या को सबसे उपयुक्त प्रौद्योगिकियों के साथ हल करना चाहते हैं। विविधता अपरिहार्य है। हम नीचे हमारे स्टैक के मुख्य प्रतिनिधियों के बारे में बात करेंगे। लेकिन आइए उन तंत्रों से शुरू करें जो हमें इस विविधता में खो जाने की अनुमति नहीं देते हैं।
वास्तुकला अनिवार्य है
हम सक्रिय रूप से माइक्रोसैस आर्किटेक्चर की ओर बढ़ रहे हैं। अधिकांश सिस्टम पहले से ही इस विचारधारा के अनुसार बनाए गए हैं - दो साल पहले हम अपनी समस्याओं और उनके समाधानों के साथ एक संक्रमणकालीन अवस्था से गुजरे थे। लेकिन हम इस प्रक्रिया के विवरण पर ध्यान केंद्रित नहीं करेंगे - एंड्री एविकासोव की एक रिपोर्ट "
ई-कॉम प्लेटफॉर्म के उदाहरण पर माइक्रोसर्विस की विशेषताएं " इस बारे में बहुत कुछ बताएगी।
तकनीकी विविधता में वृद्धि नहीं करने के लिए, हमने "सिद्ध प्रथाओं का तानाशाही" पेश किया है, जिसके अनुसार नए चिप्स के रचनाकारों को उन प्रौद्योगिकियों और उपकरणों का उपयोग करने की सिफारिश की जाती है जो पहले से ही कंपनी में कहीं उपयोग किए जाते हैं। अधिकांश सेवाएं एपीआई के माध्यम से एक दूसरे के साथ संवाद करती हैं (हम JSONRPC मानक के दूसरे संस्करण के हमारे संशोधन का उपयोग करते हैं), लेकिन जहां व्यापार तर्क इसे अनुमति देता है, हम बातचीत के लिए डेटा बस का भी उपयोग करते हैं।
अन्य तकनीकों का उपयोग निषिद्ध नहीं है। हालांकि, किसी भी नए विचार को विशेष रूप से बनाई गई वास्तु समिति में परीक्षण किया जाना चाहिए, जिसमें मुख्य क्षेत्रों के नेता शामिल हैं।
अगले प्रस्ताव पर विचार करते हुए, समिति या तो प्रयोग को हरी बत्ती देती है, या मौजूदा स्टैक से किसी प्रकार का प्रतिस्थापन करती है। वैसे, यह निर्णय काफी हद तक व्यापार में वर्तमान परिस्थितियों पर निर्भर करता है। उदाहरण के लिए, यदि कोई टीम ब्लैक फ्राइडे की बिक्री की पूर्व संध्या पर आती है और घोषणा करती है कि वह उत्पादन में प्रौद्योगिकी पेश करेगी जिसे समिति ने पहले कभी नहीं सुना था, तो सबसे अधिक संभावना से इनकार कर दिया जाएगा। दूसरी ओर, एक ही प्रयोग को हरी रोशनी दी जा सकती है यदि कम महत्वपूर्ण व्यावसायिक परिस्थितियों में एक नई तकनीक या उपकरण पेश किया जाता है, और कार्यान्वयन बाहर के उत्पादन के परीक्षण के साथ शुरू होगा।
आर्किटेक्चर समिति प्रौद्योगिकी रडार को बनाए रखने के लिए भी जिम्मेदार है, जो हर 2-3 महीने में आवश्यक परिवर्तन करती है। इस संसाधन का एक उद्देश्य टीमों को यह विचार देना है कि कंपनी के पास पहले से किस तरह की विशेषज्ञता है।
लेकिन चलो सबसे दिलचस्प पर चलते हैं - हमारे रडार के क्षेत्रों के विश्लेषण के लिए।
यह ध्यान देने योग्य है कि हम प्रौद्योगिकी अपनाने की श्रेणियों की थोड़ी गैर-मानक व्याख्या का उपयोग करते हैं:
- ADOPT - प्रौद्योगिकियां और उपकरण जो कार्यान्वित और सक्रिय रूप से उपयोग किए जाते हैं;
- परीक्षण - प्रौद्योगिकियां और उपकरण जो पहले ही परीक्षण के चरण को पारित कर चुके हैं और उत्पादन के साथ काम करने की तैयारी कर रहे हैं (या यहां तक कि वहां पहले से ही काम कर रहे हैं);
- ASSESS - परीक्षण उपकरण जो वर्तमान में मूल्यांकन किए जा रहे हैं और अभी तक उत्पादन को प्रभावित नहीं करते हैं। उनकी भागीदारी के साथ, केवल परीक्षण परियोजनाएं लागू की जाती हैं;
- होल्ड - इस श्रेणी में हमारे पास विशेषज्ञता है, लेकिन उल्लिखित उपकरण केवल मौजूदा सिस्टम के समर्थन के साथ उपयोग किए जाते हैं - उन पर नई परियोजनाएं लॉन्च नहीं की जाती हैं।
डिज़ाइन

PHP - पायथन - गो
पहली भाषा जिस पर हम निवास करना चाहते हैं वह है PHP। आज यह स्टोर के बैकएंड कार्यों का केवल एक हिस्सा है, और शुरू में पूरे बैकेंड ने PHP पर काम किया। जैसे-जैसे व्यवसाय आगे की ओर बढ़ा, गति और उत्पादकता में कमी ध्यान देने योग्य हो गई - वापस तब हमने PHP 5 का उपयोग किया, इसलिए पायथन ने इसे प्रतिस्थापित किया (पहले 2.x, और फिर 3.x)। हालांकि, PHP आपको समृद्ध व्यवसाय मॉडल लिखने की अनुमति देता है, इसलिए यह भाषा विभिन्न परिचालन प्रक्रियाओं को स्वचालित करने के लिए बैक ऑफिस में बनी हुई है, विशेष रूप से, थर्ड-पार्टी ऑनलाइन स्टोर या डिलीवरी सेवाओं के साथ एकीकरण, साथ ही उत्पाद कार्ड तैयार करने वाले एक कंटेंट स्टूडियो का स्वचालन। अब हम पहले से ही PHP 7 का उपयोग कर रहे हैं। PHP में हमने आंतरिक उपयोग के लिए कई पुस्तकालयों को लिखा है: हमारे बुनियादी ढांचे पर एकीकरण और आवरण, सेवाओं के बीच एकीकरण परत, विभिन्न पुन: उपयोग किए गए सहायक। पुस्तकालयों का पहला बैच
हमारे github.com पर स्रोत खोलने के लिए पहले ही ले लिया गया है, और बाकी, सबसे "परिपक्व", जल्द ही आ जाएगा। पहले में से एक एक राज्य मशीन थी, जो लगभग सभी अनुप्रयोगों में मौजूद है, यह सुनिश्चित करता है कि सभी आवश्यक कार्यों को भेजने से पहले आदेश के साथ।
समय के साथ, पायथन भी एक स्टोर बैकएंड के लिए अपर्याप्त हो गया है। अब हम अधिक उत्पादक और हल्के जाओ पसंद करते हैं।
शायद गो के लिए संक्रमण एक महत्वपूर्ण बदलाव था, क्योंकि इसने बहुत सारे हार्डवेयर और मानव संसाधनों को बचाया - दक्षता में काफी वृद्धि हुई है। गो पर पहली परियोजनाएं बनाने वाले पहले आरएनडी थे, वे अजगर की तकनीकी सीमाओं से निपटना नहीं चाहते थे। तब मोबाइल डेवलपमेंट टीम में वे लोग थे जो उनसे परिचित थे और उन्हें प्रोडक्शन के लिए बढ़ावा दिया। उनके प्रस्तुतिकरण से, हमने परीक्षण किए और परिणाम से संतुष्ट थे। अलग-अलग मामलों में, परियोजना के कुछ हिस्सों को पायथन से गो में फिर से लिखने के बाद, क्लस्टर नोड्स की लोडिंग में काफी गिरावट आई। उदाहरण के लिए, पायथन से गो तक टोकरी के लिए छूट गणना इंजन को फिर से लिखना, हमें एक ही हार्डवेयर क्षमता पर 8 गुना अधिक अनुरोधों को संसाधित करने की अनुमति दी गई, और औसत एपीआई प्रतिक्रिया समय 25 गुना कम हो गया। यानी जाओ पायथन से अधिक कुशल निकला (यदि आप इसे सही तरीके से लिखते हैं), भले ही यह डेवलपर के लिए इतना सुविधाजनक न हो।
चूंकि मोबाइल विकास में दर्जनों आंतरिक एपीआई के साथ बातचीत करनी थी, इसलिए एक कोड जनरेटर बनाया गया था, जो कि एपीआई सेवा (स्वैगर विनिर्देश के अनुसार) के विवरण के अनुसार, एक ग्राहक गो पर उत्पन्न कर सकता है। इसलिए गो पर धीरे-धीरे मौजूदा सेवाओं और उपकरणों के साथ मेल खाना शुरू हुआ, खासकर उन लोगों के लिए जो लोड के लिए "अड़चन" बना रहे थे। मोबाइल बैकएंड डेवलपर के लिए जीवन को आसान बनाने के अलावा, हमने APIs को कैसे विकसित किया जाए, कैसे तरीकों का नाम दिया जाए, कैसे मापदंडों को पास किया जाए, और इस तरह के आंतरिक सम्मेलनों को सरल बनाया है। इस मानकीकरण ने सभी टीमों के लिए नई सेवाओं के विकास और कार्यान्वयन को आसान बना दिया है।
आज, गो पहले से ही लगभग हर जगह उपयोग किया जाता है - उपयोगकर्ताओं के साथ सभी वास्तविक समय की बातचीत में - साइट और मोबाइल एप्लिकेशन के बैकएंड में, साथ ही साथ वे सेवाएं जिनके साथ वे जुड़े हुए हैं। और जहां त्वरित प्रसंस्करण और प्रतिक्रिया की आवश्यकता नहीं है, उदाहरण के लिए, डेटा गोदाम के साथ बातचीत के कार्यों में, पायथन रहता है, क्योंकि इसमें डेटा प्रसंस्करण कार्यों के लिए कोई समान नहीं है (हालांकि यहां गो पैठ है)।
जैसा कि आप रडार पर देख सकते हैं, हमारे पास संपत्ति में जावा है। इसका उपयोग वेयरहाउस मैनेजमेंट सिस्टम (WMS) में किया जाता है, ताकि जल्दी से ऑर्डर इकट्ठा करने में मदद मिले। अब तक, हमारे पास एक काफी पुराना स्टैक है और एक पुराना आर्किटेक्चर मॉडल है - वाइल्डफ्लाइ 10 और 8 जावा हॉटस्पॉट पर घूमती हुई मोनोलिथ, और
नेटबिन्स एप्लिकेशन प्लेटफॉर्म पर रीमोटिंग और रिच क्लाइंट भी है (अब यह कार्यक्षमता वेब पर स्थानांतरित हो गई है)। यहां, हमारे शस्त्रागार में, कंपनी के लिए मानक भंडारण और यहां तक कि हमारी खुद की निगरानी भी है। दुर्भाग्य से, हमें एक ऐसा उपकरण नहीं मिला, जो गोदाम के संचालन और उस पर महत्वपूर्ण प्रक्रियाओं की कल्पना कर सकता है (जब एक अनुभाग अतिभारित होता है, उदाहरण के लिए), और इस तरह के उपकरण को खुद बनाया।
हम मशीन सीखने के लिए मुख्य भाषा के रूप में पायथन का उपयोग करते हैं: हम अनुशंसा प्रणालियों का निर्माण करते हैं और कैटलॉग को रैंक करते हैं, खोज प्रश्नों में सही टाइपोस, और एक हडॉप क्लस्टर (पाइस्पार्क) पर स्पार्क के साथ संयोजन के रूप में अन्य समस्याओं को भी हल करते हैं। पायथन हमें आंतरिक मैट्रिक्स और एबी परीक्षण की गणना को स्वचालित करने में मदद करता है।
फ्रंटेंड और मोबाइल विकास
डेस्कटॉप ऑनलाइन स्टोर, साथ ही मोबाइल साइटों के सामने, जावास्क्रिप्ट में लिखा गया है। अब सीमांत धीरे-धीरे ईएस 6 विनिर्देश पर आगे बढ़ रहा है, इसके अनुसार नई परियोजनाएं बना रहा है। हम मुख्य ढांचे के रूप में vue.js का उपयोग करते हैं, लेकिन हम उपकरण अनुभाग में इस पर अधिक विस्तार से ध्यान देंगे।
मोबाइल प्लेटफ़ॉर्म के लिए अनुप्रयोग विकास कंपनी में एक अलग इकाई है, जिसमें बैकएंड समूह, साथ ही साथ एंड्रॉइड और आईओएस एप्लिकेशन शामिल हैं, जिनके पास अपने स्वयं के प्रौद्योगिकी स्टैक और उपकरण हैं, जो प्लेटफ़ॉर्म अंतर के कारण, पूरी यूनिट को एकजुट करने के लिए हमेशा संभव है।
अब दो साल के लिए, कोटलिन पर सभी नए एंड्रॉइड विकास चल रहे हैं, जो हमें अधिक संक्षिप्त और समझने योग्य कोड लिखने की अनुमति देता है। सबसे अधिक इस्तेमाल की जाने वाली सुविधाओं में, हमारे डेवलपर्स कॉल करते हैं: स्मार्टकास्ट, सील की गई कक्षाएं, एक्सटेंशन फ़ंक्शन, टाइपसेफ़ बिल्डरों (डीएसएल), स्टैडिब की कार्यक्षमता।
iOS का विकास Swift पर चल रहा है, जिसने Objective-C को बदल दिया है।
विशेष भाषा
लामोदा के कार्यों की सीमा अलग-अलग प्लेटफार्मों के लिए "शोकेस" के विकास तक सीमित नहीं है, क्रमशः, हमारे पास कई भाषाएं हैं जो केवल उनके सिस्टम के भीतर उपयोग की जाती हैं, वहां अच्छी तरह से काम करती हैं, लेकिन बुनियादी ढांचे के अन्य हिस्सों में लागू नहीं किया जाएगा:
- आर - व्यापार खुफिया (बीआई) के ढांचे के भीतर डेटा प्रोसेसिंग और रिपोर्टिंग स्क्रिप्ट के लिए उपयोग किया जाता है। यह उत्पादन में नहीं है और अब इसका उपयोग नए कार्यों के लिए नहीं किया जाता है, लेकिन हमारे पास अभी भी ऐसी कई स्क्रिप्ट हैं। आर के साथ समस्याओं का समाधान करते हुए, हमने महसूस किया कि यह भाषा अत्यधिक लोड किए गए अनुप्रयोगों के लिए नहीं है। नए कार्यों में, हम पायथन और अन्य तकनीकों का उपयोग करते हैं जो आर के साथ असंगत हैं।
- स्काला - विलनियस में विकास कार्यालय द्वारा एक कॉल सेंटर स्वचालन प्रणाली विकसित करने के लिए उपयोग किया जाता है। प्रारंभ में, इस प्रणाली को पीएचपी में लिखा गया था, लेकिन एक माइक्रोसैस आर्किटेक्चर में संक्रमण के दौरान, स्काला में कई घटकों को फिर से लिखा गया था। उस पर भी, डेटा इंजीनियरिंग टीम स्पार्क नौकरियां लिखती है।
- टाइपस्क्रिप्ट हम देख रहे हैं। वितरण पहले से ही इसकी मदद से लागू किया गया है, और भविष्य में हम फ्रंट पर टाइपस्क्रिप्ट + vue.js का उपयोग करेंगे।
- Lua का उपयोग nginx (nginx API के माध्यम से) को कॉन्फ़िगर करने के लिए किया जाता है, अन्य परियोजनाओं में यह कभी नहीं होता है और न ही होगा।
- हम एक फैशन कंपनी हैं और कार्यात्मक प्रोग्रामिंग के लिए फैशन का पालन करते हैं। उदाहरण के लिए, हमारे गोदामों में से एक में एक सॉर्टिंग डिवाइस एमुलेटर हास्केल में लिखा गया है।
डेटा प्रबंधन

DBMS, डेटा खोज और विश्लेषण
कई लोगों की तरह, हमने सबसे विविध डेटाबेस जो PostgreSQL पर लागू किए हैं - इसका उपयोग जहां कहीं भी रिलेशनल डेटाबेस की आवश्यकता होती है, उदाहरण के लिए, निर्देशिका को संग्रहीत करने के लिए किया जाता है। इस तकनीक के विशेषज्ञों को खोजना काफी आसान है, इसके अलावा, कई अलग-अलग सेवाएं उपलब्ध हैं।
बेशक, PostgreSQL एकमात्र डीबीएमएस नहीं है जो हमारे आईटी बुनियादी ढांचे में पाया जा सकता है। कुछ पुराने सिस्टम पर, उदाहरण के लिए, MySQL का उपयोग किया जाता है, जबकि WMS में कुछ MongoDB है। हालांकि, उच्च भार और स्केलिंग के लिए (हमारी प्रौद्योगिकी स्टैक के बाकी हिस्सों को ध्यान में रखते हुए), हम नई परियोजनाओं के लिए उनका उपयोग नहीं करते हैं। सामान्य तौर पर, PostgreSQL हमारा सब कुछ है।
रडार पर एयरोस्पाइक भी दिखाई देता है। हमने इसे काफी सक्रिय रूप से इस्तेमाल किया, लेकिन फिर उत्पाद के लिए लाइसेंस समझौता बदल गया, इसलिए "हमारा" संस्करण थोड़ा कट गया। हालाँकि, अब हमने उसे फिर से देखा। शायद हम अपने दृष्टिकोण पर पुनर्विचार करेंगे और इसे अधिक सक्रिय रूप से उपयोग करेंगे। अब एयरोस्पाइक का उपयोग पृष्ठ देखने की घटनाओं और टोकरी के साथ उपयोगकर्ता के काम की एकत्रीकरण सेवा में किया जाता है, साथ ही साथ सामाजिक-प्रूफ सेवा ("5 लोगों ने इस सप्ताह इस उत्पाद को पसंदीदा में जोड़ा")। अब हम इस पर और भी ठोस सिफारिशें कर रहे हैं।
Apache Solr का उपयोग उत्पादन डेटा की खोज के लिए किया जाता है। समानांतर में, हम भी लोचदार खोज का उपयोग करते हैं। दोनों समाधान खुले स्रोत हैं, लेकिन अगर पहले, जब हम खोज को लागू कर रहे थे, तो Apache Solr में पहले से ही तीसरा या चौथा संस्करण था और सक्रिय रूप से विकसित हो रहा था, और ElasticSearch के पास पहले स्थिर रिलीज भी नहीं थी - उत्पादन पर इसका उपयोग करना बहुत जल्दी था। अब भूमिकाएँ बदल गई हैं - ElasticSearch के समाधान खोजना बहुत आसान है, और नए लोग हमारे पास आए हैं जो इसे तैयार करने में अच्छे हैं। हालांकि, ठेस में हमारे पास सोल्र है, और हम कम से कम ब्लैक फ्राइडे 2018 तक किसी अन्य समाधान पर नहीं जाएंगे।
Google रुझान के अनुसार, खोज क्वेरी Apache Solr (नीला) और ElasticSearch (लाल) की गतिशीलता की तुलनाडेटा विश्लेषण कई प्रणालियों में होता है, विशेष रूप से, हम Apache Hadoop का सक्रिय रूप से उपयोग करते हैं। इसी समय, वर्टिका कॉलम डीबीएमएस का उपयोग डेटा मौसा (लगभग 4 टीबी की कुल मात्रा के साथ) को स्टोर करने के लिए किया जाता है। इन शोकेस पर, वित्तीय, परिचालन और वाणिज्यिक रिपोर्टिंग का निर्माण किया जाता है। हमारे कई ईटीएल कार्यों के लिए, हमने पहले लुइगी का उपयोग किया था, लेकिन अब हम अपाचे एयरफ्लो में जा रहे हैं। हम पेंटाहो का उपयोग संबंधपरक भंडारण के लिए भी करते हैं, जिसमें लगभग एक हजार नियमित ईटीएल कार्य हैं।
अन्य प्रणालियों के लिए विश्लेषण और डेटा तैयार करने का एक हिस्सा स्पार्क में किया जाता है। कुछ स्थानों पर, यह न केवल एक एनालिटिक्स टूल है, बल्कि हमारे लैम्ब्डा आर्किटेक्चर का भी हिस्सा है।
IT अवसंरचना में एक महत्वपूर्ण भूमिका ERP सिस्टम: Microsoft Dynamics AX और 1C द्वारा निभाई जाती है। DBMS के रूप में, Microsoft SQL सर्वर का उपयोग किया जाता है। और रिपोर्टिंग के लिए, इसके घटक, जैसे विश्लेषण सेवाएँ और रिपोर्टिंग सेवाएँ।
कैशिंग
कैशिंग के लिए हम रेडिस का उपयोग करते हैं। पहले, यह कार्य मेमकेच्ड द्वारा किया गया था, इसे डिस्क पर आवधिक डंप के साथ कुंजी मूल्य भंडारण के रूप में उपयोग नहीं किया जा सकता था, इसलिए हमने इसे छोड़ दिया।
संदेश की कतारें
एक ईवेंट ब्रोकर के रूप में, हम एक ही बार में दो उपकरणों का उपयोग करते हैं - अपाचे काफ्का और रैबिटएमक्यू।
अपाचे काफ्का एक उपकरण है जो हमें विभिन्न प्रणालियों में हजारों संदेशों को संसाधित करने की अनुमति देता है जहां संदेश की आवश्यकता होती है। सिस्टम के कुछ अत्यधिक लोड किए गए भागों के लिए अलग-अलग काफ्का क्लस्टर तैनात किए जाते हैं - उदाहरण के लिए, उपयोगकर्ता घटनाओं या लॉगिंग के लिए (हमारे पास
हाईलोड + ++ 2017 पर लॉगिंग पर एक अच्छी
रिपोर्ट थी )। काफ्का आपको लोहे के न्यूनतम उपयोग के साथ प्रति सेकंड 6000 हजार बल्क संदेशों का सामना करने की अनुमति देता है।
आंतरिक प्रणालियों में, हम आस्थगित कार्यों के लिए RabbitMQ का उपयोग करते हैं।
प्लेटफार्म और इन्फ्रास्ट्रक्चर

निरंतर वितरण
तैनाती के लिए, कुबेरनेट्स का उपयोग किया जाता है, जो हशिकॉर्प से घुमंतू + कौंसुल बंडल को प्रतिस्थापित करता है। पिछले स्टैक ने हार्डवेयर अपग्रेड के साथ बहुत खराब काम किया। जब हमारी ऑप्स टीम ने भौतिक सर्वरों को बदल दिया, जिस पर नोड्स कताई कर रहे थे और कंटेनरों को संग्रहीत किया गया था, यह समय-समय पर टूट गया और दुर्घटनाग्रस्त हो गया, उठना नहीं चाहता था। उस समय कोई स्थिर संस्करण नहीं था। इसके अलावा, हमने उस समय के नवीनतम - 0.5.6 का उपयोग नहीं किया था, जिसे अभी भी अद्यतन करने की आवश्यकता थी। अंतिम बीटा में अपग्रेड करने के लिए कुछ काम की आवश्यकता है। इसलिए, इसे त्यागने और अधिक लोकप्रिय कुबेरनेट्स पर स्विच करने का निर्णय लिया गया।
अब घुमंतू और कौंसुल का उपयोग अभी भी क्यूए में किया जाता है, लेकिन भविष्य में उसे कुबेरनेट्स में भी जाना चाहिए।
निरंतर वितरण को लागू करने के लिए, डॉकटर कंटेनरों का उपयोग किया जाता है, जिससे हम दो साल पहले चले गए थे। हमारी अत्यधिक भरी हुई सेवाओं (टोकरी, कैटलॉग, वेबसाइट, ऑर्डर मैनेजमेंट सिस्टम) के लिए, सेवा के कुछ अतिरिक्त कंटेनरों को जल्दी से लेने की क्षमता महत्वपूर्ण है, इसलिए हमारे पास हर जगह कंटेनर हैं। और डॉकर सबसे लोकप्रिय कंटेनरीकरण विधियों में से एक है, इसलिए रडार पर इसकी उपस्थिति काफी तार्किक है।
बिल्ड सर्वर और निरंतर एकीकरण के रूप में, बांस को तैनात किया जाता है, जिसका उपयोग जीरा और बिटबकेट (मानक स्टैक) के संयोजन में किया जाता है।
रडार में जेनकिंस का भी उल्लेख किया गया है। हमने उसके साथ प्रयोग किया, लेकिन हमने उसे नई परियोजनाओं में नहीं खींचा। यह एक महान उपकरण है, लेकिन यह सिर्फ हमारे स्टैक पर फिट नहीं है क्योंकि हमारे पास पहले से ही बांस है।
बाँस के डॉक-कंटेनरों का उपयोग करके संग्रहित भंडार को आर्टिफ़ैक्ट्री के नियंत्रण में संग्रहीत किया जाता है।
प्रक्रिया प्रबंधन और संतुलन
हम NGINX प्लस का उपयोग करते हैं, लेकिन संतुलन के संदर्भ में नहीं, क्योंकि इसके मैट्रिक्स हमारे कार्यों के लिए पर्याप्त नहीं हैं। उदाहरण के लिए, वह अनुरोध नहीं कर सकता, जो अक्सर अनुरोध किया जाता है या जमा देता है। इसलिए, लोड को संतुलित करने के लिए HAProxy का उपयोग किया जाता है। यह प्रोसेसर और मेमोरी को लोड किए बिना, nginx के साथ संयोजन के रूप में जल्दी और कुशलता से काम कर सकता है। इसके अलावा, हमारे द्वारा आवश्यक मीट्रिक यहां बॉक्स से बाहर हैं - HAproxy नोड्स द्वारा आंकड़े दिखा सकता है, फिलहाल कनेक्शन की संख्या से पता चलता है कि बैंडविड्थ कितना व्यस्त है और बहुत कुछ।
UWSGI का उपयोग सिंक्रोनस पायथन एप्लिकेशन को चलाने के लिए किया जाता है। PHP- php-fpm.
निगरानी
Prometheus host (),
Time series database . , ELK , Icinga, ELK, Prometheus. SMS. 6911 .
Prometheus , , . , PHP
Open Source ).
Grafana. Prometheus, .
Sentry, Jira . , .
- SonarQube.
लमोडा आईटी बुनियादी ढांचे के विकास के दौरान, हमने लगभग तीन दर्जन विभिन्न उपकरणों के साथ प्रयोग किया, इसलिए यह श्रेणी हमारे रडार पर सबसे "बड़े पैमाने पर" है। आज तक, सक्रिय रूप से उपयोग किया जाता है:- सिम्फनी 3.x, और अधिक हाल ही में - सिम्फनी 4.x - PHP में विकास के लिए;
- अजगर के विकास के लिए Django और जिंजा टेम्पलेट इंजन। वैसे, जिंजा का उपयोग किया जाता है, सहित, अंसिबल में विन्यास के लिए;
- फ्लास्क - आंतरिक सेवाओं (Django के साथ) के लिए, लेकिन उत्पादन में हम इसे नहीं खींचते हैं;
- वसंत - जावा विकास में;
- बूटस्ट्रैप - वेब विकास (आंतरिक पैनल, होममेड डैशबोर्ड, आदि) में विभिन्न प्रकार के आंतरिक उपकरणों के लिए;
- jQuery - js विकास के लिए;
- OpenAPI (स्वैगर) - सहित सभी एपीआई सेवाओं के प्रलेखन के लिए जो गो पर उपरोक्त कोड पीढ़ी के लिए उपयोग किए जाते हैं;
- वेबपैक - जेएस की पैकेजिंग और सीएसएस को कम करने के लिए;
- सेलेनियम - फ्रंटेंड का परीक्षण करने के लिए;
- वायरमॉक, जेमीटर, एल्यूर और अन्य का उपयोग परीक्षण में भी किया जाता है;
- Ansible - कॉन्फ़िगरेशन प्रबंधन के लिए;
- किबाना - ElasticSearch में खोज परिणामों को देखने के लिए।
मैं जावास्क्रिप्ट विकास के बारे में अलग से बात करना चाहता हूं। हम, जैसे कई, प्रयोगों का एक पूरा क्षेत्र है। जावास्क्रिप्ट के लिए साइट एक स्व-लिखित रूपरेखा का उपयोग करती है। सामने के अंत में, व्यापार के लिए महत्वपूर्ण कार्यों के ढांचे में, विभिन्न रूपरेखाओं के साथ प्रयोग किए गए थे - कोणीय, ReactJS, vue.js. इस "हथियारों की दौड़" में, ऐसा लगता है कि vue.js, जो मूल रूप से सामग्री स्टूडियो के स्वचालन प्रणाली में उपयोग किया जाता था, अग्रणी प्रतीत होता है, और अब यह धीरे-धीरे हर जगह आता है।सूखे अवशेषों में
, GO, PHP, Java, JavaScript, PostgreSQL, Docker Kubernetes.
, . , , . -, . , , , .