تخطَّ إلى المحتوى

هندسة أداء التطبيقات

أداء Laravel والتوسع

تطبيقات تصمد تحت الحمل - مقيسة من الإنتاج لا من حاسوب محمول، مصلَّحة عند السبب، ومحميّة بميزانيات في التكامل المستمر كي تبقى الأرقام ثابتة.

لعمل الأداء نهاية يمكن توقعها. تُخصَّص دورة للتحسين، وتنزل الرسوم البيانية، وبعد شهر ونصف تعود إلى حيث بدأت تمامًا. لم تكن الإصلاحات خاطئة. لم يكن هناك ما يثبّتها في مكانها.

كيف يجري التعاقد

القياس أولًا، من الإنتاج. حركة حقيقية، بعيّنات، مقسّمة حسب نقطة النهاية. أن يكون المئين الخامس والتسعون لقائمة الطلبات 2.4 ثانية عبارة قابلة للتنفيذ؛ أما "التطبيق يبدو بطيئًا" فليست كذلك، ولا كذلك ملف تعريف مأخوذ على جهاز مطوّر مقابل قاعدة بيانات مزروعة.

إيجاد السبب لا العَرَض. نقطة النهاية البطيئة في Laravel تكاد تكون دائمًا واحدة من خمسة: عدد الاستعلامات، أو استعلام واحد بلا فهرس صالح، أو عمل كان ينبغي وضعه في طابور، أو استدعاء طرف ثالث في مسار الطلب، أو تسلسل بيانات أكثر بكثير مما تحتاجه الاستجابة. نتتبع كل واحد إلى السطر الذي أنتجه.

الإصلاح عند المستوى الصحيح. نقل العمل إلى مهمة، وإضافة الفهرس الذي تريده خطة الاستعلام فعلًا، وتحميل العلاقة مسبقًا، واستبدال خط معالجة مجموعات بتجميع، وتخزين قيمة تبرر كلفتُها فعلًا مشكلةَ الإبطال التي تخلقها. هذه هي التغييرات التي تصمد.

حماية النتيجة. ميزانية في التكامل المستمر: تأكيد على عدد الاستعلامات في نقاط النهاية المهمة، وبناء فاشل لطلب الدمج الذي يتجاوزها. الميزانية هي المُخرَج؛ والرسم البياني أثر جانبي.

لماذا يعود الرسم البياني

لأن الرسم البياني نتيجة ولا أحد يملك نتيجة. أما الميزانية فرقم في اختبار، يفحصه حاسوب، في كل طلب دمج، ويُفشل بناء من تجاوزه وهو لا يزال يتذكر ما غيّره.

لهذا لا يحتاج أغلب العملاء إلينا مرة ثانية في هذا. التحسين بلا ميزانية اقتراضٌ على حساب الربع القادم: العلاقة نفسها تفقد تحميلها المسبق بهدوء، والتقرير نفسه يكتسب عمودًا إضافيًا يتبين أنه accessor وراءه استعلام، وتصل الانتكاسة إيداعًا معقولًا تلو آخر، من أشخاص لا سبيل لديهم لمعرفة ذلك.

أين يذهب الوقت فعلًا

مرتبًا بحسب تكرار كونه الجواب:

قاعدة البيانات. عدد الاستعلامات عادةً لا أي استعلام بعينه - ولهذا يكون تعاقدًا قائمًا بذاته حين يكون المشكلة كلها لا جزءًا منها.

عمل لا ينبغي أن يكون في الطلب. ملف PDF يُرسَم، وصورة يُعاد تحجيمها، وwebhook يُسلَّم، وتقرير يُولَّد. كل واحد من هذه ينتمي إلى طابور، ونقلها عادةً أكبر تحسين منفرد متاح.

طرف ثالث في المسار الحرج. بحث عن عنوان، أو خدمة ضرائب، أو استدعاء حالة لدى مزوّد دفع. زمن استجابتهم هو زمن استجابتك، وانقطاعهم انقطاعك، ولا يظهر أي منهما في تحليلك حتى تبحث عنه.

التسلسل. نقطة نهاية تعيد مئتي حقل لأن المورد كُتب على أنه "كل شيء في النموذج"، فيُهيّئ علاقات لينتج قائمة أسماء.

التخزين المؤقت كلصقة. التخزين المؤقت ليس مجانيًا - يشتري السرعة بقِدَم البيانات، والتطبيق الذي فيه عشرات المفاتيح غير المترابطة بلا استراتيجية إبطال قد قايض مشكلة أداء بمشكلة صحة.

التوسع، بعد أن يصير كفؤًا

