SRE چیست؟ هر آنچه باید درباره مهندسی قابلیت اطمینان بدانید

یک سیستم نرمافزاری که همزمان چندین سرویس را ارائه میدهد، در هر لحظه ممکن است با هزار مشکل مواجه شود. اما کاربران هیچ خطایی را تحمل نمیکنند و کوچکترین قطعی، موجی از پیامدها را به همراه دارد. مهندسی قابلیت اطمینان سایت (SRE) دقیقاً برای همین وضع طراحی شده است. در این مطلب از مجله دانشکار، با SRE و نقش حیاتی آن در تضمین عملکرد سیستمها، ارتباط آن با دواپس، نحوه کارکرد و معیارهای سنجش موفقیت و مزایای عملی آن برای سازمانها آشنا میشویم. این مطالعه به شما کمک میکند درک عمیقتری از مهندسی قابلیت اطمینان سایت پیدا کنید و بدانید چرا این رویکرد امروزه به یکی از ضروریترین بخشهای مدیریت نرمافزار تبدیل شده است.
SRE چیست؟
مهندسی قابلیت اطمینان سایت (SRE) یک رویکرد در مهندسی نرمافزار است که DevOps و عملیات سنتی فناوری اطلاعات را با هم ترکیب میکند تا مشکلات مشتریان را حل کند، وظایف عملیاتی IT را خودکارسازی کند، تحویل نرمافزار را سرعت ببخشد و ریسکهای فناوری اطلاعات را به حداقل برساند. از جمله مباحث مهم SRE، که در رودمپ DevOps هم به آنها پرداختهایم، میتوان به موارد زیر اشاره کرد.
قانون ۵۰ – ۵۰ در SRE
SRE از تابآوری، افزونگی و قابلیت اطمینان در چرخه DevOps پشتیبانی میکند و با اجرای روزمره برنامههای نرمافزاری سروکار دارد. مهندسان قابلیت اطمینان سایت معمولاً از قانون پنجاه-پنجاه پیروی میکنند:
- آنها نیمی از زمان خود را صرف حل مشکلات مشتریان مانند مدیریت ارجاعات بحرانی و پاسخ به رخدادها میکنند.
- و نیم دیگر را به خودکارسازی عملیات IT اختصاص میدهند.
این عملیات شامل مدیریت سیستمهای عملیاتی (Production)، مدیریت تغییرات، پاسخ به رخدادها و پاسخ به شرایط اضطراری است.
ارتباط SRE با تیم توسعه و کاربران
تیمهای SRE، شکاف بین نحوهای که توسعهدهندگان میخواهند برنامهها کار کنند و نحوه عملکرد آنها در شرایط واقعی را پر میکنند. مهندسان SRE، مستقیماً با مشتریان همکاری میکنند تا مشکلات آنها را عیبیابی کنند و دادههایی درباره تجربه کاربری جمعآوری کنند. سپس، تیمهای SRE این دادهها را در اختیار تیمهای توسعه قرار میدهند تا درک عمیقتری از عملکرد نرمافزار داشته باشند و بدانند چه بهروزرسانیهایی باید انجام شود.
مدیریت خطا و پیشبینی خرابیها
مهندسان SRE میدانند که بروز خطا اجتنابناپذیر است. وظیفه آنها این است که هم علت مشکلات فوری را (از طریق فرایندهایی مانند تحلیل ریشهای علت یا Root Cause Analysis) شناسایی کنند و هم با استفاده از دادههای مانیتورینگ و لاگگیری، خرابیهای احتمالی آینده را پیشبینی کنند. سپس با راهاندازی خودکارسازیها برای حل این مشکلات، تابآوری و افزونگی را در سیستم ایجاد این نظارت خودکار بر سیستمهای نرمافزاری در مقیاس بزرگ، نیاز به انجام دستی وظایف عملیاتی IT توسط مدیران سیستم را کاهش میدهد؛ در نتیجه، به تیمهای فناوری اطلاعات کمک میکند.
SRE چگونه کار میکند؟
مهندسی قابلیت اطمینان سایت یا SRE رویکردی است که با ترکیب اصول مهندسی نرمافزار و عملیات، به تیمها کمک میکند سرویسهای پایدار، مقیاسپذیر و قابل اعتماد ایجاد کنند. در این روش، مهندسان SRE با استفاده از خودکارسازی، پایش مداوم، مدیریت خطاها و بهبود عملکرد سیستمها، تلاش میکنند تجربه کاربری بهتر و دسترسپذیری بالاتری فراهم کنند. در ادامه با نحوه عملکرد SRE آشنا میشویم.
نقش و مهارتهای مهندس SRE
یک مهندس SRE به کسب تجربه در هر دو حوزه توسعه نرمافزار و عملیات IT نیاز دارد. درک این دو حوزه به تیمهای SRE کمک میکند تا نقش خود را در پشتیبانی از چرخه عمر توسعه نرمافزار بهدرستی انجام دهند. SRE بر پایه راهبردی از تابآوری بنا شده است که از طریق خودکارسازی مداوم فرایندها به دست میآید.

