برنامه نویسی

مقیاس پذیری در عمل: آنچه شما باید قبل از هر چیز باید درک کنید – قسمت 1

پیوند به پست در وبلاگ شخصی من: https://www.iago-ferreira.com/posts/escalaability-na-pratica-parte-1

اگر یک چیز وجود داشته باشد که هر دوره تدریس نمی کند و بسیاری از شرکت های بزرگ پنهان می شوند ، این اساسی در مورد چگونگی یک سیستم به تولید است. به نظر می رسد بی اهمیت است ، اما باور کنید: من با توسعه دهندگان ارشد آشنا شده ام که هرگز به استقرار احتیاج نداشته اند. این امر به این دلیل است که ، در شرکت های بزرگ ، معمول است که فرآیندهای بسیار بوروکراتیک و ابزارهای خودکار که از آن مراقبت می کنند ، باشد.

اما چه اتفاقی می افتد که شما این محیط را ترک می کنید و باید یک سیستم را به تنهایی در هوا قرار دهید؟ قبل از صحبت در مورد مقیاس پذیری ، ما باید درک کنیم که به معنای قرار دادن یک سیستم برای اجرای عمل در عمل چیست. این شامل اصول اولیه – نحوه کار اینترنت ، سرورها ، DNS و میزبانی – گرفته تا موضوعات پیچیده تر مانند استقرار و استراتژی های نظارت است.

و این جایی است که یک سؤال مهم مطرح می شود: قبل از صعود ، یک سیستم باید وجود داشته باشد. و برای مدت طولانی ، سیستم ها به سادگی و مستقیم ساخته شده اند ، بدون نگرانی عمده در مورد رشد. متداول ترین مدل یکپارچه بود: یک برنامه واحد که روی یک سرور اجرا می شود و تمام درخواست ها را برآورده می کند. برای چند کاربر ، این کار به خوبی کار کرد و کوهنوردی موضوع افزودن قدرت پردازش بیشتر بود. اما آیا وقتی در مورد هزاران یا میلیون ها درخواست صحبت می کنیم ، این رویکرد کار می کند؟

در عمل ، این واقعیت اکثر سیستم ها برای سالها بود و هنوز هم در اندازه خوبی یک مدل معتبر است. با این حال ، با افزایش تقاضا ، چالش هایی ایجاد می شود که باید برطرف شوند تا سیستم همچنان به طور کارآمد عمل کند.

یکپارچه و فوریت کاذب میکروسرویس

برای مدت طولانی ، سیستم ها به دنبال مدل MVC (مدل-نمای کنترل کننده) با فناوری هایی مانند .NET ، Java و PHP ساخته شدند. این سیستم ها به طور کلی بر روی یک دستگاه واحد اجرا می شوند ، جایی که تمام منطق کسب و کار ، جلسات کاربر و اتصالات پایگاه داده متمرکز بودند. این کار برای پروژه های کوچکتر خوب کار کرد ، اما وقتی تعداد کاربران شروع به رشد کرد ، چالش ها پدید آمد.

صعود از یک یکپارچه به تفکر متفاوت نیاز داشت: چگونه می توان جلسات کاربر را توزیع کرد؟ چگونه از تنگناها در بانک جلوگیری کنیم؟ چگونه بار روی سرور را کاهش دهیم؟ راه حل معمولاً برای جدا کردن بهتر اتصالات ، جلسات کاربر از بانکهای NOSQL به عنوان Redis و اجرای حافظه نهان برای کاهش دسترسی مستقیم به پایگاه داده بود. این یک کار دستی تر بود ، اما هنوز هم ممکن بود.

به عنوان مثال ، تصور کنید که سیستم شما هزاران کاربر به طور همزمان وارد سیستم شده اند و هرکدام باید یک جلسه فعال را روی سرور حفظ کنند. اگر این جلسات فقط در حافظه محلی ذخیره شود ، هر نمونه جدید برنامه ایجاد شده برای پشتیبانی از تقاضا این اطلاعات را از دست می دهد. این یکی از رایج ترین چالش ها در مقیاس بندی یک یکپارچه است و راه حل هایی مانند Redis به حفظ قوام جلسات بین موارد متعدد کمک می کند.

امروز ، با سهولت ابر ، این رویکرد در معرض سوء استفاده قرار گرفته است. زیرساخت های مقیاس پذیر با یک کلیک فاصله دارد و این باعث شده است که بسیاری از شرکت ها خیلی بیشتر از حد لازم هزینه کنند. به جای بهینه سازی یک سیستم یکپارچه برای پشتیبانی از حجم بیشتر ، بسیاری از تیم ها بدون اینکه ابتدا نیاز واقعی را تأیید کنند ، از حرکت مستقیم به میکروسرویس در دام قرار می گیرند.

این یکی از بزرگترین اشتباهات هنگام صحبت در مورد مقیاس پذیری است. ابر پیشرفت بزرگی را برای مقیاس پذیری به ارمغان آورده است ، اما بدون برنامه ریزی خوب ، هزینه می تواند به همان سرعت سیستم صعود کند. تقسیم یک سیستم به میکروسرویس بدون اندازه مناسب می تواند پیچیدگی های غیر ضروری ایجاد کند ، حفظ و افزایش هزینه ها بدون سود عملکرد واقعی را دشوار می کند. قبل از هر تصمیمی ، ضروری است بدانید که چگونه می توان تأثیر بار را بر روی سیستم اندازه گیری کرد و نحوه بهینه سازی آن را بدون از دست دادن کارآیی درک کرد.

علاوه بر این ، سیستم های توزیع شده چالش های جدیدی را به وجود می آورند ، مانند مشکل عدم اعتبار حافظه نهان ، که در آن چندین سرویس ممکن است در خدمت داده های منسوخ شده باشد زیرا آنها نمی توانند حافظه نهان را به درستی بین موارد باطل کنند. این نوع مشکل می تواند قوام داده ها را به خطر بیاندازد و باید در طراحی برنامه در نظر گرفته شود.

گاهی اوقات سرمایه گذاری در بهینه سازی یکپارچه قبل از شکستن خدمات می تواند هزاران دلار در زیرساخت ها پس انداز کند. به درستی اندازه گیری سیستم و آزمایش باری اقدامات اساسی برای اطمینان از انجام کارآمد و پایدار بودن مقیاس پذیری است.

اشتباه رایج در پذیرش میکروسرویس

بسیاری از شرکت ها از موارد موفقی مانند Netflix ، Uber و Amazon برای توجیه پذیرش میکروسرویس الهام گرفته شده اند ، اما از پیچیدگی این شرکت ها برای دستیابی به میلیون ها و میلیارد ها بازدید در سیستم های توزیع شده چشم پوشی می کنند. سخنرانی به عنوان تسلط بر هرج و مرجاز Netflix ، آنها نشان می دهند که برای کار در این سطح ، خیلی بیشتر از تقسیم یک سیستم طول می کشد: این امر به مدیریت ، اتوماسیون و یک فرهنگ Devop قوی نیاز دارد.

در عمل ، آنچه در بازار می یابیم ، یکپارچه های مدولار ضعیف ، خدمات ضعیف شکسته و زمینه هایی هستند که به سادگی بدون دیدگاه فنی قبلی به سیستم اضافه می شوند. اغلب خدمات میکروسرویس بدون درک نیازهای تجاری اجرا می شوند و در نتیجه سیستم هایی که نگهداری و صعود آن دشوار است ، انجام می شود.

علاوه بر این ، پذیرش میکروسرویس نیاز به تغییر در ذهنیت شرکت دارد. برای کار ، لازم است که یک فرهنگ جامد از DevOps ایجاد شود ، از وجود CI/CD ، آزمایش های خودکار ، کنترل زیرساخت ها و برنامه ریزی استقرار کارآمد اطمینان حاصل شود. بدون این ستون ها ، این شرکت خطر تعویض یک یکپارچه را برای صعود با یک مجموعه هرج و مرج از خدمات قطع شده دشوار می کند.

مقیاس پذیری کارآمد ساختمان بسیار فراتر از انتخاب بین یکپارچه و میکروسرویس است. آنچه واقعاً مهم است آگاهی از تأثیر هر تصمیم و اطمینان از برنامه ریزی و کنترل برای جلوگیری از مشکلات ساختاری در آینده است.

اتخاذ 12 عامل

یک رویکرد محکم برای هدایت ساخت و ساز سیستم های مقیاس پذیر و خوب ، پیروی از آن است 12 عامل تعریف شده توسط هروکو. این اصول شیوه های خوبی را برای توسعه برنامه های مدرن ایجاد می کند ، و اطمینان می دهد که قابل حمل ، انعطاف پذیر و آسان برای نگهداری هستند.

رویکرد 12 عامل از کنترل وابستگی و پیکربندی ، به استقرار ، مقیاس پذیری و شیوه های ورود به سیستم ساختاری. شرکت هایی که از ابتدا این اصول را اتخاذ می کنند ، سیستم های عامل را آسان تر می کنند و کمتر احتمال شکست های غیر منتظره را دارند.

مراحل بعدی

اگر این مقاله را دوست داشتید و می خواهید حتی بیشتر عمیق تر شوید ، در پست های بعدی وبلاگ برخی از این مفاهیم را با جزئیات بررسی می کنم. بیایید در مورد شیوه های خوب برای تعدیل سیستم ها ، استراتژی های کارآمد برای CI/CD و نحوه نظارت و بهینه سازی ریزگردها در عمل صحبت کنیم.

با ما همراه باشید و دفعه دیگر شما را می بینیم!


پیوندهای ذکر شده

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا