SRE چیست؟
شاید مدت زمان زیادی نباشه که واژه SRE بین اهالی و دوست داران علوم فناوری اطلاعات به شکل پررنگی پیچیده و بحث و گفتگو در موردش بیش از پیش مورد توجه قرار گرفته؛ هرچند شاید واقعا از تولد این مفهوم خیلی سال گذشته، اما بیایم و قبل از هر چیزی به این سئوال جواب بدیم که SRE چیه؟ SRE مختصر شده عبارات Site Reliability Engineering هستش و به شخصه ترجیح میدم مثل اکثر کلمات دیگر این علم اونو ترجمه نکنم و از همون واژه مختصر شده برای اشاره بهش استفاده کنم تا معنی اون حفظ بشه، حالا اگر خیلی اصرار به ترجمه تحت اللفظی اون باشه میشه گفت یه چیزی شبیه “مهندسی قابلیت اطمینان سایت” که البته قطعا منظور از سایت هم، وب سایت نیست!
SRE به زبون ساده یک سری قاعده و قانونِ که جنبه های مهندسی نرم افزار رو با مسایل زیرساخت و عملیات فناوری اطلاعات پیوند میزنه و هدف اصلی اون مقیاسپذیرتر کردن و قابل اطمینانتر کردن هرچه بیشتر سیستم های نرم افزاری هستش!
بن ترینور (ben trainor) موسس تیم SRE گوگل، اونو اینجوری تعریف میکنه: SRE چیزیه که وقتی از یک مهندس نرم افزار بخوایم وظایف عملیاتی رو هم انجام بده اتفاق میافته؛
یه مثال ساده بزنیم، یه سیستم نرم افزاریو در نظر بگیرید که تیم مهندسان نرم افزار اونو نوشتن و برای اجرا و ساپورتش اونو انداختن تو زمین تیم سیستم ادمین ها و مهندسای عملیات، جدای اینکه چنین سیستمی تا راه بیافته و عملیاتی بشه ممکنه این پاسکاری بین این دوتا تیم ادامه پیدا کنه تازه وقتی عملیاتی شد و تا حدودی با قابلیت اطمینان شروع به کار کرد کیه که بتونه سیستم ادمین ها رو راضی کنه ویژگی های جدیدی رو که تیم نرم افزار براش کلی زحمت کشیده به سرویس اضافه کنه. ازاونجایی که مدیران سرویس برای رصد کردن و گاها اتوماسیون برخی امور از ابزار های عمومی موجود استفاده می کنند محدودیت هایی که ممکنه باهاش روبرو باشن بویژه وقتی مقیاس سیستم ها بزرگ و بزرگتر میشه را هم به این داستان اضافه کنیم. هدف یه تیم آوردن ویژگی های جدید، مانیتور کردن رخداد ها، اتوماسیون بیشتر کار ها و حداقل کردن کار های دستی و هدف تیم عملیات نگه داشتن سرویس در وضع قابل اطمینانه، پس ما نیاز به یه راه حل داریم، یک سری قاعده و قانون، شاید یک تیم جدید با نقش های جدید.
پس تا اینجا نتیجه اینکه SRE یک رویکرده، که طرز فکر مهندسی نرم افزار رو به مشکلات و وظایف مدیران سیستم و تیم عملیات پیوند میزنه و هدفش ایجاد سیستم های توزیع شده و مقیاس پذیر نرم افزاری با قابلیت اطمینان بسیار بالاست.
تیم SRE چیست؟
تیم SRE میتونه یه تیم جدید توی سازمان باشه و یا ترکیبی از تیم های سابق با تغییراتی توی نقش ها و البته مهارت هایی که تقویت شدن، به طور کلی تیم SRE تیمی هستش از مهندسین SRE (Site Reliability Engineers) که افرادی هستن با سابقه مدیریت سیستم و کار در تیم های عملیاتی و توان و دانش برنامه نویسی و یا برعکس برنامه نویس هایی با توانایی انجام امور مدیریت سیستم و وظایف تیم عملیات. قطعا افرادی با این قابلیت احتمالا در یکی از زمینه ها توانایی بیشتری دارن مثلا یکسری برنامه نویسای بهترین و یکسری مدیر سیستم بهتر و یه تیم متوازن از این افراد میتونه حالت ایده آل تیم SRE رو ایجاد کنه؛
همیشه توی تیم SRE درصدی از زمان مهندسهای تیم به کارهای عملیاتی مثل رسیدگی به مشکلات، تیکت ها، تماس های تلفنی و پشتیبانیهای ضروری اختصاص داده میشه که به اصطلاح بهشون کارهای عملیاتی گفته میشه و درصد دیگری به خودکارسازی، بهبود و ارتقا، توسعه ویژگی ها و کار روی مقیاس پذیری سیستم اختصاص پیدا میکنه و هرچی سهم کارهای عملیاتی به مرور کمتر بشه قطعا نشونه بهتریه؛
در نوشتههای بعدی بیشتر در مورد SRE، تغییراتی که در کارهای عملیاتی فناوری اطلاعات ایجاد کرده و مقایسه و ارتباطش با چارچوبها و مفاهیمی مثل ITIL و DevOps می پردازیم.