عندها فقط تكون البنية التحتية هي الجواب، والترتيب مهم: تطبيق غير كفؤ يُوسَّع أفقيًا هو تطبيق غير كفؤ تدفع ثمنه عدة مرات.

وحين يكون مبرَّرًا، فالعمل نسخ قراءة بتوجيه يُقرَّر صراحةً لا عالميًا، ومخازن جلسات وتخزين مؤقت ليست قاعدة البيانات الأساسية، وعمّال طوابير يُوسَّعون بمعزل عن سعة الويب لأنهم يفشلون بشكل مختلف، ونشرٌ لا يُسقِط العمل الجاري. وOctane حيث يقول القياس إن إقلاع الإطار يشكّل فعلًا نسبة معتبرة من الطلب، وهو أقل تكرارًا مما توحي به سمعته.

ماذا تتسلّم

وثيقة اكتشافات مرتَّبة بالأولوية، كل مسألة فيها متتبَّعة إلى سببها ومقدَّرة بالجهد، والإصلاحات المنفَّذة كطلبات دمج قابلة للمراجعة، وإعداد ميزانية التكامل المستمر، ومقارنة قبل/بعد مقابل حركة الإنتاج بعد أن يعيش التغيير مدة كافية ليعني شيئًا.

وحيث يتبين أن السقف هو المعمارية نفسها - وهذا يحدث - تقول الاكتشافات ذلك، وتضع رقمًا للبديل بجانبه. تلك محادثة تُجرى في الأسبوع الأول لا في الملخص الختامي.

النطاق والشروط

نموذج التعاقد
نطاق محدّد يُتفق عليه كتابةً قبل بدء العمل. وليس أجرًا يوميًا مقابل قائمة مفتوحة.
السعر والمدة
يُحدَّدان لكل مشروع بعد تحديد النطاق، ويُعرضان معًا قبل بناء أي شيء.
ما نحتاجه منك
شخص واحد يملك اعتماد القرارات، ووصول إلى مستودعك ونظام تتبّع المهام لديك.
غير مشمول
كل ما يقع خارج النطاق المتفق عليه. فيصير نطاقًا مستقلًا لا أمر تغيير.
تكاليف الأطراف الثالثة
الاستضافة والتراخيص ورسوم الواجهات البرمجية واشتراكات الخدمات السحابية تتعاقد عليها وتدفعها أنت.
الفوترة
⁦Codefacture Yazılım A.Ş.⁩، تركيا. باليورو أو الدولار أو الجنيه الإسترليني عبر حوالة بنكية، دون ضريبة قيمة مضافة تركية على الخدمات المصدَّرة.

أسئلة متكررة

هل سيصلح Octane مشكلة الأداء لدينا؟
غالبًا لا، وقد يخفيها. يزيل Octane زمن إقلاع الإطار من كل طلب، وهذا حقيقي لكنه نادرًا ما يكون الكلفة الغالبة في تطبيق بطيء. إن كان الطلب يقضي 800 مللي ثانية في قاعدة البيانات، فالإقلاع الأسرع يوفّر لك 30 مللي ثانية ويُدخل حالة تبقى بين الطلبات. نقيس قبل أن نوصي به.
ألا نضيف خوادم أكثر وحسب؟
أحيانًا - التوسع الأفقي إجابة مشروعة حين يكون التطبيق كفؤًا والحركة كبيرة فحسب. وهو الإجابة الخطأ حين تُصدر نقطة نهاية واحدة أربعمئة استعلام، لأنك حينها تشتري أربعمئة استعلام بالتوازي. القياس هو ما يخبرك في أي الحالتين أنت.
كيف تقيسون دون إبطاء الإنتاج؟
بالعيّنات. مراقبة أداء تطبيقات بمعدل عيّنات منخفض، وسجل الاستعلامات البطيئة بعتبة معقولة، ومقاييس الطوابير الموجودة لديك أصلًا. وحيث لا يوجد شيء من ذلك، يكون تركيبه أول مُخرَج - فالتحسين مقابل حاسوب محمول هو كيف تصلح الفرق أشياء لم تكن بطيئة أبدًا.
ماذا لو كان الاختناق طرفًا ثالثًا؟
فذلك هو الاكتشاف، ويحوّل العمل من التحسين إلى العزل - ينتقل الاستدعاء إلى طابور، وتُضبط مهلة أقصر من صبرك، ويكفّ فشلهم عن أن يكون انقطاعك.
اتصل بنا+1 848 272 7583واتساب+90 850 308 5436البريدinfo@codefacture.comصفحة التواصل