مفهوم اركستريشن به حل مشکل چگونگی هماهنگی سیستمهای فناوری اطلاعات در مقیاس بزرگ میپردازد. در بسیاری از مواقع، چنین سیستمهایی باید سطوح خدمات مورد توافق را برآورده کنند، تعداد زیادی سرویس جداگانه را ادغام کنند و خدمات پیچیدهای را به صدها هزار کاربر ارائه دهند، بطور كلی همه موارد مورد نظر بدون از دست دادن حتی یک بيت. در این مطلب، انواع مختلف ارکستريشن را بررسی خواهیم کرد و همچنین بررسی خواهیم کرد که در عمل چگونه به نظر میرسد.
اول، چرا ارکستريشن اتوماسیون(اتومیشن) نیست؟
ارکستريشن چه تفاوتی با اتومیشن دارد؟
ارکستريشن(ارکستراسیون) و اتوماسیون(اتومیشن) یک چیز نیستند، اما به هم مرتبط هستند. اتومیشن عبارت است از انجام یک کار تکراری و مبتنی بر قوانین و اجرای آن بدون دخالت انسان یا حداقلی آن. این میتواند حجم زیادی از کار را از روی میز و برنامههای افراد واقعی را جابجا کند و به آنها اجازه دهد روی کارهای ارزشمندتر و سازندهتر تمرکز کنند.
ارکستریشن در مورد به دست آوردن همان مزایا در مقیاس گسترده تر و عمیق تر است، با راه اندازی فرآیندهای چند وظیفهای در چندین نرم افزار برای اجرا بدون دخالت انسان یا حداقلی.
استیون واتس، که در بلاگ های BMC، ارکستريشن را به عنوان "اتومیشن نه یک کار واحد بلکه یک فرآیند کامل مبتنی بر فناوری اطلاعات" تعریف میکند.
از آنجایی که سیستمهای فناوری اطلاعات متنوع و پیچیده هستند، رویکردهای ارکستریشن نیز متفاوت است. در اینجا برخی از روشهای اصلی برای تبدیل لیست کارهای انجام شده به شکل فرایندهای مرتبط آورده شده است.
ارکستریشن ابری Cloud orchestration
ارکستریشن(هماهنگسازی) ابری معمولاً برای هماهنگ کردن وظایف قابل پیشبینی در سیستمهای فناوری اطلاعات مبتنی بر ابر، از جمله تهیه، راهاندازی یا از کار انداختن سرورها، تخصیص فضای ذخیرهسازی، پیکربندی شبکهها و اعطای دسترسی برنامهها به خدمات ابری مانند پایگاههای داده استفاده میشود. این فعالیتها چند کاره و چند مرحلهای هستند، اما نسبتاً قابل پیشبینی هستند. شما در حال ایجاد یک خط لوله خودکار برای پوشش نتایجی هستید که قبلاً توسط sysadmin ها و به طور مستقیم به دست میآمدند، سپس در مرحله بعد از طریق ابزارهایی مانند Chef و Puppet.
عبارات Chef و Puppet پلتفرمهای مدیریت پیکربندی هستند که هدف آنها پیکربندی و مدیریت سرورها و سایر زیرساخت های فناوری اطلاعات است.
ارکستریشن برنامه
ارکستریشن برنامه یا همان الیکیشن به معنای ادغام دو یا چند برنامه نرم افزاری است که با هم کار کنند. گاهی اوقات این برای دستیابی به چیزی نسبتاً ساده است، مانند اشتراکگذاری دادههای بین برنامهای. گاهی اوقات بیشتر درگیر است، مانند زمانی که دو برنامه برای اجرای یک فرآیند چند مرحلهای که هر دو را شامل میشود هماهنگ میکنند. اگر این کار آشنا به نظر میرسد، به این دلیل است که بدون درجاتی از ارکستریشن، بیشتر وقت خود را صرف کلنجار با چالشهای خود میکنید تا انجام هر کاری اصولی. اما بیشتر سازمانها به این موضوع از دریچه هماهنگی آگاهانه و خردمندانه برخورد نمیکنند. آنها معمولاً از کلمه استفاده نمیکنند و مفهوم را روشن نمیدانند، به این معنی که آنها معمولاً این کار را به صورت موقت و به روشی کمتر کارآمدتر از آنچه میتوانند انجام دهند، انجام می دهند.
وقتی امور به درستی انجام شوند، هماهنگسازی برنامه به شما امکان میدهد تا ادغامهای خود را به صورت متمرکز نظارت و مدیریت کنید، به جای اینکه مجموعهای از ابزارهای متفاوت را جمعآوری کنید، قابلیتهایی را برای مسیریابی پیام، امنیت، قابلیت اطمینان و ظرفیت تبدیل و جهتدهی مجدد سیستم به عنوان یک سیستم اضافه میکند. معمولاً این امر با جدا کردن منطق یکپارچهسازی(integration) از برنامهها و مدیریت آن از طریق یک کانتینر(container) به دست میآید.
ارکستريشن خدمات
ارکستريشن سرویس يا خدمات به طور مشابه با هماهنگ سازی برنامهها کار میکند، فقط روشهای مشابهی را برای میکروسرویسها، شبکهها و جریانهای کاری به جای برنامه های سنتی تر "یکپارچه" اعمال میکند.
به طور معمول، خدمات فردی فاقد ظرفیت بومی برای هماهنگی مرکزی هستند و همه آنها وابستگیها و الزامات خاص خود را دارند. اتصال همه آنها بدون ساختار هماهنگ کننده متمرکز میتواند چالشی و بی اثر باشد، و با افزایش تعداد آنها، آشفتگی که میتوانید با وصل کردن همه آنها به یکدیگر اشتباه ایجاد کنید، به طور تصاعدی بزرگتر میشود. در مقابل، تنظیم صحیح آنها به شما این امکان را میدهد که آنها را در صورت نیاز مقیاس بندی کنید، آنها را مطابق با نیازهای تجاری تنظیم کنید و از قطع، شکست و از دست دادن دادهها جلوگیری کنید.
ارکستریشن کانتینری
ارکستراسیون کانتینری میتواند بخشی از ارکستراسیون کاربردی و خدماتی را تشکیل دهد. این اتوماسیون هماهنگ مدیریت کانتینر است که به شما امکان میدهد از نرم افزار برای تهیه و استقرار کانتینرها، تخصیص منابع، نظارت بر آنها و کنترل تعاملات آنها استفاده کنید.
ارکستریشن کانتینر به طور خودکار برنامههای کاربردی کانتینری را بدون نگرانی در مورد زیرساختهای زیربنایی تهیه، استقرار، مقیاس و مدیریت میکند. توسعهدهندگان میتوانند در هر جایی که کانتینرها هستند، ارکستریشن کانتینر را اجرا کنند و به آنها اجازه میدهد تا مدیریت چرخه عمر کانتینرها را خودکار کنند.
این رویکرد هر زمان که کانتینرها را به تعداد زیاد مستقر میکنید، مرتبط است، چه برای مدیریت یک پیادهسازی «ابر بومی» مبتنی بر میکروسرویس، خدمات شخص ثالث کانتینری یا برنامههای کاربردی.
تیمها اغلب از ابزارهای ارکستریشن مانند Docker یا Kubernetes استفاده میکنند که به یک فایل پیکربندی تکیه میکنند که به آنها میگوید چگونه تصاویر کانتینر را سازماندهی و مرتب کنند - "DNA" ناوگان کانتینری هماهنگ شده شما. سپس این ابزار از محدودیتهای تعریف شده مانند برچسبها یا ابردادهها برای شناسایی و تخصیص خودکار میزبانها استفاده میکند. شما ناوگان کانتینری خود را مدیریت میکنید، نه با تصمیمگیری در زمان واقعی، بلکه با اتخاذ آنها از قبل و ارائه آنها به ابزار به عنوان مجموعهای از دستورات if-this-then-that. این به شما همان مزایایی را میدهد که اتومیشن کامپیوتری به بخشهای دیگر ارائه میکند، اما در داخل خود پیاده سازی فناوری اطلاعات شما اتفاق میافتد.
ارکستریشن گردش کار
گردشهای کاری شامل یک سری «کارهایی که باید انجام شوند» به هم وابسته هستند، با مقداری انشعاب بسته به بازخورد، اما با درجه بالایی از پیشبینی. هماهنگ کردن آنها به معنای بحث در مورد جریان کار، نرم افزار و، در صورت لزوم، سخت افزار درگیر، و سپس ساختن یک ساختار منسجم برای کنترل و هدایت همه آن است. گردشهای کاری فردی را میتوان سازماندهی کرد و سپس به یکدیگر وارد کرد تا به سازمانها اجازه دهد مناطق عظیمی از بهرهوری را هماهنگ کنند.
در نگاه اول، این بسیار شبیه یک خط لوله داده به نظر می رسد یا مانند فرآیندی که میتوانید با استفاده از ابزارهایی مانند IFTTT بسازید. و تا حدودی همینطور است. در مقیاس، دامنه و کاربرد متفاوت است. ارکستریشن گردش کار فقط دادهها را از یک برنامه به برنامه دیگر منتقل نمیکند. این تغییرات حالت را در برنامهها بر اساس بازخورد سایر برنامهها، با اشاره به ساختار متعارف ایجاد میکند.
ارکستریشن DevOps
دواپس(DevOps) ترکیبی از دو رشته توسعه و عملیات است. این یک رویکرد موثر است که به طور گسترده مورد استفاده قرار نمیگیرد، اما همچنان بیش از آنچه که نیاز است، خاموش است. به طور خاص، تیمهای توسعه اغلب دارای اتوماسیون داخلی هستند، و عملیاتها نیز اغلب این کار را انجام میدهند. اما به یاد داشته باشید، ارکستراسیون در مورد ادغام اتوماسیون وظایف فردی در کل فرآیندها است.
ارکستریشن DevOps نمیتواند فقط در مورد ادغام چندین کار در یک اسکریپت بزرگتر باشد. در عوض، این به معنای ایجاد یک گردش کار تخصصی DevOps، شامل چندین کار و مراحل خودکار، با منابع مناسب برای سادهسازی کل فرآیند است.
برای دستیابی به همه اینها، به یک لایه ارکستریشن نیاز است.
لایههای ارکستریشن به شما امکان میدهند چندین API را بر اساس یک طرح تعیینشده مرکزی هماهنگ کنید. در واقع، لایه ارکستریشن شما به عنوان یک «API جهانی» عمل میکند که همه برنامههای کاربردی دیگر شما به آن متصل میشوند و در پاسخ به یک درخواست، چندین API را با چندین سرویس مختلف تماس میگیرد.
لایههای ارکستریشن همچنین قالببندی دادهها را بین سرویسهای جداگانه مدیریت میکنند، فرمتهای مختلف را به طور متقابل قابل درک میکنند و اجازه میدهند جریانهای داده مختلف تقسیم، ادغام و مسیریابی شوند. این به تبدیل دادهها، مدیریت سرور، احراز هویت و یکپارچهسازی سیستمهای قدیمی کمک می کند.
لایههای ارکستریشن مبتنی بر ابر(Cloud)، ارتباطات متقابل بین اجزای مختلف مبتنی بر ابر و بین ابر و پیادهسازیهای قدیمی یا در محل IT را مدیریت میکنند. اگر درست انجام شود، باید IT شما را به یک سیستم «plug-and-play» با خدمات ناشناس تبدیل کند.
ارکستریشن در واقعیت چگونه است؟
این سه شرکت برای حل مشکلات تجاری که در غیر این صورت غیرقابل حل بود، به اجرای ارکستریشن پرداختند. در این فرآیند آنها صدها میلیون دلار برای خود پس انداز کردند، خدمات خود را برای مشتریان گسترش دادند و موقعیت خود را به عنوان رهبران در زمینههای خود تثبیت کردند.
1: پیرسون Pearson
پلتفرم یادگیری آنلاین پیرسون بر این تکیه دارد که بتواند به یک پایگاه کاربری بزرگ و به سرعت در حال رشد خدمت کند. اما آنها نمیتوانند این کار را با ساختارهای IT معمولی انجام دهند. کریس جکسون، مدیر مهندسی محصول ابری پیرسون، توضیح میدهد: «برای تغییر زیرساختهایمان، ما باید فراتر از فعال کردن تأمین خودکار فکر میکردیم.
با استفاده از کانتینرهای Docker و Kubernetes برای ارکستریشن، پیرسون 15٪ تا 20٪ صرفه جویی در بهره وری توسعه دهندگان و خدمات SLA را بدون قطعی حتی در اوج تقاضا و حتی با افزایش تقاضا تجربه کرد. فعالیتهای تأمینی که قبلاً تا 9 ماه طول میکشید، اکنون میتوانند تنها در چند دقیقه تکمیل شوند.
2: یو پی اس UPS
پلتفرم UPS روزانه بیش از 20 میلیون بسته را به مشتریان در سراسر جهان تحویل میدهد. این یک چالش لجستیکی قابل توجه است که UPS سعی کرد با استفاده از ORION یا بهینهسازی و ناوبری یکپارچه در جاده به آن بپردازد که مسیرهای بهینه بین 250 میلیون نقطه آدرس را برای بیش از 191000 راننده تحلیل میکند. ORION بسیار خوب کار می کند: در UPS حدود 10 میلیون گالن گاز، 100000 تن CO2 و حدود 300 تا 400 میلیون دلار در سال صرفه جویی میشود.
راهکار UPS نمیتواند همه این کارها را بدون فناوری کانتینر انجام دهد، که به آنها اجازه میدهد دادهها را در سیستم خود لوله کنند و مشکلات را قبل از بروز پیشبینی کنند: «از لحاظ تاریخی، ما واکنشپذیر بودیم. استیسی مورگان، مدیر ارشد توسعه برنامه UPS می گوید: ما اطلاعات را جمع آوری و سپس تجزیه و تحلیل میکنیم. اکنون، ما میتوانیم ببینیم که چگونه بستهها از طریق شبکه ما جریان مییابند تا به سرپرستان مرکز کمک کنند تا بر اساس آب و هوا یا سایر عوامل، حجم و نیاز کارکنان را پیشبینی کنند. دادهها به ما کمک میکند تا عملیات خود را برای افزایش رضایت مشتری و سودآوری بهینه کنیم.
خط لوله داده (data pipeline)چیست؟ خط لوله داده روشی است که در آن دادههای خام از منابع دادههای مختلف جذب میشوند و سپس برای تجزیه و تحلیل به ذخیرهگاه داده، مانند استخر داده یا انبار داده منتقل میشوند. قبل از اینکه دادهها به یک مخزن داده سرازیر شوند، معمولاً تحت برخی پردازش دادهها قرار میگیرند.
3: ونگارد Vanguard
ونگارد آموزش یا بسته ارائه نمیدهد. این خدمات مالی را ارائه میدهد که به کتابخانه ای از بیش از 1000 برنامه جداگانه متکی است. مدیریت آن سطح از تدارکات پیچیده و مرتبط باعث شد تا شرکت به دنبال ابزارهایی برای ساختاردهی فرآیندهای خود باشد، به ویژه با توجه به برنامه هایش برای مقیاس.
این شرکت سرویس کانتینر الاستیک آمازون (ECS) را انتخاب کرد و به آن اجازه داد دادهها و برنامههای خود را در فضای ابری با سطح امنیتی کافی ذخیره کند.
برایان کیفر رئیس راه حل های Amazon ECS و AWS Fargate، Vanguard میگوید: «با استفاده از خدمات AWS، ونگارد بهطور یکپارچه سیستمی مبتنی بر مدل مصرفی را طراحی کرد که شفافیت را افزایش داد، فرکانس استقرار را افزایش داد و هزینهها را کاهش داد، بنابراین مسیر مهاجرت میکروسرویسهای Vanguard را قادر میسازد تا با استفاده از Amazon ECS در AWS Fargate اجرا شوند.».
ارکستریشن همچنین به مدیریت قابلیتهای شبکه و ذخیره سازی کمک میکند. کانتینرها اجزای نرم افزاری سبک وزن و قابل اجرا هستند که شامل همه چیزهایی هستند که برای اجرای مطمئن کد در محیطهای مختلف IT لازم است. تیمها نرمافزار را به کانتینرهایی تقسیم میکنند تا برنامهها را آسانتر اجرا، جابهجا کنند، بهروزرسانی و تجمیع کنند.
با احترام
هادی بهزادی