تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

شهد العالم أول نموذج أولي لمخازن الكائنات في عام 1996. في غضون 10 سنوات ، ستطلق Amazon Web Services Amazon S3 ، وسيبدأ العالم في الجنون بشكل منهجي باستخدام مساحة عنوان مسطحة. بفضل معالجة البيانات الوصفية وقدرتها على التوسع دون ترهل تحت الحمل ، أصبح تخزين الكائنات بسرعة هو المعيار لمعظم خدمات التخزين السحابية وما بعدها. ميزة أخرى مهمة هي قدرتها الجيدة على التكيف لتخزين المحفوظات والملفات المماثلة التي نادرا ما تستخدم. هلل جميع المشاركين في تخزين البيانات وحملوا التكنولوجيا الجديدة بأيديهم.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

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

لذلك ، سنكتشف اليوم الخيارات المتاحة "لتكون مثل البالغين ، وليس CEPH وملفًا أكبر" ، سنقوم بنشر واحد منهم ، وسنتحقق من أن كل شيء يعمل باستخدام Veeam Backup & Replication. تدعي أنها تدعم العمل مع المستودعات المتوافقة مع S3 ، وسوف نتحقق من هذا البيان.

ماذا عن الاخرين؟

أقترح أن أبدأ بنظرة عامة صغيرة على السوق وخيارات تخزين الكائنات. الرائد والمعيار المعترف بهما بشكل عام هو Amazon S3. أقرب المتابعين هما Microsoft Azure Blob Storage و IBM Cloud Object Storage.

هل هذا كل شيء؟ ألا يوجد منافسون آخرون؟ بالطبع ، هناك منافسون ، لكن شخصًا ما يسلك طريقه الخاص ، مثل Google Cloud أو Oracle Cloud Object Storage ، مع دعم غير كامل لـ S3 API. شخص ما يستخدم إصدارات قديمة من API ، مثل Baidu Cloud. والبعض ، مثل Hitachi Cloud ، يتطلب تطبيق منطق خاص ، والذي سيؤدي بالتأكيد إلى صعوباته الخاصة. على أي حال ، تتم مقارنة الجميع بـ Amazon ، والتي يمكن اعتبارها معيار الصناعة.

ولكن في الحلول داخل الشركة ، يكون الاختيار أكبر بكثير ، لذلك دعونا نحدد المعايير التي تهمنا. من حيث المبدأ ، يكفي اثنان فقط: دعم واجهة برمجة تطبيقات S3 واستخدام توقيع الإصدار 4. يدا بيد ، نحن ، كعميل مستقبلي ، مهتمون فقط بالواجهات للتفاعل ، ولسنا مهتمين جدًا بالمطبخ الداخلي للتخزين نفسه.

حسنًا ، هناك الكثير من الحلول التي تناسب هذه الشروط البسيطة. على سبيل المثال ، الشركات الكلاسيكية ذات الوزن الثقيل:

  • ديل إمك إي سي إس
  • شبكة تخزين NetApp S3
  • دلاء Nutanix
  • نقية التخزين FlashBlade و StorReduce
  • هواوي فيوجن ستوريج

هناك مجموعة من الحلول البرمجية البحتة التي تعمل خارج الصندوق:

  • ريد هات سيف
  • تخزين المؤسسة SUSE
  • Cloudian

وحتى أولئك الذين يرغبون في معالجة ملف بعد التجميع بعناية لم يتعرضوا للإهانة:

  • CEPH في أنقى صوره
  • Minio (إصدار Linux ، نظرًا لوجود العديد من الأسئلة حول إصدار Windows)

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

وضع الكابينة لدينا معا

أريد أن أتحدث قليلاً عن اختيار موضوع الاختبار.

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

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

بناءً على ما تقدم ، وقع خياري إصدار مجتمع Dell EMC ECS. هذا مشروع ممتع للغاية ، وأرى أنه من الضروري إخباركم به.

أول ما يتبادر إلى الذهن عندما ترى الإضافة الطبعة المجتمع - أن هذه مجرد ورقة تتبع من ECS كاملة مع بعض القيود التي تتم إزالتها عن طريق شراء ترخيص. لذا لا!

