إننا نشارك تجربة تحديث بنية بوابة الويب ، مما جعل من الممكن جعل المنتج مناسبًا ومستقرًا ومتسامحًا مع الأخطاء: زادت حركة المرور من 350 ألفًا إلى 7 ملايين مستخدم! ستكون القصة مفيدة لأولئك الذين يخططون لتوسيع منتجاتهم. أولاً ، سننظر في العوامل التي يمكن أن تتداخل مع عمل وتطوير بوابة الويب:
- التقادم. يتوقف نهج قابلية الاستخدام والتكيف مع الأجهزة المختلفة والمظهر الأولي والبنية على تلبية احتياجات الجمهور بمرور الوقت.
- التقادم التكنولوجي. تتطور معايير الويب والتكنولوجيا باستمرار. تؤثر التغييرات على كل من أدوات المطورين (على سبيل المثال ، الأطر وقواعد البيانات والبرامج الأخرى) والأسس الأساسية للويب. من الأحدث نسبيًا - انتقال هائل من http إلى https والتخلي عن دعم DNS القديم.
- الأخطاء والحوادث. يمكن للمطورين التعامل بشكل غير صحيح مع مهمتهم والسماح للعيوب. نتيجة لذلك ، قد تحدث انتهاكات للموقع - بدءًا من حقيقة أن الأزرار لا تعمل في المرة الأولى ، حتى تفشل الأنظمة تمامًا.
حالةتم الاتصال بنا من قبل عميل تحتاج بوابة الويب الخاصة به إلى مزيد من التطوير. عند نقطة معينة ، تم الوصول إلى سقف 350 ألف زائر فريد كل شهر. بدا هذا غير كافٍ - من الواضح أن المشروع كان لديه احتمالات ، وكان علينا أن نعرف ما الذي يقف بالضبط في طريق زيادة توسيع نطاق المورد.
التدقيقاتضح أن محرك Bitrix القديم لم يتكيف مع الأحمال والقياس. كل مكون من مكونات النظام يتقاطع عن كثب ويعتمد على بعضها البعض. كانت عملية إصلاح الخلل باستمرار مهمة شاقة للغاية ، حيث اقترحنا بنية خدمات ميكروية مرنة ومفهومة. في كل منها ، يكون كل مكون مستقلاً بما فيه الكفاية بحيث لا تؤذي الأخطاء الموجودة فيه العناصر المتبقية للنظام.
ظلت Bitrix أساس البنية - على الأقل ، يرتبط الترخيص بها ، ولكن حيثما كان ذلك ممكنًا ووعدنا بالكفاءة العالية ، قمنا بنقل الوظيفة إلى خدمات microservices. أصبحوا حجر الزاوية في المشروع.
لقد أتاحت لنا البنية المدمجة الجديدة تشغيل مستقر وأسرع للأنظمة وغياب شبه كامل للأخطاء في بعض الوحدات. كما خدم كأساس للعمل الفعال للمسوقين. بفضل البنية المحسنة ، تمكن اختصاصيو الترويج من زيادة حضور المورد بنسبة 20 مرة.
Mikroservisyفي الخدمات المجهرية المستقلة ، قمنا بتمييز الوحدات النمطية مثل أداة تحميل الملفات والبحث وتغذية الأخبار. بالإضافة إلى هذه الأشياء سهلة الاستخدام والواضحة ، تم تنفيذ العديد من العناصر الوظيفية الأخرى في شكل خدمات مجهرية:
- تفريغ وتخزين وإدارة البيانات من المشاريع مفتوحة المصدر ؛
- خلق ديناميكي آر إس إس.
- إنشاء ديناميكي لنظام الكتل ، وتخطيط مواد أي خدمات إلى كتل هيكلية ؛
- إضافة بيانات إضافية إلى مواد الخدمة ؛
- خدمة الدعم الفني ؛
- كتالوج واحد من البيانات المختلفة.
بالإضافة إلى كل ما سبق ، أنشأنا العديد من الخدمات المصغرة للعمل المريح مع لوحة المشرف.

