ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
اب بھی فلم "ہماری خفیہ کائنات: سیل کی پوشیدہ زندگی" سے

سرمایہ کاری کا کاروبار بینکاری کی دنیا میں سب سے پیچیدہ شعبوں میں سے ایک ہے، کیونکہ یہاں نہ صرف قرضے، قرضے اور ڈپازٹس ہوتے ہیں، بلکہ سیکیوریٹیز، کرنسی، کموڈٹیز، ڈیریویٹیوز اور ہر طرح کی پیچیدگیاں ساختی مصنوعات کی شکل میں ہوتی ہیں۔

В последнее время мы наблюдаем рост финансовой грамотности населения. Всё больше людей вовлекается в торговлю на рынках ценных бумаг. Индивидуальные инвестиционные счета появились не так давно. Они позволяют вам торговать на рынках ценных бумаг и при этом либо получать налоговые вычеты, либо не платить налоги. И все клиенты, которые к нам приходят, хотят управлять своим портфелем и видеть отчётность в реальном времени. Причем чаще всего этот портфель мультипродуктовый, то есть люди являются клиентами различных направлений бизнеса.

Кроме того, растут и потребности регуляторов, как российских, так и зарубежных.

موجودہ ضروریات کو پورا کرنے اور مستقبل کے اپ گریڈ کی بنیاد رکھنے کے لیے، ہم نے ترن ٹول پر مبنی ایک سرمایہ کاری کے کاروبار کو تیار کیا ہے۔

Немного статистики. Инвестиционный бизнес «Альфа-Банка» оказывает брокерские услуги для физических и юридических лиц по предоставлению возможности торговать на различных рынках ценных бумаг, депозитарные услуги по хранению ценных бумаг, услуги по доверительному управлению для лиц с частным и крупным капиталом, услуги по выпуску ценных бумаг для других компаний. Инвестиционный бизнес «Альфа-Банка» — это более 3 тыс. котировок в секунду, которые загружаются с различных торговых площадок. В течение рабочего дня на рынках заключается более 300 тыс. сделок от лица банка или его клиентов. На внешних и внутренних площадках происходит до 5 тыс. исполнений ордеров в секунду. При этом все клиенты, как внутренние, так и внешние, хотят видеть свои позиции в режиме реального времени.

پس منظر

کہیں کہیں 2000 کی دہائی کے آغاز سے، ہمارے سرمایہ کاری کے کاروبار کے شعبے آزادانہ طور پر تیار ہوئے: ایکسچینج ٹریڈنگ، بروکریج سروسز، کرنسی ٹریڈنگ، سیکیورٹیز اور مختلف مشتقات میں اوور دی کاؤنٹر ٹریڈنگ۔ نتیجتاً ہم فنکشنل کنوؤں کے جال میں پھنس چکے ہیں۔ یہ کیا ہے؟ کاروبار کی ہر لائن کے اپنے سسٹم ہوتے ہیں جو ایک دوسرے کے افعال کو نقل کرتے ہیں۔ ہر سسٹم کا اپنا ڈیٹا ماڈل ہوتا ہے، حالانکہ وہ ایک ہی تصورات کے ساتھ کام کرتے ہیں: لین دین، آلات، ہم منصب، کوٹس وغیرہ۔ اور جیسا کہ ہر نظام آزادانہ طور پر تیار ہوا، ٹیکنالوجیز کا ایک متنوع چڑیا گھر ابھرا۔

اس کے علاوہ، سسٹمز کا کوڈ بیس پہلے ہی کافی پرانا ہے، کیونکہ کچھ مصنوعات 1990 کی دہائی کے وسط میں شروع ہوئی تھیں۔ اور کچھ علاقوں میں اس نے ترقی کا عمل سست کر دیا، اور کارکردگی کے مسائل تھے۔

نئے حل کے تقاضے

کاروباری اداروں نے محسوس کیا ہے کہ مزید ترقی کے لیے تکنیکی تبدیلی بہت ضروری ہے۔ ہمیں کام دیے گئے تھے:

  1. تمام کاروباری ڈیٹا کو ایک، تیز اسٹوریج اور ایک ہی ڈیٹا ماڈل میں اکٹھا کریں۔
  2. ہمیں اس معلومات کو ضائع یا تبدیل نہیں کرنا چاہیے۔
  3. Нужно версионировать данные, потому что в любой момент регулятор может попросить статистику за прошлые годы.
  4. Мы должны не просто принести какую-то новую, модную СУБД, а сделать платформу для решения бизнес-задач.

اس کے علاوہ، ہمارے آرکیٹیکٹس نے اپنی شرائط طے کی ہیں:

  1. نیا حل انٹرپرائز کلاس ہونا چاہیے، یعنی، اسے کچھ بڑی کمپنیوں میں پہلے سے ہی آزمایا جانا چاہیے۔
  2. حل کا آپریٹنگ موڈ مشن اہم ہونا چاہئے۔ اس کا مطلب یہ ہے کہ ہمیں بیک وقت کئی ڈیٹا سینٹرز میں موجود ہونا چاہیے اور ایک ڈیٹا سینٹر کی بندش سے سکون سے بچنا چاہیے۔
  3. نظام کو افقی طور پر توسیع پذیر ہونا چاہیے۔ حقیقت یہ ہے کہ ہمارے تمام موجودہ نظام صرف عمودی طور پر توسیع پذیر ہیں، اور ہم ہارڈ ویئر کی طاقت کی کم ترقی کی وجہ سے پہلے ہی چھت کو چھو رہے ہیں۔ لہذا، وہ لمحہ آ گیا ہے جب ہمیں زندہ رہنے کے لیے افقی طور پر توسیع پذیر نظام کی ضرورت ہے۔
  4. دوسری چیزوں کے علاوہ، ہمیں بتایا گیا کہ حل سستا ہونا چاہیے۔

Мы пошли стандартным путём: сформулировали требования и обратились в отдел закупок. Оттуда получили список компаний, которые, в целом, готовы для нас это делать. Рассказали всем о задаче, и от шести из них получили оценку решений.

Мы в банке на слово никому не верим, любим всё тестировать самостоятельно. Поэтому обязательным условием нашего тендерного конкурса было прохождение нагрузочных тестов. Сформулировали тестовые задания по нагрузке, и уже три компании из шести согласились за свой счет реализовать прототип решения на базе in-memory-технологий, чтобы протестировать его.

میں آپ کو یہ نہیں بتاؤں گا کہ ہم نے ہر چیز کی جانچ کیسے کی اور اس میں کتنا وقت لگا، میں صرف خلاصہ کروں گا: لوڈ ٹیسٹوں میں بہترین کارکردگی Mail.ru گروپ ڈویلپمنٹ ٹیم کے Tarantool پر مبنی ایک پروٹو ٹائپ حل کے ذریعے دکھائی گئی۔ ہم نے ایک معاہدے پر دستخط کیے اور ترقی شروع کی۔ Mail.ru گروپ سے چار لوگ تھے، اور Alfa-Bank سے تین ڈویلپرز، تین سسٹم اینالسٹ، ایک حل آرکیٹیکٹ، ایک پروڈکٹ کا مالک اور ایک سکرم ماسٹر تھے۔

Дальше расскажу о том, как росла наша система, как она эволюционировала, что мы делали и почему именно так.

ترقی

پہلا سوال جو ہم نے خود سے پوچھا وہ یہ تھا کہ اپنے موجودہ سسٹمز سے ڈیٹا کیسے حاصل کیا جائے۔ ہم نے فیصلہ کیا کہ HTTP ہمارے لیے کافی موزوں ہے، کیونکہ تمام موجودہ سسٹمز HTTP پر XML یا JSON بھیج کر ایک دوسرے سے بات چیت کرتے ہیں۔

ہم Tarantool میں بنایا گیا HTTP سرور استعمال کرتے ہیں کیونکہ ہمیں SSL سیشنز کو ختم کرنے کی ضرورت نہیں ہے، اور اس کی کارکردگی ہمارے لیے کافی ہے۔