تذكر:

!!! Community Edition هو مشروع منفصل تم إنشاؤه للاختبار وبدون دعم فني من Dell !!
ولا يمكن تحويله إلى نظام ECS كامل ، حتى لو كنت تريد ذلك حقًا.

دعونا نفهم ذلك

يعتقد الكثير من الناس أن Dell EMC ECS هو الحل الأفضل تقريبًا إذا كنت بحاجة إلى تخزين كائنات. جميع المشاريع تحت العلامة التجارية ECS ، بما في ذلك المشاريع التجارية والشركات ، هي githabe. نوع من بادرة حسن النية من Dell. بالإضافة إلى البرنامج الذي يعمل على أجهزتهم ذات العلامات التجارية ، هناك إصدار مفتوح المصدر يمكن نشره حتى في السحابة ، حتى على جهاز افتراضي ، حتى في حاوية ، حتى على أي من أجهزتك. بالنظر إلى المستقبل ، هناك أيضًا إصدار OVA ، والذي سنستخدمه.
يعد DELL ECS Community Edition نفسه نسخة مصغرة من البرنامج الكامل الذي يعمل على خوادم Dell EMC ECS ذات العلامات التجارية.

لقد حددت أربعة اختلافات رئيسية:

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

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

ماذا يوجد في النسخة الكبيرة؟

من خلال الركض عبر أوروبا ، دعنا ننتقل إلى الحلول الحديدية من أجل الحصول على صورة أكثر اكتمالاً للنظام البيئي.

لن أؤكد أو أدحض بطريقة أو بأخرى العبارة القائلة بأن DELL ECS هو أفضل تخزين للكائنات على موقع الشركة ، ولكن إذا كان لديك ما تقوله حول هذا الموضوع ، فسأكون سعيدًا بقراءته في التعليقات. على أي حال ، حسب الإصدار آي دي سي ماركت سكيب 2018 دخلت Dell EMC بثقة أكبر خمس شركات رائدة في السوق OBS. على الرغم من عدم أخذ الحلول المستندة إلى السحابة في الاعتبار ، فهذه محادثة منفصلة.

من وجهة نظر فنية ، ECS عبارة عن تخزين كائن يوفر الوصول إلى البيانات باستخدام بروتوكولات التخزين السحابي. يدعم AWS S3 و OpenStack Swift. بالنسبة إلى الحاويات الممكّنة للملفات ، تدعم ECS NFSv3 لتصدير ملف تلو الآخر.

تعتبر عملية كتابة المعلومات غير عادية إلى حد ما ، خاصة بعد أنظمة تخزين الكتل الكلاسيكية.

  • عند وصول بيانات جديدة ، يتم إنشاء كائن جديد له اسم والبيانات نفسها والبيانات الوصفية.
  • تنقسم الكائنات إلى 128 ميغا بايت ، ويتم كتابة كل جزء في ثلاث عقد في وقت واحد.
  • يتم تحديث ملف الفهرس ، حيث يتم تسجيل المعرفات ومواقع التخزين.
  • يتم تحديث ملف السجل (سجل السجل) وكتابته أيضًا إلى ثلاث عقد.
  • يتم إرسال رسالة إلى العميل حول سجل ناجح.
    تتم كتابة النسخ الثلاث من البيانات بالتوازي. لا تعتبر الكتابة ناجحة إلا إذا تمت كتابة النسخ الثلاث بنجاح.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

القراءة أسهل:

  • يطلب العميل البيانات.
  • يبحث الفهرس عن مكان لتخزين البيانات.
  • تتم قراءة البيانات من عقدة واحدة وإرسالها إلى العميل.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

هناك عدد غير قليل من الخوادم نفسها ، لذلك دعونا نلقي نظرة على أصغر Dell EMC ECS EX300. يبدأ من 60 تيرابايت ، مع القدرة على النمو حتى 1,5 بيتابايت. ويتيح لك شقيقه الأكبر Dell EMC ECS EX3000 بالفعل تخزين ما يصل إلى 8,6 بيتابايت لكل رف.

نشر