رویکرد سنتی و حرکت به سمت خودکارسازی
بهطور سنتی، فعالیتهای مهندسی قابلیت اطمینان سایت بر انجام عملیات IT و وظایف مدیریت سیستم متمرکز بود. این وظایف شامل تحلیل لاگها، بهینهسازی عملکرد، اعمال پچها، تست محیطهای عملیاتی (Production)، مدیریت رخدادها و برگزاری جلسات بررسی پس از حادثه (Postmortem) میشد.
این کارها در ابتدا بهصورت دستی انجام میشدند که زمانبر بود و احتمال خطای انسانی در آن بالا بود. رویکرد مدرن مهندسی قابلیت اطمینان سایت شامل خودکارسازی این وظایف دستی است.
اهمیت مانیتورینگ در SRE
مانیتورینگ نقش بسیار مهمی در SRE دارد. تیمهای SRE از ابزارهای مانیتورینگ استفاده میکنند تا بهصورت لحظهای بررسی کنند در سیستمهای نرمافزاری چه اتفاقی در حال رخ دادن است. مانیتورینگ امکان رفع سریع مشکلات فنی فوری را فراهم میکند و به تیمها کمک میکند مشکلات احتمالی آینده را پیشبینی کرده و پیش از وقوع آنها را برطرف کنند.
نقش لاگگیری و تحلیل دادهها
لاگها بهعنوان آرشیوی عمل میکنند که میتوان آنها را تحلیل کرد تا درک بهتری از نحوه عملکرد سیستمها به دست آورد و قابلیت مشاهدهپذیری سیستم افزایش یابد. لاگگیری یک نقشه مسیر ایجاد میکند که به تیمهای SRE کمک میکند زنجیره رویدادهایی را که باعث یک خطای پیشبینینشده شدهاند، درک کنند.
خودکارسازی برای جلوگیری از تکرار خطا
مهندسان میتوانند فرایند رفع خطا را خودکار کنند و از تکرار دوباره آن جلوگیری کنند. هم مانیتورینگ و هم لاگگیری به مهندسان کمک میکنند نقاط شکست را شناسایی کرده و مشکلات را از طریق خودکارسازی و بهصورت برنامهنویسیشده حل کنند، بهطوری که دیگر نیازی به رفع دستی آنها نباشد.
مهندسی آشوب (Chaos Engineering)
تیمهای SRE همچنین از طریق فرایندی به نام مهندسی آشوب به دنبال شناسایی ضعفهای سیستم هستند. مهندسی آشوب راهبردی است که مهندسان قابلیت اطمینان سایت اجرا میکنند تا عمداً در محیطهای عملیاتی و پیشعملیاتی اختلال ایجاد کنند. هدف از مهندسی آشوب این است که تأثیر خرابیهای عملیاتی بر سیستمهای نرمافزاری درک شود و برنامههای قویتری برای کاهش اثر خرابیها در آینده طراحی شود.
برنامهریزی ظرفیت و تعیین شاخصها
SRE همچنین بر برنامهریزی ظرفیت تمرکز دارد؛ فرایندی که منابع مورد نیاز برای اجرای عملکردهای حیاتی کسبوکار، مقیاسپذیری آن عملکردها و توسعه برنامهها و قابلیتهای جدید را تعیین میکند. علاوهبر این، تیمهای SRE معیارهایی تعریف میکنند که برای ارزیابی ارائه بهروزرسانیها و پیادهسازی قابلیتهای جدید مورد استفاده قرار میگیرند.
معیارهای SRE چیست؟
مهندسان قابلیت اطمینان سایت از معیارهای مختلفی استفاده میکنند تا میزان ثبات در ارائه خدمات و قابلاعتماد بودن سیستمهای نرمافزاری را ارزیابی و پیگیری کنند. این معیارها شامل موارد زیر هستند:

۱. توافقنامه سطح خدمات (SLA)
توافقنامه سطح خدمات یا SLA شرایط و ضوابط بین ارائهدهنده خدمات و مشتری را مشخص میکند. این توافقنامهها سطح عملکرد مورد انتظار، شاخصهای مورد توافق برای اندازهگیری عملکرد و پیامدهای عدم ارائه صحیح خدمات را تعیین میکنند. یکی از رایجترین مواردی که در SLA مشخص میشود «آپتایم» است؛ یعنی مدت زمانی که یک سرویس در دسترس کاربران قرار دارد.
۲. بودجه خطا (Error Budget)
بودجه خطا ابزاری است که تیمهای SRE از آن برای ایجاد تعادل خودکار بین میزان قابلاعتماد بودن سرویس و سرعت توسعه و نوآوری نرمافزار استفاده میکنند. بودجه خطا سطحی از ریسک خطا را تعیین میکند که با مفاد SLA همراستا باشد.
برای مثال، هدف آپتایم ۹۹.۹۹۹٪ که به «دسترسپذیری پنج نُه» معروف است، یک آستانه رایج در SLA محسوب میشود. این یعنی بودجه خطای ماهانه (یعنی مجموع زمان قطعی مجاز بدون پیامد قراردادی در یک ماه مشخص) حدود ۴ دقیقه و ۲۳ ثانیه است. اگر تیم توسعه بخواهد قابلیت یا بهبود جدیدی را در سیستم پیادهسازی کند، سیستم نباید از بودجه خطا تعیینشده عبور کرده باشد.
مزایای بودجه خطا
بودجه خطا به تیمهای توسعه و عملیات کمک میکند پایداری و عملکرد سرویسها را بهبود دهند. همچنین به آنها کمک میکند درباره انتشار قابلیتها یا برنامههای جدید بر اساس دادهها تصمیمگیری کنند و با پذیرش ریسک در چارچوبهای قابلقبول، نوآوری را به حداکثر برسانند.
۳. اهداف سطح خدمات (SLO)
تیمهای SRE همچنین در تعیین اهداف سطح خدمات یا SLO نقش دارند. SLO یک هدف عملکردی مورد توافق برای یک سرویس مشخص در یک بازه زمانی تعیینشده است. SLOها وضعیت مورد انتظار سرویسها را مشخص میکنند و به ذینفعان کمک میکنند سلامت سرویسها را مدیریت کرده و الزامات SLA را برآورده کنند.
۴. شاخصهای سطح خدمات (SLI)
اهداف سطح خدمات (SLO) از طریق شاخصهای سطح خدمات یا SLI اندازهگیری میشوند. SLIها معیارهای کمی هستند که معمولاً بهصورت درصد، میانگین یا نرخ بیان میشوند. این شاخصها شامل اندازهگیری واقعی مواردی مانند آپتایم، تاخیر (Latency)، توان عملیاتی (Throughput) و نرخ خطا هستند.
SRE و DevOps
DevOps یک روش توسعه نرمافزار است که با ترکیب و خودکارسازی کار تیمهای توسعه نرمافزار و عملیات IT، سرعت ارائه برنامهها و خدمات با کیفیت بالاتر را افزایش میدهد. DevOps چرخه عمر توسعه نرمافزار (SDLC) را خودکار میکند، مسئولیت مشترک بیشتری بین تیمهای توسعه و عملیات ایجاد میکند و به تمامی ذینفعان مرتبط امکان میدهد در SDLC مشارکت داشته باشند.

SRE و DevOps مکمل یکدیگر
SRE و DevOps استراتژیهای مکملی در مهندسی نرمافزار هستند که موانع بین تیمها را از بین میبرند و منجر به ارائه نرمافزار با کارایی و اطمینان بالاتر میشوند.
- تیمهای DevOps روی پاسخ به این سؤال تمرکز دارند: «این نرمافزار چه کاری باید انجام دهد؟»
- تیمهای SRE روی پاسخ به این سؤال کار میکنند: «چگونه میتوان این نرمافزار را مستقر و نگهداری کرد تا مطابق نیاز کار کند؟»
تیمهای SRE دادههای واقعی عملکرد نرمافزار را در اختیار تیمهای DevOps قرار میدهند و تعادلی بین دادههای عملی و دنیای نظری توسعه نرمافزار ایجاد میکنند.
تعادل بین سرعت و پایداری
مثل SRE، DevOps نیز به سازمانها کمک میکند تا چابکتر باشند و بین نیاز به ارائه سریع برنامهها و تغییرات و نیاز به جلوگیری از «خراب شدن» محیط عملیاتی تعادل برقرار کنند. هر دو هدف دارند خطای قابلقبول را تعیین کنند:
- تیمهای DevOps روی انتشار بهروزرسانیها و ویژگیهای جدید تمرکز میکنند.
- روشهای SRE اطمینان حاصل میکنند که سیستمها حتی در مقیاس بزرگ، پایدار باقی بمانند.
حلقه بازخورد بین تیمها
تیمهای DevOps و SRE روشهای ارتباطی را ساده میکنند و یک حلقه بازخورد مداوم ایجاد میکنند.
مثلاً: وقتی تیم SRE علت اصلی یک خطا را شناسایی میکند، یافتههای خود را به تیم DevOps میفرستد تا بهروزرسانی لازم برای نسخه بعدی نرمافزار آماده شود.
در همین حین، تیمهای SRE خودکارسازیهایی ایجاد میکنند تا مشکل را برطرف کنند و دادههای مانیتورینگ و لاگگیری را دنبال میکنند تا اطمینان حاصل شود که مسئله حل شده است.
مزایای SRE چیست؟
علاوه بر پشتیبانی از موفقیت DevOps، مهندسی قابلیت اطمینان سایت میتواند به سازمانها کمک کند تا:
۱. افزایش دید نسبت به سلامت سرویسها
با دنبال کردن معیارها، لاگها و ردگیریها در تمامی سرویسهای سازمان، تیمها میتوانند سلامت سیستمها را بهتر مشاهده کنند و توانایی تحلیل ریشهای خطاها (Root Cause Analysis) را تقویت کنند.
۲. بهبود قابلیت اطمینان سیستمهای نرمافزاری
از طریق تعامل روزمره با مشتریان و به اشتراکگذاری دادههای کاربران با تیمهای DevOps، قابلیت اطمینان نرمافزارها افزایش پیدا میکند.
۳. مقیاسپذیری سیستمها
با خودکار سازی فرایندهای دستی، وظایف تکراری کاهش یافته، خطاها کمتر میشوند و مشکلات با دقت بیشتری حل میشوند.
۴. محاسبه هزینه توقف سیستم
SRE به تیمهای توسعه و عملیات کمک میکند تا هزینههای ناشی از خرابی یا توقف سرویسها و نقض SLAها را درک کنند. همچنین به مدیریت کمک میکند تا اثر قابلیت اطمینان سیستم بر تولید، فروش، بازاریابی، خدمات مشتری و دیگر عملکردهای کسبوکار را کمیسازی کند.
۵. بهینهسازی پاسخ به رخدادها
با ایجاد فرآیندهای کارآمد برای شیفتهای آمادهباش (on-call) و سادهسازی جریانهای هشدار، پاسخ به رخدادها سریعتر و دقیقتر انجام میشود.
۶. ایجاد مرکز عملیات شبکه مدرن
ترکیب درک عمیق از عملیات IT با یادگیری ماشین و خودکارسازی، امکان ارسال هشدارها به مسئول مربوطه برای رسیدگی سریع به مشکل را فراهم میکند.

SRE، کلود و توسعه Cloud-Native
وقتی سازمانها از IT سنتی و دیتاسنترهای داخلی به محیطهای Hybrid Cloud مهاجرت میکنند، معمولاً حجم دادههای عملیاتی بیشتری تولید میشود. SRE نقش حیاتی در استفاده از این دادهها دارد تا مدیریت سیستمها، عملیات و پاسخ به رخدادها را خودکار کند و قابلیت اطمینان سازمان را بهبود دهد، مخصوصاً زمانی که محیط IT پیچیدهتر میشود.
رویکرد توسعه Cloud-Native؛ بهویژه ساخت برنامهها بهصورت میکروسرویس ر و استقرار آنها در کانتینرها، میتواند توسعه، استقرار و مقیاسپذیری برنامهها را سادهتر کند. با این حال، توسعه Cloud-Native محیطی پراکندهتر ایجاد میکند که مدیریت و عملیات IT را پیچیدهتر میسازد. بستر اجرای این کانتینرها و سرورها لینوکس است.
تیمهای SRE میتوانند از سرعت بالای نوآوری که توسعه Cloud-Native فراهم میکند، حمایت کنند و قابلیت اطمینان سیستمها را بهبود دهند، بدون اینکه فشار عملیاتی بیشتری به تیمهای DevOps وارد شود.
منبع: IBM




