بعد كتابة 30 مليون سطر من الكود البنية التحتية، نود أن نلفت خمسة دروس مفيدة

الكاتب | يفغيني Brikman

المترجم | الجهل

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

1، في العصر الحجري DevOps

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

بالنسبة لي، DevOps شعور أكثر من هذا القبيل:

بناء على مستوى الانتاج من البنية التحتية من الصعب في الواقع، مرهقة وتستغرق وقتا طويلا.

ووفقا للبيانات التجريبية التي نجمعها عند العمل مع المئات من شركات مختلفة، يمكنك تقدير تقريبا مشروعك البنية التحتية المقبل الزمن الذي يستغرقه:

الدرس 2، 1: البنية التحتية من الدرجة إنتاج المرجعية

DevOps المشاريع دائما يستغرق وقتا أطول مما كان متوقعا، لماذا يحدث هذا؟

السبب الأول هو ياك الحلاقة (على الخط والشعر الياك)، ثم ما هو ياك الحلاقة؟ انظروا الى هذا السيناريو سوف نفهم:

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

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

لتجنب هذه المشكلة، في كل مرة تبدأ باستخدام بنية تحتية جديدة، والتحقق من القائمة التالية:

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

3، الدرس 2: مجموعة أدوات

اعتبارا من عام 2018، ما يلي هو الأداة الأساسية التي نستخدمها لبناء وإدارة البنية التحتية في Gruntwork في:

  • Terraform: نحن نستخدم Terraform لتكوين كل من البنية التحتية، بما في ذلك الشبكات، وموازنات الحمل، وقواعد البيانات والمستخدمين والأذونات وجميع الخوادم الخاصة بنا.
  • باكر: باكر الذي نستعمله لتعريف وبناء صورة الجهاز الظاهري قيد التشغيل على الخادم.
  • عامل الميناء: بعض ملقمات الكتلة لدينا، عاملة استضافت طلبات الحاوية عامل الميناء أعلاه. الأداة كتلة عامل الميناء الرئيسية التي نستخدمها هي Kubernetes، ECS وFargate.

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

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

4، الدرس 3: وحدة كبيرة ضارة

رموز مبتدئ البنية التحتية يعرف عادة كملف واحد أو مجموعة من الملفات لنشر كل بيئة الخلية (ديف، المرحلة، همز، وما إلى ذلك) من كل البنية التحتية. هذا هو فكرة سيئة.

وفيما يلي بعض من مساوئ هذا الأسلوب:

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

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

    5، الدرس 4: الآلية كود البنية التحتية الاختبار ليس هشا جدا

    إذا لم يتم آليا كود البنية التحتية الخاصة بك الاختبار السهل جدا على غير ما يرام. انك لا تعرف بعض المشاكل المخفية. وبعبارة أخرى، هو رمز من الصعب البنية التحتية الاختبار. كنت لا "مضيف" (على سبيل المثال، لا يمكنك نشرها على جهاز كمبيوتر محمول AWS VPC)، لا يوجد "اختبار وحدة" (على سبيل المثال، لا يمكنك "Terraform" كود "الخارجية" لعزل، لأن ما هو Terraform القيام به التفاعل مع العالم الخارجي).

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

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

    هذا الرقم هو الهرم، لدينا الكثير من وحدة الاختبار، اختبار التكامل وعدد أقل من عدد قليل جدا من اختبار إلى نهاية. لماذا؟ هذا أمر يحدده الوقت اللازم لكل نوع من الاختبار:

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

  • بناء صغيرة وبسيطة وحدة قائمة بذاتها، وكتابة الكثير من وحدة الاختبارات بالنسبة لهم.
  • هذه صغيرة وبسيطة، معركة اختبار بعد بناء كتل معا، وخلق بنية تحتية أكثر تعقيدا، وكمية صغيرة من التكامل وحد للتجارب النهاية.
  • الدرس 6، 5: عملية نشر

    الآن دعونا نضع كل ذلك معا. وفيما يلي كيفية بناء وإدارة البنية التحتية الخاصة بك التي يجب استخدامها من الآن فصاعدا:

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

     النص الانكليزي

    https://blog.gruntwork.io/5-lessons-learned-from-writing-over-300-000-lines-of-infrastructure-code-36ba7fadeac1

    سطح استوديو (2) وسائل الاعلام الاجنبية مراجعة التقييم

    هذه هي أفضل الراب الآية 2018 عام وانتم FUBU فو

    الزاوي حلها عشرة 7 الميزات!

    Deadpool "شياو جيان رخيصة" صديقة، وقد فتنت قيمة لون لها

    المضيف الجديد التعامل مع الفرح الموالين نينتندو لديها ما العمل؟

    20000 دراجة مشاركة "النوم" مشاهد مذهلة اللوجستية حديقة

    2019 معرض شنغهاي للسيارات السيارة الجديدة أكثر من المتوقع

    أوصى العديد من الدراما العالية، نظرة على ما تراه جعلت العديد من ذلك؟ أي واحد هل تعتقد أفضل؟

    بسعر 899 يوان، أطلقت مارشال سماعة بلوتوث اللاسلكية القاصرين II

    أعلن CW سلسلة جديدة "بات امرأة"، القائمة الأولى من دور والممثل

    "سنو" لهذا الجهاز لاطلاق سراح 28 متر مربع من الدفء لك

    "مخدر الملك": مقتبس من رب المخدرات الأسطوري الكورية لي دو ثلاث تجربة حقيقية مثيرة