من الناحية الفنية ، يمكن نشر Dell ECS CE بالقدر المطلوب. على أي حال ، لم أجد قيودًا صريحة. ومع ذلك ، تتم جميع عمليات القياس بسهولة عن طريق استنساخ العقدة الأولى التي نحتاج إليها:

  • 8 وحدة المعالجة المركزية
  • ذاكرة الوصول العشوائي 64GB
  • 16 جيجا لنظام التشغيل
  • 1 تيرابايت مباشرة للتخزين
  • أحدث إصدار من CentOS Minimal

هذا خيار للحالة عندما تريد تثبيت كل شيء بنفسك من البداية. بالنسبة لنا ، هذا الخيار غير مناسب ، لأن. سأستخدم صورة OVA للنشر.

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

ومع ذلك ، يعيش مطورو ECS CE في العالم الحقيقي ، ويتم التثبيت بنجاح حتى مع وجود عقدة واحدة ، والحد الأدنى من المتطلبات هو:

  • 4 وحدة المعالجة المركزية
  • 16 غيغابايت من ذاكرة الوصول العشوائي
  • 16 جيجا لنظام التشغيل
  • 104 جيجا بايت تخزين ذاتي

هذه هي الموارد اللازمة لنشر صورة OVA. بالفعل أكثر إنسانية وواقعية.

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

  • تسجيل الدخول: admin
  • كلمة المرور: changeme

ثم نقوم بتشغيل sudo nmtui وتكوين واجهة الشبكة - IP / القناع و DNS والبوابة. مع الأخذ في الاعتبار أنه لا توجد أدوات شبكة في الحد الأدنى من CentOS ، نتحقق من الإعدادات عبر عنوان IP.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

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

حان الوقت الآن لتحرير نص التثبيت. لا توجد نوافذ جميلة أو واجهة مستخدم زائفة لك - كل شيء يتم من خلال محرر النصوص المفضل لديك. من الناحية الفنية البحتة ، هناك طريقتان: يمكنك تشغيل كل أمر يدويًا أو تشغيل مُكوِّن videploy على الفور. سيفتح ببساطة التكوين في vim ، وعند الخروج سيبدأ في التحقق منه. لكن ليس من المثير للاهتمام أن تبسط حياتك بشكل متعمد ، لذلك دعونا ننفذ أمرين آخرين. على الرغم من أنه لا معنى له ، لقد حذرتك =)

لذلك ، نجعل vim ECS-CommunityEdition / publish.xml ونجري الحد الأدنى من التغييرات المثلى بحيث يتم تشغيل ECS وتشغيله. يمكن اختصار قائمة المعلمات ، لكنني فعلت ذلك على النحو التالي:

  • مرخص_قبول: صحيح ليس عليك تغييره ، فعند النشر سيُطلب منك صراحة قبوله وإظهار عبارة لطيفة. قد يكون حتى بيضة عيد الفصح.
    تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك
  • قم بإلغاء التعليق على الأسماء التلقائية للأسطر: والمخصص: أدخل اسمًا واحدًا على الأقل مطلوبًا للعقدة - سيتم استبدال اسم المضيف به أثناء عملية التثبيت.
  • install_node: 192.168.1.1 حدد عنوان IP الحقيقي للعقدة. في حالتنا ، نحدد نفس الشيء كما في nmtui
  • dns_domain: أدخل المجال الخاص بك.
  • dns_servers: أدخل نظام أسماء النطاقات الخاص بك.
  • ntp_servers: يمكن تحديد أي واحد. أخذت أول واحد من المجموعة 0.pool.ntp.org (أصبح 91.216.168.42)
  • تسمية تلقائية: العادة إذا تركت دون تعليق ، فسيتم استدعاء القمر لونا.
  • ecs_block_devices:
    / ديف / زنة
    لسبب غير معروف ، قد يكون هناك جهاز تخزين كتلة غير موجود / dev / vda
  • وحدات التخزين:
    أعضاء:
    192.168.1.1 هنا مرة أخرى نشير إلى IP الحقيقي للعقدة
  • ecs_block_devices:
    / dev / sdb نكرر عملية قطع الأجهزة غير الموجودة.

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

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

