فهرست مندرجات[پنهان شدن][نمایش]
اسنپ چت در بین نوجوانان و نوجوانان بسیار شناخته شده است. اگر نتوانید بفهمید که چگونه کار می کند، احتمالا بالای 25 سال دارید. اسنپ چت، یکی از محبوبترین برنامههای رسانههای اجتماعی، دقیقاً همان چیزی را در اختیار کودکان و نوجوانان قرار میدهد که میخواهند: روشی آسان برای اشتراکگذاری رویدادهای معمولی و در عین حال جذاب جلوه دادن آنها.
بر خلاف فیسبوک و توییتر که هر کاری را که انجام میدهید ضبط و منتشر میکنند، اسنپچت از پیامهایی استفاده میکند که قرار است ناپدید شوند (ببینید چگونه این کار را نمیکنند).
در مورد اسنپ چت چیزهای زیادی وجود دارد، و اگر توسعه دهنده هستید، حتی بیشتر است. بنابراین، این پست نمای سطح بالایی از اسنپ چت را در اختیار شما قرار می دهد طراحی سیستم و بینش های بسیار بیشتر
معرفی
اسنپ چت مستقر در ایالات متحده است شبکه های اجتماعی برنامه ای که به کاربران امکان می دهد فوراً متصل شوند، تصاویر را به اشتراک بگذارند و موارد دیگر.
- پیام ها و تصاویر (یا عکس ها) دارای محدودیت زمانی 24 ساعته هستند. افراد را تشویق می کند تا داستان های خود را در گروه به اشتراک بگذارند.
- اسنپ مپ به کاربران این امکان را می دهد تا ببینند دوستانشان در کجا هستند.
- خاطرات کاربران را به یاد عکس هایی می اندازد که یک سال بعد ذخیره یا به اشتراک گذاشته اند.
- اسنپ چت بین نسل های جوان، به ویژه نوجوانان، بسیار محبوب است. 319 میلیون کاربر فعال در برنامه وجود دارد و روزانه 5.4 میلیارد اسنپ ارسال می شود.
شرایط مهم طراحی
معماری یکپارچه - یک برنامه تک لایه که مستقل از سایر برنامه ها عمل می کند به عنوان یکپارچه (معماری یکپارچه) شناخته می شود. یکپارچه برای انجام و مدیریت تمام فعالیت های مورد نیاز برای تکمیل یک کار طراحی شده است. این برنامه همه عملکردها را از ابتدا تا انتها انجام می دهد.
سرویس های Microservice - نقطه مقابل یکپارچه ها است. سرویس های Microservice یک رویکرد معماری است که یک برنامه کاربردی را به عنوان مجموعه ای از خدمات سازماندهی می کند. این سرویس ها برای کنترل بسیاری از جنبه های یک برنامه کاربردی استفاده می شوند. یک مشتری سفارش می دهد، یک گارسون آن را می گیرد و تحویل می دهد و یک آشپز آن را آماده می کند. در این مثال، هر جزء به طور مستقل و جدا از سایرین عمل می کند. هیچ کس دقیقاً نمی داند که دیگران چه می کنند و هیچ کس به اطلاعات مشابه دسترسی ندارد.
JSON: این یک فرمت مبتنی بر متن است که می تواند برای نمایش اشیاء جاوا اسکریپت، حروف الفظی، آرایه ها و داده ها استفاده شود. این قالب مبتنی بر متن برای خواندن و نوشتن ساده و همچنین قابل هضم توسط نرم افزار در نظر گرفته شده است. JSON معمولاً برای انتقال داده ها و اطلاعات بین سرورها و برنامه های آنلاین استفاده می شود.
تنظیم و ارکستراسیون: تکنیک خودکارسازی بسیاری از عملیات ها به عنوان ارکستراسیون شناخته می شود. این مشاغل شامل پیکربندی سیستم کامپیوتری و نرم افزار، هماهنگی و مدیریت می باشد.
نماینده: یک پروکسی به عنوان یک واسطه بین مشتری به دنبال منبع و سروری که آن را ارائه می دهد عمل می کند.
شبکه: سرویس مش یک الگوی معماری نرم افزاری است که یک لایه را به لایه زیرساخت اضافه می کند تا امکان برقراری ارتباط منظم، قابل مشاهده و ایمن را بین سرویس ها از طریق پروکسی فراهم کند.
طراحی سطح بالا
مشکلات یکپارچه
اسنپ چت به عنوان یک مونولیت مبتنی بر ابر بر اساس موتور برنامه گوگل ایجاد شد. با این حال، با افزایش محبوبیت این برنامه و افزایش کاربران و داده های بیشتر، مقیاس پذیری به یک مسئله تبدیل شد.
علاوه بر این، با شعاع انفجار بزرگ در داخل یکپارچه، اختلالات در سراسر سیستم امکان پذیرتر بود. یکی از مشکلات اسنپ چت به عنوان "تراژدی عوام" تعریف شد که در آن ویژگی ها برای دسترسی به منابع رقابت می کردند. ویژگیها در زمان راهاندازی برنامه بارگیری میشدند، و به برخی از ویژگیها اجازه میداد سریعتر بارگذاری شوند، اما سایر ویژگیها کندتر بارگذاری شوند.
مهندسان همچنین به دنبال دید واضح، جداسازی و مالکیت اجزای خود از نقطه نظر توسعه بودند تا این سرویس بتواند انعطافپذیر و کارآمد باشد.
دگرگونی
با گسترش اسنپ چت، شرکت متوجه شد که باید زیرساخت های یکپارچه خود را به قطعات کوچکتر و کارآمدتر تقسیم کند. به منظور کاهش تأخیر، سازمان تصمیم به توسعه یک طرح مبتنی بر میکروسرویس گرفت.
برای تحقق این اهداف، اسنپ چت تصمیم گرفت نرم افزار خود را با استفاده از Amazon DynamoDB، یک سرویس پایگاه داده مقیاس پذیر NoSQL، به روز کند. این شرکت در نتیجه تلاش های خود توانست تاخیر متوسط را تا 20 درصد کاهش دهد.
این برنامه توسط این شرکت در چندین برنامه کوچکتر بازنویسی شد. اسنپ چت با برنامه های متعددی از جمله دوربین، چت، حافظه، ویرایش تصویر، مصرف محتوا و نقشه آغاز شد. اگرچه ادغام این برنامهها در یک مونولیت برای مصرفکنندگان راحت بود، اما از نظر حفظ عملکرد خوب، یک مشکل فنی جدی ایجاد کرد.
برای بازنویسی، شرکت قوانین اساسی بسیاری را وضع کرد. از پیش بارگذاری نکنید. هر ویژگی باید برنامه مخصوص به خود باشد و باید سریع باشد. اسنپ چت تغییرات را در چندین مکان متوقف کرد تا بازنویسی را فعال کند و آن را کاملاً یک کار فنی کرده است.
ادغام ویژگی های اضافی
اپلیکیشن دوربین اسنپ چت دارای لنزها، فیلترها، بیتموجیها و قابلیت افزودن انیمیشنهای واقعیت افزوده و موارد دیگر است. برنامه چت اسنپ چت همچنین به کاربران اجازه می دهد عکس ها را ذخیره کنند، گفتگوها را ذخیره کنند، شکلک ها و موارد دیگر را اضافه کنند.
نقشه اسنپ چت، از جمله موارد دیگر، به شما این امکان را می دهد که در صورت تمایل، دوستان را زیر نظر داشته باشید. حافظه ها، ویرایش عکس و مصرف محتوا همگی برنامه های جداگانه اسنپ چت با قابلیت های منحصر به فرد خود هستند.
حافظهها به شما امکان میدهند عکسها یا ویدیوها را برای استفاده بعدی ذخیره یا تغییر دهید، و همچنین آنها را آپلود یا ارسال کنید. کاربران همچنین می توانند از ویرایش تصویر برای برش فیلم، اضافه کردن متن، افزودن برچسب و موارد دیگر استفاده کنند.
مصرف محتوای خارجی اسنپ چت به چیزی که بر اساس طیف وسیعی از پارامترها به کاربران نشان می دهد اشاره دارد.
سرویس های Microservice
این برنامه برای انجام پرس و جوهای شبکه در آن زمان به شدت به JSON وابسته بود. با این حال، تجزیه JSON زمانبر و ناکارآمد بود. اسنپ چت از یک API مدیریت شبکه متمرکز برای پنهان کردن استفاده از JSON به عنوان جزییات پیاده سازی برای مقابله با این مشکل استفاده کرد.
میکروسرویس ها چالش های مدیریت وضعیت برنامه، ارتباطات سرویس و مدیریت خرابی را معرفی می کنند. اسنپ چت از فناوری های منبع باز مانند Temporal برای غلبه بر مشکلات ارکستراسیون به منظور ایجاد یک سیستم قوی و قابل اعتماد استفاده کرد.
در نتیجه، سازمان تصمیم گرفت از الگوی طراحی مش خدمات استفاده کند. اسنپ چت از Envoy، ابزار منبع باز دیگری که به عنوان یک پروکسی عمل می کند، برای دستیابی به این الگو استفاده کرد. Envoy جریان ترافیک خدمات را از طریق زیرساخت مدیریت می کرد و به توسعه دهندگان امکان دید مشکلات احتمالی را می داد.
Snapchat یک برنامه داخلی به نام Switchboard در داخل سرویس مش ایجاد کرد. Switchboard به عنوان یک کنترل پنل برای سرویسهای Snap عمل میکرد و به کاربران اجازه میداد ترافیک را تغییر دهند، وابستگیهای سرویس را مدیریت کنند (ویژگی که اجازه میدهد یک سرویس بسته به شرایط سرویسهای دیگر مدیریت شود) و مناطق را تخلیه کنند.
برای سادهسازی پیچیدگی پیکربندیهای بالقوه در سرویسها، از Switchboard به جای افشای کل Envoy API استفاده شد. اسنپ یک شبکه داخلی و منطقه ای مشترک برای ریزسرویس های خود به لطف مش سرویس دارد.
سرویسهای داخل یک منطقه میتوانند بدون استفاده از اینترنت عمومی به یکدیگر متصل شوند و هیچ ترافیک شبکه خارجی نمیتواند با بخشهای شبکه داخلی ارتباط برقرار کند.
فقط دروازهها مجاز خواهند بود به دلایل امنیتی خود را در معرض اینترنت قرار دهند. برای مثال، دروازههای API، ممکن است به راحتی به عنوان درهای ورودی، درخواستهای مشتریان/کاربران را پردازش کرده و آنها را همراه با شبکه مسیریابی کنند.
دروازه شبکه و API
تمام درخواست های مشتری اسنپ چت از طریق دروازه API انجام می شود. از همان تصویر Envoy استفاده می کند و به همان Control Plane با میکروسرویس های داخلی ما متصل می شود. Control Plane به ما امکان می دهد فیلترهای Envoy سفارشی را فعال کنیم.
سیستمهای احراز هویت اسنپ چت، و همچنین فناوریهای محدودکننده نرخ و کاهش بار، توسط این فیلترها مدیریت میشوند. Envoy از Service Mesh برای هدایت درخواست ها به میکروسرویس مربوطه پس از تکمیل زنجیره فیلتر استفاده می کند.
نتیجه
دروازه API اسنپ چت ترافیک خارجی را به بسیاری از عملکردهای برنامه هدایت می کند. درخواستهای کاربران برای تغییر وضعیتهای پیکربندی توسط سرورها مدیریت میشوند که سپس داده ها را ارائه دهد و اطلاعات به خدمات متعدد برنامه باز می گردد.
به طور کلی، طراحی فعلی اسنپ چت را می توان با چندین برنامه در حال اجرا بر روی یک سیستم عامل مقایسه کرد که در این مورد برنامه اسنپ چت است. من بسیار تلاش کردم تا یک نمای کلی از طراحی سیستم اسنپ چت در سطح بالایی به شما ارائه کنم. امیدوارم مفید بوده باشد.
پاسخ دهید