أصبحت كل كتلة وظيفية للموقع وحدة مستقلة إلى حد ما. يتم استخدام عملية مخصصة للتحميل والتقديم ، مما يقلل من التقاطع مع الخدمات الأخرى.
موافق ، عندما يقوم أحد المستخدمين بالدفع ، فلن يريد الانتظار لفترة طويلة لتحميل البرنامج النصي المسؤول عن تشغيل الفيديو الذي لا يحتاجه في جزء آخر من الصفحة. في الواقع ، هذا ما يحدث في الأنظمة المتجانسة - تتداخل الوظائف الجانبية أحيانًا مع عمل المكونات المهمة حقًا.
اتخذنا الخطوة الأولى وجعلنا الحياة أسهل لكل من المستخدمين والمطورين ، حيث أصدرنا أكثر من 20 خدمة جديدة كل عام. نتيجة لذلك:
- نحن حل مشكلة التحجيم.
- نفذت عملية تطوير أكثر كفاءة من قبل فرق موزعة.
- قم بإعداد إدارة ديناميكية للموارد لتشغيل سلس وسريع للنظام.
ترقية كومة التكنولوجيافي موازاة ذلك ، قمنا بتحديث مكدس التكنولوجيا. إذا كانت البوابة تعتمد في الأساس على php 5.6 و MySQL 5.6 ، فعند تحسين المحرك ، قمنا بتحويله إلى php 7.0 و MySQL 5.7. نفذت إطار Yii2 ، شريطة التخزين المؤقت memcache.
طابور المهمةمن أجل موازنة المهام بشكل أفضل ، قمنا بنقل عمال الويب - المعالجات الداخلية - إلى قائمة انتظار RabbitMQ. يعمل على تحسين تسلسل الأحداث المثيرة ، مما يقلل من الحمل على النظام. أصبح العمل مع الموقع أسرع بكثير وأكثر راحة.
التكامل المستمريتم دعم عملية تطوير شفافة وسهلة الإدارة باستخدام GitLab CI. هذا تطور سلس مستمر بحق يترك للمبرمجين والمختبرين المزيد من الوقت مع أسئلة مهمة بدلاً من تصحيح الثقوب.
لتقليل الأخطاء ، قدمنا حلقات تطوير إضافية. تتكون السلسلة من العديد من حلقات اختبار التطبيقات والبنية التحتية: مرحلة ما قبل النشر ، حيث يتم إجراء أحدث اختبار للتجميع (ما قبل prod) ، و القتالية (prod) ، وعدة حلقات اختبار لاختبار عدة بنيات في وقت واحد ، بالإضافة إلى حلقة للمطورين.
نظام التجميعفي المرحلة الأولية ، يتم إنشاء بنيات من مصادر المشروع. بدلاً من مجموعة متباينة من الفئات والأنماط والمعالجات ، يتم استخدام الكيانات المدمجة - كل منها في ملف واحد قابل للتنفيذ. يتم وضع الإنشاءات الضرورية فقط في التجميع لأداء الأحداث على الصفحة. يوفر هذا بالإضافة إلى المرونة وسرعة الموقع.
رصد خطأيوفر GitLab CI ميزات متقدمة للتحقق من صحة الرمز والاختبار الآلي. في أدنى تباين للتجميعات مع المعلمات المحددة ، يقوم النظام بإبلاغ المطورين ولا يسمح ببدء عملية تنفيذ المكونات الإضافية حتى يتم إصلاح الخلل. بالإضافة إلى ذلك ، قمنا بتثبيت Sentry ، أداة مراقبة خطأ كاملة.
عملية التحسينللحفاظ على النظام في حالة عالية الأداء ، قمنا باستمرار بتحسين العمليات التجارية والبنية التحتية. أصبحت المكتبات المشتركة ونماذج الخدمات الأساس للتنفيذ السريع للوظائف الجديدة - فنحن نأخذ قوالب جاهزة وفي وقت قصير نحصل على منتج فعال.
الرصد والتشغيلجميع العمليات في مرأى ومسمع. مراقبة حالة كل عقدة نقدمها Zabbix - نظام تتبع شامل. لقد أتيحت لنا الفرصة للنظر في جوهر بنية المشروع ورؤيته بشكل مضغوط.
قمنا أيضًا بتوصيل منصة Grafana ، التي تحول البيانات الجافة إلى لوحة معلومات مرئية لتوفير الراحة لموظفي العملاء.
الاستقرار وإعادة البناءحسب الضرورة ، قمنا بإعادة تشكيل النظام - تم تبسيط الرمز ويصبح موجزًا. في الوقت نفسه ، هناك دائمًا مجال للنمو ، حيث أن تعاطي المنشطات بشكل منتظم يسرع الموقع. نتيجة لذلك ، أصبح المورد أكثر ملاءمة لمحركات البحث والمستخدمين.
العمارة الجديدة هي أساس النموفي بداية العمل ، كان لدى المورد إمكانات متواضعة للترقية ولم يكن مناسبًا بدرجة كافية للعملاء ، مما أعاق عمليات الشركة التجارية. لتحسين عملية تفاعل المستخدم مع الموقع ، قمنا بتحديث بنية البوابة بالكامل وهيكلها بالكامل ، وقمنا بإنشاء آلية مرنة تتكامل مع عدد كبير من الخدمات والتطبيقات ، وذلك بفضل API الخاصة بنا. تعمل العديد من الخدمات على النحو الأمثل لأكثر من عام ، دون الحاجة إلى تدخل - فقد انخفض عدد الأخطاء في عملها إلى الصفر تقريبًا.
الموقع الجديد هو أداة قوية لتطوير الأعمال ، مع إمكانية التوسع. باستخدام البنية المحدثة لتطبيق الويب ، تمكن مسوقو المشروع من تنفيذ مجموعة من الأنشطة الترويجية وزيادة عدد الزيارات من 350 ألف زائر فريد شهريًا إلى أكثر من 7 ملايين زائر. علاوة على ذلك ، بعد زيادة متعددة في الجمهور ، تواصل البوابة العمل بثبات.