بعد الخروج من المحرر ، تحتاج إلى تشغيل update_deploy /home/admin/ECS-CommunityEdition/deploy.yml ، وإذا تم كل شيء بشكل صحيح ، فسيتم الإبلاغ عن ذلك بشكل صريح.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

ثم لا يزال يتعين عليك بدء videploy ، وانتظر تحديث البيئة ، ويمكنك بدء التثبيت نفسه باستخدام الأمر ova-step1 ، وبعد اكتماله بنجاح ، أمر ova-step2. هام: لا توقف النصوص اليدوية! قد تستغرق بعض الخطوات وقتًا طويلاً ، وتستغرق وقتًا أطول من المحاولة الأولى ، ويبدو أن كل شيء معطل. على أي حال ، يجب أن تنتظر اكتمال النص بطريقة طبيعية. في النهاية ، يجب أن ترى شيئًا كهذا.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

الآن ، أخيرًا ، يمكننا فتح لوحة تحكم WebUI باستخدام عنوان IP الذي نعرفه. إذا لم يتم تغييره في مرحلة التكوين ، فسيكون الحساب الافتراضي هو root / ChangeMe. يمكنك أيضًا استخدام وحدة التخزين المتوافقة مع S3 على الفور. وهي متوفرة على المنفذين 9020 لـ HTTP و 9021 لـ HTTPS. مرة أخرى ، إذا لم يتم تغيير أي شيء ، فإن access_key: object_admin1 و secret_key: ChangeMeChangeMeChangeMeChangeMeChangeMe.

لكن دعونا لا نتقدم على أنفسنا ونبدأ بالترتيب.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

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

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

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

وفقًا لذلك ، نختار الوظائف التي نحتاجها وننشئ مفاتيح المستخدم. سيكون S3 / Atmos كافياً بالنسبة لي. ولا تنس حفظ المفتاح 😉

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

تم إنشاء المستخدم ، والآن حان الوقت له لتحديد الجرافة. انتقل إلى إدارة> دلو واملأ الحقول المطلوبة. كل شيء بسيط هنا.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

الآن لدينا كل شيء جاهز للاستخدام القتالي تمامًا لوحدة التخزين S3 الخاصة بنا.

إعداد Veeam

لذلك ، كما نتذكر ، فإن أحد التطبيقات الرئيسية لتخزين الكائنات هو التخزين طويل المدى للمعلومات التي نادرًا ما يتم الوصول إليها. وخير مثال على ذلك هو الحاجة إلى تخزين النسخ الاحتياطية في موقع بعيد. في Veeam Backup & Replication ، تسمى هذه الميزة فئة السعة.

لنبدأ الإعداد بإضافة Dell ECS CE إلى واجهة Veeam. في علامة التبويب Backup Infrastructure ، قم بتشغيل المعالج لإضافة مستودع جديد وحدد عنصر تخزين الكائنات.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

نختار الغرض الذي بدأنا منه كل شيء - متوافق مع S3.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

في النافذة التي تظهر ، اكتب الاسم المطلوب وانتقل إلى خطوة الحساب. هنا تحتاج إلى تحديد نقطة الخدمة في النموذج https://your_IP:9021، يمكن ترك المنطقة كما هي ، ويمكن إضافة المستخدم الذي تم إنشاؤه. مطلوب خادم بوابة إذا كان التخزين الخاص بك موجودًا في موقع بعيد ، ولكن هذا بالفعل موضوع تحسين البنية التحتية ومقال منفصل ، لذلك يمكنك تخطيه بأمان هنا.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

إذا تم تحديد كل شيء وتهيئته بشكل صحيح ، فسيظهر تحذير بشأن الشهادة ثم نافذة بها حاوية ، حيث يمكنك إنشاء مجلد لملفاتنا.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

نمرر المعالج حتى النهاية ونستمتع بالنتيجة.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

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

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

بعد الانتقال إلى المعالج ، إذا كنت لا تريد الانتظار ، يمكنك الضغط على ctrl + RMB في المستودع ، وتشغيل مهمة Tiering بالقوة ومشاهدة الزحف إلى الرسوم البيانية.

تخزين العناصر في الغرفة الخلفية ، أو كيف تصبح مزود الخدمة الخاص بك

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

المصدر: www.habr.com

إضافة تعليق