این نوشته به بررسی معماری مایکروسرویس و الزامات فنی و کسبوکاری آن میپردازد که بدون انجام تغییرات اساسی در معماری سازمانی ممکن نخواهد بود. همانطور که استقرار و بهنتیجهرسیدن هر فناوری جدید در سازمان نیازمند تغییر فرهنگ و معماری کسبوکار در آن سازمان است، تحقق ایدهال معماری مایکروسرویس نیازمند بازنگری معماری سازمانی با رویکرد سرویسگرا است، تغییرات میتواند از هر دو طرف شروع شود و به طرف دیگر سرایت نماید. بدیهی است که یکی از دلایل موفقیت شرکتهایNetflix ، Amazon در پیادهسازی مایکروسرویس، ماهیت سرویسگرا معماری کسبوکار این شرکتها ارزیابی میشود.
برای بررسی معماری مایکروسرویس و نحوه وابستگی آن با معماری سازمانی، ابتدا مروری بر مفاهیم و لایههای معماری سازمانی میکنیم، سپس به معماری مایکروسرویس و ویژگیهای آن میپردازیم و در انتها نیز وابستگی بین این دو را بررسی خواهیم کرد.
1) معماری سازمانی
معماری (Architecture) واژه ناشناخته ای نیست، لااقل برای مهندسان و آشنایان به رشته های مهندسی، کلمه معماری یادآور یک طرح و دید همه جانبه و کلان بر ساختار و رفتار موجودیتی است که دارای خواصی چون پیچیدگی و پویائی بوده و تهیه و نگهداشت آن مستلزم داشتن توجه ویژه ای به جامعیت، یکپارچگی، انعطاف پذیری و تعامل پذیری است.
مفاهیم معماری بر هر نوع سیستم سختافزاری-نرمافزاری-انسانی-اجتماعی قابل اعمال است، به عبارت دیگر معماری مختص یک صنعت(مثلا ساختمان سازی) یا یک کاربرد خاص(مثلا تولید نرم افزار) نیست. منظور از سیستم، “مجموعه ای از عناصر عینی یا ذهنی مرتبط با هم است که در کلیت خود در قالب یک موجودیت به مفهوم عام، ساختاری با نظم معیین و رفتاری قاعدهمند دارد و هدف مشخصی را دنبال میکنند.”
مفاهیم معماری متاثر از نگاه سیستماتیک (کل گرایی) و متدهای تفکر سیستمی نیز هست. تفکر سیستمی پارادایم فکری است که بر مبنای برتری کل به جزء پایه گذاری شده است؛ در چنین تفکری رفتار یک سیستم مستقیما حاصل جمع رفتار اجزاء آن نیست، بلکه نحوه چیدمان و تعامل اجزاء با یکدیگر و حتی تاثیرات متقابل با محیط بیرونی، رفتار سیستم را شکل میدهد.
هرگونه که معماری را تعریف و تفسیر کنیم، باید بپذیریم که علم “معماری سازمانی” به صورت رسمی از اواخر دهه 80 میلادی و توسط مهندسان نرم افزار از جمله جان زکمن – معمار نرمافزار در شرکت IBM آمریکا – تبیین و پایهگذاری شد و سپس توسط سایر دولتها-موسسات-اشخاص توسعه و عملیاتی گردید. در اواخر دهه 2000 ، به تدریج کاربرد معماری سازمانی گسترش یافت و مهندسان فرایند و تحلیلگران کسبوکار نیز به این مفاهیم علاقمند شدند، تا جاییکه اکنون مخاطب پیکره دانش معماری سازمانی و چارچوبهای پرطرفداری همچون توگف، طیف وسیعی از متخصصان در کسبوکار و فناوری اطلاعات را در برمیگیرد.
بر طبق چارچوب ملی معماری سازمانی ایران، تعریف معماری سازمانی به قرار زیر است:
«معماری سازمانی رویکردی است یکپارچه و جامع که جنبهها و عناصر مختلف یک سازمان (سیستم) را با نگاه مهندسی تفکیک و تحلیل مینماید و شامل مجموعه مستندات، مدلها، استانداردها و اقدامات اجرایی برای تحول از وضعیت موجود به وضعیت مطلوب است که در قالب یک چرخه تکرارپذیر اجرا شده و به صورت مداوم توسعه و بهروزرسانی میشود.»
لازم به تاکید است، مفهوم و کاربرد معماری سازمانی مبتنی بر دو اصل محوری است:
- اصل اول: تقدم برنامهریزی و طراحی بر پیادهسازی و اجرا (نگاه برنامه-محوری)
- اصل دوم: مهندسی همه جوانب و عناصر سازمان بهصورت یکپارچه (نگاه کلنگر و سیستماتیک)
برای معماری سازمانی چارچوبها، متدلوژیها و مدلهای مرجع مختلفی ارایه شده است که همگی آنها بر وجود لایهها و دیدگاههای کسبوکار-اطلاعات-نرمافزار-فناوری تاکید دارند، این لایههای معماری اگرچه در مراجع مختلف اندکی با ادبیات و طبقهبندی متفاوتی بیان شدهاند اما وجه مشترک همه این مراجع را میتوان در شکل زیر جمعبندی نمود.
2) معماری مایکروسرویس
معماری مایکروسرویس (Microservice Architecture) یا بهاختصار مایکروسرویسها که در منابع فارسی گاهی به نام میکروسرویسها نیز ترجمه شده است، در چندسال اخیر یکی از ترندهای کلیدی صنعت تولید نرم افزار است. اگرچه اولین اشاره مستقیم به واژه “مایکروسرویسها” به سال 2011 و در یک کارگاه معماری نرمافزار برمیگردد، اما داغ شدن این موضوع در طی سالهای 2014 و 2015 بود.
مایکروسرویسها یک تکنیک توسعه نرمافزار مشتق شده از سبک معماری سرویسگرا است که از مجموعهای از سرویسهای خوشتعریف تشکیل شده است. در معماری مایکروسرویس پروتکلهای ارتباطی سبک و مستقل از پلتفرم هستند و سرویسها دامنه و مسئولیت معیین و مشخصی دارند، مزایای این معماری بهبود ماژولاریتی سیستم و تسهیل توسعه، استقرار و تست سیستم است؛ همچنین سیستم توسعهیافته دارای مقیاسپذیری بالا و سرعت بالاتر اعمال تغییر است. این معماری با رویکرد DevOps در توسعه و پشتیبانی نرمافزارها هماهنگی دارد.
بهصورت خلاصه تعریف معماری مایکروسرویس به قرار زیر است:
“معماری مایکروسرویس، سبک خاصی از معماری نرمافزار و مشتقشده از معماری سرویسگرا است که هدف آن خودمختاری بالای سرویسها از نظر منطق کارکردی-دادهای و نیز پلتفرم پیادهسازی و اجرا است. این سبک معماری منجر به ماژولاریتی بالا در ساختار سیستمها و حتی کسبوکار میشود”
معماری مایکروسرویس دربرابر معماری یکتکه
بسیاری از کتابها و مقالاتی که درباره معماری مایکروسرویس وجود دارد، برای توضیح ویژگی و تمایز معماری مایکروسرویس از مقایسه با معماری یکتکه استفاده کردهاند. بر مبنای نظر این نویسندگان در سیستمهای یکتکه، مجموعه مولفهها-سرویسها-دادهها چنان در هم آمیخته است که نمیتوان بلوکهای سازنده این سیستمها را مستقلا از هم جدا کرده و یا تغییر(جایجا) نمود؛ اما در معماری مایکروسرویس هدف این است که یک سیستم به مجموعهای از ماژول(سرویس) کاملا مستقل(خودمختار) تقسیم شود که هر سرویس همه محاسبات، دادهها و قوانین مورد نیاز را در خود داشته باشد و برای اجرا به سایر سرویسها نیاز نداشته باشد یا حداقل وابستگی وجود داشته باشد.(شکل زیر)
ارتباط معماری سرویسگرا با معماری مایکروسرویس
یکی از موضوعات مورد بحث دراین حوزه، نسبت معماری مایکروسرویس با معماری سرویسگرا است؛ دلیل این امر شباهتها و اشتراکات فناوری-متدها دراین دو معماری است. در این خصوص دو دیدگاه کلی وجود دارد؛ دیدگاه اول معماری مایکروسرویس را رویکردی در تقابل با معماری سرویسگرا میداند و معماری سرویسگرا را نوعی معماری یکتکه قلمداد میکند که مایکروسرویس برای تغییر آن آمده است. دیدگاه دوم که مورد تایید مراجع معتبرتر است معتقد است معماری سرویسگرا یک پارادایم فکری است و فناوریهایی مانند وب-سرویس(نسل اول تحقق معماری سرویسگرا) یا مایکروسرویسها نمونههایی از تحقق آن هستند که هرکدام نقاط قوت و ضعفی دارند.
با مقایسه تعاریف مایکروسرویس با معماری سرویسگرا مشخص میشود که تقابل(تفاوت) عمدهای بین این دو نیست، و شاید بتوان معماری مایکروسرویس را گونه کاملتر و اصولیتر از تحقق معماری سرویسگرا نسبت به فناوری وب-سرویس و استانداردهای آن دانست که طی دو دهه گذشته معرفی شدند.
نتایج و مزایای معماری مایکروسرویس
مهمترین مزایا و نتایج حاصل از معماری مایکروسرویس به قرار زیر است:
حق انتخاب فناوری/ابزار:
- در معماری مایکروسرویس حق انتخاب سبد متنوعی از فناوریها-ابزارها برای تیمهای طراحی و پیادهسازی مهیا است بهصورتیکه میتوان در فرایند تولید یک سیستم، برای مایکروسرویسهای مختلف از فناوریها و ابزارهای مختلفی استفاده کرد.
پایداری سیستم:
- یکی از ویژگیهای اصلی سیستمهای پایدار امکان ادامه فعالیت سایر سرویسها(مایکروسرویسها) در صورت از کار افتادن یک سرویس است(و در صورت نیاز جایگزینی سرویس ازکار افتاده با نمونه مشابه یا پشتیبان)، این موضوع در معماری مایکروسرویس به دلیل خودمختاری و عدم وابستگی سرویسها محقق میشود.
مقیاسپذیری بالا و هدفمند:
- امکان مقیاسپذیری سیستم در سیستمهای یکتکه بهصورت همه یا هیچ است، اما در معماری مایکروسرویس امکان مقیاسپذیری موثر به ازای هر سرویس دلخواه میسر است. بنابراین هر بخش از سیستم که بار(load) کاری بیشتری داشته باشد، متناسبا میتواند منابع پردازشی بیشتر نیز در اختیار گیرد و نیازی نیست برای همه مولفههای سیستم مقیاسپذیری یکنواخت انجام شود.
توسعه و تغییرات:
- امکان تغییر در منطق هر سرویس بدون نگرانی از تاثیرات منفی در سایر سرویسها به دلیل خودمختاری سرویسها سادهتر است، این موضوع البته برای تغییر منطق داخلی است و در صورتیکه واسط سرویس تغییر کند باید به سایر سرویسها (استفادهکنندگان) اطلاع داده شود.
سهولت جابجایی و جایگزینی سرویسها:
- با توجه به خودمختاری کارکردی و فناوری سرویسها، به سادگی میتوان یک سرویس را که عملکرد آن مناسب نبوده با نمونه بهتر جایگزین نمود یا یک سرویس را بهتنهایی به یک محیط/سیستم دیگر منتقل نمود و از آن استفاده نمود
3) معماری سازمانی مبتنی بر مایکروسرویس
معماری مایکروسرویس مبتنی بر اصول و مبانی غیرفنی است که در پارادایم سرویسگرایی قرار دارد، ازآنجا که سرویسگرایی و اصول آن منطبق با نیازهای واقعی کسبوکار و فناوری است (و روز به روز نیز این نیازها مهمتر و گستردهتر میشود)، بکارگیری سرویسگرایی در معماری سازمان، سیستمهای اطلاعاتی و بهصورت کلان در معماری کسبوکار نیز، نه یک موج گذرا که یک روند ادامهدار و آیندهدار است؛ معماری مایکروسرویس نیز از این قاعده مستثنی نیست و باید انتظار داشت که این معماری و یا مشتقات بعدی آن همچنان در محور توجهات قرار گیرد، لذا مدیران و تصمیمگیران با نگاهی راهبردی به پارادایم سرویسگرایی و معماری سازمانی سرویسگرا به عنوان بستر پیادهسازی مایکروسرویسها توجه داشته باشند.
سازمانهایی که میخواهند به سمت پیادهسازی مایکروسرویس در مقیاس سازمان اقدام کنند باید توجه داشته باشند که تاثیرات این سبک معماری صرفا در لایه نرمافزار و داده محدود نشده و معماری کسبوکار را نیز تحت تاثیر قرار میدهد.
در شکل زیر بهصورت مفهومی تاثیر انتخاب سبک مایکروسرویس بر معماری سازمانی تبیین شده است، همانطور که مشخص است استقلال و خودمختاری سرویسها به دامنههای کسبوکار نیز بسط یافته و هر دامنه مایکروسرویس، منابع و مدیریت مستقل خود را دارد، اگرچه با واسطه ارسال پیامها و رخدادها با دیگر دامنههای سازمانی در ارتباط است. لازم به ذکر است در این شکل مفهومی صرفا به جنبههای درونسازمانی پرداخته شده و تعاملات بیرونی فاکتور گرفته شده است.
وابستگی معماری سازمانی با مایکروسرویسها
- مایکروسرویس مبتنی بر خودمختاری و استقلال سرویسها است، نتیجه انکه معماری سازمانی نیز باید به سمت استقلال نسبی واحدهای متولی سرویس در سازمان و تغییر رویکرد مدیریتی از وظیفهمحوری به سرویسمحوری (نتیجهمحوری) تغییر یابد. مبنای ارزیابی عملکرد کارکنان باید از محاسبه تعداد ساعات کارکرد و رضایت مدیران به ارزیابی کیفیت و ارزش سرویس هر واحدسازمانی یا فرد تغییر کند. این تغییرات البته موانع قانونی و ساختاری متعدد دارد و باید گامبهگام و با ظرافت انجام شود.
- سازمان چابک و دیجیتال صرفا در مشتری-محوری و ارایه سرویس الکترونیک به مشتریان خلاصه نمیشود بلکه موضوع مهمتر، معماری داخلی سازمان و نحوه چیدمان عناصر و منابع برای پویایی بیشتر و استقلال هر واحد از سایر واحدها است، معماری مایکروسرویس منطبق با معماری سازمانی سرویسگرا و تسیهلکننده آن است.
- همهجا و هر سیستمی نباید مایکروسرویسی باشد، برای هر صورت-مسالهای باید نیازمندیهای معماری و مجموعه شرایط محیطی-زمینهای توسط معمار سازمان تحلیل شود و سبک(راهکار) مناسب معماری انتخاب شود.
جمع بندی:
همانطور که گفتهشد، پارادایم سرویسگرایی(به صورت عام) و معماری مایکروسرویس (بهصورت خاص) روندهای آیندهدار صنعت فاوا هستند که در دنیای رقابتی و سرویس-محور کسبوکار نیز تضمینکننده همراستایی بین کسبوکار با فاوا هستند، اما برای بکارگیری هدفمند و موفق مایکروسرویسها باید به تاثیرات آن بر معماری سازمانی نیز توجه ویژه شود. تغییر سبک سازمان از وظیفهمحور به سرویسمحور اگرچه ساده و بدون مانع نیست؛ اما با برنامه هدفمند و ارزیابی دقیق از فرصتها و تهدیدها میتوان گامبهگام به سمت آن پیش رفت. حتی تحقق میزان حداقلی 10 درصد تحول در معماری سازمانی در هر سال – اما بهصورت پیوسته- بعد از چندسال منجر به تغییرات عمیق و ملموس در هر سازمانی میشود.
همچنین باید توجه داشت صرف جذابیت موضوع و علاقمندی مدیران به استفاده از مایکروسرویسها و معماری سازمانی سرویسگرا تضمینکننده موفقیت و نتایج واقعی نیست، هر پروژه بزرگ تحول سازمانی نیازمند برنامهریزی دقیق، تیمسازی مناسب، مشاوران خبره، بلوغ سازمانی کافی، تامین منابع و نهایتا حامیان(اسپانسر) خوشفکر است.