مأموریت پرچمدار
پلتفرم API محک
بهعنوان CTO دبستانیها، پلتفرم چندمستاجری مشترکی را بازطراحی و مقیاسپذیر کردم که به ۲۴ اپلیکیشن فعال و بیش از ۴ میلیون حساب تأییدشده سرویس میدهد. ترافیک تجمیعی معمولاً نزدیک 10K RPS است و قلههای پرتکرار تولید به 100K درخواست تکمیلشده در ثانیه میرسد.
- 24اپ فعالیک پلتفرم مشترک به محصولات مستقل اندروید، وب و iOS با برندهای متفاوت سرویس میدهد.
- 4M+حساب تأییدشدهحسابهای تأییدشده در سراسر اکوسیستم؛ ممکن است یک شخص در بیش از یک اپ جداگانه شمارش شود.
- ~10KRPS معمولنرخ معمول درخواست تکمیلشدهٔ تجمیعی در اپلیکیشنهای فعال.
- 100Kاوج RPSقلههای تجمیعی پرتکرار تولید که در Grafana، Prometheus و Metabase مشاهده شدهاند.
- 12تیم فنیرهبری CTO در تیم فناوری ۱۲ نفره و سازمانی با بیش از ۵۰ عضو.
شرح مأموریت
دبستانیها به یک پلتفرم نیاز داشت که آنقدر انعطافپذیر باشد تا مجموعهای از تجربههای آموزشی، محتوایی، تجاری، کمپینی و بازی را بدون بکاند جداگانه برای هر برند تغذیه کند.
هر اپلیکیشن با شناسه و کلید اختصاصی خود متصل میشود. سیستم مشترک زمینهٔ مستاجر را تشخیص میدهد، رفتار و دسترسی ویژهٔ هر اپ را اعمال میکند و متناسب با تقاضای هر مالک بهصورت افقی مقیاس میگیرد.
نقشهٔ سیستم
معماری
کلاینتهای محصول
اپهای اندروید Kotlin و Compose، کلاینتهای وب و اپهای iOS از طریق APIهای پایدار و آگاه از مستاجر متصل میشوند.
لبه و زمان اجرا
Nginx ترافیک را میان سرویسهای کانتینری PHP-FPM توزیع میکند که متناسب با بار بهصورت افقی مقیاس میگیرند.
لایهٔ اپلیکیشن مشترک
APIهای Fat-Free و Laravel پشت یک نقطهٔ ورود همزیستی دارند و Laravel Nova مدیریت آگاه از مستاجر را فراهم میکند.
داده و کارهای ناهمگام
MySQL، PostgreSQL، Redis، JWT و Laravel Queue از دادهٔ مشترک، کش، نشست و کارهای پسزمینه پشتیبانی میکنند.
تحویل و دیدپذیری
MinIO، Gitea Actions، Grafana، Prometheus و Metabase رسانه، استقرار، سلامت و بینش محصول را پوشش میدهند.
مسیر راهبردی
نقشهٔ نبرد
مسیر پیادهسازی، ایستگاهبهایستگاه.
- ایستگاه 01
بکاند مشترک را با حفظ قراردادهای فعلی اپها بازطراحی کردم و چندمستاجری، دسترسی داده، کش، احراز هویت و رفتار صف را بهبود دادم.
- ایستگاه 02
مسیرهای قدیمی Fat-Free را در کنار APIهای Laravel و از یک ورودی مشترک تکامل دادم تا مهاجرت تدریجی جای بازنویسی پرریسک را بگیرد.
- ایستگاه 03
زمان اجرا را بر پایهٔ Nginx، PHP-FPM، Docker، Redis، صفها و مقیاسدهی افقی بازطراحی کردم تا زیر بار سنگین رفتاری قابل پیشبینی داشته باشد.
- ایستگاه 04
تحویل تستمحور با استقرار مرحلهای، حفظ دادههای زمان اجرا، بازسازی کش، راهاندازی مجدد صفها و پاکسازی OPcache را با Gitea Actions خودمیزبان ساختم.
- ایستگاه 05
دید عملیاتی را در زیرساخت و دادهٔ محصول با health check، Grafana، Prometheus و Metabase گسترش دادم.
رویارویی حساس
نبرد با غول مرحله
سختترین محدودیت، تکامل یک پلتفرم مشترک زنده بود در حالی که دهها کلاینت برندشده به همان قراردادها وابسته بودند. تغییرات باید توان عملیاتی و قابلیت نگهداری را بهتر میکردند، بدون آنکه بازنویسی هماهنگ همهٔ اپها لازم شود.
کار من بر سامانههای هستهٔ موجود بنا شد: چندمستاجری، queryها، Redis، JWT و workerها را بهبود دادم و سپس مقیاسدهی افقی کانتینری، ذخیرهسازی شیء، مشاهدهپذیری، تحلیل و CI/CD را معرفی یا بازطراحی کردم.
دستاوردهای آزادشده
پاداشهای مأموریت
خروجیهایی که این مأموریت به همراه داشت.
- پاداش 01 آزاد شد
اکنون یک پلتفرم قابل نگهداری به ۲۴ اپلیکیشن فعال در چند دستهٔ محصول سرویس میدهد.
- پاداش 02 آزاد شد
پلتفرم ترافیک تجمیعی معمول نزدیک 10K RPS را حفظ میکند و بارها قلهٔ 100K RPS تکمیلشده در تولید را مدیریت کرده است.
- پاداش 03 آزاد شد
بیش از ۴ میلیون حساب تأییدشده در اکوسیستم اپها سرویس میگیرند.
- پاداش 04 آزاد شد
سامانههای تحویل و پایش، انتشار امنتر، سیگنال سلامت روشنتر و بازخورد عملیاتی سریعتر به تیم میدهند.
آیتمهای ویژه
تجهیزات فنی
- Fat-Free
- Laravel
- Laravel Nova
- Nginx
- PHP-FPM
- Docker
- MySQL
- PostgreSQL
- Redis
- Laravel Queues
- MinIO
- Grafana
- Prometheus
- Metabase
- Gitea Actions
- Kotlin
- Jetpack Compose
شواهد کار
کاوش مأموریت
اعداد مقیاس، اندازهگیریهای داخلی تولید در سراسر پلتفرم هستند. اگر یک شخص از چند اپ استفاده کند، ممکن است حسابهای تأییدشده همپوشانی داشته باشند. مخزنهای خصوصی و داشبوردهای عملیاتی عمداً پیوند نشدهاند.