۲۶ .دی.۱۳۹۷

الفبای استارت آپی – قسمت اول – ساختار تیم فنی و چالش های پیش رو

مهرشاد پزشک، هم‌بنیان‌گذار و CTO شرکت دانش‌بنیان الوپیک از این‌ پس در ویدیوها و مقالات پیش رو، به ارائه نکاتی در زمینۀ برنامه‌نویسی خواهد پرداخت که قطعا برای فعالان این حوزه مفید و کاربردی خواهد بود. اما در ابتدا از مهرشاد پزشک درمورد الوپیک سوالاتی پرسیدیم:

تیم فنی الوپیک از چند نفر تشکیل شده و ساختار آن به چه صورت است؟
تیم فنی الوپیک تقریبا از سی نفر تشکیل شده است که به پنج بخش مختلف تقسیم شده اند:

  • تیم Front-end که توسعۀ بخش Front-end و وب سایت در این بخش انجام می شود.
  •  قسمت Back-end که کل منطق کسب وکار (Business logic) الوپیک را در این تیم جلو می بریم.
  •  بخش توسعۀ موبایل که توسعۀ اپلیکیشن‌های موبایل الوپیک مثل اپلیکیشن مسافر، سفیران و همچنین اپلیکیشن مخصوص ویزیتورهای ما در آن انجام می‌شود.
  • تیم  Data science که کل متریک‌هایی که برای کسب‌وکار الوپیک مورد نیاز است و همچین برای اخذ تصمیمات لازم درمورد شرکت از این تیم استفاده می کنیم.
  •  و تیم QA که بیشتر در حوزۀ تست رگرسیون (regression testing) به معنای تست اپلیکیشن، پلتفرم، وب‌سایت و پنل‌های مختلف فعالیت دارند و به ما کمک می‌کنند تا محصولمان را بدون مشکل و بی‌نقص به مشتریانمان تحویل دهیم.


در بخش های مختلف الوپیک از کدام تکنولوژی‌ها استفاده شده است؟

Front-end
در بخش Front-end بیشتر از تکنولوژی‌های Angular ، HTML CSS استفاده می‌شود. البته سعی کرده‌ایم از فریم‌ورک‌های جدید مثل React برای  DOM manipulation استفاده کنیم. ما در الوپیک از به کار بردن تکنولوژی‌‌های جدید استقبال می‌کنیم و حتی از تکنولوژی‌هایی مثل Vue.js که بسیار جدید و به روز هستند نیز بهره گرفته‌ایم.

Back-end
در بخش Back end  Stack الوپیک، برنامه‌نویسی را به زبان برنامه‌نویسی php در فریم‌ورک laravel  آغاز کردیم چراکه این فریم‌ورک محبوب‌ترین فریم‌ورک به زبان PHP است که به ما کمک کرد تا بتوانیم محصولمان را بسیار سریع با توسعۀ یک اپلیکیشن یکپارچه (monolithic application) به بازار عرضه کنیم و اکنون در حال توسعه دادن این monolithic application به مایکرو‌سرویس‌های مختلف هستیم. در این حوزه نیز از تکنولوژی‌های نوین استفاده کرده‌ایم و در حال حاضر بسیاری از مایکرو‌سرویس‌های ما روی Node.js قرار دارد. قصد داریم یک سری از مایکروسرویس‌هایمان را روی GoLang ببریم و سعی داریم پایتون را به Stack الوپیک وارد کنیم. برای دیتابیس به صورت توامان از MySQL و Maria DB استفاده می‌کنیم. برای pubsub  Cachingنیز از redis استفاده می کنیم. Mongo DB، Elastic search و دیگر دیتابیس‎‌های به‌روز دنیا را نیز به کار می‎گیریم و حتی به سمت کاساندرا و غیره رفته‌ایم تا زمان پاسخگویی را کاهش دهیم.

