نادراً ما
تتم مناقشة مناقشة موضوعات على
Meteor بين المتحدثين الروس (وفقًا للقناة في العربة و VK ، Habr). تبادل الخبرات ممكن ، ولكن في الغالب في منتدى الشهب الرسمي.
لفترة طويلة لم تكن هناك مقالات عن حبري على النيزك ، لذلك أود أن أشارك قصتنا.

سوف أخبركم عن مشروعنا ، وكيف أتينا إلى Meteor وكيف نطير فيه. سأحاول عدم الخوض في التفاصيل أو أشياء محددة للغاية - سأتركها للمناقشة أو لمقال منفصل.
عن المشروع
لدينا مدرسة برمجة على الإنترنت للأطفال. كتبت
PolinaV مقالة حول كيفية قيامنا بذلك عبر الإنترنت. في بداية عام 2018 ، بدأنا في تطوير نظامنا بنشاط - جينا.
كنا بحاجة إلى الجين لعدة أسباب:
- عدد كبير من الأدوات المختلفة - excel ، خدمة لصيانة الجداول الزمنية ، النماذج ، إلخ ؛
- العمل مع الأدوات بشكل منفصل لم يكن مريحة.
بالنسبة للإصدار الأول ، قمنا بتسليط الضوء على الوظيفة الرئيسية:
- إدارة الجدول الزمني ؛
- إدارة الطلاب / المدربين ؛
- إدارة المهام الداخلية.
حسبنا عدد المستخدمين ، وكذلك كمية البيانات التي سيتم إنشاؤها. ساعدتنا هذه المعلومات وخطة التطوير القاسية في وضع بنية مستقبل الجينات.
الجينات و النيزك
جربت Meteor في عام 2016 عندما احتجت إلى عمل نموذجين بسيطين. في ذلك الوقت ، كانت لدي مهارات C # (ولكن ليس ASP) و PHP وقليلًا من JS.
كنت أرغب في الحصول على لغة واحدة للأمام وللخلف ، حتى لا أقوم بتعقيد المشروع وعدم تكرار المنطق (ربما كذبت قليلاً عن النماذج الأولية البسيطة :)). لذلك ، قررت اختيار JS فقط و NodeJS و MongoDB لها.
بالنسبة لي ، وكذلك بالنسبة للبطل من
هذه المقالة ، كان تطوير الويب مجموعة من الأسماء الغامضة. نظرًا لوجود تجربة تطوير بالفعل ، فهمت أن هناك حلولًا جاهزة تتيح لك "القيام بالمهمة" دون القلق بشأن الباقي.
لا أتذكر كيف تم العثور على Meteor ، لكنه رشى لي بعدة أشياء:
- سهلة التركيب / التكوين. أمر واحد في وحدة التحكم - وهو لك ؛
- قناة جاهزة لنقل البيانات (WebSocket + DDP ) ؛
- المدمج في قاعدة البيانات - MongoDB (+ minimongo ) ؛
- أداة بسيطة لكتابة واجهة المستخدم - الحريق .
- وثائق جيدة ومقالات / مقاطع فيديو ذات صلة.
بعد تنفيذ العديد من النماذج الأولية ، بدأت في متابعة تطور النيزك ، ودراسة الدواخل الداخلية ورأيت مشاريع صغيرة بنفسي.
والآن حان الوقت لاختيار أداة لتنفيذ الجينات. سأحذف تفاصيل البحث عن أدوات أخرى ، سأترك الحجج لصالح النيزك:
- كما كتبت أعلاه - كل ما في مربع واحد ؛
- يمكننا التضحية بالأداء واستهلاك الموارد في مقابل سهولة التطوير ؛
- نريد الحصول على ميزات جديدة بسرعة ، بحيث يمكن تحسينها لاحقًا أو التخلص منها ؛
- من الممكن لفترة قصيرة (2-3 أيام) توصيل المطور JS بالمشروع ؛
- هناك قاعدة بيانات للحزم الجاهزة.
سأقول بشكل منفصل عن
Blaze - لقد اتخذت عمداً حلاً أبسط حتى لا تضيع وقتك في دراسة رد الفعل / Vue الأكثر تعقيدًا (نعم ، لم تقفز إلى قطار الضجيج).
للحفاظ على المهام والوثائق ، نستخدم Jira + Confluence. تمت تسوية الرمز في Bitbucket.
نتيجة لذلك ، كان هناك مثل هذا الرأي:
- إذا كان لديك شيء بسيط للغاية ، فاخذ JS / CSS / HTML الخام وقم به (الهبوط ، على سبيل المثال) ؛
- إذا كانت هناك متطلبات محددة للأداء والموارد والوظائف - ابحث عنها ؛
- في حالات أخرى - خذ إطارًا جاهزًا ، على سبيل المثال ، Meteor. إذا كنت تطبخ بشكل صحيح ، فلن يكون هناك أي مشاكل.
عملية التنمية
بعد اختيار الأداة ، بدأت مرحلة تنفيذ الخطة. لا نفكر دائمًا في المتطلبات حتى النهاية ، لذلك في بعض الأحيان يتعين علينا إعادة الميزة عدة مرات. لدينا أيضًا الكثير من الأفكار ، ونحاول طرحها واختبارها على مستخدمين حقيقيين في أسرع وقت ممكن.
تساعد بنية المشروع (بنية المجلدات والملفات) على تجنب الأسئلة حول ماذا وأين يجب أن يكون. هذا مكتوب في
الوثائق . الكتابة المدعومة بسهولة والرمز القابل للتوسيع أسهل عندما يكون هناك فصل واضح. تنقسم وظائف واجهة المستخدم إلى مكونات ، مما يسمح لك بعزل كتل الوظائف وإعادة استخدامها ، وعند إعادة إنشاء المباني ، لا تقوم بتكسير أرضية المشروع :).
هناك العديد
من الحزم الجاهزة التي تحل بعض المشاكل. على سبيل المثال ، من خارج الصندوق ، توفر Meteor إدارة حساب (التسجيل ، التفويض ، وما إلى ذلك) ، وإرسال البريد الإلكتروني. الطرف الثالث حل المشاكل الأخرى. بعضها عبارة عن طبقة لحزم
npm ، وبالتالي فإن قاعدة بيانات الحلول الجاهزة كبيرة جدًا.
كان خطأي هو رفض الاختبارات. كان هذا القرار هو توفير الوقت ، لأن "العملاء لا يرون الاختبارات". ومع ذلك ، لاحظت الموقف مع الأخطاء الناشئة في جير ، أدركت أن الوقت قد حان لتغيير النهج. عادوا الاختبارات وبدأوا الكتابة على TDD. بالإضافة إلى ذلك ، بعد إدخال الرمز في فرع التطوير ، بدأوا في إجراء الاختبارات من خلال
CircleCI للتأكد من عدم كسر أي شخص لأي شيء.
للحفاظ على Code Style ،
تم تكوين ESLint +
أجمل . هذا يتجنب تصحيحات النمط والأخطاء السخيفة في مرحلة النظر في العلاقات العامة (طلب السحب). وحتى لا يصل الرمز "السيئ" إلى البوابة ، تم تكوين
Husky - وهي أداة يمكنها أداء المهام الضرورية في مرحلة الالتزام (وليس فقط). وبالتالي ، قبل دخول الشفرة إلى الالتزام ، يتم تمرير الشيك عبر eslint والأجمل.
تجدر الإشارة بشكل منفصل عن ناقص مهم - سرعة بناء المشروع. في المرة الأولى يستغرق التجميع حوالي 30 ثانية ، وهذا يتوقف على الحديد. علاوة على ذلك ، عند تغيير الرمز ، تستغرق العملية حوالي 5 إلى 10 ثوانٍ. على حديد ضعيف ، يمكن أن تكون الأرقام أكبر. يمكنني استخدام جهاز MacBook pro في منتصف 15 و i7 و 16gb ، أنا بخير.
قرروا إطلاق الجين على المحيط الرقمي. هناك سبب واحد - السعر.
استضافة الرسمية لالنيزك العزيز. AWS أرخص ، ولكن أكثر تعقيدًا من DO. هناك بدائل أخرى ، ولكن استقر على DO.
رحلة
في الوقت الحالي ، يمكننا في الوقت نفسه أن يصل إلى 100 مستخدم متصلين بجين. هذا ليس كثيرًا ، ولكن لدينا أيضًا هامش أمان كبير. نتوقع أن تصمد أمام 1000CCU في التكوين الحالي.
حتى الآن ، خوادم 10 دولارات + خوادم بروكسي 5 دولار كافية لنا (لتحقيق التوازن). كل خادم هو التطبيق nodejs + MongoDB. يتم تشغيل خادم المراقبة بشكل منفصل. لقد توقعنا نمو حركة المرور ، لذلك سيكون لدينا وقت لنشر خوادم جديدة (قم برفع القطرة وإضافة خط إلى المنبع).
صب نسخة جديدة من الجينات من دواعي سروري. للقيام بذلك ، تم كتابة برنامج نصي صغير يجمع المشروع في القطران (باستخدام
الأمر meteor build ) ، ويقوم
بتحميله على الخادم ،
وفك ضغطه ،
وتشغيل npm i وبدء البرنامج الخفي. عادة ما يستغرق دقيقة واحدة.
إذا حذفت التفاصيل ، فهذا يعني أن شيئًا كهذا (إذا كان ممتعًا ، فسأقوم بإعداد gist):
نلاحظ جينا من خلال
كاديرا (الصورة في بداية
المنشور ). كان علي أن أرقص قليلاً مع الدف لتشغيله في منشآتي ، لكن الأمر كان يستحق العناء. كل شيء واضح ومفهوم.
لم تكن هناك مشاكل مع الاستقرار حتى الآن. لا يتم ملاحظة حوادث الأعطال أو تسرب الذاكرة.
الخاتمة
أطلقنا الجين بعد نصف عام من البداية. نما الفريق ، كما نما جين. على الأرجح ، سوف نتفوق على المتراصة وسيكون هناك خدمات ميكروية وقوائم انتظار وحزم فردية وما إلى ذلك. لكن هذه قصة مختلفة تماما ...
النيزك يتغير. بالنسبة لأولئك الذين جربوه على الإصدار 1.4 وما يليه ، أوصي بالنظر إلى
قائمة التغييرات . آمل أن تكون مفاجأة سارة.
قائمة المواد المفيدة على النيزك:
الذي يعمل مع نيزك أو مهتم -
انضم إلى غرفة الدردشة في برقية.
أعتذر إذا لم أفصح عن أي مواضيع مهمة ، سأحاول الإجابة في التعليقات.