مرحبا يا حبر
نحن نكسر الصمت لفترة طويلة ونعلن عن إطلاق الإصدار الثاني من Scorocode.
هذا ليس تطوراً بل ميلاد خدمة جديدة.
سنة العمل ، Docker ، Kubernetes ، Yandex.Cloud ، إلخ.
تحذير من السؤال "لماذا يوجد محور Go هنا؟" ، أجيب - جميع خدمات Scorocode مكتوبة بلغة Golang ، هذه هي اللغة التي نستخدمها كلغة رئيسية في رزمة التكنولوجيا.
أطلب تفاصيل تحت القط.
الخلفية التاريخية
تم إطلاق Scorocode v1 في صيف عام 2016 ، حيث تم جمع حوالي 20،000 تسجيل في 3 أشهر ، وكانت أداة مجانية لجمهورنا لمدة 2.5 عام ، وقد تم استخدامها لنشر السحب الخاصة التي تم تطوير 8 أنظمة من مستويات مختلفة خلال هذا الوقت: من الخدمة سيارة أجرة لنظام إدارة الإنتاج.
في الإصدار الأول ، كانت هناك خدمات مكتوبة ذاتيًا للعمل مع NoSQL MongoDB DBMS ، محلل استعلام قاعدة البيانات الخاص به ، والخدمات التي وفرت تنفيذ تعليمات JavaScript البرمجية على الخادم ، وكان هذا كله ككل في السحابة.
العيوب الرئيسية لمنصة v1:
- يتم البحث عن الموارد بين التطبيقات ، وكان من المستحيل الحصول على مورد مضمون ، والذي يبدو في عصرنا غريبًا على الأقل.
- لم يكن هناك أي آلية لإطلاق خادم WEB كامل العقدة ، كان من الممكن إطلاق البرامج النصية لمرة واحدة فقط مع وقت تنفيذ محدود.
- كما اتضح فيما بعد ، فإن MongoDB ليست هناك حاجة لمعظم عملاء NoSQL ؛ وبدلاً من ذلك ، طلب الجميع MySQL / PostgreSQL العلائقية.
- كانت تكلفة تعرفة البداية المدفوعة مرتفعة ، حوالي 3000 روبل / شهر ، ولم يكن هناك أي فهم لما يدفع المستخدم مقابله.
في نهاية العام الماضي ، بعد أن فهم فريقنا جميع الإنجازات والإخفاقات ، قرر المشاركة في تطوير نسخة جديدة ، وإعادة تصميم الهندسة المعمارية بشكل أساسي.
ما الجديد في v2؟
لم يتغير المنطق. هناك حساب يمكن لمالك حساب المستخدم من خلاله إنشاء تطبيقات. لكن هيكل التطبيق قد تغير. أصبح الآن مستقلًا ، مستضافًا على موارد مخصصة (في سحابة عامة - على خادم ظاهري مخصص).
تقييم العمل المنجز ، ونحن نفهم أننا قطعنا شوطا طويلا. بالنسبة للمبتدئين ، قمنا ببناء بنية أساسية ، والتي تمثل الطوب الخدمات التي تعيش في حاويات الإرساء ، والتي بدورها يتم دمجها في مجموعات تابعة ، ويعيشون في القرون التي تديرها Kubernetes. بشكل عام ، كل شيء كلاسيكي من هذا النوع.
من الخدمات الجاهزة المستخدمة:
والخطوة التالية هي كتابة وبناء الخدمات الخاصة بك.
المصادقة
خدمة تخويل التطبيق باستخدام طريقة تخويل HTTP (اكتب Bearer).
وسيط
خدمة لتعبئة الخدمات الخاصة بك (آسف ل tautology). يتم تقديمه اليوم في شكل خادم عقدة ، حيث يمكنك نشر التطبيق الكامل الخاص بك مع رموز المصدر ، أو تجميع جاهز للعقدة بالفعل (المزيد حول هذا في وصف scorocode-cli). نحن نعمل على تطوير الخدمة في اتجاه إمكانية تعبئة كل الخدمات الجاهزة من DTR والخدمات المكتوبة ذاتيا. نحن نقوم بالتجارب الأولى ، بالطبع ، على الخدمات المكتوبة بلغة غولانغ.
DBAPI
خدمة توفر عملية RESTful API مع جميع جداول قاعدة بيانات PostgreSQL.
أي بمجرد إنشاء جدول في قاعدة البيانات ، تصبح جميع عمليات CRUD متاحة عبر واجهة برمجة التطبيقات.
Websockets
عند توصيل العملاء عبر بروتوكول WebSocket ، فإنه يحدد العملاء ، وبعد ذلك يمكن إرسال الرسائل المسماة أو البث من خادم API. علاوة على ذلك ، سوف نقوم بتطوير الخدمة نحو التخزين المؤقت وتسليم الرسائل المضمونة.
خ م
العمل مع المجلدات وملفات تخزين التطبيق.
دفع
إرسال إشعارات الدفع. ترتبط شهادات Android / iOS في حسابك.
وحدة التحكم فائدة scorocode- CLI
لقد علمنا المستخدمون الذين يعملون مع الإصدار الأول من عامين أنه بغض النظر عن كيفية تقديم الأدوات الجميلة على البوابة في حساب المستخدم الشخصي ، بعد فترة من "التدليل" يريد المطور العودة إلى بيئتهم المألوفة - إلى الكمبيوتر المحلي الخاص بهم. لذلك ، لا يمكننا الاستغناء عن أداة مساعدة وحدة التحكم.
اليوم scorocode-cli (sc-cli binary) يوفر للمطور الوظائف التالية:
جلبالاتصال بالتطبيق في السحابة ، إذن ، حفظ التكوين في مجلد .cli.
الحرف الأولالحصول على المستودع ونشر التطبيق الأساسي ، متبوعًا بالبناء والحفظ في السحابة. التطبيق الأساسي لا يزال تطبيقًا واحدًا ، كيفية الحصول على يديك - سنكتب عددًا قليلًا من الأنواع المختلفة.
سحبمزامنة ملفات المشاريع المحلية مع السحابة.
ادفعحفظ ملفات المشروع المحلية إلى السحابة.
regdbتسجيل قاعدة البيانات.
سجلاتالحصول على سجلات من الخدمة.
جسرتوجيه المنافذ المحلية إلى السحابة لجميع الخدمات. على سبيل المثال ، بعد بدء الجسر ، يمكنك توصيل أي عميل بـ PostgreSQL الغائم باعتباره عميلًا محليًا.
خدمةالاطلاق المحلي للتطبيق. تستخدم لتصحيح الأخطاء المحلية.
المشاكل
كان هناك العديد من المشاكل على الطريق. وما زال هناك الكثير منهم. في الأساس ، تنشأ عند تقاطع المنتجات مفتوحة المصدر. في بعض الأحيان أدت الإجراءات الأولية إلى الحفر الأسبوعي ، ونتيجة لذلك ، طلب السحب إلى مستودع المنتج. من الصعب دمج كل شيء في مقال واحد. آمل أن أكتب المزيد عن مشاكل وحلول معينة.
خطط التنمية
بادئ ذي بدء ، سنكتب الخدمات. الكثير من الخدمات. لكننا لن نكتبها بشكل تجريدي ، ولكن بناءً على طلب عملائنا. سنقوم أيضًا بتطوير قوالب التطبيق حتى يكتب المستخدمون كودًا أقل لربط الميزات الجديدة.
عن العمل
قمنا بتغيير تركيزنا من المستخدمين من القطاع الخاص إلى قطاع السوق B2B. وغيرنا القاعدة - الآن نحن في Yandex.Cloud . المزيد حول هذا الموضوع سيكون مقالات عن منتجنا Korbut . ولهذا السبب بالتحديد ، ظهرت النسخة التجريبية في الإصدار الجديد من السحابة العامة - شهر واحد ، وبعد ذلك نود أن نفهم ما إذا كان المستخدم قد فقد اهتمامنا بنا ، أو أنه مستعد لدفع ثمن الخدمة (تكلفة التكوين الأساسي للتطبيق هي 990 روبل / شهر).
حول التعريفات
الآن لدينا تعريفات شفافة للغاية. يرى المستخدم الموارد المخصصة لتطبيق IaaS الخاص به ، حيث تكلف التكلفة هامشًا في المئة. النسبة المئوية عائمة ، اعتمادًا على الحجم المستهلك. هذا أعطانا شفافية التعريفة والقدرة ، بعد إطلاق سوق Yandex.Cloud ، على نشر سحابات خاصة مع فرض رسوم على المستخدمين في حساب Yandex.Cloud.
ونعم ، نحن حريصون. وبالنظر إلى أننا نقدم الموارد المخصصة لكل تطبيق ، فإن مجموعة التطبيقات لفترة تجريبية صغيرة ، حوالي مائة. بادئ ذي بدء ، أرسلنا دعوة إلى مستخدمينا من الإصدار القديم ، لكننا لا نزال نقبل طلبات الاتصال بالفترة التجريبية على scorocode.ru
خاتمة
أنا ممتن جدًا لفريقنا ، الذي لم يفقد قلوبه حتى في معظم حالات الجمود. بالمناسبة ، عن الأمر:
- أنيا كوربوت - مدير المنتج
- Zhenya Khramtsov - مهندس معماري ، انتقل المطور
- ليفان Kiknadze - مهندس معماري ، انتقل المطور
- روما Gayazov - شبيبة / المطور الواجهة
- تاجر خليلوف - DevOps
- داشا Golubeva - محلل نظم
وبالطبع ، شكرًا جزيلاً لفريق Yandex.Cloud على السرعة والدعم والمشاركة في القضايا الناشئة.
شكرا لك على القراءة حتى النهاية. لدي كل شيء.