Snapchat معروف بين المراهقين والمراهقين. ربما تكون فوق 25 عامًا إذا لم تتمكن من معرفة كيفية عملها. يوفر Snapchat ، أحد أكثر تطبيقات الوسائط الاجتماعية شيوعًا ، للأطفال والمراهقين ما يريدون تمامًا: طريقة سهلة لمشاركة الأحداث العادية مع جعلها تبدو رائعة أيضًا.
على عكس Facebook و Twitter ، اللذان يسجلان وينشران كل ما تفعله ، يستخدم Snapchat الرسائل التي من المفترض أن تختفي (انظر كيف لا تفعل ذلك).
هناك الكثير عن Snapchat ، وإذا كنت مطورًا فهو أكثر من ذلك. لذلك ، سوف يمنحك هذا المنشور عرضًا عالي المستوى لـ Snapchat تصميم النظام والمزيد من الأفكار.
المُقدّمة
سناب شات هو مقره الولايات المتحدة الشبكات الاجتماعية التطبيق الذي يتيح للمستخدمين الاتصال على الفور ومشاركة الصور والمزيد.
- الرسائل والصور (أو اللقطات) لها حد زمني 24 ساعة. يشجع الناس على مشاركة قصصهم في مجموعات.
- يسمح Snap Map للمستخدمين برؤية مكان أصدقائهم على الخريطة.
- تذكر الذكريات المستخدمين بالصور التي حفظوها أو شاركوها بعد عام.
- يحظى Snapchat بشعبية كبيرة بين الأجيال الشابة ، وخاصة المراهقين. هناك 319 مليون مستخدم نشط على التطبيق ، ويتم إرسال 5.4 مليار لقطة كل يوم.
شروط تصميم مهمة
العمارة المتجانسة - يُعرف التطبيق أحادي الطبقة الذي يعمل بشكل مستقل عن التطبيقات الأخرى باسم monolith (بنية متجانسة). تم تصميم وحدة متراصة لأداء جميع الأنشطة المطلوبة والتعامل معها لإكمال المهمة. يقوم التطبيق بتنفيذ جميع الوظائف من البداية إلى النهاية.
Microservices - إنه عكس قطبي متراصة. Microservices هو نهج معماري ينظم التطبيق كمجموعة من الخدمات. تُستخدم هذه الخدمات للتحكم في العديد من جوانب التطبيق. يطلب الزبون طلبًا ، ويأخذه النادل ويسلمه ، ويقوم الطاهي بإعداده. في هذا المثال ، يعمل كل مكون بشكل مستقل ومنفصل عن العناصر الأخرى ؛ لا أحد يعرف بالضبط ما يفعله الآخرون ، ولا أحد لديه حق الوصول إلى نفس المعلومات.
JSON: هو تنسيق قائم على النص يمكن استخدامه لعرض كائنات JavaScript ، والحرفية ، والمصفوفات ، والبيانات. يهدف هذا التنسيق المستند إلى النص إلى أن يكون سهل القراءة والكتابة ، فضلاً عن أن يكون سهل الفهم بواسطة البرامج. يستخدم JSON بشكل شائع لنقل البيانات والمعلومات بين الخوادم والتطبيقات عبر الإنترنت.
تزامن: تُعرف تقنية أتمتة العديد من العمليات باسم التزامن. تشمل هذه الوظائف نظام الكمبيوتر وتكوين البرامج والتنسيق والإدارة.
الوكيل: يعمل الوكيل كوسيط بين العميل الذي يبحث عن مورد والخادم الذي يوفره.
شبك: شبكة الخدمة عبارة عن نمط معماري للبرامج يضيف طبقة إلى طبقة بنية تحتية للسماح بالاتصال المنظم والقابل للملاحظة والآمن بين الخدمات من خلال الوكيل.
تصميم عالي المستوى
مشاكل متجانسة
نشأ Snapchat كمترابط قائم على السحابة استنادًا إلى محرك تطبيقات Google. ومع ذلك ، مع ازدياد شعبية البرنامج واكتساب المزيد من المستخدمين والبيانات ، أصبحت قابلية التوسع مشكلة.
بالإضافة إلى ذلك ، مع وجود نصف قطر انفجار ضخم داخل كتلة متراصة ، كانت الاضطرابات على مستوى النظام أكثر احتمالا. تم تعريف إحدى مشكلات Snapchat على أنها "مأساة المشاعات" ، حيث تتنافس الميزات على الوصول إلى الموارد ؛ تم تحميل الميزات في وقت تشغيل التطبيق ، مما يسمح بتحميل بعض الميزات بشكل أسرع بينما يتم تحميل الميزات الأخرى بشكل أبطأ.
سعى المهندسون أيضًا إلى رؤية واضحة وفصل وملكية مكوناتهم من وجهة نظر التطوير ، بحيث يمكن أن تكون الخدمة مرنة وفعالة.
تحول
مع توسع Snapchat ، أدركت الشركة أنها بحاجة إلى تقسيم بنيتها التحتية المتجانسة إلى أجزاء أصغر وأكثر كفاءة. من أجل توفير زمن انتقال أقل ، قررت المنظمة تطوير تصميم قائم على الخدمات المصغرة.
لتحقيق هذه الأهداف ، اختارت Snapchat تحديث برامجه باستخدام Amazon DynamoDB ، وهي خدمة قاعدة بيانات NoSQL قابلة للتطوير. تمكنت الشركة من تقليل متوسط زمن الوصول بنسبة 20 ٪ نتيجة لجهودها.
تمت إعادة كتابة التطبيق في العديد من التطبيقات الأصغر من قبل الشركة. بدأ Snapchat بالعديد من التطبيقات ، بما في ذلك الكاميرا والدردشة والذكريات وتحرير الصور واستهلاك المحتوى والخريطة. على الرغم من أن دمج هذه البرامج في متراصة واحدة كان مناسبًا للمستهلكين ، إلا أنه طرح مشكلة فنية خطيرة من حيث الحفاظ على الأداء الجيد.
لإعادة الكتابة ، أنشأت الشركة العديد من القواعد الأساسية. لا تقم بالتحميل المسبق يجب أن تكون كل ميزة تطبيقًا خاصًا بها ، ويجب أن تكون سريعة. أوقف Snapchat التعديلات في عدة أماكن لتمكين إعادة الكتابة ، مما يجعلها مهمة فنية بحتة.
تكامل الميزات الإضافية
يحتوي تطبيق الكاميرا في Snapchat على عدسات وفلاتر و bitmojis والقدرة على إضافة رسوم متحركة للواقع المعزز ، من بين أشياء أخرى. يسمح تطبيق الدردشة Snapchat للمستخدمين أيضًا بتخزين الصور وحفظ المحادثات وإضافة الرموز والمزيد.
تتيح لك خريطة Snapchat ، من بين أشياء أخرى ، مراقبة الأصدقاء إذا أرادوا ذلك. الذكريات وتحرير الصور واستهلاك المحتوى كلها تطبيقات Snapchat منفصلة بقدراتها الفريدة.
تتيح لك الذكريات تخزين أو تعديل الصور أو مقاطع الفيديو لاستخدامها لاحقًا ، بالإضافة إلى تحميلها أو إرسالها. يمكن للمستخدمين أيضًا استخدام تحرير الصور لقص الأفلام وإضافة نص وإضافة ملصقات وغير ذلك.
يشير استهلاك المحتوى الخارجي لـ Snapchat إلى ما يعرضه للمستخدمين بناءً على مجموعة من المعلمات.
Microservices
اعتمد البرنامج بشكل كبير على JSON لإجراء استعلامات الشبكة في ذلك الوقت. ومع ذلك ، كان تحليل JSON مستهلكًا للوقت وغير فعال. استخدم Snapchat واجهة برمجة تطبيقات لإدارة الشبكة المركزية لإخفاء استخدام JSON كتفاصيل تنفيذ لمعالجة هذه المشكلة.
تقدم الخدمات المصغرة تحديات إدارة حالة التطبيق ، واتصال الخدمة ، وإدارة الأعطال. استخدم Snapchat تقنيات مفتوحة المصدر مثل Temporal للتغلب على صعوبات التنسيق من أجل بناء نظام قوي ويمكن الاعتماد عليه.
نتيجة لذلك ، قررت المنظمة استخدام نمط تصميم شبكة الخدمة. استخدم Snapchat Envoy ، وهي أداة أخرى مفتوحة المصدر تعمل كوكيل ، لتحقيق هذا النمط. أدار Envoy تدفق حركة مرور الخدمات عبر البنية التحتية ، مما أعطى المطورين رؤية للصعوبات المحتملة.
أنشأ Snapchat تطبيقًا داخليًا يسمى Switchboard داخل شبكة الخدمة. تعمل لوحة التبديل كلوحة تحكم لخدمات Snap ، مما يسمح للمستخدمين بتحويل حركة المرور ، وإدارة تبعيات الخدمة (وهي ميزة تتيح إدارة خدمة واحدة وفقًا لحالة الخدمات الأخرى) ، ومناطق الاستنزاف.
لتبسيط تعقيد التكوينات المحتملة داخل الخدمات ، تم استخدام Switchboard بدلاً من الكشف عن Envoy API بالكامل. لدى Snap شبكة داخلية وإقليمية مشتركة لخدماتها المصغرة بفضل شبكة الخدمة.
يمكن للخدمات داخل نفس المنطقة الاتصال ببعضها البعض دون استخدام الإنترنت العام ، ولا يمكن لأي حركة مرور خارجية للشبكة الاتصال بأجزاء الشبكة الداخلية.
يُسمح فقط لـ Gateways بتعريض نفسها للإنترنت لأسباب أمنية. قد تعمل بوابات API ، على سبيل المثال ، بسهولة كأبواب أمامية ، ومعالجة الطلبات من العملاء / المستخدمين وتوجيهها مع الشبكة.
بوابة الشبكة و API
تأتي جميع الاستفسارات من عميل Snapchat عبر بوابة API. إنه يستخدم نفس صورة Envoy ويتصل بنفس مستوى التحكم مثل خدماتنا المصغرة الداخلية. تسمح لنا طائرة التحكم الخاصة بنا بتمكين مرشحات Envoy المخصصة.
يتم التعامل مع أنظمة المصادقة الخاصة بـ Snapchat ، بالإضافة إلى تقنيات تحديد الأسعار وفصل الأحمال الخاصة بنا ، من خلال هذه المرشحات. يستخدم Envoy شبكة الخدمة لتوجيه الطلبات إلى الخدمة المصغرة ذات الصلة بعد اكتمال سلسلة التصفية.
وفي الختام
تقوم بوابة واجهة برمجة التطبيقات في Snapchat بتوجيه حركة المرور الخارجية إلى وظائف التطبيق العديدة. تتم إدارة طلبات المستخدمين لتعديل حالات التكوين عن طريق الخوادم ، ثم توفير بيانات ومعلومات حول خدمات التطبيق العديدة.
بشكل عام ، يمكن مقارنة تصميم Snapchat الحالي بعدة برامج تعمل على نظام تشغيل واحد ، وهو في هذه الحالة تطبيق Snapchat. حاولت جاهدًا أن أقدم لك نظرة عامة عالية المستوى على تصميم نظام Snapchat. أتمنى أن تكون قد وجدتها مفيدة.
اترك تعليق