ارکستراسیون بدون سرور – انجمن DEV
آیا با من می مانی؟ امیدوارم اینطور باشد، زیرا مشتاقم درباره برخی از خدمات واقعاً جالب در بدون سرور صحبت کنم که فراتر از اصول اولیه API، ذخیره سازی و محاسبات هستند. این فضایی است که در آن واقعاً میتوانید مزایای درخشش بدون سرور را ببینید، و در مقایسه با فضای داخلی یا دیگر فضاهای توسعه ابری، که در آن نوآوریهای زیادی وجود دارد که ممکن است 1:1 با آنچه قبلاً به آن عادت کردهاید مقایسه نشود. در توسعه اپلیکیشن من این خدمات را زیر چتر گسترده “ارکستراسیون” گنجانده ام، زیرا آنها واقعاً در بین خدمات اصلی وجود دارند و به جریان رویداد محور شما کمک می کنند. ممکن است نیازی به همه یا حتی هیچ یک از این خدمات در همه برنامههای خود نداشته باشید، اما میتوانند فناوریهای مفیدی برای استفاده از آنها باشند، به خصوص اگر برنامه شما واقعاً برای معماری رویدادها پیکربندی شده باشد.
توابع مرحله AWS
آیا داشتن یک سرویس بدون سرور مورد علاقه عجیب است؟ چون این یکی ممکنه مال من باشه AWS Step Functions یک ابزار هماهنگسازی گردش کار است که به شما کمک میکند برنامه توزیعشده خود را با تقسیم کردن آن به چند مرحله مدیریت کنید (نام اکنون باید منطقی باشد). توابع مرحله ای با بیش از 220 سرویس AWS یکپارچه شده است، اما شخصاً آن را برای توابع لامبدا خود بسیار مفید دانستم، زیرا به حفظ واحدهای کوچک، مختصر و منطقی کد کسب و کار کمک می کند که به طور سیستماتیک فراخوانی می شوند. کنترل و نظارت بر رویداد خود در طول برنامه شما آسان تر است، بنابراین می توانید ردیابی کنید که برنامه شما کدام مرحله است یا شناسایی کنید که در کجا ممکن است با مشکل مواجه شوید. توابع مرحلهای همچنین به شما انعطافپذیری بیشتری میدهد، زیرا میتوانید «حالتهای» مختلفی مانند PASS یا WAIT اضافه کنید، و حتی میتوانید فرآیندها را به صورت موازی اجرا کنید یا به برنامهتان گزینههایی بدهید تا در مراحل مختلف بسته به ورودی یا پارامترها اجرا شوند.
مانند بسیاری از منابع AWS، میتوانید تابع مرحله خود را به هر نحوی که میخواهید تهیه و پیکربندی کنید. برای من، این معمولاً با استفاده از یک ابزار زیرساخت به عنوان کد مانند CDK برای ارائه در پایتون یا تایپ اسکریپت، و سپس تعریف مراحل واقعی – در غیر این صورت به عنوان “ماشین حالت” شناخته می شود – در یک فایل JSON است. از زمان انتشار در سال 2016، Step Functions دارای یک جزء بصری در کنسول AWS است که به شما امکان می دهد مراحل برنامه و جریان رویداد خود را از طریق آن مشاهده کنید، اما در سال 2021 AWS Workflow Studio را منتشر کرد، که در واقع به شما اجازه می دهد تا آن را بکشید. و کامپوننت هایی را که می خواهید استفاده کنید را در یک ویرایشگر بصری رها کنید و کد را به طور خودکار برای شما تولید می کند. متأسفانه کار در یک شرکت بزرگ این چیزی نیست که من واقعاً بتوانم از آن استفاده کنم، اما به عنوان یک یادگیرنده بصری فکر می کنم این یک ابزار عالی است و قطعاً می تواند توسعه شما را ساده کند.
پل رویداد آمازون
به نظر می رسد که EventBridge اخیراً یک موضوع داغ بوده است، و من محتوای بیشتر و بیشتری را مشاهده می کنم که منابع EventBridge را به تصویر می کشد. آمازون EventBridge تا حدودی شبیه به Step Functions یک سرویس ارکستراسیون بدون سرور برای رویدادهای برنامه شما است. سه مؤلفه کلیدی آن عبارتند از Event Bus، برای مدیریت تعاملات با رویدادهای شما، مانند ارسال/دریافت و تبدیل، یک زمانبند، برای کمک به برنامهریزی وظایف مرتبط با رویدادهایتان و در نهایت Pipes که مستقیماً با خدمات بدون سرور شما ادغام میشوند. به پایان” و به صورت اختیاری رویداد خود را در صورت نیاز فیلتر یا تغییر دهید. EventBridge Pipes اخیراً در پایان سال 2022 منتشر شد، اما ادغام یکپارچه با تولید کنندگان و مصرف کنندگان رویداد شما یک نقطه فروش بزرگ برای توسعه دهندگان بوده است (که افزایش اخیر در استفاده از EventBridge را توضیح می دهد).
مشابه سایر سرویسها، میتوانید نمونه EventBridge خود را با توجه به نیازهای برنامهتان، با محدودیتهای امنیتی، ادغامهای سرویس و تبدیلهای رویداد مناسبی که نیاز دارید، تعریف و پیکربندی کنید. من نمی گویم هرگز، اما به خصوص محتمل است که توابع EventBridge و Step را در یک برنامه مشابه یا حداقل میکروسرویس ها نداشته باشید، زیرا خدمات ارائه شده آنها کاملاً مشابه است. چه زمانی ممکن است از یکی بر دیگری استفاده کنید؟ مثل همیشه، هیچ یک از گزینهها “بهتر” نیستند و این به ترجیحات شخصی و نیازهای برنامه شما بستگی دارد. اگر فرآیندهایی دارید که باید به صورت موازی اجرا شوند و ممکن است حالتهای بیشتری به یکدیگر وابسته باشند، جایی که ممکن است بخواهید منتظر بمانید یا مراحل را رد کنید یا گردشهای کاری متفاوتی داشته باشید، احتمالاً Step Function انتخاب بهتری است. اگر به دنبال ادغام مستقیم بین چندین سرویس مختلف AWS هستید و نیاز به تغییر یا فیلتر کردن رویداد خود دارید، EventBridge ممکن است محل شروع بهتری باشد.
آمازون SQS
Amazon SQS همچنین به عنوان خدمات صف ساده شناخته می شود. دقیقاً مانند افرادی که برای یک سواری شلوغ در یک پارک موضوعی در صف منتظر می مانند، گاهی اوقات شما مکان هایی در برنامه خود دارید که ممکن است از رویدادها پشتیبان گیری شود، که باعث ایجاد تنگنا شده و به عملکرد برنامه شما (و احتمالاً کیف پول شما نیز) آسیب می رساند. یک سرویس صف مانند SQS به شما کمک می کند تا رویدادها و پیام های خود را به محض ورود پردازش و نگهداری کنید. SQS به طور خاص همان چیزی است که به عنوان صف First-In First-Out یا FIFO شناخته می شود، به این معنی که اولین مورد در اولین موردی است که قرار می گیرد. پردازش شده، درست مانند اولین نفری که در صف سواری ما است، اولین کسی است که سوار می شود. گاهی اوقات با حجم بالای پیامهایی که منتظر پردازش هستند، خطر گم شدن یا نادیده گرفتن آنها در پردازش وجود دارد (افراد ناراضی انتظار طولانی را در پارک موضوعی ترک میکنند) – وجود SQS در محل از بروز این مشکل جلوگیری میکند. این همچنین به این معنی است که شما لازم نیست نگران باشید که سرویسهای دیگرتان فعال هستند و برای رسیدگی به رویدادهای دریافتی آماده هستند، زیرا SQS پیامها را برای شما مدیریت و ذخیره میکند (صف سرگرمکننده، افراد منتظر و ترتیب ورود آنها را کنترل میکند. سواری در پارک موضوعی ما). درست مانند سایر سرویسهای ما، میتوانید SQS را پیکربندی کنید، با این حال این یک سرویس نسبتاً «ساده» است، بنابراین ایجاد و نگهداری یک صف SQS را بدون پیچیدگی میبینید.
آمازون SNS
آمازون SNS یا سرویس اطلاع رسانی ساده، کمتر یک سرویس ارکستراسیون است و بیشتر یک سرویس ارتباطی است. من قصد دارم این را یک سرویس مفید بدانم، زیرا یک سرویس کوچک است که می توانید برای ارسال و دریافت پیام از آن استفاده کنید. یکی از رایج ترین موارد استفاده از سرویس SNS ارسال هشدارهای ایمیلی است – شاید برای توسعه دهندگان برای نظارت بر وضعیت برنامه، یا شاید برای کاربران، برای برقراری ارتباط با ویژگی های جدید یا ارسال تاییدیه های ایمیل بر اساس چیزی مانند رزرو رزرو. همچنین میتوانید پیامهای متنی SMS یا فشارهای تلفن همراه ارسال کنید و میتوانید نوع صف خود را سفارشی کنید و رمزگذاری اضافه کنید. مانند SQS، این سرویس قطعاً «ساده» است و میتواند تنها در چند خط کد کوتاه یا کلیک روی دکمه در کنسول AWS پیکربندی شود.
اگرچه خدمات ابری «هستهای» را نمیدانم، اما خدمات ارکستراسیون و ارتباط کلیدی برای توسعه رویداد محور و طراحی برنامه قوی هستند. اگر برنامه خود را طوری ساختار می دهید که از جریان رویداد استفاده کند، اینها ابزارهایی هستند که می خواهید با آنها آشنا شوید و با صرفه جویی در زمان، هزینه، پیچیدگی و هزینه های مدیریتی شما در موفقیت شما موثر خواهند بود. این در مورد آنچه من میخواهم با سرویسهای ابری بدون سرور پوشش دهم را تکمیل میکند، اگرچه چیزهای زیادی برای کشف وجود دارد. فردا را هماهنگ کنید تا همه اینها را با بهترین شیوه ها کنار هم بگذاریم.*
*این بخشی از مجموعهای است که در اینجا پوشش داده میشود، اما من همچنین شما را تشویق میکنم تا با بقیه سریالها در 90DaysOfDevOps دنبال کنید.