Guild :اشتراک کد بین iOS ، Android و Web با React Native

Guild :اشتراک کد بین iOS ، Android و Web با React Native
آفلاین
user-avatar
عرفان حشمتی
09 اسفند 1399, خواندن در 8 دقیقه

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

Guild برای ما یک پروژه عالی به نظر می‌رسید. ماموریت آنها توانمندسازی و کمک به افراد حرفه‌ای برای رسیدن به موفقیت و احساس رضایت در به اشتراک گذاشتن تخصص و یادگیری از هم سن و سالان و همفکرانشان است. از آنجا که در Monterail تمام تلاش ما کیفیت در ارائه نرم‌افزار است، این پروژه بسیار مناسب بود.

اشلی و مت سابقه طولانی در زمینه بنیان گذاری و کارآفرینی دارند و ما می‌دانستیم که آنها به یک راه‌حل هوشمند نیاز دارند تا ارزش تجاری را برای کسب و کار همراه با کیفیت کد به ارمغان بیاورد.

نتیجه چه شد؟ استفاده از Node.js در قسمت بک-اند و React Native برای اندروید، IOS و وب. با بهره‌گیری از این فناوری‌ها و ابزارهای خاص، ما موفق به تولید محصولی شدیم که 99 درصد کد را بین IOS و اندروید و 80 درصد را بین نسخه موبایل و وب به اشتراک بگذارد.

سایت رسمی Guild.co

چالش‌های پروژه

زیرساخت فنی که با تیم Guild در مورد آن تصمیم گرفتیم آنقدر هم آسان نبود. در آن زمان، Node.js به سرعت در حال تبدیل شدن به بهترین محیط برای برنامه‌های بی‌درنگ (real-time) مانند Guild بود، اما React Native یک انتخاب بدیهی نبود. برخی سوالات جدی در مورد تداوم پشتیبانی از آن و برخی چالش‌های صدور مجوز وجود داشت که نگرانی‌های دیگری را به همراه می‌آورد.

از نظر تئوری، React Native به ما اجازه نوشتن یک پایگاه کد و استفاده مجدد از آن را در پلتفرم‌های مختلف داده می‌داد و هزینه ساخت و نگهداری را کم می‌کرد. اما این هنوز یک پروژه متن باز جدید بود و به تنهایی می‌توانست به بروز برخی از مشکلات در عملکرد منجر شود. سرانجام اگر می‌خواستیم با غول‌هایی مانند واتساپ رقابت کنیم، تجربه کاربری بسیار مهم بود.

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

تیم توسعه ما با چه چالش‌های کلیدی مواجه بود

  • ارائه محصولی با تجربه کاربری استثنایی برای یافتن جایگاهی در بین پذیرندگان و مشتریان اولیه و علاقه‌مند شدن به Guild
  • مدیریت رویدادهای بی درنگ (real-time) - بخشی مهم در هر برنامه پیام رسان
  • ارائه پشتیبانی آفلاین برای دسترسی کاربران به محتوا بدون اتصال به اینترنت
  • مدیریت اعلان‌ها، دسترسی به دوربین، دسترسی به تصاویر و سایر فایل‌ها

ما Node.js و React Native را انتخاب کردیم

با توجه به اینکه Guild یک برنامه پیام رسان می‌باشد، عملکرد و کارایی برای موفقیت آن بسیار مهم است. Node برای این نوع محصولات به خوبی عمل می‌کند و به دلیل ورودی و خروجی همگام سازی آن، قادر به رسیدگی به درخواست‌های همزمان است. ما همچنین تصمیم گرفتیم از Apollo و GraphQL استفاده کنیم و رویدادهای بی درنگ را با استفاده از بستر Ably مدیریت کنیم. این تصمیم به ما کمک می‌کرد تا ماژول‌های بی درنگ و پشتیبانی آفلاین را مدیریت کنیم، حتی بهتر از انتظار ما بود. با استفاده از تایپ ایستا در دو طرف سرور و کلاینت، برنامه به طور قابل توجهی پایدارتر از کار با جاوااسکریپت ساده در سمت کلاینت و Ruby در سمت سرور بود.

از طرف دیگر، می‌خواستیم به یک تجربه یکپارچه در دستگاه‌های مختلف دست پیدا کنیم. همراهی با React Native و React XP تعادل بسیار خوبی بین عملکرد و هزینه بود. ایده پشت React Native که "یک بار یاد بگیرید و هر چیزی بنویسید" اجازه می‌داد کد مشابهی را به اشتراک بگذاریم، اما نیاز به ساخت چند ماژول مخصوص پلتفرم هم برای IOS و هم برای اندروید داشت.

یک نگاه اجمالی به داشبورد Guild

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

عنصر دیگری که به موفقیت کلی پروژه Guild کمک کرد ارتباطات مناسب و مدیریت پروژه بود. این تیم از اسلک و جیرا استفاده می‌کند و در اسپرینت هفتگی نیز شرکت می‌کند. هر شش ماه یک بار برای گفتگو در مورد ویژگی‌ها، اولویت بندی موارد عقب افتاده و بحث و گفتگو، جلسات فیزیکی برگزار می‌کنند. این یک تعادل عالی از ساختار و چابکی است. بنیانگذاران صنفی اطمینان حاصل می‌کنند که همه افراد درگیر در پروژه به هر روشی به آن اهمیت می‌دهند و نسبت به رشد آن احساس مسئولیت می‌کنند و ما این روش را بسیار دوست داریم.

ماه‌ها سخت کوشی و تلاش به ثمر نشست

با بهره گیری مناسب از فناوری، موفق شده‌ایم نسخه‌های اندروید و IOS برنامه که 99 درصد کد را به اشتراک می‌گذارند ارائه دهیم و به نتیجه شگفت انگیزی رسیدیم که قبلا هرگز قابل دستیابی به نظر نمی‌رسید. برای نسخه وب هم موفق به استفاده مجدد حدود 80 درصد از جاوااسکریپت شدیم که البته بسیار بالاتر از انتظارات اشلی و مت بود.

به علاوه استفاده از Node.js و React Native از نظر زمان و هزینه تفاوت چشمگیری داشت.

انتخاب توسعه کراس پلتفرم و React Native همانطور که در ابتدا خطرناک به نظر می‌رسید، یک انتخاب عالی بود. در واقع React Native از نظر عملکرد کمی سودمند است، اما این چیزی است که تیم ما طی دو ماه آینده روی آن کار خواهد کرد. هرچند به طور محسوسی بر سرعت برنامه تأثیر نگذاشت. طبق گفته اشلی فریدلین:

React Native فناوری نسبتا جدیدی است و کاربران می‌توانند از عملکرد محصول شکایت داشته باشند، اما آنها این کار را نمی‌کنند و این بهترین ضمانت برای قابلیت اطمینان و همچنین کیفیتی است که Monterail از آن برخوردار است.

این برنامه برای اولین بار در ژوئیه 2018 تحت نسخه بتا (آزمایشی) منتشر شد و چهار ماه بعد ما این برنامه را با تمام ویژگی‌هایی که برای اولین نسخه در نظر داشتیم در فروشگاه‌های اپلیکیشن عرضه کردیم. تیم Guild امسال با سر و صدای زیادی شروع به کار کرد و 1.2 میلیون دلار (880 هزار پوند) بودجه برای توسعه بیشتر و رشد فروش جمع کرد.

سپس در فوریه 2019 آنها در رتبه معتبر "The Red Herring Top 100" قرار گرفتند که برترین استارتاپ‌های اروپا را برجسته می‌کند.

سه ماه پس از انتشار رسمی، Guild هنوز در روزهای ابتدایی خود به سر می‌برد. این شرکت حدود 1000 کاربر فعال و 50 سازمان در اختیار دارد، به علاوه آنها در حال مذاکره با تعدادی از شرکت‌های بزرگ در برخی صنایع هستند. در اکتبر 2019 هم انجمن Guild یک پلتفرم سرویس دهی را منتشر کرد که مورد استقبال و تشویق بسیاری از کسب و کارها قرار گرفت. آنها همچنین در حال برنامه ریزی برای یافتن سرمایه گذاران خصوصی و راه اندازی یک تأمین سرمایه گسترده هستند که در مرکز آن Guild وابسته به شبکه‌ها و انجمن‌ها است. بنابراین به نظر می‌رسد تأمین منابع مالی انبوه با ارزش‌های آنها مطابقت دارد و ما افتخار می‌کنیم که بخشی از آن باشیم.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، برنامه نویس و طراح وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو