كيف قمنا ببناء Fly Postgres

يصدر روبوت تعليمات ، في شكل علامات تعجب ، لمجموعة من الروبوتات الأخرى التي تحمل أكوامًا من أطباق أقراص الكرتون. يستجيب أحدهم بعلامات اختيار. ويحمل الشكل الموجود على تل في الخلفية علامة مع سهم يشير إلى اليمين. تملأ المناطيد sky. صورة بواسطة Annie Ruygt

مثل العديد من الأنظمة الأساسية السحابية العامة ، لدى Fly.io عرض قاعدة بيانات. حيث تمتلك AWS RDS و Heroku لديها Heroku Postgres ، لدى Fly.io خدمة Fly Postgres. يمكنك بدء قاعدة بيانات Postgres ، أو مجموعة كاملة ، بأوامر قليلة فقط. اشترك في Fly.io وابدأ تشغيل تطبيق كامل في دقائق!

Fly.io هو مزود قاعدة بيانات متناقض - حتى أنه يمكن للمرء استخدام كلمة "متردد". أسباب ذلك مثيرة للاهتمام ، وكذلك كيفية عمل Fly Postgres. عندما نقول هذا في المحادثات عبر الإنترنت ، غالبًا ما يفاجأ الناس. لذلك اعتقدنا أننا سنأخذ بضع دقائق لشرح من أين أتينا بقواعد البيانات.

أطلقنا Fly.io بدون تخزين دائم. كنا منصة لـ "التطبيقات المتطورة" ، وهي فكرة عام 2019 المتمثلة في الاستغناء عن شرائح من التطبيقات الكبيرة ، وترك معظمها يعمل في شمال فيرجينيا ، وتشغيل الشرائح على الآلات الصغيرة في جميع أنحاء العالم. في عالم "تطبيقات الحافة" ، يكون عدم وجود تخزين دائم أمرًا منطقيًا: مخزن البيانات الحقيقي موجود في شرق الولايات المتحدة ، ويتم اختيار الشرائح بعناية لتسريع التطبيق بأكمله (عن طريق التخزين المؤقت ، وتشغيل نموذج ML ، والتخزين المؤقت وتقديم الصور والتخزين المؤقت).

بالطبع ، كان الناس يطلبون قواعد البيانات منذ اليوم الأول. لكن من الأول إلى ثلاثمائة وواحد وثلاثين ، صمدنا.

في اليوم الخامس عشر تقريبًا ، بدأنا من فكرة إنشاء منصة حصرية للتطبيقات الطرفية وبدأنا في البحث عن طرق لجعل الأشياء المجنونة تعمل تمامًا على Fly.io. تغازلنا بفكرة الاستثمار في منصة قاعدة بيانات متكاملة. لقد نشرنا Redis مشتركًا (ملعونًا في النهاية). حتى أننا لعبنا فكرة تقديم CockroachDB مُدار ؛ مثلنا ، صُمم Cockroach ليتم توزيعه في جميع أنحاء العالم.

ثم أفلتنا من العقاب. قاعدة معطيات ! فيه!

إليك منطق 2020 للأجيال القادمة: لا يعني عدم توفير مساحة تخزين دائمة على النظام الأساسي أن التطبيقات التي تعمل على Fly.io يجب أن تكون عديمة الحالة. بدلاً من ذلك ، كانوا بحاجة فقط إلى استخدام خدمات قواعد البيانات خارج النظام الأساسي ، مثل RDS أو CrunchyData أو PlanetScale. كان توصيل التطبيقات الموزعة عالميًا بـ RDS (ولا يزال) شيئًا تفعله الفرق العادية طوال الوقت. ماذا نريد أن نقضي وقتنا في بناء؟ RDS آخر ، أو أفضل نظام أساسي على الإطلاق لأداء مهام بالقرب من المستخدمين؟

بحلول اليوم المئتين والتسعين أو نحو ذلك ، بدأت جاذبية توضيح وإعادة صياغة منطق النظام الأساسي العالمي عديم الجنسية للتطبيقات ذات الحالة العالمية تتلاشى. RDS! فه! في مكان ما في ذلك الوقت تقريبًا ، اكتشف جيروم وستيف LVM2 ، وأعطيا جميع تطبيقاتنا مساحة تخزين على القرص ، وقتلا نقطة الحديث في النظام الأساسي عديم الحالة.

الآن ، يعد تخزين القرص مجرد قطعة واحدة من اللغز لتوفير نسخ احتياطية موثوقة للتطبيقات. إمكانيات التخزين أم لا ، ما زلنا لا نريد الدخول في نسخ كل RDS. لذلك توصلنا إلى خطة أنيقة: بناء النظام الأساسي حتى يتمكن من تشغيل تطبيق قاعدة بيانات ، وإنشاء تطبيق قاعدة بيانات سهل الاستخدام يمكن للعملاء نشره عليه ، وإضافة أوامر ملائمة لنشر التطبيق وإدارته.

لن يكون لدينا قاعدة بيانات مُدارة.

لا ، لدينا قاعدة بيانات آلية.

تعد Postgres قاعدة بيانات جيدة لهذا الغرض. إنه مألوف ولا يعمل إلا مع أدوات الترحيل المضمنة في أطر عمل مكدس.

في كانون الثاني (يناير) 2021 ، أطلقنا برمجياً أمر fly pg create والذي سينشر مجموعة Postgres ثنائية العقد تم تكوينها تلقائيًا باستخدام المقاييس والفحوصات الصحية والتنبيهات. (كانت التنبيهات ملعونًا مثل Redis المشترك لدينا). كانت هذه دفعة كبيرة لنا. في عام 2020 ، كنا صغارًا حقًا. ساهم الجميع هنا تقريبًا في ذلك.

عندما وصل شون إلى Fly.io في وقت لاحق من ذلك العام ، تولى مهمة جعل Fly Postgres أكثر موثوقية وقابلية للإدارة ، ولا يزال في وضع صعب: تطوير وتقديم ميزات تعمل على تحسين النظام الأساسي للتطبيقات مثل Fly Postgres ، وقم بتوصيل Fly Postgres بها.

هذا المنشور هو في الغالب تاريخ قديم! لم يعد شون فريقًا واحدًا ، وقد حدث الكثير منذ أن كان يجب كتابة هذه الرسالة وإرسالها. كل شيء مرة أخرى ...

كيف قمنا ببناء Fly Postgres
يصدر روبوت تعليمات ، في شكل علامات تعجب ، لمجموعة من الروبوتات الأخرى التي تحمل أكوامًا من أطباق أقراص الكرتون. يستجيب أحدهم بعلامات اختيار. ويحمل الشكل الموجود على تل في الخلفية علامة مع سهم يشير إلى اليمين. تملأ المناطيد sky. صورة بواسطة Annie Ruygt

مثل العديد من الأنظمة الأساسية السحابية العامة ، لدى Fly.io عرض قاعدة بيانات. حيث تمتلك AWS RDS و Heroku لديها Heroku Postgres ، لدى Fly.io خدمة Fly Postgres. يمكنك بدء قاعدة بيانات Postgres ، أو مجموعة كاملة ، بأوامر قليلة فقط. اشترك في Fly.io وابدأ تشغيل تطبيق كامل في دقائق!

Fly.io هو مزود قاعدة بيانات متناقض - حتى أنه يمكن للمرء استخدام كلمة "متردد". أسباب ذلك مثيرة للاهتمام ، وكذلك كيفية عمل Fly Postgres. عندما نقول هذا في المحادثات عبر الإنترنت ، غالبًا ما يفاجأ الناس. لذلك اعتقدنا أننا سنأخذ بضع دقائق لشرح من أين أتينا بقواعد البيانات.

أطلقنا Fly.io بدون تخزين دائم. كنا منصة لـ "التطبيقات المتطورة" ، وهي فكرة عام 2019 المتمثلة في الاستغناء عن شرائح من التطبيقات الكبيرة ، وترك معظمها يعمل في شمال فيرجينيا ، وتشغيل الشرائح على الآلات الصغيرة في جميع أنحاء العالم. في عالم "تطبيقات الحافة" ، يكون عدم وجود تخزين دائم أمرًا منطقيًا: مخزن البيانات الحقيقي موجود في شرق الولايات المتحدة ، ويتم اختيار الشرائح بعناية لتسريع التطبيق بأكمله (عن طريق التخزين المؤقت ، وتشغيل نموذج ML ، والتخزين المؤقت وتقديم الصور والتخزين المؤقت).

بالطبع ، كان الناس يطلبون قواعد البيانات منذ اليوم الأول. لكن من الأول إلى ثلاثمائة وواحد وثلاثين ، صمدنا.

في اليوم الخامس عشر تقريبًا ، بدأنا من فكرة إنشاء منصة حصرية للتطبيقات الطرفية وبدأنا في البحث عن طرق لجعل الأشياء المجنونة تعمل تمامًا على Fly.io. تغازلنا بفكرة الاستثمار في منصة قاعدة بيانات متكاملة. لقد نشرنا Redis مشتركًا (ملعونًا في النهاية). حتى أننا لعبنا فكرة تقديم CockroachDB مُدار ؛ مثلنا ، صُمم Cockroach ليتم توزيعه في جميع أنحاء العالم.

ثم أفلتنا من العقاب. قاعدة معطيات ! فيه!

إليك منطق 2020 للأجيال القادمة: لا يعني عدم توفير مساحة تخزين دائمة على النظام الأساسي أن التطبيقات التي تعمل على Fly.io يجب أن تكون عديمة الحالة. بدلاً من ذلك ، كانوا بحاجة فقط إلى استخدام خدمات قواعد البيانات خارج النظام الأساسي ، مثل RDS أو CrunchyData أو PlanetScale. كان توصيل التطبيقات الموزعة عالميًا بـ RDS (ولا يزال) شيئًا تفعله الفرق العادية طوال الوقت. ماذا نريد أن نقضي وقتنا في بناء؟ RDS آخر ، أو أفضل نظام أساسي على الإطلاق لأداء مهام بالقرب من المستخدمين؟

بحلول اليوم المئتين والتسعين أو نحو ذلك ، بدأت جاذبية توضيح وإعادة صياغة منطق النظام الأساسي العالمي عديم الجنسية للتطبيقات ذات الحالة العالمية تتلاشى. RDS! فه! في مكان ما في ذلك الوقت تقريبًا ، اكتشف جيروم وستيف LVM2 ، وأعطيا جميع تطبيقاتنا مساحة تخزين على القرص ، وقتلا نقطة الحديث في النظام الأساسي عديم الحالة.

الآن ، يعد تخزين القرص مجرد قطعة واحدة من اللغز لتوفير نسخ احتياطية موثوقة للتطبيقات. إمكانيات التخزين أم لا ، ما زلنا لا نريد الدخول في نسخ كل RDS. لذلك توصلنا إلى خطة أنيقة: بناء النظام الأساسي حتى يتمكن من تشغيل تطبيق قاعدة بيانات ، وإنشاء تطبيق قاعدة بيانات سهل الاستخدام يمكن للعملاء نشره عليه ، وإضافة أوامر ملائمة لنشر التطبيق وإدارته.

لن يكون لدينا قاعدة بيانات مُدارة.

لا ، لدينا قاعدة بيانات آلية.

تعد Postgres قاعدة بيانات جيدة لهذا الغرض. إنه مألوف ولا يعمل إلا مع أدوات الترحيل المضمنة في أطر عمل مكدس.

في كانون الثاني (يناير) 2021 ، أطلقنا برمجياً أمر fly pg create والذي سينشر مجموعة Postgres ثنائية العقد تم تكوينها تلقائيًا باستخدام المقاييس والفحوصات الصحية والتنبيهات. (كانت التنبيهات ملعونًا مثل Redis المشترك لدينا). كانت هذه دفعة كبيرة لنا. في عام 2020 ، كنا صغارًا حقًا. ساهم الجميع هنا تقريبًا في ذلك.

عندما وصل شون إلى Fly.io في وقت لاحق من ذلك العام ، تولى مهمة جعل Fly Postgres أكثر موثوقية وقابلية للإدارة ، ولا يزال في وضع صعب: تطوير وتقديم ميزات تعمل على تحسين النظام الأساسي للتطبيقات مثل Fly Postgres ، وقم بتوصيل Fly Postgres بها.

هذا المنشور هو في الغالب تاريخ قديم! لم يعد شون فريقًا واحدًا ، وقد حدث الكثير منذ أن كان يجب كتابة هذه الرسالة وإرسالها. كل شيء مرة أخرى ...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow