پیرامون معماری سرویس گرا (Service Oriented Architecture - SOA) - مقدمه

چندی است به دلیل ماهیت پروژه ای که به آن مشغول هستم و همچنین دریافت مدارک SOA Certification با این گونه از معماری (که البته به نظرم چیزی بیش از معماری است و بیشتر به یک روش تفکر می ماند) اصطکاک زیادی دارم.

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

تا حد امکان تلاش خواهم کرد که از ارسال نظرات شخصی خودم پرهیز کرده و به جای آن بیشتر مطالب را گردآوری نمایم. در پایان هر پست - در صورت وجود - کلیه منابع را خواهم آورد.

لازم به ذکر است که مطالب نگارش شده دارای مشخصات زیر خواهد بود:

۱. مستقل از برند و تکنولوژی (Vendor & Technology Neutral): به این معنی که مبنای مطالب نگارش شده هیچ گونه وابستگی به برند یا فناوری خاصی ندارد. هرگونه مثال احتمالی بر مبنای تکنولوژی ها یا برندهای تجاری صرفا جهت درک بهتر مطلب خواهد بود.

۲. تکنولوژیها، زبانها و استاندارهای غیر تجاری مانند XML / WSDL / XSL و مانند آن که به عنوان استاندارهای شناخته شده غیر تجاری برای پیاده سازی سیستمهای سرویس گرا متداول هستند در جای خود شرح داده شده و استفاده خواهد شد.

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

۴. روش نگارش مطالب به صورت بالا به پایین (Top Down) خواهد بود. به این مفهوم که ابتدا کلیات مطلب و نگاه عام بر نگارش متن حاکم بوده و سپس - بسته به نیاز - مطالب به شکل جزیی تر ارایه می گردد.

۵. مطالب ارایه شده نیم نگاهی نیز به متدولوژیهای مرتبط خواهد داشت.

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

بخش بعد>

حق با مشتری است!

Customer is always right!

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

شرح داستان:

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

در نتیجه من و دیگر همکاران من در این پروژه همواره در محل مشتری حضور داریم.

برگردیم به داستان: ماژول ها و زیر سیستم های نوشته شده توسط تیم ما معمولا برای نصب، راه اندازی، تست و پشتیبانی به تیم پشتبانی مشتری ارایه می شود.

یکی از این افراد  که سرپرست تیم پشتیبانی مشتری نیز هست دارای ویژگیهای خاصی است: به شدت وسواسی، ایراد گیر و حتی گاهی گستاخ و بی ادب! از بخت بد کلیه مستندات، کدها و فایلهای سیستم از معماری و طراحی گرفته تا تست و نصب باید توسط این شخص تایید شود.

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

برخی از ایرادات وارد بود اما بسیاری از آنها کاملا غیر منطقی به نظر می رسید.

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

هنگامی که برای یکی از همکارانم ماجرا را شرح می دادم، با وجودی که ویژگیهای اخلاقی شخص مورد نظر را می دانست گفت: Customer is always right!

جمله ساده ای است و بارها آنرا شنیده ایم. اما گاهی رعایت آن به این سادگی ها هم نیست!

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

به طور قطع هدف اصلی این تفکر کسب درآمد بیشتر است اما مگر هدف نهایی یک بنگاه اقتصادی غیر از این است؟