برنامه نویسی

از ایده گرفته تا 1000+ ستاره: چگونه گردش کار لاراول از بین رفت

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

بنابراین ، من به شکار برای راه حل رفتم.

این زمانی است که من به موقتی افتادم. PHP SDK آنها نفس هوای تازه ای بود. شما می توانید گردش کار مانند کد PHP معمولی را بنویسید ، مراحل Async را انجام دهید ، و سیستم به طرز جادویی در جایی که باقی مانده است از سر گرفته می شود. زیبا بود و تجربه توسعه دهنده احساس درستی داشت. من فروخته شدم

سپس آن را به تیم DevOps رساندم.

و به یک دیوار آجری برخورد کرد.

آنها به من خیره شدند مانند من پیشنهاد کردم یک سفینه فضایی را برای اجرای مشاغل PHP راه اندازی کنم. موقتی به خوشه Kubernetes یا اشتراک در سرویس ابری آنها نیاز داشت. “چرا ما همه این پیچیدگی ها را فقط برای جایگزینی صف لاراول اضافه می کنیم؟” آنها پرسیدند. جواب خوبی نداشتم در اعماق پایین ، من می دانستم که آنها یک نکته دارند.

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

بنابراین ، من آستین هایم را چرخاندم و به کار رسیدم.

با الهام از PHP SDK TEMEDAL ، من ایده اصلی استفاده از عملکرد را به عنوان یک بازرسی Coroutine حفظ کردم اما چیزهای سنگین ، بدون سرور ، بدون خوشه و بدون ابر را بیرون انداختم.

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

در اینجا یک مثال سریع از نحوه عملکرد آن آورده شده است:

class PaymentWorkflow extends Workflow
{
    public function execute($orderId)
    {
        $order = yield ActivityStub::make(ReserveOrder::class, $orderId);
        $payment = yield ActivityStub::make(ProcessPayment::class, $order->id);
        yield ActivityStub::make(NotifyCustomer::class, $payment->id);
        return $payment;
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

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

این اثبات مفهوم بود. کار کرد ما یک نسخه اساسی را به تولید ارسال کردیم و این کار را مانند یک جذابیت انجام داد.

اما من نتوانستم جلوی تینک را بگیرم.

این مانند یک معما بود که مجبور شدم آن را حل کنم. من از عوارض جانبی ، ساگاس و گردش کار کودک پشتیبانی کردم و ضمن ساده نگه داشتن آن ، آن را قدرتمندتر کردم.

من repo خصوصی را با یک مهندس که در موقت دوست شده ام به اشتراک گذاشتم (بعد از اینکه او را با سؤالات بسیار زیاد می کردم). او نگاهی انداخت و گفت ، “وای ، این واقعاً عالی است. شما باید آن را آزاد کنید.”

بنابراین ، من این کار را کردم. من اسناد را نوشتم ، repo را باز کردم و یک نسخه آهنگساز را برچسب گذاری کردم. من آن را گردش کار Laravel نامیدم.

سپس چیزی با جامعه کلیک کرد: موقتی برای Devs PHP مانند ما ساخته نشده است.

اشتباه نکن فوق العاده برای سیستم های عظیم و توزیع شده در مقیاس سازمانی ، مانند نیرو دادن Netflix یا Uber. اما PHP SDK آنها ، در حالی که جامد است ، اولویت آنها نیست. حتی به RoadRunner ، یک زمان اجرا اضافی در بالای سرور آنها نیاز دارد. این اصطکاک است که اکثر لاروها به آن احتیاج ندارند.

در همین حال ، گردش کار Laravel همه چیز در مورد سادگی است:

بدون خدمات خارجی

هیچ زمان سفارشی وجود ندارد.

فقط صف لاراول ، یک بانک اطلاعاتی و عملکرد.

سریع به جلو ، و گردش کار لاراول بی سر و صدا به پیش فرض ارکستراسیون طولانی مدت در جامعه لاراول تبدیل شده است. این بیش از 1000 ستاره در Github جمع شده است ، برای اصطلاحاتی مانند “ارکستر گردش کار Laravel” به بالای گوگل صعود کرده است و حتی هزینه های دامنه من را از طریق حامیان GitHub پوشش می دهد.

PHP SDK Temporal هنوز هم 4-5 برابر نصب روزانه دارد ، اما آنها 350 میلیون دلار بودجه و یک دستگاه بازاریابی گسترده دارند. من فقط یک پسر با یک repo هستم و اشتیاق به ایجاد php dev درست دارم.

تنها “نزولی”؟ من یک SaaS براق برای فروش ندارم. هیچ محصول ابری و فروشنده ای وجود ندارد. گردش کار Laravel فقط ابزاری است که یک مشکل را حل می کند ، و من با آن مشکلی ندارم.

اما من هنوز تمام نشده ام. من در حال دیدن ویژگی های جدید ، بررسی ادغام های عمیق تر لاراول و دوست داشتن جامعه ای هستم که در این پروژه تجمع می کند.

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا