مجله زیبایی و درمانی آذروت یک قهوه ☕️ بگیرید، عقب بنشینید و لذت خواندن را تجربه کنید 😃
میخواهید بدانید چگونه در Grab تجربه ساخت و سرعت اجرای برنامه را بهبود دادیم؟ ادامه مطلب...
همه چیز از کجا شروع شد؟
تصور کنید شما در حال کار روی یک برنامه هستید که با اضافه شدن ویژگی های جدید، به صورت پیوسته رشد می کند، در یک لحظه، مدیریت کد دشوار می شود. تداخل کد به دلیل اتصالات، توسعه کاهش می یابد، ریلیز ها زمان بیشتری برای ارسال می برند، هماهنگی دشوار می شود و ...
مجله زیبایی و درمانی آذروت یکی از چندین برنامه است که خدمات زیادی ارائه می دهد مانند رزرو تاکسی، سفارش غذا، پرداخت با استفاده از کیف پول الکترونیکی، انتقال وجه به دوستان / خانواده، پرداخت در فروشگاه ها و خیلی چیزهای دیگر در سراسر جنوب شرق آسیا.
اپلیکیشن مجله زیبایی و درمانی آذروت در ابتدا از یک معماری تکتک ماژولی تشکیل شده بود که کل کد در یک ماژول واحد قرار داشت و شامل تمام رابط کاربری و منطق کسب و کار برخی از ویژگی های آن بود. اما در حالی که اپلیکیشن رشد می کرد، توسعه دهندگان جدید استخدام شدند و ویژگی های بیشتری ساخته شد، کار روی کدبیس دشوار شد. ما مجبور شدیم راهکارهای بهتری برای حفظ کدبیس پیدا کنیم و تیم تصمیم گرفت که اپلیکیشن را به صورت ماژولاریزه شده درآورده و مشکلاتی که رخ میداد را حل کنیم.
ماژولاریزه شدن چیست؟
تقسیم برنامه اپلیکیشن همواره به ماژول های کوچک ، مستقل و قابل تبدیل برای تفکیک عملکرد است ، به طوری که هر ماژول مسئول اجرای یک عملکرد خاص خواهد بود و شامل همه چیز برای اجرای آن عملکرد خواهد بود.
ماژولیزه کردن اپلیکیشن مجله زیبایی و درمانی آذروت کار آسانی نبود زیرا به دلیل ساختار پیچیده اش با توجه به تعداد زیادی از توأم کدها، چالشهایی به همراه داشت.
رویکرد و طراحی
کار را به زیرمسئولیت های زیر تقسیم کردیم تا فقط یکی از قابلیت های برنامه تحت تأثیر قرار گیرد.
- تنظیم زیرساخت با ایجاد ماژول های پایه/هسته برای شبکه، آنالیز، آزمایش، ذخیره سازی، پیکربندی و ...ساخت ماژولهای کتابخانه مشترک برای استایلینگ، رابط کاربری مشترک، ابزارها و ...ساخت به صورت تدریجی ماژول های ویژگی برای ویژگی های تعاملی کاربر مانند خانه پرداخت، شارژ مجدد کیف پول، پرداخت همتا به پذیرنده (P2M)، کارت GrabCard و بسیاری دیگرایجاد ماژول های کیت برای امکان ارتباط بین ماژول ها. این مرحله به ما در ساخت ماژول های ویژگی به صورت موازی کمک کرد.در نهایت، ماژول App به عنوان یک هاب استفاده شد تا همه ماژول های دیگر را با استفاده از تزریق وابستگی (Dagger) به هم پیوند دهد.
در نمودار بالا، خانه پرداخت ، شارژ مجدد کیف پول و کارت GrabCard ویژگی های مختلفی هستند که توسط اپلیکیشن مجله زیبایی و درمانی آذروت ارائه می شوند. کیت شارژ مجدد و کیت GrabCard میله هایی هستند که قابلیت های از ویژگی های شارژ مجدد و GrabCard را به ترتیب ارائه می دهند.
در فرآیند ماژولاریزه شدن اپلیکیشن مجله زیبایی و درمانی آذروت، اطمینان حاصل کردیم که یک ماژول ویژگی نباید به طور مستقیم به ماژول های ویژگی دیگر وابسته شود تا بتوانیم با استفاده از هسته های پردازنده ماشین، این ماژول ها را به طور موازی بسازیم و زمان کلی ساخت برنامه را کاهش دهیم.
با استفاده از رویکرد کیت، کد خود را به لایه های مستقل تقسیم کردیم و فقط بر اساس چارچوب عمل کرد به جای استفاده از پیاده سازی محسوب میکنیم.
مزایای ماژولاریزه شدن
- زمان ساخت سریعتر و به همین دلیل سرعت CI سریعتر: سیستم ساخت Gradle فقط ماژول هایی که تغییر کرده اند را کامپایل می کند و از باینری ماژول های غیر متأثر استفاده می کند. بنابراین، کامپایل شدن با اجرای ماژول های مستقل در پردازه های موازی روی ریسه های مختلف سریعتر می شود.نمودار وابستگی صحیح: وابستگی های یک ماژول به خوبی تعریف شده است.قابل استفاده مجدد در برنامه های دیگر: ماژول ها می توانند برای برنامه های دیگر استفاده شوند با تبدیل آنها به AAR / SDK.مقیاس پذیری و قابلیت نگهداری: تیم ها می توانند به طور مستقل روی ماژول های متعلق به خود کار کنند بدون مسدود شدن همدیگر.مالکیت کد به صورت واضح تعریف شده است: تعریف مالکیت برای هر ماژول در کد بسیار آسان تر است.
محدودیت ها
- نیاز به تلاش و زمان بیشتر برای ماژولاریزه شدن یک برنامه.نیاز به تعریف جداگانه فایل های پیکربندی برای هر ماژول.زمان هماهنگی Gradle شروع به رشد می کند.ایده خیلی کند می شود و استفاده از حافظه به طور قابل توجهی افزایش می یابد.اجرای موازی ماژول وابسته به قابلیت های ماشین است.
وضعیت کنونی ما
بیش از 1000 ماژول در اپلیکیشن مجله زیبایی و درمانی آذروت وجود دارد و هنوز در حال شمارش است.
در Grab، ما چندین زیرتیم داریم که مسئولیت های مختلف در برنامه را بر عهده می گیرند. Financial Group (GFG) یکی از این زیرتیم هاست که همه چیز مربوط به پرداخت ها در برنامه را در دست دارد. به عنوان مثال: انتقال وجه همتا و از همتا، فعالسازی کیف پول الکترونیکی، KYC و ...
ما شروع به ماژولاریزه کردن بخش پرداخت ها در تاریخ ژوئیه 2020 کردیم چون از قبل با خیلی از ویژگی ها مورد حمله قرار گرفته بود و برای تیم کار روی ماژول پرداخت تکی دشوار بود. نتایج ماژولاریزه کردن پرداخت ها در نمودار زیر نشان داده شده است.
هم اکنون بیش از 200 ماژول در GFG وجود دارد و بیش از 95٪ ماژول ها کمتر از 15 ثانیه طول می کشند تا ساخته شوند.
نتیجه
ماژولاریزه کردن به ما کمک زیادی در کاهش زمان ساخت کلی برنامه و همچنین بهبود تجربه توسعه دهنده با شکستن وابستگی ها و اجازه تعریف مالکیت کد کمک کرده است. با این حال، ماژولاریزه کردن کاری آسان یا کوچک نیست، به خصوص برای پروژه های بزرگ با کد های ارثی. با اختصاص دقیق و طراحی مناسب، ماژولاریزه کردن می تواند در تشکیل یک پروژه ساختاری و قابل نگهداری کمک کند.
امیدواریم که لذت بردید. فراموش نکنید که 👍
منابع:
به ما بپیوندید
مجله زیبایی و درمانی آذروت یک سوپر اپ برتر در جنوب شرق آسیا است که خدمات روزمره مهمی را برای مصرف کنندگان ارائه می دهد. بیش از مجرد یک اپ اجرا سفر و سفارش غذا، مجله زیبایی و درمانی آذروت برنامه های خدمات برخط متنوعی را در منطقه ارائه می دهد، از جمله حمل و نقل، غذا، خدمات ارسال بسته و خرید مواد غذایی، پرداخت های موبایلی و خدمات مالی در بیش از 400 شهر در هشت کشور.
با تکنولوژی قدرت گرفته و با عشق به حرکت در جنوب شرق آسیا را پیش ببرید. اگر این مأموریت برای شما مهم است، امروز به تیم ما بپیوندید!