تطوير الويب من سكراتش: دليل للفرق الشابة حول بناء البنية التحتية للقرص المضغوط / CI وعملية التطوير

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



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


أراد الكمال الداخلي تصحيح الأمور. أشارك نتائج بحثي عن إجابة للسؤال: "كيف ، في الواقع ، هو" صحيح "؟



لقد حققنا



  • نشر سهل وسريع في الإنتاج (من أجل التجربة ، تم عرضها كل يوم لمدة أسبوعين على التوالي) ؛
  • ضمان الحماية من الأخطاء بسبب الاختلافات في بيئة التطبيق ؛
  • يمكننا تنظيم تفاعل فعال مع العميل:

    • إظهار كل فرع مميز ؛
    • منح الضيف إمكانية الوصول لإنشاء المهام ومراقبة تقدم العمل.


ستكون هذه المقالة مفيدة إذا كنت:



  • شركة تقنية معلومات ناشئة أو تواجه العمل الجماعي لأول مرة في مشروع كبير ؛
  • تريد تحديث سير العمل القديم الخاص بك ؛
  • البحث عن أفضل الممارسات وترغب في معرفة كيف يفعل الآخرون ؛
  • غالبًا ما تصادف مقالات حول DevOps و CI / CD والسحابة وترغب في إنشاء بيئات اختبار بنقرة زر واحدة ، ولم يكن التحديث التالي عبارة عن عرض ترويجي للمبيعات.


تحت القطع ستجد



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




يتكون المقال من ثلاثة أجزاء:



  • رؤيتي لعملية تطوير نموذجية ؛
  • ;
  • -.


,



, , . -, , , (- DevOps).

, , : “, , ?”.



“” , . , . , . .



, , , . , , “best practices”. -.



, , , , -.



, .



:



  • - . , ;
  • , , ;
  • , git, Linux, Docker, GitLab, Traefik.






1. git





A successful Git branching model by Vincent Driessen



— : master, dev feature.



Feature

feature- / , dev-. , dev.



Dev

dev , master.



Master

production-. , , hotfix-, .

Master dev , .



2. . .





. feature , . “, xxx” , , . Merge Request- . wiki , .



, - — .

GitLab, , .



3.



— , . , //.



, IT- , DevOps. . . , . - (LXC), Docker, ...





, . , , . , . , - , . , , , .





, , , , , — . , .





, , . ( ) , , , , , . . , , “ ”. .



/



, - , . , , . . , .



UI/UX



, . ( Microsoft, ).





. . .





, , , , . .





. - .



: , , .., .



(QA / QC)



Quality Control (QC) . , . Quality Assurance (QA) , ( Toyota — ). , docker-, , .



(DevOps)



, . , .







workflow



  1. - (feature) , . .
  2. . . . , .
  3. , ( ), , , . — .
  4. feature- dev , , . , feature-, . , .

    : , , , . , , , merge-request.

  5. merge-request dev-, , feature-.
  6. , . — -, , .
  7. feature- dev.
  8. , dev- merge-request master 5, 6 .
  9. 7, .
  10. , ( changelog-), . .
  11. , production.
  12. . .




:



  • production-ready
  • ( )


: Traefik, GitLab Docker.





  • 3 [Production], [Staging] [Services]. , , . /. , [Production] . [Services] GitLab (, docker registry: Portainer, ELK, Harbor, etc), Services. . Docker-. GitLab , .
  • Traefik DNS- *.dev.company.ru, [Staging] TCP . SSL [Production]. Wildcard (WC) *dev.company.ru letsencrypt-dns, DNS- Traefik. Traefik , SSL http . [Production] App.
  • GitLab [Services] GitLab-runner-, , Merge Request- () dev master, - [Staging] [Production] .gitlab-ci.yml .
  • , [Staging].
  • GitLab Docker Registry, .
  • GitLab, Traefik Gitlab-runner- docker-, .


github-, . , :



https://github.com/Akkarine/demo_cicd





  • , . . , Enterprise Traefik GitLab .
  • , . , , , ..
  • , Traefik GitLab . , Traefik DNS Yandex ( ) . GitLab . , rules.
  • “ ”.




-



https://github.com/Akkarine/demo_cicd_project



-, , :



  • . downtime ( API , ), load-balancer- , — — kubernetes. “ ”
  • ( )
  • production- ( , )
  • root ( )


.gitlab-ci.yml. pipeline- :



  • base-img-rebuild

    • rebuild-base-backend

      . — , , . ( build), .
  • rebuild-dev-db

    • rebuild-dev-db

      , .
  • build

    • rebuild-proxy-img

      - nginx , latest
    • build-backend

      , ( GitLab)
  • test

    • testing

  • deploy-review

    • deploy_review

      , production, , .
  • skip_review

    , , .
  • review

    • approve-dev

      . Merge-request dev (.. — feature), . .
    • approve-staging

      . Merge-request master (.. — hotfix dev ), build latest . , latest , — .
    • reject

      . . Merge Request- , - .
    • stop_review

      , . .
  • rebuild-approved-db-img

    • rebuild-approved-db-img

      review , latest .
  • deploy-prod

    • deploy-production

      latest. , .
    • deploy-production-wo-containers

      , , .
  • clear

    staging production

    • clean-staging
    • clean-prod
  • restore-db

    • restore-db

      — .


, . — , . , .







Traefik





reverse proxy + SSL nginx





GitLab





GitLab SSL config





GitLab Registry





Gitlab-runner





Docker










All Articles