جیسا کہ میں نے پہلے ہی کہا ہے، ہمارے تمام سسٹمز مختلف ڈیٹا ماڈلز میں رہتے ہیں، اور ان پٹ پر ہمیں آبجیکٹ کو اس ماڈل میں لانے کی ضرورت ہے جس کی ہم خود وضاحت کرتے ہیں۔ ایک زبان کی ضرورت تھی جو ڈیٹا کو تبدیل کرنے کی اجازت دیتی ہے۔ ہم نے لازمی لوا کا انتخاب کیا۔ ہم تمام ڈیٹا کنورژن کوڈ کو سینڈ باکس میں چلاتے ہیں - یہ ایک محفوظ جگہ ہے جس سے آگے چل رہا کوڈ نہیں جاتا ہے۔ ایسا کرنے کے لیے، ہم صرف مطلوبہ کوڈ کو لوڈ کر رہے ہیں، ایسے فنکشنز کے ساتھ ماحول بناتے ہیں جو کسی بھی چیز کو بلاک یا گرا نہیں سکتا۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
После преобразования данные надо проверить на соответствие той модели, которую мы создаём. Долго обсуждали, что должна представлять собой модель, какой язык использовать для ее описания. Остановились на Apache Avro, потому что язык простой и у него есть поддержка со стороны Tarantool. Новые версии модели и пользовательского кода можно отправлять в эксплуатацию несколько раз в день хоть под нагрузкой, хоть без, в любое время суток, и очень быстро адаптироваться к изменениям.

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
تصدیق کے بعد، ڈیٹا کو محفوظ کرنا ضروری ہے۔ ہم یہ vshard کا استعمال کرتے ہوئے کرتے ہیں (ہمارے پاس شارڈز کی جیو منتشر نقلیں ہیں)۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
مزید یہ کہ خاصیت ایسی ہے کہ ہمیں ڈیٹا بھیجنے والے زیادہ تر سسٹمز اس بات کی پرواہ نہیں کرتے کہ آیا ہمیں یہ موصول ہوا یا نہیں۔ یہی وجہ ہے کہ ہم نے شروع سے ہی مرمت کی قطار نافذ کی۔ یہ کیا ہے؟ اگر کسی وجہ سے کسی شے میں ڈیٹا کی تبدیلی یا تصدیق نہیں ہوتی ہے، تب بھی ہم رسید کی تصدیق کرتے ہیں، لیکن ساتھ ہی اس چیز کو مرمت کی قطار میں محفوظ کرتے ہیں۔ یہ مطابقت رکھتا ہے اور مرکزی کاروباری ڈیٹا گودام میں واقع ہے۔ ہم نے فوری طور پر اس کے لیے ایک ایڈمنسٹریٹر انٹرفیس، مختلف میٹرکس اور الرٹس لکھے۔ نتیجے کے طور پر، ہم ڈیٹا سے محروم نہیں ہوتے ہیں۔ یہاں تک کہ اگر ماخذ میں کچھ بدل گیا ہے، اگر ڈیٹا ماڈل بدل گیا ہے، تو ہم اسے فوری طور پر پتہ لگائیں گے اور اسے ڈھال سکتے ہیں۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
اب آپ کو سیکھنے کی ضرورت ہے کہ محفوظ کردہ ڈیٹا کو کیسے بازیافت کیا جائے۔ ہم نے اپنے سسٹمز کا بغور تجزیہ کیا اور دیکھا کہ جاوا اور اوریکل کے کلاسک اسٹیک میں لازمی طور پر کچھ قسم کا ORM ہوتا ہے جو ڈیٹا کو رشتہ دار سے آبجیکٹ میں تبدیل کرتا ہے۔ تو کیوں نہیں فوری طور پر ایک گراف کی شکل میں سسٹمز کو اشیاء فراہم کریں؟ لہذا ہم نے خوشی سے GraphQL کو اپنایا، جو ہماری تمام ضروریات کو پورا کرتا ہے۔ یہ آپ کو گراف کی شکل میں ڈیٹا حاصل کرنے اور صرف وہی نکالنے کی اجازت دیتا ہے جس کی آپ کو ابھی ضرورت ہے۔ آپ بہت زیادہ لچک کے ساتھ API کا ورژن بھی بنا سکتے ہیں۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
تقریباً فوراً ہی ہم نے محسوس کیا کہ جو ڈیٹا ہم نکال رہے تھے وہ کافی نہیں تھا۔ ہم نے ایسے فنکشنز بنائے ہیں جن کو ماڈل میں موجود اشیاء سے منسلک کیا جا سکتا ہے - بنیادی طور پر حسابی فیلڈز۔ یعنی، ہم فیلڈ میں ایک خاص فنکشن منسلک کرتے ہیں، جو مثال کے طور پر، اوسط قیمت کا حساب لگاتا ہے۔ اور بیرونی صارف جو ڈیٹا کی درخواست کرتا ہے اسے یہ بھی معلوم نہیں ہوتا کہ یہ ایک حسابی فیلڈ ہے۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
تصدیق کا نظام نافذ کیا۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
Потом заметили, что в нашем решении выкристаллизовывается несколько ролей. Роль — это некий агрегатор функций. Как правило, у ролей разный профиль использования оборудования:

  • ٹی کنیکٹ: آنے والے کنکشن کو ہینڈل کرتا ہے، سی پی یو محدود، کم میموری کی کھپت، بے وطن۔
  • IB-Core: ٹرانٹول پروٹوکول کے ذریعے موصول ہونے والے ڈیٹا کو تبدیل کرتا ہے، یعنی یہ ٹیبل کے ساتھ کام کرتا ہے۔ یہ ریاست کو بھی ذخیرہ نہیں کرتا ہے اور قابل توسیع ہے۔
  • ذخیرہ: صرف ڈیٹا ذخیرہ کرتا ہے، کوئی منطق استعمال نہیں کرتا۔ یہ کردار آسان ترین انٹرفیس کو لاگو کرتا ہے۔ توسیع پذیر vshard کا شکریہ۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
