الكاتب | يفغيني Brikman
المترجم | الجهل
في Gruntwork، ونحن خلق والحفاظ على مكتبة تحتوي على 300000 خطوط للقانون البنى التحتية، ومئات من الشركات تستخدم هذه المكتبة في بيئة إنتاجها. في هذه المقالة، سوف أشارك ممارستنا في المدارس الثانوية لتطوير وصيانة هذه المكتبة إلى خمسة درس مهم جدا.
1، في العصر الحجري DevOps
على الرغم من أن شغل هذه الصناعة مع مجموعة متنوعة من أحدث العبارات الطنانة --Kubernetes والخدمات الصغرى، شبكة الخدمات والبنية التحتية الثابتة والبيانات الكبيرة، والبحيرة، وهلم جرا - ولكن الواقع هو أنه عندما كنت تقع في بناء البنية التحتية و عندما المأزق، فإنها لا تبدو الحدود.
بالنسبة لي، DevOps شعور أكثر من هذا القبيل:
بناء على مستوى الانتاج من البنية التحتية من الصعب في الواقع، مرهقة وتستغرق وقتا طويلا.
ووفقا للبيانات التجريبية التي نجمعها عند العمل مع المئات من شركات مختلفة، يمكنك تقدير تقريبا مشروعك البنية التحتية المقبل الزمن الذي يستغرقه:
الدرس 2، 1: البنية التحتية من الدرجة إنتاج المرجعية
DevOps المشاريع دائما يستغرق وقتا أطول مما كان متوقعا، لماذا يحدث هذا؟
السبب الأول هو ياك الحلاقة (على الخط والشعر الياك)، ثم ما هو ياك الحلاقة؟ انظروا الى هذا السيناريو سوف نفهم:
المدير: أنت لست في تطوير الأداء الوظيفي تسجيل دخول المستخدم؟ لماذا نحن في الطحن أبدا استخدام قاعدة البيانات؟ المهندس: آه نعم، انا ذاهب الى تطوير وظيفة تسجيل دخول المستخدم. ثم بدأت لتقييم قاعدة البيانات التي الاستخدام، ولقد وجدت مكتبة جيدة جدا، ولكن يدعم فقط بوستجرس. لذلك حاولت لبناء بوستجرس، تبدو جديرة بالاهتمام للقيام بذلك. لكن قاعدة بيانات التحول سوف تدمر مؤشر، لذلك أنا تعلم كيفية بناء مؤشر بوستجرس ...... من أجل الإضافية تسجيل للقيام بذلك، أليس كذلك؟والسبب الثاني هو أن البنية التحتية على مستوى الانتاج بناء ينطوي على الكثير من التفاصيل. الغالبية العظمى من المطورين لا يعرفون هذه التفاصيل، لذلك، عند تقدير المشروع، وكنت كثيرا ما ننسى التفاصيل الرئيسية وتستغرق وقتا طويلا.
لتجنب هذه المشكلة، في كل مرة تبدأ باستخدام بنية تحتية جديدة، والتحقق من القائمة التالية:
وليس كل البنية التحتية تحتاج إلى التحقق من قائمة كل بند، ولكن يجب تسجيل العناصر التي أدركت بوعي، والقفز المشروع وأسباب هذا القرار.
3، الدرس 2: مجموعة أدوات
اعتبارا من عام 2018، ما يلي هو الأداة الأساسية التي نستخدمها لبناء وإدارة البنية التحتية في Gruntwork في:
- Terraform: نحن نستخدم Terraform لتكوين كل من البنية التحتية، بما في ذلك الشبكات، وموازنات الحمل، وقواعد البيانات والمستخدمين والأذونات وجميع الخوادم الخاصة بنا.
- باكر: باكر الذي نستعمله لتعريف وبناء صورة الجهاز الظاهري قيد التشغيل على الخادم.
- عامل الميناء: بعض ملقمات الكتلة لدينا، عاملة استضافت طلبات الحاوية عامل الميناء أعلاه. الأداة كتلة عامل الميناء الرئيسية التي نستخدمها هي Kubernetes، ECS وFargate.
الآن، كل هذه الأدوات هي مفيدة، ولكن ليست هذه هي النقطة. وهذه النقطة هي أن هذه الأدوات وحدها ليست كافية، وتحتاج أيضا إلى تغيير سلوك الفريق.
على وجه الخصوص، إذا لم فريقك يثق هذه الأدوات أو فريق لم يكن لديك ما يكفي من الوقت لتعلم كيفية استخدام هذه الأدوات، حتى ذلك الحين أفضل الأدوات في العالم لا يمكن أن يحقق أي مساعدة لفريقك. ولذلك، فإن النقطة الأساسية هي أن البنية التحتية للاستثمار التي هي رمز: الحاجة لتكاليف الأمامي قبل، ولكن إذا كنت تستثمر بحكمة، وفوائد كبيرة على المدى الطويل.
4، الدرس 3: وحدة كبيرة ضارة
رموز مبتدئ البنية التحتية يعرف عادة كملف واحد أو مجموعة من الملفات لنشر كل بيئة الخلية (ديف، المرحلة، همز، وما إلى ذلك) من كل البنية التحتية. هذا هو فكرة سيئة.
وفيما يلي بعض من مساوئ هذا الأسلوب:
يجب عليك استخدام ومستقلة وقابلة لإعادة الاستخدام وحدة صغيرة يمكن بناؤها من مجموعة من التعليمات البرمجية. هذه ليست أفكارا جديدة مثيرة للجدل. قبل كنت قد سمعت مرات لا تحصى:
"حان الوقت لنفعل شيئا واحدا، وتفعل ذلك بشكل جيد" فلسفة --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