طراحی و مدیریت میکروسرویسها، گزارش کنفرانس مدیر زیرساخت یوبیسافت در TGC 2017
من، رضا حاجمحمدی و آراییس نظریان در اتاق کنفرانس نشستهایم. به یکدیگر نگاه میکنیم و با چشمانمان از یکدیگر مهمترین و فلسفیترین سوال این لحظات را میپرسیم: ما در این کنفرانس چه کار میکنیم؟ بله، اولین کنفرانسی که در همایش 2017 TGC برای تهیهی گزارش در آن حاضر شدیم توسط بهرنگ خشنود ارائه میشد؛ کسی که رهبر گروه زیرساخت سرویسهای آنلاین یوبی سافت است. گوش سپردن به صحبتهای یک ایرانی که مسئول مدیریتِ سیستمها و سرویسهای آنلاین این شرکت است، هیجانانگیز به نظر میرسد؛ اما نه برای مایی که هیچ چیزی از این رشته سرمان نمیشود. پس تصمیم گرفتیم به دل ماجرا بزنیم و ببینم چه میشود. با این حساب، اگر گزارش پیش رو برایتان عجیب و غریب به نظر میرسد به بزرگی خودتان ببخشید!
خشنود ارائهاش را با اشاره به این موضوع شروع کرد که کارش در یوبیسافت را از سال ۲۰۰۶ آغاز کرده است. موضوع ارائهی خشنود بهطور کلی (تا آنجایی که ما متوجه شدیم) دربارهی زیرساخت میکروسرویسها و مدیریت آنها و مسیر آنها برای رسیدن به یک و نیم میلیون کاربر فعال بود. اما میکروسرویسها چه چیزهایی هستند؟ میکروسرویسها همانطور که از اسمشان مشخص است، خردهسرویسهایی با کاراییهای متفاوت و جداگانه هستند که به یکدیگر متصل میشوند و در عین حال، همگی آنها به یک سرور اصلی مرتبط هستند. در نتیجه شما با استفاده از سرور اصلی میتوانید تمام آنها را کنترل و مدیریت کنید. مثلا، شما همزمان در حال بازی کردن قسمت سوم Assassin's Creed روی پلیاستیشن هستید و بازی Assassin's Creed: Syndicate را روی ایکسباکس بازی میکنید. خب، در این حالت شما دارای دو دسته اطلاعات متفاوت هستید که روی دو پلتفرم مختلف ذخیرهسازی شدهاند و وظیفهی کسانی مثل خشنود و تیمش این است که زیرساختی توسعه دهند که این اطلاعات طی فرآیندی به یک مقصد برسد؛ مقصدی که پروفایل شما است و شما این توانایی را پیدا میکنید تا بازیهای مختلفتان را با یک پروفایل مدیریت کنید. او در ادامه به ساز و کار پروفایلهای کاربران روی سرویسهای آنلاین اشاره کرد؛ سرویسهایی مثل وال که نقشی مشابه صفحات شبکههای اجتماعی دارد و کاربران با استفاده از آن، متن و عکسهای خودشان را به اشتراک میگذارند. یا سرویس دوستان که کاربران را قادر به ارتباط با دیگر کاربران و تبادل اطلاعات بین یکدیگر میکند.
نکتهی دیگری که خشنود به آن اشاره کرد انتظارات دارندهی محصول از خدمات آنها است. مثلا او گفت که کمپانیها از آنها انتظار دارند که خدماتشان کارایی و پایداری داشته باشد و از لحاظ ظرفیتی انعطافپذیر باشد. خشنود گفت که هیچوقت نمیتوان به راحتی تعداد کاربران را پیشبینی کرد. مثلا ممکن است یک بازی موبایل معمولی و ساده بهطرز گستردهای بین مردم محبوب شود و بهطرز غافلگیرکنندهای کاربران زیادی را به خود جذب کند. در این موقعیت، سرویس باید قابلیت و توانایی انعطافپذیری برای میزبانی از تعداد زیادی از کاربران را داشته باشد؛ چرا که حتی خوابیدنِ سرور برای چند دقیقه میتواند به ضررهای مالی بزرگ و غیرقابل جبرانی برای کمپانی منجر شود.
نکتهی مهم بعدی این بود که خشنود و همکارانش نباید منتظر وقوع مشکلات برای سیستمشان شوند و بعد تازه به فکر رفع آنها بیفتند. بنابراین از ابزارهایی که در دستهی «مانیتور کارایی» سیستم قرار میگیرند استفاده میکنند. یکی از آنها ارزیابی تعداد تماسهای کاربر در هر ثانیه با سرویس است که سرویس قبل از آغاز به کار باید توانایی جوابگویی به تعداد مشخصی از آنها را داشته باشد، یا آمادهسازی سرویس برای تعداد کاربران حاضر در هر منطقه. نکتهی بعدی که راستش را بخواهید اسمش آنقدر عجیب و تخصصی بود که فراموش کردم (!)، به این موضوع میپرداخت که در صورتی که سرورها در حال استندبای باشند، سیستم جلوی هجوم همهی کاربران را میگیرد و آنها را برای جلوگیری از ازدحام سیستم، به نوبت و فاصلهدار از یکدیگر به سیستم راه میدهد.
خب، همینجا گزارش ما به پایان میرسد. البته که این کنفرانس بیش از ۵۰ دقیقه طول کشید و بعد از آن هم عدهای سوالاتهای پیچیدهای در این حوزه از خشنود پرسیدند و او هم با کمال میل آنها را پاسخ داد؛ اما از آنجایی که ما رسما چیز زیادی از هیچکدام از آنها متوجه نشدیم، پس با عرض شرمندگی، چیزی برای ارائه نداریم. یا اگر هم داشته باشیم، همهچیز آنقدر تخصصی بود که تکرار آنها در اینجا حوصلهتان را سر میبرد.
اما نتیجهگیری نهایی: هیچوقت در کنفرانسی با موضوع «نگاهی بنیادی بر تجربهی شخصی ما در استفاده از معماری میکروسرویسها و مروری بر مزایا و پیچیدگیهای معماری میکروسرویسها و نحوهی استفادهی ما از رابط برنامهنویسی گراف برای کار با داده بازیکنان» حاضر نشوید؛ مگر اینکه اینکاره باشید. ما برویم ناهارمان را بخوریم!