یعنی، کرداروں کا استعمال کرتے ہوئے، ہم نے کلسٹر کے مختلف حصوں کو ایک دوسرے سے الگ کر دیا، جنہیں ایک دوسرے سے آزادانہ طور پر چھوٹا کیا جا سکتا ہے۔

لہذا، ہم نے ایڈمن انٹرفیس کے ساتھ ایک غیر مطابقت پذیر ٹرانزیکشنل ڈیٹا فلو ریکارڈنگ اور مرمت کی قطار بنائی ہے۔ ریکارڈنگ کاروباری نقطہ نظر سے متضاد ہے: اگر ہمیں اپنے آپ کو ڈیٹا لکھنے کی ضمانت دی جاتی ہے، چاہے کہیں بھی ہو، ہم اس کی تصدیق کریں گے۔ اگر اس کی تصدیق نہیں ہوتی ہے، تو کچھ غلط ہو گیا ہے اور ڈیٹا بھیجنے کی ضرورت ہے۔ یہ غیر مطابقت پذیر ریکارڈنگ ہے۔

ٹیسٹنگ

С самого начала проекта решили, что будем пытаться насаждать test driven development. Модульные тесты мы пишем на Lua с помощью фреймворка tarantool/tap, интеграционные — на Python с помощью фреймворка pytest. При этом в написание интеграционных тестов у нас вовлечены и разработчики, и аналитики.

ہم ٹیسٹ پر مبنی ترقی کو کیسے استعمال کرتے ہیں؟

اگر ہم کوئی نئی خصوصیت چاہتے ہیں، تو ہم پہلے اس کے لیے ٹیسٹ لکھنے کی کوشش کرتے ہیں۔ جب ہم کوئی بگ دریافت کرتے ہیں، تو ہم پہلے ٹیسٹ لکھنا یقینی بناتے ہیں، اور اس کے بعد ہی اسے ٹھیک کرتے ہیں۔ پہلے تو اس طرح کام کرنا مشکل ہوتا ہے، ملازمین کی طرف سے غلط فہمی ہوتی ہے، یہاں تک کہ تخریب کاری بھی ہوتی ہے: "چلو اب جلدی سے اسے ٹھیک کرتے ہیں، کچھ نیا کرتے ہیں، اور پھر اسے ٹیسٹوں سے ڈھانپ لیتے ہیں۔" صرف یہ "بعد میں" تقریبا کبھی نہیں آتا ہے۔

اس لیے، آپ کو پہلے اپنے آپ کو ٹیسٹ لکھنے پر مجبور کرنے کی ضرورت ہے اور دوسروں سے کہنے کو کہیں۔ مجھ پر یقین کریں، ٹیسٹ پر مبنی ترقی مختصر مدت میں بھی فوائد لاتی ہے۔ آپ محسوس کریں گے کہ آپ کی زندگی آسان ہو گئی ہے۔ ہم محسوس کرتے ہیں کہ 99% کوڈ اب ٹیسٹ کے ذریعے احاطہ کرتا ہے۔ یہ بہت کچھ لگتا ہے، لیکن ہمیں کوئی مسئلہ نہیں ہے: ٹیسٹ ہر کمٹ پر چلتے ہیں۔

تاہم، جو چیز ہمیں سب سے زیادہ پسند ہے وہ لوڈ ٹیسٹنگ ہے؛ ہم اسے سب سے اہم سمجھتے ہیں اور اسے باقاعدگی سے انجام دیتے ہیں۔

Расскажу небольшую историю о том, как мы проводили первый этап нагрузочного тестирования одной из первых версий. Поставили систему на ноутбук разработчика, включили нагрузку и получили 4 тыс. транзакций в секунду. Хороший результат для ноутбука. Поставили на виртуальный нагрузочный стенд из четырёх серверов, послабее, чем в production. Развернули по минимуму. Запускаем, и получаем результат хуже, чем на ноутбуке в один поток. Шок-контент.

ہم بہت اداس تھے۔ ہم سرور کے بوجھ کو دیکھتے ہیں، لیکن یہ پتہ چلتا ہے کہ وہ بیکار ہیں۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
ہم ڈویلپرز کو کال کرتے ہیں، اور وہ ہمیں سمجھاتے ہیں، وہ لوگ جو جاوا کی دنیا سے آتے ہیں، کہ ٹرانٹول سنگل تھریڈڈ ہے۔ یہ صرف ایک پروسیسر کور کی طرف سے مؤثر طریقے سے لوڈ کے تحت استعمال کیا جا سکتا ہے. پھر ہم نے ہر سرور پر زیادہ سے زیادہ ممکنہ تعداد میں Tarantool مثالوں کو تعینات کیا، لوڈ کو آن کیا اور پہلے ہی فی سیکنڈ 14,5 ہزار ٹرانزیکشنز موصول ہوئے۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
مجھے دوبارہ سمجھانے دو۔ ان کرداروں میں تقسیم کی وجہ سے جو وسائل کو مختلف طریقے سے استعمال کرتے ہیں، ہمارے رولز جو کہ پروسیسنگ کنکشنز اور ڈیٹا ٹرانسفارمیشن کے ذمہ دار ہیں صرف پروسیسر کو لوڈ کرتے ہیں، اور سختی سے بوجھ کے متناسب۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
اس صورت میں، میموری صرف آنے والے کنکشن اور عارضی اشیاء پر کارروائی کے لیے استعمال کیا جاتا تھا۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
А на серверах хранения наоборот, загрузка процессора росла, но намного медленнее, чем на серверах, которые занимаются обработкой соединений.

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
اور میموری کی کھپت بھری ہوئی ڈیٹا کی مقدار کے براہ راست تناسب میں بڑھی۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا

خدمات

Чтобы развивать наш новый продукт именно как платформу приложений, мы сделали компонент для развёртывания на ней сервисов и библиотек.

خدمات صرف کوڈ کے چھوٹے ٹکڑے نہیں ہیں جو کچھ فیلڈز پر کام کرتی ہیں۔ وہ کافی بڑے اور پیچیدہ ڈھانچے ہو سکتے ہیں جو ایک کلسٹر کا حصہ ہیں، حوالہ ڈیٹا چیک کرتے ہیں، کاروباری منطق چلاتے ہیں اور جوابات واپس کرتے ہیں۔ ہم سروس اسکیما کو گراف کیو ایل میں بھی ایکسپورٹ کرتے ہیں، اور صارف کو پورے ماڈل میں خود شناسی کے ساتھ، ڈیٹا تک ایک عالمی رسائی پوائنٹ ملتا ہے۔ یہ بہت آرام دہ ہے۔

چونکہ سروسز میں بہت سے افعال ہوتے ہیں، ہم نے فیصلہ کیا کہ ایسی لائبریریاں ہونی چاہئیں جن میں ہم اکثر استعمال ہونے والے کوڈ کو منتقل کریں گے۔ ہم نے انہیں محفوظ ماحول میں شامل کیا، پہلے یہ چیک کر لیا تھا کہ یہ ہمارے لیے کچھ نہیں توڑتا۔ اور اب ہم لائبریریوں کی شکل میں افعال کے لیے اضافی ماحول تفویض کر سکتے ہیں۔

ہم نہ صرف ذخیرہ کرنے کے لیے بلکہ کمپیوٹنگ کے لیے بھی ایک پلیٹ فارم حاصل کرنا چاہتے تھے۔ اور چونکہ ہمارے پاس پہلے سے ہی نقلیں اور شارڈز کا ایک گروپ تھا، اس لیے ہم نے تقسیم شدہ کمپیوٹنگ کی ایک قسم کو لاگو کیا اور اسے نقشہ کم کرنے کا نام دیا، کیونکہ یہ اصل نقشہ کم کرنے سے ملتا جلتا نکلا۔

Старые системы

Не все из наших старых систем могут вызывать нас по HTTP и использовать GraphQL, хотя и поддерживают этот протокол. Поэтому мы сделали механизм, позволяющий реплицировать данные в эти системы.

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
اگر ہمارے لیے کچھ تبدیل ہوتا ہے، تو اسٹوریج کے کردار میں منفرد محرکات متحرک ہو جاتے ہیں اور تبدیلیوں کے ساتھ پیغام پروسیسنگ کی قطار میں ختم ہو جاتا ہے۔ اسے ایک الگ ریپلییکٹر رول کا استعمال کرتے ہوئے ایک بیرونی سسٹم میں بھیجا جاتا ہے۔ یہ کردار ریاست کو ذخیرہ نہیں کرتا ہے۔

نئی بہتری

جیسا کہ آپ کو یاد ہے، کاروباری نقطہ نظر سے، ہم نے غیر مطابقت پذیر ریکارڈنگ کی۔ لیکن پھر انہوں نے محسوس کیا کہ یہ کافی نہیں ہوگا، کیونکہ نظاموں کا ایک طبقہ ہے جس کو فوری طور پر آپریشن کی حیثیت کے بارے میں جواب حاصل کرنے کی ضرورت ہے۔ لہذا ہم نے اپنے گراف کیو ایل کو بڑھایا اور اتپریورتنوں کو شامل کیا۔ وہ باضابطہ طور پر ڈیٹا کے ساتھ کام کرنے کے موجودہ پیراڈائم میں فٹ ہوتے ہیں۔ ہمارے لیے، یہ نظام کے دوسرے طبقے کے لیے پڑھنے اور لکھنے دونوں کا ایک ہی نقطہ ہے۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
ہم نے یہ بھی محسوس کیا کہ صرف خدمات ہمارے لیے کافی نہیں ہوں گی، کیونکہ کافی بھاری رپورٹس ہیں جنہیں دن میں ایک بار، ہفتے میں، مہینے میں ایک بار بنانے کی ضرورت ہے۔ اس میں کافی وقت لگ سکتا ہے، اور رپورٹیں Tarantool کے ایونٹ لوپ کو بھی روک سکتی ہیں۔ لہذا، ہم نے الگ الگ کردار بنائے: شیڈولر اور رنر۔ رنرز ریاست کو ذخیرہ نہیں کرتے ہیں۔ وہ بھاری کام چلاتے ہیں جن کا حساب ہم اڑتے ہوئے نہیں لگا سکتے۔ اور شیڈیولر رول ان کاموں کے لانچ شیڈول کی نگرانی کرتا ہے، جس کی ترتیب میں بیان کیا گیا ہے۔ کاموں کو خود اسی جگہ پر اسٹور کیا جاتا ہے جیسا کہ کاروباری ڈیٹا۔ جب صحیح وقت آتا ہے، شیڈولر کام لیتا ہے، اسے کسی رنر کو دیتا ہے، جو اسے شمار کرتا ہے اور نتیجہ بچاتا ہے.

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
Не все задачи нужно запускать по расписанию. Какие-то отчеты нужно считать по требованию. Как только это требование приходит, в песочнице формируется задача и отправляется на выполнение в runner. Через некоторое время пользователю асинхронно приходит ответ, что всё посчиталось, отчёт готов.

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
Изначально мы придерживались парадигмы сохранения всех данных, версионируя и не удаляя их. Но в жизни периодически всё-таки приходится что-то удалять, в основном какую-то сырую или промежуточную информацию. На основе expirationd мы сделали механизм очистки хранилища от устаревших данных.

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا
ہم یہ بھی سمجھتے ہیں کہ جلد یا بدیر ایسی صورت حال آئے گی جب میموری میں ڈیٹا کو ذخیرہ کرنے کے لیے کافی جگہ نہیں ہوگی، لیکن اس کے باوجود ڈیٹا کو ذخیرہ کرنا ضروری ہے۔ ان مقاصد کے لیے ہم جلد ہی ڈسک اسٹوریج بنائیں گے۔