App developement
در قسمت موبایل برای اینکه بتوانیم بسیار سریع محصول خود را وارد بازار کنیم، و ورژن اول  MVPخود را وارد بازار سازیم از Framework Ionic استفاده کردیم. برای ورژن اول اپلیکیشن، کار با Ionic هیچ مشکلی نداشت و تمامی نیازهای ما را برآورده می‌کرد، چراکه اپلیکیشن ابعاد کوچکتری داشت و تعداد کاربران آن بسیار کمتر بود. به‌این‌ترتیب طی 6 الی 7 ماه ابتدایی، این فریم‌ورک پاسخگوی نیاز ما بود اما پس از مدتی تصمیم گرفتیم که اپلیکیشن را به صورت کامل روی  React native، بازنویسی کنیم. در حال‌ حاضر اپلیکیشن به صورت کامل روی React native قرار دارد و می‌توان گفت 70 تا 80 درصد اجزای اپلیکیشن داخلی هستند. اجزایی که توسط تیم الوپیک نوشته شده و سپس روی اپلیکیشن‌های React native الوپیک Bridge شده است. سعی ما بر این است که دیگر اپلیکیشن‌هایی که به اکوسیستم «الو» اضافه می‌شوند را هم به‌صورت کاملا داخلی بنویسیم اما همواره بخشی را برای React native در نظر می‌گیریم چراکه باعث می‌شود در مواقع بسیاری جلو بیوفتیم.

Data Science
در روزهای آغازین شروع فعالیت اپلیکیشن الوپیک، پرسمان‌های مورد نیاز چه برای محاسبات بلادرنگِ سمت سِرور -چه برای تهیه گزارشات روزانه و دوره‌ای و چه برای تحلیل- متریک‌ها مستقیماً بر روی پایگاه دادۀ اصلیMySQL  اجرا می‌شدند. با گذشت زمان و افزایش چندصد میلیونی حجم اطلاعات ذخیره شده در پایگاه داده، دیگر اکثر پردازش‌های OLAP و OLTP بر روی پایگاه داده‌ی اصلی میسّر نبود. برای حل این چالش، در نسل جدید زیرساخت دادۀ الوپیک، اطلاعات ‌از طریق انجام فرآیندهای ETL بلادرنگ ‪-از طریق پلتفرم‌هایی مانند Apache Kafka- و یا توسط ابزارهای ETL همچون Apache NiFi، بنا به ماهیتشان در یک یا چند پایگاه ‌داده‌ی موجود در انبار داده -مانندDruid ، ElasticSearch و غیره- ذخیره و غنی‌سازی می‌گردند. همچنین یک نسخه از کلیه‌ی اطلاعات پس از تثبیت، جهت پردازش‌های آماری و یادگیری ماشین، با فرمت Parquet در هسته‌ی مرکزی انبار داده Hadoop ذخیره می‌شوند.
برای حل چالش محاسبات بلادرنگ سمت سرور و نیز فراهم کردن اطلاعات مورد نیاز داشبورهای تحلیلی، با توجه به تنوع پایگاه‌های داده -ناشی از تنوع جنس اطلاعات-، از موتور پرسمان PrestoDB برای اجرای پرسمان‌های مشترک -بر روی پایگاه‌های داده‌ای چونMongoDB ،Cassandra ،Redis ،MySQL ، Hadoop و غیره- بهره گرفته می‌شود.
تیم داده، پس از آماده‌سازی اطلاعات در انبار داده، داشبوردهای گوناگونی را بر پایۀ خروجی پرسمان‌های PrestoDB و پایگاه‌های داده فراهم می‌سازد تا ‌دانشمندان تیم، و تحلیل‌گران سایر تیم‌ها، بدون اتلاف وقت اطلاعات مورد نیاز خود را در لحظه دریافت کنند. این داشبوردها غالباً با استفاده از Metabase و Apache Superset طراحی می‌شوند، تا به سادگی قابل ویرایش و گسترش باشند.

تیم QA
باید گفت، در این تیم از تکنولوژی خاصی استفاده نمی‌شود چراکه وظیفۀ این گروه بیشتر انجام تست‌های مختلف اپلیکیشن، پنل های کاربری و بخش‌های مختلف است. ما برای انجام regression test ودسته بندی test caseها از Testrail  استفاده می‌کنیم که یک پلتفرم آنلاین است و بسیاری از شرکت‌ها نیز از آن بهره می‌برند. زمانی‌که می‌خواهیم نسخۀ جدید را منتشر کنیم، ابتدا تمام اجزا را کاملا آزمایش می‌کنیم؛ این کار باعث می‌شود تا میزان خطا و ایرادات در اپلیکیشن به صفر برسد.

راه حل شما در برابر تحریم‌های وب‌سرویس‌های خارجی چه بوده است؟
راه حل اصلی ما برای مقابله با تحریم وب‌سرویس‌های خارجی، این بوده که سعی کنیم صد درصد سرویس‌هایی که استفاده می‌کنیم، ایرانی باشند. هم اکنون سرویس‌های نقشه، ETA و سرویس آدرس‌یابی و غیره... علاوه‌بر این سعی کرده‌ایم برای قسمت Data science تمام data warehouse را داخل ایران بسازیم. در نتیجه به اینجا رسیده‌ایم که برای تکنولوژی نقشه کاملا از نرم‌افزارهای ایرانی استفاده می‌کنیم. این موضوع درمورد نقشه دشبورد و وب‌سایت هم صادق است.
نقطۀ قوت ما در واکنش به‎موقع، در مواجهه با این مشکل بود؛ چراکه تیم ما توانست بسیار سریع، خود را با شرایط جدید تطبیق دهد و با شناسایی بهترین تکنولوژی‌های داخلی، به سرعت فناوری‌های بومی را جایگزین فناوری‌های خارجی کند. این مسئله بسیار جدی بود؛ زیرا فیلترینگ این سرویس‌ها به شکلی کاملا ناگهانی صورت می‌گرفت و هر روز یکی از آن‌ها به این دلیل از دسترس خارج می‌شد. اما تیم الوپیک توانست با عکس‌العمل سریع و به‌موقع، تکنولوژی‌های داخلی را جایگزین سرویس‌های خارجی کند تا بتوانیم از تکنولوژی‌های خارج از ایران مستقل باشیم.
برای مثال روزی که شرکت اپل تصمیم به تحریم و حذف اپلیکیشن‌های ایرانی گرفت، الوپیک اولین اپلیکیشنی بود که از اپ استور حذف شد و ما بسیار ناگهانی از این موضوع مطلع شدیم. متاسفانه در آن زمان هنوز بازارهای ایرانی ارائه‌دهنده اپلیکیشن‌های iOS در ایران وجود نداشت؛ اما ما برای رفع این مشکل توانستیم همان ورژن آیونیکی که اول ساخته بودیم را روی وب به صورت آنلاین قراردهیم. درنتیجه، از روز بعد توانستیم همان خدماتی که روی اپلیکیشن ارائه می دادیم، روی وب‌سرویس هم ارائه کنیم. این ترفند به ما کمک کرد تا بتوانیم بسیاری از مشتریانمان را حفظ کنیم و در بازه زمانی که کاربران iOS ما امکان دسترسی به اپلیکیشن الوپیک را نداشتند، می‌توانستند از وب‌اپ ما استفاده کنند. این فرآیند هم تا زمانی که ما توانستیم اپلیکیشن را Self-sign  کنیم و برای دانلود در سایت‌هایی مثل سیب‌اپ و غیره قرار دهیم و به روند عادی برگردیم، ادامه داشت.

بزرگترین چالش تیم فنی الوپیک تا به امروز چه بوده است؟
بزرگترین چالش ما در حقیقت توسعه دادن قسمت فنی از سمت سِرور در برابر رشد پروژه بود. به این معنا که پروژه به شدت در حال گسترش بود و هنوز هم به شدت در حال رشد است. ما هم باید می‌توانستیم در بخش فنی، خود را با رشد سریع کسب‌و‌کارمان هماهنگ کنیم. خوشبختانه با تلاش‌ها و سعی و خطاهایی که انجام دادیم، توانستیم در بازه زمانی بسیار کوتاهی کسب‌وکارمان را توسعه دهیم و در حال حاضر سیستم‌های ما تقریبا 600 هزار درخواست را در دقیقه ثبت می‌کنند. همچنین ما 30 هزار Query در ثانیه داریم؛ این درحالی‌است که سرورهای ما از تنها تقریبا سی درصد ظرفیت خود استفاده می‌کنند و هنوز گنجایش تقریبا همین مقدار هم در آن‌ها وجود دارد. همچنین از نظر مرکز داده، افرانت به ما کمک زیادی کرده است تا بتوانیم در ایران سرورهای جدید بگیریم و بتوانیم به صورت توزیع شده ((Distributed سیستم را توسعه دهیم.

در آینده برای استخدام نیرو در الوپیک چه برنامه ای دارید؟
در آینده، سرویس‌های بیشتری به پلتفرم الوپیک اضافه خواهد شد؛ بنابراین ما در حال گسترش همه‌جانبۀ تیم فنی- در قسمت‌های Back-end, Front-end, mobile, Data science و QA- هستیم و از همراهان الوپیک هم دعوت می‌کنیم که اگر در هر یک از این زمینه‌ها تخصص دارند، برای ما درخواست همکاری ارسال کنند تا درصورت امکان آن‌ها را نیز به همراه تیم الوپیک در کنار خود داشته باشیم.

 

Hiring Now : https://alopeyk.breezy.hr

مطالب مشابه