معماری نتفلیکس و لینکدین

در ابتدا میکروسرویس ها، مزایا و ارزیابی آن مورد بررسی قرار گرفت، بعد از آن معماری نتفلیکس وسپس معماری لیندین مورد بررسی قرار گرفت.در ادامه، ما قصد داریم به چند ویژگی کیفی برای نتفلیکس و لیندین بپردازیم و یک مقایسه ای از این دو معماری با نشان دادن مدل C4 نتفلیکس و لیندین داشته باشیم با این مقایسه معماری نتفلیکس و لیندین قابل ملاحظه است.چند ویژگی کیفی مربوط به لینکدین، چابکی: باید به صورت چابک و سریع تغییرپذیری صورت بگیرد، اعمال تغییرات کمتر از ۲۴ ساعت، آزمایش پذیری: باید قابل تست باشد تا سریعتر تغییرات اعمال شده را انجام داد و به صورت چابک در دسترس قرار گیرد.در دسترس بودن: باید در دسترس باشد تا از دستگاه های مختلف قابل دسترسی باشد. مقیاس پذیری: چقدر سیستم می تواند رشد کند تا کاربران، سرورها یا سایر برنامه های افزودنی بیشتری را مدیریت کند.عملکرد: سیستم چقدر سریع و قابل پیش بینی به ورودی های کاربر یا رویدادهای دیگر پاسخ می دهد.قابلیت اطمینان: چه مدت سیستم قبل از تجربه خرابی کار می کند.استحکام: اینکه سیستم چقدر به شرایط عملیاتی غیرمنتظره پاسخ می دهد.ایمنی: چقدر سیستم در برابر آسیب یا آسیب محافظت می کند.امنیت: تا چه اندازه سیستم در برابر دسترسی غیرمجاز به برنامه و داده های آن محافظت می کند.چند ویژگی کیفی مربوط به نتفلیکس،در دسترس بودن: نتفلیکس تقریباً در همه کشورها (به استثنای چین، سوریه، کره شمالی و کریمه) در دسترس است.صحت: نتفلیکس فیلم یا نمایش تلویزیونی را که انتخاب کرده ایم نمایش می دهد و بنابراین همیشه ویژگی کیفیت صحت را در خود جای می دهد.کارایی: تماشای نمایش‌های تلویزیونی یا فیلم‌ها در نتفلیکس حدود 1 گیگابایت داده در ساعت برای هر جریان ویدیو با کیفیت استاندارد و حداکثر 3 گیگابایت در ساعت برای هر جریان ویدیوی HD مصرف می‌کند. این داده‌های زیادی است که استفاده می‌شود و بنابراین، پتانسیل کاهش آن به منظور کارآمدتر کردن آن وجود دارد.انعطاف‌پذیری: نتفلیکس به اضافه کردن نمایش‌ها و فیلم‌های جدید ادامه می‌دهد که احساس می‌کنند در بین مخاطبان محبوب خواهند بود. نتفلیکس با استفاده از تجزیه و تحلیل داده ها سعی می کند پیش بینی کند که آیا یک نمایش مورد پسند مردم خواهد بود یا خیر و سپس بر اساس تجزیه و تحلیل داده ها اضافه می شود یا خیر. همچنین، نتفلیکس یک ویژگی تعاملی را معرفی کرده است که به کاربر امکان انتخاب و در نتیجه تصمیم گیری در مورد جریان فیلم را می دهد.قابلیت حمل: نتفلیکس از 2200 دستگاه مختلف از جمله تلویزیون هوشمند، اندروید، IOS، کنسول های بازی، برنامه های وب و غیره پشتیبانی می کند و در نتیجه نشان می دهد که بسیار قابل حمل است. همه این برنامه ها در کد مخصوص پلتفرم نوشته شده اند.قابلیت اطمینان: سرورهای Netflix به ندرت از کار می افتند، و در موارد عجیب و غریب کار نمی کنند، تیم فنی آن را به سرعت پشتیبان می گیرد و بسیار قابل اعتماد است.قابلیت استفاده: نتفلیکس توضیح بسیار دقیقی در مورد نحوه عملکرد خود از طریق "مرکز کمک" خود ارائه کرده است که می تواند کاربران جدید را قادر سازد تا به سرعت با ویژگی های آن آشنا شوند.ایمنی: هیچ شانسی برای کاربر وجود ندارد که آسیب ببیند زیرا آنها فقط نشسته اند و از نمایش/فیلم لذت می برند و در نتیجه ویژگی کیفیت ایمنی را در خود جای داده اند.معماری لایه ای لیندین:یک صفحه وب اطلاعات A و B در خواست می شود، این لایه روی ساخت UI تمرکز دارد، این لایه با درخواست های موازی به سرویس BST صفحات را به هم مونتاژ می کند. لایه سرویس بیزینس، بیزینس لاجیک را کپسوله می کند. این لایه می تواند دیگر خوشه های BST و خوشه DST خودش را صدا می زند. منطق DAL رو کپسوله می کند و به لایه آخر دسترسی راحت به داده ها را فراهم کند. تکنولوژی پایگاه داده مثل (, Espresso, Oracle, Voldemort)، تکنولوژی مرتبط با Data replication مثل، (Kafka, Database)، تکنولوژی جستجو مثل (Zoie-real-time search, Bobo, SenseiDB-fast real time که سریع و real time عمل می کند.)معماری لایه ای لینکدینمعماری نتفلیکس:در ادامه بخشی از معماری backend نتفلیکس را می توان ملاحظه نمود:‌Backend Netflix Architectureوسایل مختلف از طریق ELB به API Gateway متصل می شود. از طریق API Gateway به Application API دسترسی پیدا می کند که از طریق آن کاربر می تواند رجیستر کندُ پرداخت ها را انجام دهد، فیلم را اجرا کند و فیلم مورد نظر را جستجو کند، Application API به آرایه ای از میکروسرویس ها دسترسی می یابد که در صورت وجود اطلاعات در کش از آن استفتده می کند در غیر این صورت باید از طریق ذخیره داده استفاده کند. مولفه Zull برای فلتر کردن فیلم ها مورد استفاده قرار می گیرد، میکروسرویس ها در انتهای هر End point قرار گرفته است که در خواست ها را از این طریق به میکرو سرویس ها منتقل می کند. هر منطقه کش خود را دارد و هر منطقه تعدادی Endpoint دارد برای دسترسی به میکروسرویس ها، دو نوع دیتا بیس مورد استفاده قرار می گیرد، (NOSQL و MYSQL) که MYSQL برای نگهداری اطلاعات کاربران (برای ارسال پیشنهادات جهت دیدن فیلم ها و سریال های مورد علاقه)، تراکنش ها و .. قرار می گیرد و NOSQL که نوع Casandra مورد استفاده قرار گرفته است برای دانلود و استریم فیلم ها مورد استفاده قرار می گیرد.نتقلیکس سه مولفه اصلی دارد، مثل Client ,Cloud AWS, openConnect (OC) که در آن Client ها همان دیوایس هایی هستند که از جاهای مختلف به نتفلیکس متصل می شوند. هر چیزی که Video streaming را درگیر نمی کند توسط Cloud AWS مدیریت می شود. openConnect یک content delivery network است و هر آنچه مربوط به streaming‌است توسط آن مدیریت می شود.مدل C4 برای لینکدین:- بخش اول Context System:شامل محیط کلی لینکدین است. در این محیط کاربران و المان هایی هستند که با لیندین در ارتباط اند.نمودار زمینه سیستم (System Context) که نقطه شروع خوبی برای نمودارسازی و مستندسازی یک سیستم نرم افزاری است. شکل ۱ یک نمونه نمودار زمینه سیستم برای لینکدین نشان داده شده است. بخش های مختلف لیندین (پیام ها، نوتیفیکیشن ها، پست ها، تغییرات اعمال شده، شغل های معرفی شده و ...) و نحوه ارتباط کاربر با این بخش ها نشان داده شده است.Context System(LinkedIn)- بخش دوم Container diagram:شکل زیر، سطح بالای معماری نرم افزار لیندین و نحوه ی توزیع مسئولیت ها نشان داده شده است.Container Diagram(LinkedIn)- بخش سوم Component diagram:مولفه های مختلف در لیندین را در شکل زیر می توان دید، این مولفه ها شامل (sign in, Reset password, Security, job find, find people, find group & company, find info & post)Component Diagram(LinkedIn)- بخش چهارم Class diagram:بخشی از کلاس های اصلی لینکدین در شکل زیر قابل ملاحظه است.Class Diagram(LinkedIn)- بخش اول Context System:شامل محیط کلی نتفلیکس است. در این محیط کاربران و المان هایی هستند که با نتفلیکس در ارتباط اند.نمودار زمینه سیستم (System Context) که نقطه شروع خوبی برای نمودارسازی و مستندسازی یک سیستم نرم افزاری است. شکل زیر یک نمونه نمودار زمینه سیستم برای نتفلیکس نشان داده شده است. بخش های مختلف نتفلیکس (جستجو برای فیلم، عضویت، قیلم و سریال آنلاین، دانلود فیلم و سریال، و ...) و نحوه ارتباط دستگاه های مختلف با این بخش ها نشان داده شده است.Context System(Netflix)- بخش دوم Container Diagram:شکل زیر، سطح بالای معماری نرم افزار نتفلیکس و نحوه ی توزیع مسئولیت ها نشان داده شده است.Container Diagram(Netflix)- بخش سوم Component Diagram:مولفه های مختلف در لیندین را در شکل زیر می توان دید، این مولفه ها شامل (sign in, Reset password, Security, find (Movies or Series), Stream Movies/Series, Download Movies/Series, Payment & Suggest)مولفه Suggest بر اساس فیلم هایی که توسط کاربر یا دوستانش دیده می شود، فیلم ها یا سریال هایی را پیشنهاد می دهد.Component Diagram(Netflix)- بخش چهارم Class Diagram:بخشی از کلاس های اصلی نتفلیکس در شکل زیر قابل ملاحظه است.Class Diagram(Netflix)با توجه به مدل C4 در هر دو نمونه لینکدین و نتفلیکس می توان تفاوت کلی معماری هر را مورد ملاحظه قرار داد.«این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است»