ہم نے Tarantool کی بنیاد پر Alfa-Bank کے سرمایہ کاری کے کاروبار کو کس طرح بنایا

حاصل يہ ہوا

ہم نے ڈیٹا کو ایک ماڈل میں لوڈ کرنے کا کام شروع کیا اور اسے تیار کرنے میں تین ماہ گزارے۔ ہمارے پاس چھ ڈیٹا سپلائی سسٹم تھے۔ ایک ہی ماڈل میں مکمل تبدیلی کا کوڈ Lua میں تقریباً 30 ہزار لائنوں پر مشتمل ہے۔ اور زیادہ تر کام ابھی باقی ہے۔ بعض اوقات پڑوسی ٹیموں کی طرف سے حوصلہ افزائی کی کمی ہوتی ہے، اور بہت سے حالات ایسے ہوتے ہیں جو کام کو پیچیدہ بنا دیتے ہیں۔ اگر آپ کو کبھی بھی اسی طرح کے کام کا سامنا کرنا پڑتا ہے، تو اس کے نفاذ کے لیے جو وقت آپ کو عام لگتا ہے اسے تین یا چار سے ضرب دیں۔

یہ بھی یاد رکھیں کہ کاروباری عمل میں موجودہ مسائل کو نئے DBMS کے ذریعے حل نہیں کیا جا سکتا، یہاں تک کہ ایک بہت ہی نتیجہ خیز۔ میرا مطلب ہے؟ اپنے پروجیکٹ کے آغاز میں، ہم نے صارفین میں یہ تاثر پیدا کیا کہ اب ہم ایک نیا تیز ڈیٹا بیس لائیں گے اور ہم زندہ رہیں گے! عمل تیزی سے چلے گا، سب کچھ ٹھیک ہو جائے گا۔ درحقیقت، ٹیکنالوجی ان مسائل کو حل نہیں کرتی جو کاروباری عمل میں ہوتے ہیں، کیونکہ کاروباری عمل افراد ہوتے ہیں۔ اور آپ کو لوگوں کے ساتھ کام کرنے کی ضرورت ہے، نہ کہ ٹیکنالوجی۔

ٹیسٹ سے چلنے والی نشوونما ابتدائی مراحل میں تکلیف دہ اور وقت طلب ہو سکتی ہے۔ لیکن اس کا مثبت اثر مختصر مدت میں بھی نمایاں ہوگا، جب آپ کو ریگریشن ٹیسٹنگ کرانے کے لیے کچھ کرنے کی ضرورت نہیں ہے۔

ترقی کے تمام مراحل پر لوڈ ٹیسٹنگ کا انعقاد انتہائی ضروری ہے۔ فن تعمیر میں جتنی جلدی آپ کو کوئی خامی نظر آئے گی، اسے ٹھیک کرنا اتنا ہی آسان ہوگا، جس سے مستقبل میں آپ کا کافی وقت بچ جائے گا۔

В языке Lua нет ничего страшного. На нем может научиться писать кто угодно: Java-разработчик, JavaScript-разработчик, разработчик на Python, фронтендер или бэкендер. У нас даже аналитики на нём пишут.

جب ہم اس حقیقت کے بارے میں بات کرتے ہیں کہ ہمارے پاس ایس کیو ایل نہیں ہے، تو یہ لوگوں کو خوفزدہ کرتا ہے۔ "آپ SQL کے بغیر ڈیٹا کیسے حاصل کرتے ہیں؟ کیا یہ ممکن ہے؟ یقیناً۔ OLTP کلاس سسٹم میں، SQL کی ضرورت نہیں ہے۔ کسی قسم کی زبان کی شکل میں ایک متبادل موجود ہے جو فوری طور پر آپ کو دستاویز پر مبنی نقطہ نظر کی طرف لوٹاتا ہے۔ مثال کے طور پر، گراف کیو ایل۔ اور تقسیم شدہ کمپیوٹنگ کی شکل میں ایک متبادل موجود ہے۔

Если вы понимаете, что вам нужно будет масштабироваться, то проектируйте свое решение на Tarantool, сразу таким образом, чтобы оно могло работать параллельно на десятках экземпляров Tarantool. Если вы этого не сделаете, то потом будет сложно и больно, поскольку Tarantool может эффективно использовать только одно ядро процессора.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں