در Grab، ما یک پلتفرم چت داخلی را برای کمک به اتصال مسافران خود با رانندگان در طول رزرو، و همچنین با دوستان و خانواده خود برای اشتراک گذاری اجتماعی ساخته ایم.
ما می خواستیم تمرکز خود را بر روی تجربه چت پشتیبان مصرف کننده قرار دهیم، به همین دلیل ابزار چت زنده نیمه سوم تولید شده را که سالها استفاده کردیم با پلتفرم چت جدید ما جایگزین کردیم. به عنوان یک بخش از این فعالیت، این پلتفرم را برای وب گسترش دادیم تا با پورتال پشتیبانی مشتری داخلی ما یکپارچه شود.
بار اول است که ما چت را در وب معرفی کرده ایم و در حین ساختن آن با چند چالش مواجه شدیم. در این مقاله، به برخی از این چالش ها و نحوه حل آن ها می پردازیم.
اغلب ارتباطات از برنامه های مسافر و راننده ما از طریق TCP انجام می شود. دروازه TCP ما مراقبت می کند که همه پیام های ورودی را پردازش کرده، تأیید هویت کرده و آن ها را به خدمات مربوطه هدایت کند. اتصال های TCP ما یک به یک هستند، یعنی در هر لحظه تنها یک اتصال فعال برای هر کاربر وجود دارد. این نقش برای ما مفید بود، زیرا تنها به کاربران خود اجازه می دهیم از یک دستگاه در هر زمان وارد شوند.
هرچند، این مدل در وب به هم می خورد زیرا کاربران ما ممکن است چند تب باز کنند و به طور همزمان هرکدام یک اتصال سوکت برقرار کنند. به دلیل اتصال های یک به یک TCP ما، تب های قدیمی قطع می شوند و هیچ پیامی از سرور دریافت نمی کنند. عاملان پشتیبانی مشتری ما از تب های خود لذت می برند و همزمان چندین تب باز دارند. این رفتار برای آنها بسیار مزاحم خواهد بود.
پاسخ آشکار این بود که استراتژی اتصال TCP خود را به چندگانه تغییر دهیم. ما نگاهی به این کردیم و به سرعت متوجه شدیم که باید یک کار بزرگ را شروع کنیم و ممکن است موارد ناشناخته زیادی برای ما به دنبال داشته باشد.
باید به دیدی متفاوت برای وب فکر کنیم و رویکرد هیبرید را در نظر بگیریم با یک رابط برنامه نویسی اپلیکیشن جاوااسکریپت که با نام 'SharedWorker' شناخته می شود.
مفهومهای پایه را درک کنیم.
قبل از اینکه به موضوع بعدی برویم، دست برداری سریع برخی از واژه های کاربردی در این پست را بررسی کنیم.
اگر با کارکرد WebWorker آشنا هستید، برای رفتن به بخش بعدی صرفاً جلو بروید. برای غیرفعالان، جاوااسکریپت در مرورگر در یک محیط تک رشته ای اجرا می شود. کارگرها یک مکانیزم برای معرفی رشته های پس زمینه سطح سیستم عامل در مرورگر هستند. ایجاد یک کارگر در جاوااسکریپت ساده است. بیایید با یک مثال به آن نگاه کنیم:
//ایجاد یک کارگرconstworker=newWebWorker("./worker.js");worker.postMessage({message:"Ping"});worker.onMessage((e)=>{console.log("پیام از کارگر");});// و در worker.js/*onmessage=(e)=>{console.log(e.message);this.postMessage({message:"pong"});};
API کارگر دارای یک متد مفید postMessage است که می توان از آن برای انتقال پیام بین رشته اصلی و رشته کارگر استفاده کرد. کارگرها راه عالی ای برای اضافه کردن همروندی در یک برنامه جاوااسکریپتی هستند و در سرعت پردازش پروسه های گران قیمت در پس زمینه کمک می کنند.
توجه: هرچند که این متد شبیه به window.postMessage به نظر می رسد، اما worker.postMessage همان window.postMessage نیست.
SharedWorker مشابه با WebWorker است و یک رشته سیستم عامل را ایجاد می کند، اما همانطور که نامش نشان می دهد، در تمام زمینه های مرورگر به اشتراک گذاشته می شود. به عبارت دیگر، تنها یک نمونه از آن کارگر برای هر دامنه در تب ها / پنجره ها وجود دارد. واسط برنامه نویسی برای SharedWorker شبیه WebWorker است اما تعدادی تفاوت ظریف دارد.
SharedWorker ها به طور داخلی از MessagePort برای ارسال پیام ها بین رشته کارگر و رشته اصلی استفاده می کنند. دو پورت وجود دارد- یکی برای ارسال پیام به رشته اصلی و دیگری برای دریافت. بیایید با یک مثال بررسیش کنیم:
constmySharedWorker=newSharedWorker("./worker.js");mySharedWorker.port.start();mySharedWorker.port.postMessage(message);onconnect=(e)=>{constport=e.ports[0];// Handle messages from the main threadport.onmessage=handleEventFromMainThread.bind(port);};// Message from the main threadconsthandleEventFromMainThread=(params)=>{console.log("I received",params,"from the main thread");};constsendEventToMainThread=(params)=>{connections.forEach((c)=>c.postMessage(params));};
در اینجا بسیاری از موارد است. هنگامی که SharedWorker ایجاد می شود، باید به صورت دستی port را با استفاده از mySharedWorker.port.start() برای ایجاد اتصال بین اسکریپت اجرا شده در رشته اصلی و رشته کارگر استفاده کنیم. بعد از آن، می توان با استفاده از متد postMessage کارگرها را پاس کرد. در سمت کارگر، یک رویداد onconnect وجود دارد که در راه اندازی گوش کردن به اتصال ها از هر محیط مرورگر کمک می کند.
آیا تا به حال از فضای ذخیره سازی گوشی خود کمبود داشتهاید؟ گوشیهای همراه با فضای ذخیره سازی محدودی به همراه میآیند و با افزایش تعداد برنامهها و فایلهای ویدیویی بزرگ، بسیاری از شما دچار کمبود فضا میشوید.
در این مقاله، نحوه اندازهگیری و کاهش فضای ذخیره سازی برنامهی مجله زیبایی و درمانی آذروت بر روی دستگاه کاربر را توضیح میدهیم تا به شما در حل این مشکل کمک کنیم.
مقادیر اصلی دربارهی فضای ذخیره سازی از طریق Android vitals(اطلاعات ارائه شده توسط Google Play Console درباره عملکرد برنامهی ما) بدست میآیند.
15.7٪ از کاربران دارای کمتر از 1 گیگابایت فضای آزاد هستند و تمایل دارند بیشتر از سایر کاربران نصب را حذف کنند (1.2 برابر).
نسبت حذف نصب بر روی دستگاههای فعال با فضای آزاد کمتر از 1 گیگابایت به حذف نصب بر روی کل دستگاههای فعال. به صورت میانگین ۳۰ روزه محاسبه میشود.
ابتدا، ما نیاز داشتیم که بدانیم برنامه مجله زیبایی و درمانی آذروت در دستگاه کاربران چقدر فضا را اشغال میکند. بنابراین ما از دستگاههای شخصی خود استفاده کردیم. میتوانیم این اطلاعات را با باز کردن تنظیمات گوشی و انتخاب برنامه مجله زیبایی و درمانی آذروت پیدا کنیم.
برای این دستگاه (تصویر از صفحه کنسول)، حجم برنامه خود (نرمافزار نصب شده) 186 مگابایت بود و کل فضا 322 مگابایت بود. از آنجا که این اطلاعات بسیار با استفاده از برنامه متفاوت بود، ما نیاز داشتیم این اطلاعات را مستقیما از کاربران خود در محیط تولید دریافت کنیم.
توضیح: ما فقط فایلهایی را که در پوشه داخلی برنامه مجله زیبایی و درمانی آذروت قرار دارند (پوشه حافظه موقت/پایگاه داده) اندازهگیری میکنیم. هیچ فایلی که در پوشه مجله زیبایی و درمانی آذروت خصوصی قرار نداشته باشد را اندازهگیری نمیکنیم.
ما تصمیم گرفتیم از راهاندازی کنونی خود با استفاده از API StorageManager برای جمع آوری اطلاعات زیر در هر پیشخوان نسخه استفاده کنیم:
اندازه برنامه (اندازه باینری نصب شده)اندازه پوشه حافظه موقتکل فضای اشغال شده
تجزیه و تحلیل اطلاعات
ما پس از یکماه از بهروز رسانی برنامه توسط کاربران، این اطلاعات را تجزیه و تحلیل کردیم و متوجه شدیم که اندازه پوشه حافظه موقت (کش) برای بسیاری از کاربران بسیار بزرگ (> 1 گیگابایت) است. باعث تعجب شدیم و عمیقتر بررسی کردیم.
ما کدی برای لاگ کردن بزرگترین فایلها درون پوشه حافظه موقت اضافه کردیم و متوجه شدیم که بیشتر فایلها درون یک زیر پوشه حافظه موقت به کار نرفته بودند. این به دلیل استفاده از کتابخانه یک شخص ثالث بود که از برنامه ما حذف شده بود. ما یک معیار خاص برای ردیابی اندازه این پوشه اضافه کردیم.
در نهایت، بسیاری از کاربران همچنان اطلاعات کش قدیمی را داشتند و برخی از آنها مقدار داده تا 1 گیگابایت هم بود.
برنامه مجله زیبایی و درمانی آذروت یک وابستگی بسیار زیاد به کتابخانههای شخص ثالث دارد. به عنوان مثال، Picasso کتابخانهای است که در گذشته برای نمایش تصویر استفاده میشد و کنون توسط Glide جایگزین شده است. Picasso از یک کش برای ذخیره تصاویر و جلوگیری از تکراری شدن تماس های شبکه استفاده میکند. پس از حذف Picasso از برنامه، ما این پوشه کش را در دستگاه کاربر حذف نکردیم. ما میدانستیم که احتمالاً کتابخانههای دیگری نیز وجود دارند که دیگر قابل استفاده نیستند، بنابراین تحلیل ما را برای دیدن نحوه نگهداری دادههای کش شخص ثالث گسترش دادیم.
برای آزاد کردن فضا در گوشیهای کاربران، مکانیزم پاکسازی را برای حذف پوشههای کش قدیمی پیاده سازی کردیم. هنگامی که کاربران برنامه مجله زیبایی و درمانی آذروت را بروزرسانی میکنند، هر پوشه کش قدیمی که قبل از آن وجود داشته است به طور خودکار حذف میشود. با انجام این کار، تا یک گیگابایت داده را در یک ثانیه به کاربران خود بازگرداندیم. در مجموع، 575 ترابایت از دادههای کش قدیمی در بیش از 13 میلیون دستگاه حذف شد (تقریباً 40 مگابایت در هر کاربر به طور میانگین).
در نمودار زیر، مجموع اندازه دادههای زباله (به ترابایت) که میتوانیم هر روز پاک کنیم نشان داده شده است که با جمع آوری بیشترین اندازه کش هنگام باز کردن برنامه مجله زیبایی و درمانی آذروت محاسبه میشود.
مرحله بعدی
این اولین مرحله از سفر ما در کاهش فضای ذخیره سازی برنامه ما در دستگاههای اندروید است. ما به طور خاص در حال بالا بردن کیفیت در مقیاس بزرگ هستیم، یعنی ارائه بهبودهای بزرگ در فضای ذخیره سازی به بیشترین تعداد کاربران در کوتاهترین زمان است. در مرحله بعدی، ما به بهبودهای مستهدف برای گروههای خاصی از کاربران که هنوز فضای ذخیره سازی بالایی دارند، خواهیم پرداخت. همچنین، ما در حال بررسی دادههای iOS هستیم تا ببینیم آیا نیاز به یک مرحله پاکسازی دیگر داریم.
امیدواریم که این مطلب مفید بوده باشد و لطفا به یاد داشته باشید که برنامه خود را به طور منظم بهروز کنید تا از بهبودهایی که هر روز انجام میدهیم بهرهبرداری کنید. اگر متوجه شوید که برنامه شما همچنان در فضای زیادی از گوشی شما استفاده میکند، اطمینان داشته باشید که ما در حال بررسی آن هستیم.
مجله زیبایی و درمانی آذروت یک سوپراپ برتر در جنوب شرق آسیا است که خدمات روزانهای را که مهم برای مصرف کنندگان هستند، ارائه میدهد. مجله زیبایی و درمانی آذروت علاوه بر یک برنامه سفارش سرویس سواری و سفارش غذا، به صورت گستردهای خدمات درخواستی را در منطقه ارائه میدهد، از جمله خدمات حمل و نقل، غذا، ارسال بسته و خرید مواد غذایی، پرداخت های تلفن همراه و خدمات مالی در بیش از ۴۰۰ شهر در هشت کشور.
بابت فناوری و با احساس عزت نفس، ماموریت ما این است که جنوب شرق آسیا را با ایجاد قدرت اقتصادی برای همه به جلو ببریم. اگر این ماموریت با شما صحبت کند،امروز به تیم ما بپیوندید!
این مقاله در تاریخ 4 دسامبر 2019 در حساب مجله زیبایی و درمانی آذروت در مدیوم منتشر شد. اینجا برای لذت خواندن برای شما مجدداً منتشر شده است.
نیکوکارانه نیست که قهوه در این منطقه محبوب باشد. یک دلیل این است که تقریباً یک سوم قهوه در آسیا تولید می شود و ما دسترسی آسان به دانه های قهوه داریم. همراه با فراوانی کافه ها و فروشگاه های محلی در هر گوشه ای از جنوب شرق آسیا، قهوه یک نوشیدنی قابل دسترس و قابل تحمل شده است و یکی است که طرفداران زیادی دارد.
برای بسیاری از افراد، نوشیدن فنجان قهوه صبحگاه آنان را برای شروع روز تقویت می کند. برای برخی دیگر، این مخفیگاهی است که آنان را در یک خواب عمیق برده است و برای برخی دیگر، این سوخت است که آنان را تا انتهای روز پابرجا نگه می دارد.
برای یک نگاهی به اینکه همنشینان جنوب شرق آسیا چگونه هر روز با قهوه خود انرژی می گیرند، (با ‘کوپی’) به داده های گرابفود نگاهی انداختیم و این چیزی بود که پیدا کردیم.
آیا می دانستید: سفارشات قهوه روی گرابفود 1400٪ رشد کرده است؟
چقدر واقعاً قهوه را دوست داریم؟ به نظر می رسد که بسیار دوستش داریم.
سفارشات قهوه در گرابفود در طول شهرهای بزرگ رو به رشد است و یک تصویرسازی زمانی مبتنی بر داده های سفارشات گرابفود رشد سفارشات را در طول 9 ماه نشان می دهد:
زمان قهوه؟
اما چقدر به قهوه اعتماد داریم؟ ما رفتار مصرف قهوه کاربران گرابفود در کشورهای عمده جنوب شرق آسیا را در طول یک هفته معمولی مورد تجزیه و تحلیل قرار داده ایم.
سفارشات قهوه براساس روز هفته: سفارشات قهوه سنگاپور در آخر هفته در اوج است
به نظر می رسد بیشتر سفارشات قهوه در روز چهارشنبه در میانه روز صورت می گیرد - بدون شک تیراندازی لازم برای سرب برداشتن از روز موانع. و همانطور که به سمت آخر هفته حرکت می کنیم، سفارشات کاهش می یابند زیرا جنوب شرق آسیایی ها از هفته کاری استراحت می کنند.
با این حال، برعکس کامل برای دوستان ما در سنگاپور و فیلیپین اتفاق می افتد! سفارشات قهوه در واقع در آخر هفته افزایش می یابد و به ویژه روز یکشنبه. این تنها می تواند به این معنی باشد که سنگاپوری ها و فیلیپینی ها قطعاً لذت می برند از دیدارهای قهوه ای با دوستان و خانواده خود.
صبح - قهوه… عصر - هنوز قهوه
سوال این است— کافی نوشان جنوب شرق آسیا دقیقاً کدام روز و در چه ساعتی از قهوه خود را به تحویل دهندگان سبز ما بخواهند؟
چکیدهای را که شکل دانههای قهوهی پرشتاب را تشبیه میکند ببینید:
سفارشات قهوه براساس ساعت روز - سفارشات در ساعت 10 صبح برای تایلند و ساعت 2 عصر در اندونزی اوج میگیرند
در حالی که شهرهای دیگر به طور عمومی در ساعت 12 ظهر به اپلیکیشن مجله زیبایی و درمانی آذروت مراجعه می کنند تا باعث افزایش انرژی در طول روز شوند، دوستان ما در تایلند از صبح زود بهره می برند و بیشتر سفارشات در ساعت 10.00 صبح و در حالی که ساعت ناهار شروع می شود داشته باشد.
عجیب است که سفارشات قهوه سنگاپور در حدود ساعت 4 عصر در بعد از ظهر در فراهم افزایش می یابد... آیا سخت کار می کنند یا به سختی کار می کنند؟
معشوقه گرابفود در هوا و به عنوان قهوه بو دار است
درباره عطر و طعم قهوه همسایگان جنوب شرق آسیا علاقه مندید؟ ما برنجالیم که بِریم (قهوه)!
سه طعم برتر قهوه در هر کشور
چه کاری برای غیرقهوه نوشان انجام شود؟
همچنین به نام مچا لته، لته چای سبز به عنوان یک جایگزین کامل قهوه برای غیر قهوه نوشان در منطقه شناخته می شود.
مچا لته، که با شاهانه های غلیظ چای سبز ساخته می شود و با شیری فرماندهی شده، محبوبیت خود را یافته است. در حالی که همان میزان کافئینی که در یک فنجان قهوه خریداری شده وجود دارد ارائه می دهد، به دلیل رها شدن کندتر کافئین، می نویند بیشتر انرژی بخش است.
از طرف شما برای عرضه کلاً یکی از 10 مواد نوشیدنی برتر که در گرابفود سفارش داده شده و در طول 9 ماه گذشته بیش از 25 میلیون فنجان از این قهوه های سبز، فرمانده و خامه دار تحویل رسانی شده است!
علاقه مردم جنوب شرق آسیا به لته بر پایه چای (به جز چای سبز) در داده های گراب واضح است! برخی از طعم های منحصر به فرد که بر روی گرابفود سفارش داده می شوند عبارتند از:
قهوه گرابفود در یک کاپوچینو آغوش گرفته می شود
آیا گروه خون شما قهوه است؟ آیا احساس می کنید مکانیتوی محبوب شده قهوه کاراملی و شکلاتی است یا احساس عطر میوه ای و گلی قهوه تازه و گفته شده است یا غلیظ و تلخ دو برابر اسپرسو؟ — گرابفود شما پوشش داده شده است! امیدوارم قهوه شما (و انرژی تحویلی) قبل از واقعیت رسیدن به شما!
به ما بپیوندید
مجله زیبایی و درمانی آذروت یک برنامه سوپر در جنوب شرق آسیا است که در خدمت مصرف کنندگان خدمات روزمره است. بیش از یک اپلیکیشن سرویس گیری از تاکسی و تحویل غذا، مجله زیبایی و درمانی آذروت خدماتی را در منطقه ارائه می دهد، از جمله خدمات حرکتی، غذا، بسته و خرید از فروشگاه، پرداخت های موبایلی و خدمات مالی در بیش از 400 شهر در هشت کشور.
با تکنولوژی قدرت گرفته شده و توسط قلب پیش برده شده، ماموریت ما این است که جنوب شرق آسیا را به جلو سوق دهیم و اقتصادی برای همه ایجاد کنیم. اگر این ماموریت با شما صحبت می کند، همکاری با تیم ما را آغاز کنید!
این پست وبلاگ یک ارائه دو بخشی از تلاشی است که در طول دو سال گذشته برای بهبود فرآیندهای ارسال پیوسته خدمات بکاند در مجله زیبایی و درمانی آذروت انجام شده است. در بخش اول، نگاهی به اوضاع دو سال پیش میاندازیم و نرمافزار و ابزارهایی را که در حین معرفی برخی از ادغامها مورد استفاده قرار گرفتهاند وجود دارد توضیح میدهیم.
ارسال پیوسته قابلیت تغییرات همه نوع - از جمله ویژگیهای جدید، تغییرات پیکربندی، رفع اشکالات و آزمایشها - در محیط تولید یا در اختیار کاربران بدون خطر و به سرعت در یک روش قابل پایداری است. continuousdelivery.com
به عنوان یک مهندس بکاند در Grab، هیچ چیز مهمتر از قابلیت نوآوری سریع و به ایمنی ندارد. تقریباً تا انتهای سال 2018، معماری بکاند حمل و نقل و تحویل Grab شامل تقریباً 270 سرویس بود (اغلب آنها میکروسرویسها). فرآیند راهاندازی طولانی و نیازمند ورودیهای دقیق و ارتباط روشن بود. مراقبتهای لازم برای اجرای تغییرات در تولید و خطر مرتبط با عملیات دستی منجر به معرفی یک ربات Slack برای هماهنگی راهاندازیها شد. ربات اطمینان میدهد که راهاندازی ها فقط در زمانهای آفپیک و در ساعات کاری صورت گیرد:
با تکمیل ساخت، مهندسانی که میخواستند نرمافزار خود را در محیط تمرینی Staging راهاندازی کنند، نسخههای منتشری را از لاگهای ساخت کپی کرده و آنها را در پارامتر یک وظیفه Jenkins قرار میدادند. آزمونها باید به صورت دستی از یک وظیفه Jenkins اختصاصی راهاندازی میشدند.
قبل از راهاندازی در تولید، مهندسان باید یادداشتهای انتشار خود را از طریق اسکریپت ایجاد کنند و آنها را به صورت دستی در سند ویکی بهروز کنند. راهاندازیها از طریق تعامل با ربات Slack که کنترل یادداشتهای انتشار و پنجرههای راهاندازی را در دست دارد زمانبندی خواهد شد. راهاندازیهای تولید در آخر با مجدد وارد کردن پارامترهای درست در دو وظیفه Jenkins اختصاصی صورت گرفت، یکی برای راهاندازی مرغک (معروف به یک جعبه) و دیگری برای راهاندازی کامل، که یک ساعت از یکدیگر فاصله داشتند. در فاز مانیتورینگ، مهندسان به صورت مداوم معیارهای گزارش شده در داشبوردهای ما را مشاهده میکردند.
علیرغم فرآیند متجزّح و عملیات دستی ریسکی که بر سرعت و پایداری ما تأثیر میگذاشت، در حدود 614 ساخت هر روز کسب و کار در حال اجرا بودهاند و تغییرات در محیط تمرینی ما با میانگین 300 نسخه کد جدید در روز کسب و کار، در حالی که تغییرات پایداردر روز کسب و کار با میانگین 28 نسخه کد جدید بود.
این اعداد به معنای آن است که در میانگین، برای هر بهروزرسانی سرویس در تولید 10 روز کسب و کار طول میکشد و تنها 10٪ از راهاندازیهای تمرینی در نهایت به تولید ارتقاء مییابند.
از تحویلهای پیوسته به صورت خودکار در مجله زیبایی و درمانی آذروت خودکارانه
با تمرکز بیشتر بر بهرهوری مهندسی، در سال 2018 ما یک ابتکار داخلی برای رفع مشکلات راهاندازیها را آغاز کردیم که با نام Conveyor شناخته میشود. برای ساخت Conveyor با یک تیم کوچک مهندسان، ما باید بر یک پلتفرم قدیمی که ویژگیهای مطلوب برای دستیابی به ماموریت ما را نشان میدهد، تکیه کنیم.
راهاندازیهای بدون دستخیخ
راهاندازیها باید یک امر فرعی باشند. مهندسان باید به اندازه امکان از فرآیند دور شوند و هرگاه امکانش باشد، تصمیمات در ابتدای فرآیند بررسی کد گرفته شوند. ماشین کار سخت را انجام میدهد و تنها زمانی که نتواند به صورت خودکار تصمیم بگیرد، مهندس باید درگیر شود. اطلاعیهها میتوانند برای اطمینان حاصل شود که مهندسان فقط زمانی مطلع میشوند که چیزی اشتباه شود و تصمیم انسانی لازم باشد.
اعتماد به راهاندازیها
تمرکز Grab بر جمعآوری بازخورد NPS (رضایتنامه مهندسی داخلی) داخلی ما کمک کرد تا معیارهای ارزشمندی را جمع آوری کنیم. یکی از معیارهایی که به آن اهمیت میدهیم، اعتماد مهندسان ما به راهاندازیهای تولیدیشان است. یک فرآیند راهاندازی تیم ممکن است بیش از یک روز طول بکشد و ممکن است برای تیمهایی با زیرساختهای بزرگ که خدمات مهمی را اجرا میکنند، تا یک هفته هم ادامه یابد. امکان از دست دادن پیشرفت در راهاندازی زمانی که مراحل فردی ممکن است ساعتها طول بکشد، مضر برای بهبود بهرهوری مهندسی در سازمان است. پلتفرم خودکارسازی راهاندازی اساس حاکمیت بر این اعتماد است. اگر پیشرفتی که بر پایهٔ آن ساخته میشود، معمولاً شکست میخورد و یا راهاندازی مسیری را که برای کاربران نهایی شفاف باشد، ارائه نمیدهد، هیچ ویژگی که بر روی آن ساخته میشود، از این زمان نگهداری نمیکند و در نهایت راهاندازیها را دچار تردید میکند.
بهسازگار با بیشتر و قابل گسترش برای کمترین تعداد
تیمهای مهندسی بکاند ما روی سایرین پشتههای متفاوت کار می کنند و همینطور فرآیند راهاندازیهایشان متفاوت است. از ابتدا، ما میخواستیم محصولمان بهرهبرداری از بزرگترین جمعیت مهندسانی را که همین روش را به خود اختصاص داده بودند، داشته باشد تا بازدهی سرمایهگذاریهایمان را بیشینه کنیم. برای سهولت در فرآیند انتخاب، تصمیم گرفتیم یک لولهکشی راهاندازی را مدل کنیم به گونهای که:
مدل دقیقی از فرآیندهای دستیی این جمعیت از مهندسان را مدل کند.تغییر به استفاده از آن لوله کشی باید نیاز به کار کمی از سوی تیمهای سرویس داشته باشد.
اما در مواردی که این مدل برای فرایند خاص تیم مناسب نباشد، پلتفرم راهاندازی ما باید باز و قابل گسترش باشد و پشتیبانی از سفارشیسازیهای جدید را حتی زمانی که در اصل توسط اکوسیستم محصول پشتیبانی نشده است، ارائه کند.
بدون نیاز به ابر
هنگامی که میخواستیم روی یک فرآیند و تیم خاصی تمرکز کنیم، برای تضمین اینکه راهحل ما مقاوم در مقابل زمان باشد، باید اطمینان حاصل کنیم که راهحل ما طیف گونههای محیطی که در حال حاضر در تولید است را پشتیبانی کند. این تنوع نیز احتمالاً افزایش مییابد و ما یک پلتفرم میخواهیم که باقی اکوسیستم ما به تدریج رشد کند.
مرور شریان
با Spinnaker شروع کنید
Conveyor بر اساس Spinnaker، یک پلتفرم ارائه پیوسته چند سرویس است. ما Spinnaker را به جای پلتفرمهای دیگر انتخاب کردیم زیرا یک پلتفرم راهاندازی بالغ است که هیچ نقطه تکی نقص ندارد، فرآیندهای پیچیده را پشتیبانی میکند (که در Spinnaker خطوط لوله نامیده میشوند) و در حال حاضر یک مرتبه از ارائه دهندگان ابر بزرگ نیز پشتیبانی میکند. از آنجا که Spinnaker منبع باز و قابل گسترش است، به ما امکان اضافه کردن ویژگیهایی که برای ویژگیهای اکوسیستم ما لازم بود، را میدهد.
برای کاهش مانعی از برداشت، یک رابط کاربری ساده را برای کاربران خود ایجاد کردیم و زبان دامنه ویژه خود را (DSL) برای مدیریت لولهها به صورت کد ایجاد کردیم.
چگونگی ورود به یک رابط کاربری ساده
Spinnaker رابط کاربری خود را دارد، همه ویژگیهایی که یک مهندس از یک سیستم ارسال پیوسته پیشرفته میخواهد را دارد. اما رابط کاربری Spinnaker با Jenkins خیلی متفاوت است و برای یادگیری تمیز اندازه قابل ملاحظهای دارد.
برای کاهش مانعی از برداشت، تصمیم گرفتیم از ابتدا یک رابط ساده برای کاربرانمان ایجاد کنیم. در این رابط، خطوط لولههای راهاندازی مرکز توجه برنامه ما هستند. خطوط لولهها اشیا توسط Spinnaker مدیریت میشوند، آنها مدل مراحل مختلف در جریان هر راهاندازی را مدل میکنند. هر خط لوله از مراحلی تشکیل شده است که میتوانند مجموعهای از برگهای لگویی را برای تشکیل لوله نهایی بسازند. نمونهای از خط مراحل یک اجرا خطوط نامیده میشود.
در این رابط، هر مهندس میتواند بر روی آنچه که برایش اهمیت دارد تمرکز کند: خطوط لولهای که آغاز شدهاند یا آنهایی که توسط همکاران دیگری که در همان سرویسها کار میکنند آغاز شدهاند. همچنین Conveyor یک نوار جستجو (در بالا) و فیلترهای (در چپ) را فراهم میکند که به هماهنگی با هم میکارند تا همه خطوط لولههای اجرا شده در Grab را بررسی کنند.
ما یک مجموعه همراه برای مدل کردن تمام اطلاعات در رابطمان به کار بردیم:
آبی: مراحلی که در حال حاضر در حال اجرا هستند؛قرمز: مراحلی که شکست خورده یا اطلاعات مهمی دارند؛زرد: مراحلی که نیاز به تعامل انسانی دارند؛و در نهایت، سبز: مراحلی که با موفقیت تکمیل شدهاند.
همچنین Conveyor یک ناحیه کار و تعاملات بشری را فراهم میکند که همه مراحلی که نیاز به مداخله انسانی دارند در یک مکان فهرست شدهاند. تعاملات دستی معمولاً چیزی بیش از سوال بله یا خیر نیستند:
در نهایت، علاوه بر پشتیبانی از راهاندازیهای خودکار، ما شروع راهاندازیهای دستی را بسیار ساده ساختیم. به جای نیاز به کپی/چسباندن اطلاعات، هر پارامتر میتواند از رابط کاربری از مجموعهای از آیتمهای تعریف شده که به ترتیب زمانی مرتب شده اند، انتخاب شود و با اطلاعاتزمینهای کمکی برای مهندسان در تصمیمگیریهایشان ارائه شود.
چندین پارامتر برای راهاندازیهای ما لازم است و مقادیر آنها از رابط کاربری انتخاب میشوند تا صحت آنها تضمین شود.
سهولت در پذیرش با نسخه کد زبان خط لوله ما
سهولت در پذیرش برای تیم به معنای ساده کردن کمیت کار ابزارهای جدید نیست. ما باید آن را برای تیمها به سادگی به تنظیم خدمات خود را برای راهاندازی با Conveyor کنیم. از آنجا که ما بر تسهیل وظایفی که قبلاً به صورت دستی انجام میشدند تمرکز کردهایم، تنها لایه مورد نیاز برای امکانسازی ادغام راهاندازی را باید پیکربندی کنیم.
ما در ایجاد یک پیادهسازی خط لوله به عنوان کد، وقتی که هنوز در جامعه Spinnaker گسترده توسعه نمییافت، تصمیم گرفتیم. جالب است که دو سال پس از آن، این ایده همزمان در جامعه رشد کرده است و با پیدایش سایر پیادهسازیهای خط لوله به کد، رشد میکند. خط لوله به عنوان کد ما به عنوان DSL خط لوله شناخته میشود و پیکربندی آن درون مخزن هر تیم قرار دارد. هنرمند