مهندسی قابلیت اطمینان سایت چیست؟
مهندسی قابلیت اطمینان سایت (SRE) روشی برای استفاده از ابزارهای نرمافزاری برای خودکارسازی وظایف زیرساخت فناوری اطلاعات مانند مدیریت سیستم و نظارت بر برنامه است. سازمانها از SRE برای اطمینان از اینکه برنامههای نرمافزاریشان در میان بهروزرسانیهای مکرر از تیمهای توسعه، قابل اعتماد باقی میمانند، استفاده میکنند. SRE بهویژه قابلیت اطمینان سیستمهای نرمافزاری مقیاسپذیر را بهبود میبخشد، زیرا مدیریت یک سیستم بزرگ با استفاده از نرمافزار پایدارتر از مدیریت دستی صدها دستگاه است.
چرا مهندسی قابلیت اطمینان سایت مهم است؟
قابلیت اطمینان سایت، پایداری و کیفیت خدماتی را که یک برنامه پس از در دسترس قرار گرفتن برای کاربران نهایی ارائه میدهد، توصیف میکند. نگهداری نرمافزار گاهی اوقات اگر مشکلات فنی شناسایی نشوند، بر قابلیت اطمینان نرمافزار تأثیر میگذارد. به عنوان مثال، هنگامی که توسعهدهندگان تغییرات جدیدی ایجاد میکنند، ممکن است ناخواسته بر برنامه موجود تأثیر بگذارند و باعث از کار افتادن آن در برخی موارد استفاده شوند.
برخی از مزایای روشهای مهندسی قابلیت اطمینان سایت (SRE) :
- همکاری بهبودیافته:
- SRE همکاری بین تیمهای توسعه و عملیات را بهبود میبخشد. توسعهدهندگان اغلب باید تغییرات سریعی در یک برنامه ایجاد کنند تا ویژگیهای جدید را منتشر کنند یا اشکالات حیاتی را برطرف کنند. از طرف دیگر، تیم عملیات باید از ارائه خدمات بدون نقص اطمینان حاصل کند. از این رو، تیم عملیات از روشهای SRE برای نظارت دقیق بر هر بهروزرسانی و پاسخگویی سریع به هر مشکلی که ناشی از تغییرات است، استفاده میکند.
- تجربه مشتری بهبودیافته:
- سازمانها از مدل SRE برای اطمینان از اینکه خطاهای نرمافزاری بر تجربه مشتری تأثیر نمیگذارند، استفاده میکنند. به عنوان مثال، تیمهای نرمافزاری از ابزارهای SRE برای خودکارسازی چرخه عمر توسعه نرمافزار استفاده میکنند. این امر خطاها را کاهش میدهد، به این معنی که تیم میتواند توسعه ویژگیهای جدید را بر رفع اشکالات اولویت دهد.
- برنامهریزی عملیات بهبودیافته:
- تیمهای SRE میپذیرند که احتمال واقعی خرابی نرمافزار وجود دارد. بنابراین، تیمها برای پاسخ مناسب به حادثه برنامهریزی میکنند تا تأثیر خرابی را بر کسبوکار و کاربران نهایی به حداقل برسانند. آنها همچنین میتوانند هزینه خرابی را بهتر تخمین بزنند و تأثیر چنین حوادثی را بر عملیات تجاری درک کنند.
اصول کلیدی در مهندسی قابلیت اطمینان سایت چیست؟
اصول کلیدی مهندسی قابلیت اطمینان سایت (SRE) به شرح زیر است:
- نظارت بر برنامه:
- تیمهای SRE میپذیرند که خطاها بخشی از فرآیند استقرار نرمافزار هستند. به جای تلاش برای یک راه حل کامل، آنها عملکرد نرمافزار را از نظر توافقنامههای سطح خدمات (SLAs)، شاخصهای سطح خدمات (SLIs) و اهداف سطح خدمات (SLOs) نظارت میکنند. آنها پس از استقرار برنامه در محیطهای تولید، معیارهای عملکرد را مشاهده و نظارت میکنند.
- اجرای تدریجی تغییرات:
- روشهای SRE انتشار تغییرات مکرر اما کوچک را برای حفظ قابلیت اطمینان سیستم تشویق میکنند. ابزارهای خودکارسازی SRE از فرآیندهای ثابت اما قابل تکرار برای انجام موارد زیر استفاده میکنند:
- کاهش خطرات ناشی از تغییرات
- ارائه حلقههای بازخورد برای اندازهگیری عملکرد سیستم
- افزایش سرعت و کارایی اجرای تغییرات
- روشهای SRE انتشار تغییرات مکرر اما کوچک را برای حفظ قابلیت اطمینان سیستم تشویق میکنند. ابزارهای خودکارسازی SRE از فرآیندهای ثابت اما قابل تکرار برای انجام موارد زیر استفاده میکنند:
- خودکارسازی برای بهبود قابلیت اطمینان:
- SRE از سیاستها و فرآیندهایی استفاده میکند که اصول قابلیت اطمینان را در هر مرحله از خط لوله تحویل تعبیه میکند. برخی از استراتژیهایی که به طور خودکار مشکلات را حل میکنند عبارتند از:
- توسعه دروازههای کیفیت مبتنی بر اهداف سطح خدمات برای شناسایی زودهنگام مشکلات
- خودکارسازی آزمایش ساخت با استفاده از شاخصهای سطح خدمات
- اتخاذ تصمیمات معماری که از ابتدا در توسعه نرمافزار، انعطافپذیری سیستم را تضمین میکنند.
- SRE از سیاستها و فرآیندهایی استفاده میکند که اصول قابلیت اطمینان را در هر مرحله از خط لوله تحویل تعبیه میکند. برخی از استراتژیهایی که به طور خودکار مشکلات را حل میکنند عبارتند از:
مشاهدهپذیری در مهندسی قابلیت اطمینان سایت چیست؟
مشاهدهپذیری فرآیندی است که تیم نرمافزار را برای عدم قطعیتها هنگام راهاندازی نرمافزار برای کاربران نهایی آماده میکند. تیمهای مهندسی قابلیت اطمینان سایت (SRE) از ابزارها برای شناسایی رفتارهای غیرعادی در نرمافزار و مهمتر از آن، جمعآوری اطلاعاتی که به توسعهدهندگان کمک میکند تا علت مشکل را درک کنند، استفاده میکنند. مشاهدهپذیری شامل جمعآوری اطلاعات زیر با ابزارهای SRE است.
- معیارها:
- معیارها مقادیر قابل اندازهگیری هستند که عملکرد برنامه یا سلامت سیستم را منعکس میکنند. تیمهای SRE از معیارها برای تعیین اینکه آیا نرمافزار منابع بیش از حد مصرف میکند یا به طور غیرعادی رفتار میکند، استفاده میکنند.
- لاگها:
- نرمافزار SRE در پاسخ به رویدادهای خاص، اطلاعات دقیق و دارای مهر زمانی به نام لاگ تولید میکند. مهندسان نرمافزار از لاگها برای درک زنجیره رویدادهایی که منجر به یک مشکل خاص میشوند، استفاده میکنند.
- ردیابیها:
- ردیابیها مشاهداتی از مسیر کد یک تابع خاص در یک سیستم توزیع شده هستند. به عنوان مثال، بررسی سبد سفارش ممکن است شامل موارد زیر باشد:
- محاسبه قیمت با پایگاه داده
- احراز هویت با درگاه پرداخت
- ارسال سفارشات به فروشندگان
- ردیابیها شامل شناسه، نام و زمان هستند. آنها به توسعهدهندگان نرمافزار کمک میکنند تا مشکلات تأخیر را شناسایی کرده و عملکرد نرمافزار را بهبود بخشند.
- ردیابیها مشاهداتی از مسیر کد یک تابع خاص در یک سیستم توزیع شده هستند. به عنوان مثال، بررسی سبد سفارش ممکن است شامل موارد زیر باشد:
نظارت در مهندسی قابلیت اطمینان سایت چیست؟
نظارت فرآیندی برای مشاهده معیارهای از پیش تعریف شده در یک برنامه است. توسعهدهندگان تصمیم میگیرند که کدام پارامترها در تعیین سلامت برنامه حیاتی هستند و آنها را در ابزارهای نظارتی تنظیم میکنند. تیمهای مهندسی قابلیت اطمینان سایت (SRE) اطلاعات حیاتی را که عملکرد سیستم را منعکس میکنند، جمعآوری کرده و آن را در نمودارها تجسم میکنند. در SRE، تیمهای نرمافزاری این معیارها را برای کسب بینش در مورد قابلیت اطمینان سیستم نظارت میکنند.
- تأخیر:
- تأخیر، تأخیر هنگام پاسخگویی برنامه به یک درخواست را توصیف میکند. به عنوان مثال، ارسال فرم در یک وبسایت ۳ ثانیه طول میکشد تا کاربران را به صفحه تأیید هدایت کند.
- ترافیک:
- ترافیک تعداد کاربرانی را که به طور همزمان به سرویس شما دسترسی دارند، اندازهگیری میکند. این به تیمهای نرمافزاری کمک میکند تا منابع محاسباتی را به طور مناسب بودجهبندی کنند تا سطح خدمات رضایتبخشی را برای همه کاربران حفظ کنند.
- خطاها:
- خطا شرایطی است که برنامه طبق انتظارات عمل یا ارائه نمیکند. به عنوان مثال، زمانی که یک صفحه وب بارگیری نمیشود یا یک تراکنش انجام نمیشود، تیمهای SRE از ابزارهای نرمافزاری برای ردیابی و پاسخگویی خودکار به خطاها در برنامه استفاده میکنند.
- اشباع:
- اشباع ظرفیت بلادرنگ برنامه را نشان میدهد. سطح بالای اشباع معمولاً منجر به کاهش عملکرد میشود. مهندسان قابلیت اطمینان سایت سطح اشباع را نظارت میکنند و اطمینان حاصل میکنند که زیر یک آستانه خاص است.
معیارهای کلیدی برای مهندسی قابلیت اطمینان سایت چیست؟
تیمهای مهندسی قابلیت اطمینان سایت (SRE) کیفیت ارائه خدمات و قابلیت اطمینان را با استفاده از معیارهای زیر اندازهگیری میکنند.
- اهداف سطح خدمات:
- اهداف سطح خدمات (SLOs) اهداف خاص و قابل اندازهگیری هستند که مطمئن هستید نرمافزار میتواند با هزینه معقول برای سایر معیارها، مانند موارد زیر، به آنها دست یابد:
- زمان کارکرد، یا زمانی که یک سیستم در حال کار است
- توان عملیاتی سیستم
- خروجی سیستم
- نرخ دانلود، یا سرعتی که برنامه با آن بارگیری میشود
- SLO از طریق نرمافزار به مشتری وعده تحویل میدهد. به عنوان مثال، شما یک SLO 99.95% زمان کارکرد را برای برنامه تحویل غذای شرکت خود تعیین میکنید.
شاخصهای سطح خدمات:
شاخصهای سطح خدمات (SLIs) اندازهگیریهای واقعی معیاری هستند که یک SLO تعریف میکند. در موقعیتهای واقعی، ممکن است مقادیری را دریافت کنید که با SLO مطابقت دارند یا متفاوت هستند. به عنوان مثال، برنامه شما ۹۹.۹۲% از زمان در حال اجرا است، که کمتر از SLO وعده داده شده است.
توافقنامههای سطح خدمات:
توافقنامههای سطح خدمات (SLAs) اسناد قانونی هستند که بیان میکنند در صورت عدم تحقق یک یا چند SLO چه اتفاقی میافتد. به عنوان مثال، SLA بیان میکند که تیم فنی ظرف ۲۴ ساعت پس از دریافت گزارش، مشکل مشتری شما را حل میکند. اگر تیم شما نتواند مشکل را در مدت زمان مشخص شده حل کند، ممکن است ملزم به بازپرداخت وجه به مشتری شوید.
بودجههای خطا:
بودجههای خطا، تحمل عدم انطباق برای SLO هستند. به عنوان مثال، زمان کارکرد ۹۹.۹۵% در SLO به این معنی است که زمان خرابی مجاز ۰.۰۵% است. اگر زمان خرابی نرمافزار از بودجه خطا فراتر رود، تیم نرمافزار تمام منابع و توجه خود را به تثبیت برنامه اختصاص میدهد.
مهندسی قابلیت اطمینان سایت چگونه کار میکند؟
مهندسی قابلیت اطمینان سایت (SRE) شامل مشارکت مهندسان قابلیت اطمینان سایت در یک تیم نرمافزاری است. تیم SRE معیارهای کلیدی SRE را تعیین میکند و یک بودجه خطا ایجاد میکند که توسط سطح تحمل ریسک سیستم تعیین میشود. اگر تعداد خطاها کم باشد، تیم توسعه میتواند ویژگیهای جدید را منتشر کند. با این حال، اگر خطاها از بودجه خطای مجاز فراتر رود، تیم تغییرات جدید را متوقف میکند و مشکلات موجود را حل میکند.
به عنوان مثال، یک مهندس قابلیت اطمینان سایت از یک سرویس برای نظارت بر معیارهای عملکرد و شناسایی رفتار غیرعادی برنامه استفاده میکند. اگر مشکلی در برنامه وجود داشته باشد، تیم SRE گزارشی را به تیم مهندسی نرمافزار ارسال میکند. توسعهدهندگان موارد گزارش شده را برطرف کرده و برنامه بهروزرسانی شده را منتشر میکنند.
DevOps
DevOps یک فرهنگ نرمافزاری است که مرز سنتی تیمهای توسعه و عملیات را از بین میبرد. با DevOps، توسعهدهندگان و مهندسان عملیات دیگر در سیلوها کار نمیکنند. در عوض، آنها از ابزارهای نرمافزاری برای بهبود همکاری و همگام شدن با سرعت سریع انتشار بهروزرسانیهای نرمافزار استفاده میکنند.
مقایسه SRE با DevOps
SRE اجرای عملی DevOps است. DevOps پایه فلسفی آنچه باید برای حفظ کیفیت نرمافزار در میان جدول زمانی توسعهای که به طور فزایندهای کوتاه میشود، انجام شود را فراهم میکند. مهندسی قابلیت اطمینان سایت پاسخهایی را برای چگونگی دستیابی به موفقیت DevOps ارائه میدهد. SRE اطمینان حاصل میکند که تیم DevOps تعادل مناسبی بین سرعت و ثبات برقرار میکند.
مسئولیتهای یک مهندس قابلیت اطمینان سایت چیست؟
یک مهندس قابلیت اطمینان سایت یک متخصص فناوری اطلاعات است که از ابزارهای خودکارسازی برای نظارت و مشاهده قابلیت اطمینان نرمافزار در محیط تولید استفاده میکند. آنها همچنین در یافتن مشکلات نرمافزار و نوشتن کد برای رفع آنها تجربه دارند. آنها معمولاً مدیران سیستم یا مهندسان عملیاتی سابق با مهارتهای کدنویسی خوب هستند. مسئولیتهای مهندسی قابلیت اطمینان سایت به شرح زیر است.
عملیات:
مهندسان قابلیت اطمینان سایت حداکثر نیمی از وقت خود را در کارهای عملیاتی صرف میکنند. این شامل چندین کار مانند موارد زیر است:
پاسخگویی به حوادث اضطراری
مدیریت تغییرات
مدیریت زیرساخت فناوری اطلاعات
مهندسان از ابزارهای SRE برای خودکارسازی چندین وظیفه عملیاتی و افزایش کارایی تیم استفاده میکنند.
پشتیبانی سیستم:
مهندسان قابلیت اطمینان سایت برای ایجاد ویژگیهای جدید و تثبیت سیستمهای تولید، از نزدیک با تیم توسعه همکاری میکنند. آنها یک فرآیند SRE را برای کل تیم نرمافزار ایجاد میکنند و برای پشتیبانی از مسائل تشدید در دسترس هستند. مهمتر از همه، تیمهای قابلیت اطمینان سایت رویههای مستند شده را برای پشتیبانی مشتری ارائه میکنند تا به آنها در مقابله مؤثر با شکایات کمک کنند.
بهبود فرآیند:
مهندسان قابلیت اطمینان سایت با برگزاری بررسیهای پس از حادثه، چرخه عمر توسعه نرمافزار را بهبود میبخشند. تیم SRE تمام مشکلات نرمافزاری و راهحلهای مربوطه را در یک پایگاه دانش مشترک مستند میکند. این به تیم نرمافزار کمک میکند تا در آینده به طور کارآمد به مسائل مشابه پاسخ دهد.
ابزارهای رایج مهندسی قابلیت اطمینان سایت چیست؟
تیمهای مهندسی قابلیت اطمینان سایت (SRE) از انواع مختلف ابزار برای تسهیل نظارت، مشاهده و پاسخگویی به حوادث استفاده میکنند.
ارکستراتور کانتینر:
توسعهدهندگان نرمافزار از ارکستراتور کانتینر برای اجرای برنامههای کانتینری شده در پلتفرمهای مختلف استفاده میکنند. برنامههای کانتینری شده فایلهای کد و منابع مرتبط خود را در یک بسته واحد به نام کانتینر ذخیره میکنند. به عنوان مثال، مهندسان نرمافزار از Amazon Elastic Kubernetes Service (Amazon EKS) برای اجرا و مقیاسبندی برنامههای ابری استفاده میکنند.
ابزارهای مدیریت تماس:
ابزارهای مدیریت تماس نرمافزاری هستند که به تیمهای SRE اجازه میدهند پرسنل پشتیبانی را که با مشکلات نرمافزاری گزارش شده سروکار دارند، برنامهریزی، ترتیب و مدیریت کنند. تیمهای SRE از این نرمافزار برای اطمینان از اینکه همیشه یک تیم پشتیبانی در حالت آمادهباش برای دریافت هشدارهای به موقع در مورد مشکلات نرمافزاری وجود دارد، استفاده میکنند.
ابزارهای پاسخگویی به حادثه:
ابزارهای پاسخگویی به حادثه یک مسیر تشدید واضح را برای مشکلات نرمافزاری شناسایی شده تضمین میکنند. تیمهای SRE از ابزارهای پاسخگویی به حادثه برای دستهبندی شدت موارد گزارش شده و رسیدگی سریع به آنها استفاده میکنند. این ابزارها همچنین میتوانند گزارشهای تجزیه و تحلیل پس از حادثه را برای جلوگیری از بروز مجدد مشکلات مشابه ارائه دهند.
ابزارهای مدیریت پیکربندی:
ابزارهای مدیریت پیکربندی نرمافزاری هستند که گردش کار نرمافزار را خودکار میکنند. تیمهای SRE از این ابزارها برای حذف وظایف تکراری و افزایش بهرهوری استفاده میکنند. به عنوان مثال، مهندسان قابلیت اطمینان سایت از AWS OpsWorks برای تنظیم و مدیریت خودکار سرورها در محیطهای AWS استفاده میکنند.