چگونه به یک مهندس با عملکرد استثنایی تبدیل شویم؟
هر زمان که به مهندسی عملکرد فکر می کنم ، به یاد گفته مدیر آمازون "جف بزوس" می افتم،
"تمرکز روی مشتری به شرکت مقاومت بیشتری می ببخشد."
هر شرکتی که از این رویکرد متمرکز بر مصرف کننده پیروی کند ، دارای دامنه مهندسی عملکرد است ، هرچند که در ظرفیت و فرم مختلفی باشد.
بیشتر مشاغل تحت وب قرار می گیرند ، بنابراین آنها به صورت دیجیتال با مشتریان خود در تعامل هستند.
در چنین شرایطی به مشتری یک تجربه استثنایی ارائه دهند، باید سیستم ها و برنامه های وب انعطاف پذیر ، پایدار ، کاربر محور و با کارایی بالا بسازند
و برای انجام این کار ، آنها به مهندسی عملکرد نیاز دارند.
اما مهندسی عملکرد چیست؟
بگذارید مهندسی عملکرد را با یک مثال توضیح دهم. فرض کنید ، تیم شما در حال ساخت پورتال خرید آنلاین است. توسعه دهندگان سیستمی را ایجاد می کنند که به مردم امکان دسترسی به محصولات و خرید آنها را می دهد. آنها اطمینان حاصل می کنند که کل معاملات صاف ، بدون عارضه برای کاربر بوده و می تواند به سرعت انجام شود.
حال تصور کنید که برای ارتقاء پورتال ، شما یک فروش فلش را انجام می دهید و 1000 کاربر بر روی پلتفرم می آیند و همزمان شروع به انجام معاملات می کنند. و سیستم شما ، تحت این بار ، کندتر عمل می کند ، معاملات زیادی خراب می شوند و کاربران شما از کار می افتند. این به طور مستقیم بر روی نام تجاری ، وفاداری مشتری و درآمد شما تأثیر می گذارد.
اینکه چگونه می توانیم قبل از بروز چنین وضعیتی این مسئله را برطرف کنیم؟ این دقیقاً همان چیزی است که مستلزم مهندسی عملکرد است.
یک مهندس عملکرد اساساً چنین سناریوهایی را در نظر می گیرد و تست های بار را انجام می دهد و عملکرد سیستم را در مرحله توسعه خود بررسی می کند. تست های بار ، رفتار سیستم شما را در موقعیت های خاص بررسی می کنند. "بار" سناریوی احتمالی است که می تواند سیستم را تحت تأثیر قرار دهد ، به عنوان مثال ، پیشنهادات فروش یا زمان اوج. اگر سیستم قادر به تحمل بار باشد ، بررسی می کند که آیا مقیاس پذیر است. اگر سیستم نتواند آن را اداره کند ، نتیجه را تجزیه و تحلیل می کند ، با چک کردن کد ، تنگنای احتمالی را پیدا کرده و سعی در اصلاح آن خواهد کرد.
بنابراین ، برای مثال فوق ، یک مهندس عملکرد می توانست سیستم را برای 100 معامله بصورت همزمان ، 500 و سپس 1000 و بیشتر آزمایش کند و حتی تا صد هزار نفر نیز پیش برود.
از این رو ، مهندسی عملکرد عملکرد بدون تصادف یک سیستم ، نرم افزار یا برنامه را تضمین می کند. یک مهندس عملکرد با استفاده از فرآیندها و تکنیکها ، روشها و فعالیتهای سیستماتیک تضمین می کند که الزامات عملکرد در چرخه توسعه برآورده می شوند.
با این حال ، این یک نقش پوشاننده نیست. این بسته به نوع عملکرد شما متفاوت است. کار یک مهندس عملکرد که روی یک برنامه وب کار می کند بسیار متفاوت از یک مهندس عملکرد پایگاه داده یا یک مهندس عملکرد جریان است. برای هر یک از این موارد ، "بار" شما متفاوت خواهد بود ، اما هدف شما یکسان است ، اطمینان حاصل شود که سیستم شما به اندازه کافی مقاوم است تا بتواند آن بار را تحمل کند.
قبل از اینکه عمیق تر به نقش یک مهندس عملکرد بپردازم ، می خواهم تفاوت بین تستر عملکرد و یک مهندس عملکرد را روشن کنم. (بله ، آنها یکسان نیستند!)
تستر عملکرد در مقابل مهندس عملکرد
خوب ، بسیاری از مردم فکر می کنند 2-3 سال تجربه به عنوان یک تستر عملکرد می تواند به راحتی کار یک مهندسی عملکرد را انجام دهد.
یک آزمایش کننده عملکرد می تواند دانش آزمایش داشته باشد و از آنالیز عملکرد و مفاهیم نظارت بر عملکرد در برنامه های مختلف آگاهی داشته باشد. آنها اساساً برای بررسی عملکرد ، پایداری و مقیاس پذیری سیستم ، "تست بار" را انجام می دهند و گزارش هایی را برای اشتراک با توسعه دهنده برای کار بر روی آنها تهیه می کنند. کار آنها به اینجا ختم می شود. اما این مورد برای یک مهندس عملکرد صحیح نیست.
یک مهندس عملکرد به دنبال علت اصلی مسئله عملکرد خواهد بود ، در جستجوی راه حل ممکن برای آن و سپس تنظیم و بهینه سازی سیستم برای مرتب کردن موضوع گفته شده تا زمانی که پارامترهای عملکردی برآورده نشوند.
به عبارت ساده ، آزمایش عملکرد می تواند به عنوان بخشی از مهندسی عملکرد در نظر گرفته شود اما به عنوان یک چیز مشابه نیست.
نقش ها و مسئولیت های یک مهندس عملکرد
طراحی تست های کارآمد
به عنوان یک مهندس عملکرد ، اولین کار شما طراحی یک تست موثر برای بررسی سیستم است. من این لیست چک را در Dzone پیدا کردم که برای طراحی تست ها بسیار مفید است:
. اهداف ، الزامات ، خواسته ها ، الگوی حجم کار و ذینفعان خود را مشخص کنید.
. نحوه آزمایش همزمانی ، نرخ ورود و برنامه ریزی را درک کنید.
. نقش مقیاس پذیری ، ظرفیت و قابلیت اطمینان را به عنوان ویژگی ها و ملزومات کیفیت درک کنید.
. نحوه تنظیم / ایجاد داده های تست و مدیریت داده ها را درک کنید.
برنامه نویسی ، اجرای تست ها و تفسیر نتایج
چندین ابزار تست عملکرد در بازار موجود است. اما شما باید بر اساس ابزاری که استفاده می کنید با زبان های مختلف کار کنید. به عنوان مثال ، هنگام کار با Microfocus Loadrunner ، باید آزمایش خود را در C و Javascript بسازید. به طور مشابه ، شما در Java و Javascript برای Apache JMeter اسکریپت می کنید. پس از آماده شدن آزمون ، آن تست را روی سیستم خود اجرا کنید. اطمینان حاصل کنید که در هنگام اجرای این آزمونها از معیارهای سازگار استفاده می کنید یا نتایج دیگر نادرست خواهد بود. سرانجام ، شما آن نتایج را تفسیر خواهید کرد. در این صورت ، شما باید بفهمید که تنگناها چیست و در کجا رخ می دهند. برای این کار ، شما باید نتایج را بخوانید و نمودارهایی را که ابزار تست عملکرد شما تولید کرده است ، تجزیه و تحلیل کنید و نتیجه گیری بگیرید.
تنظیم دقیق و بهینه سازی عملکرد
هنگامی که می دانید تنگناها چیست و در کجا رخ می دهد ، مجبورید برای غلبه بر آن ، راه حلی برای غلبه بر آن پیدا کنید تا عملکرد سیستم مورد نظر خود را ارتقاء دهید. (کاری که یک تست کننده انجام نمی دهد!) وظیفه شما این است که اطمینان حاصل کنید که سیستم / برنامه به حد مطلوب کار می کند و در حداکثر بار ممکن کار می کند. البته ، می توانید برای پی بردن به این موضوع از یک توسعه دهنده (باطن ، جلو یا تمام پشته) که در حال کار روی پروژه است ، کمک بگیرید. اما به عنوان یک مهندس عملکرد ، باید در این فرایند تنظیم دقیق و بهینه سازی به طور جدی درگیر شوید.
چهار مهارت / ویژگی اصلی وجود دارد که یک مهندس عملکرد استثنایی را از میانگین متمایز می کند.
ثابت می کند که نتایج بار آنها مقیاس پذیر است
اگر مهندس خوبی باشید ، یک وعده غذایی نیمه پخته را سرو نمی کنید. اول از همه ، تمام احتمالات را در نظر بگیرید. به عنوان مثال ، از همان پورتال خرید آنلاین استفاده کنید. اگر در نظر دارید یک تست بار را برای 1000 معاملات همزمان در نظر بگیرید ، آن را برای هر دو حالتی در نظر بگیرید که در آن معاملات برای محصولات مختلف یا زمانی که برای همان محصول اتفاق می افتد ، انجام می شود. اگر پورتال شما یک محصول پر فروش را برای کالای اختصاصی که برای مدت محدود در دسترس است انجام دهد ، ممکن است افراد زیادی در عین حال سعی در خرید آن داشته باشند. از خود بپرسید که آیا سیستم شما می تواند آن بار را تحمل کند؟
ثابت می کند که نتایج بار آنها پایدار است
نه تنها این ، شما همچنین باید در نظر بگیرید که آیا نتایج شما در طی یک دوره زمانی مشخص پایدار است. سیستم باید بدون خرابکاری کار کند. اغلب توصیه می شود که یک تست بار 30 دقیقه انجام شود. در حالی که سی دقیقه برای تشخیص بیشتر تغییرات عملکرد جدید هنگام معرفی کافی خواهد بود ، برای اینکه این آزمایشات قانونی شود ، لازم است اثبات شود که آنها می توانند حداقل در دو ساعت با همان بار اجرا کنند. این مدت زمان ممکن است برای برنامه ها / سیستم ها / برنامه های مختلف متفاوت باشد.
از معیارها استفاده می کند
بنچمارک در اصل یک نقطه مرجع است که بر اساس آن می توانید عملکرد سیستم خود را مقایسه و ارزیابی کنید. این یک مجموعه استاندارد است که در برابر آن می توانید کیفیت محصول / برنامه / سیستم خود را بررسی کنید. برای برخی از سیستم ها ، مانند پایگاه داده ها ، معیارهای استاندارد به راحتی در دسترس هستند تا بتوانید روی آن تست کنید. به عنوان یک مهندس عملکرد ، شما باید از معیارهای عملکرد در حوزه / دامنه خود آگاه باشید. به عنوان مثال ، شما می توانید معیارهایی را برای آزمایش فایروال ها ، پایگاه داده ها و سیستم های فناوری اطلاعات انتهایی پیدا کنید. متداول ترین چارچوب های معیار ، بنچمارک چارچوب 2.0 و TechEmpower است.
رفتار کاربر را درک می کند
اگر درک درستی از واکنش های کاربر در موقعیت های مختلف ندارید ، نمی توانید یک تست بار مؤثر طراحی کنید. یک مهندس با عملکرد خوب جمعیتی از کاربران خود را می شناسد ، رفتارهای کلیدی آنها را می فهمد و می داند کاربر چگونه با سیستم تعامل دارد. اگرچه پیش بینی رفتار کاربر به طور کامل غیرممکن است ، به عنوان مثال ، یک فروش ممکن است منجر به 100،000 تراکنش در هر ساعت به سختی 100 در هر ساعت شود ، شما باید آمار کاربر را بررسی کنید ، فعالیت کاربر را تجزیه و تحلیل کرده و رفتار خود را انجام داده و سیستم خود را برای استفاده بهینه آماده کنید.
در کل ، علاوه بر مهارت های فنی قوی ، به عنوان یک مهندس عملکرد ، شما همیشه باید دور بین باشید. شما باید بتوانید فراتر از آنچه که چشم را می بیند ببیند و آنچه را که دیگران از دست می دهند بدست آورید. این نقش ، به طور مداوم ، به تخصص فنی زیادی احتیاج دارد. اما همچنین به مهارتهای غیر فنی مانند حل مسئله ، توجه به جزئیات و بصیرت نیاز دارد.