كيف جعلنا تيغانت في بي ان أسرع!

يرسل لنا العديد من عملائنا ملاحظات بشكل منتظم حول تيغانت، وهو أمر مفيد للغاية لنا ويسمح لنا بتحسين التطبيق باستمرار. شيء واحد غالبا ما نشيد به هو مدى سرعة تيغانت. لقد أثرت هذه التعليقات فينا وجعلتنا نتساءل عما إن كان بإمكاننا جعل تيغانت يتصل بشكل أسرع!

VPN أسرع الصورة بواسطة Taras Makarenko

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

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

نقل قاعدة البيانات بالقرب من واجهة برمجة التطبيقات المركزية

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

زيادة سعة ذاكرة الخادم

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

نشر الحركة عبر الخوادم

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

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

اختيار خوارزمية تشفير كلمات مرور أسرع وأكثر أمانا

في كل مرة ينقر فيها المستخدم على زر البدء، يجب التحقق من بياناته بواسطة خادمنا المركزي قبل منح الوصول. برنامج التحقق من كلمة المرور الذي استخدمناه سابقًا كان نسخة من Sha-256 مكتوبة بلغة البرمجة Python. قمنا بمحاكاة 10 عمليات تشفير لكلمات المرور، استغرق إنجازها 3.9 ثانية.

s = """\
from passlib.hash import sha256_crypt
h = sha256_crypt.hash("password")
"""
t = timeit.timeit(stmt=s, number=10)
print(t)
3.9277894550468773

بالمقارنة، استخدمنا منهجية تشفير Argon2 بدلا من ذلك. استغرق إنجاز نفس السيناريو 1.7 ثانية. هذا أسرع بنحو 2.3 مرة مما يعني أنه يتعين على المستخدم الانتظار لفترة أقصر بكثير حتى يتم التحقق من البيانات و انشاء الاتصال.

import timeit
s = """\
from passlib.hash import argon2
h = argon2.hash("password")
"""
t = timeit.timeit(stmt=s, number=10)
print(t)
1.7192389100091532

يستخدم Argon2 مكتبة برمجية قائمة على لغة البرمجة C، مما يجعلها أسرع من نسخة Sha-256 المكتوبة بلغة البرمجة Python التي كانت لدينا من قبل. لا يعني استخدام Argon2 بدلا من Sha-256 لتشفير كلمات المرور أننا قد فضلنا السرعة على الأمان. في الواقع، تعد Argon2 أحدث منهجية تشفير و قد فازت في مسابقة Password Hashing في يوليو 2015.

احصل على تيغانت في بي ان الآن وجربه مجانا.