د DevOps - VTB تجربې په کارولو سره د کور دننه بشپړ پرمختګ رامینځته کولو څرنګوالی

د DevOps تمرینونه کار کوي. موږ پخپله پدې قانع یو کله چې موږ د خوشې کولو نصب کولو وخت 10 ځله کم کړ. د FIS پروفایل سیسټم کې، کوم چې موږ په VTB کې کاروو، نصب کول اوس د 90 په پرتله 10 دقیقې وخت نیسي. د خوشې کولو وخت له دوو اونیو څخه دوه ورځو ته راټیټ شوی. د دوامدار پلي کولو نیمګړتیاو شمیر نږدې لږترلږه راټیټ شوی. د "لاسي کار" څخه د لیرې کیدو او په پلورونکي باندې د انحصار له مینځه وړو لپاره، موږ باید د بیساکو سره کار وکړو او غیر متوقع حلونه ومومئ. د کټ لاندې د دې په اړه تفصيلي کیسه ده چې څنګه موږ بشپړ داخلي پراختیا رامینځته کړه.

د DevOps - VTB تجربې په کارولو سره د کور دننه بشپړ پرمختګ رامینځته کولو څرنګوالی
 

پرولوګ: DevOps یوه فلسفه ده

په تیر کال کې، موږ په VTB کې د DevOps کړنو داخلي پراختیا او پلي کولو تنظیم کولو لپاره ډیر کار کړی دی:

  • موږ د 12 سیسټمونو لپاره د داخلي پراختیا پروسې رامینځته کړې؛
  • موږ 15 پایپ لاینونه پیل کړل، چې څلور یې تولید ته راوړل شوي؛
  • د اتوماتیک 1445 ازموینې سناریوګانې؛
  • موږ په بریالیتوب سره د داخلي ټیمونو لخوا چمتو شوي یو شمیر ریلیزونه پلي کړل.

د کور دننه پراختیا او د DevSecOps طرزالعملونو پلي کولو تنظیم کول یو له خورا ستونزمنو څخه د FIS پروفایل سیسټم وګرځید - په غیر اړونده DBMS کې د پرچون محصول پروسیسر. په هرصورت، موږ وکولی شو پراختیا رامینځته کړو، پایپ لاین پیل کړو، په محصول کې انفرادي غیر خوشې کڅوړې نصب کړو، او د ریلیزونو راټولولو څرنګوالی زده کړل. دا کار اسانه نه و، مګر په زړه پورې او په پلي کولو کې د واضح محدودیتونو پرته: دلته سیسټم دی - تاسو اړتیا لرئ د کور دننه پراختیا رامینځته کړئ. یوازینی شرط دا دی چې د تولیدونکي چاپیریال څخه مخکې د CD کارول.

په لومړي سر کې، د تطبیق الګوریتم ساده او روښانه ښکاري:

  • موږ د ابتدايي پراختیا تخصص ته وده ورکوو او د کوډ ټیم څخه پرته له مجموعي نیمګړتیاو څخه د منلو وړ کیفیت ترلاسه کوو؛
  • موږ د امکان تر حده په موجوده پروسو کې مدغم کوو؛
  • د څرګندو مرحلو تر مینځ د کوډ لیږدولو لپاره، موږ پایپ لاین پرې کړو او د هغې یوه پای یې دوام ته واړوو.

د دې وخت په جریان کې، د اړتیا وړ اندازې پراختیایی ټیم باید مهارتونو ته وده ورکړي او د منلو وړ کچې ته د خوشې کولو لپاره د هغې د ونډې برخه زیاته کړي. او دا دی، موږ کولی شو بشپړ شوی دنده په پام کې ونیسو.

داسې بریښي چې دا د اړینې پایلې لپاره په بشپړ ډول د انرژي اغیزمنه لاره ده: دلته DevOps دي ، دلته د ټیم فعالیت میټریکونه دي ، دلته راټول شوي مهارتونه دي ... مګر په عمل کې ، موږ یو بل تایید ترلاسه کړ چې DevOps لاهم د فلسفې په اړه دی. ، او نه "د ګیټلاب پروسې سره وصل شوي ، ځواب ورکونکي ، اړیکي او نور لیست لاندې."

یو ځل بیا د عمل پلان تحلیل کولو سره، موږ پوهیږو چې موږ په خپل ځان کې یو ډول بهرنی پلورونکی جوړوو. له همدې امله، د پروسې بیا انجینرۍ په پورته بیان شوي الګوریتم کې اضافه شوې، او همدارنګه د ټولې پراختیا لارې په اوږدو کې د تخصص پراختیا ترڅو پدې پروسه کې مخکښ رول ترلاسه کړي. ترټولو اسانه لاره نه ده، مګر دا د ایډیالوژیکي پلوه سم پرمختګ لاره ده.
 

د کور پرمختګ چیرته پیل کیږي؟ 

دا د کار کولو لپاره ترټولو دوستانه سیسټم نه و. په معمارۍ کې، دا یو لوی غیر اړونده DBMS و، چې ډیری جلا اجرایوي توکي (سکرپټونه، پروسیجرونه، بیچونه، او نور) لري، کوم چې د اړتیا په توګه ویل شوي، او د تور بکس په اصولو کار کوي: دا غوښتنه او مسلې ترلاسه کوي. ځواب د یادولو وړ نورې ستونزې عبارت دي له:

  • بهرنۍ ژبه (MUMPS)؛
  • کنسول انٹرفیس؛
  • د مشهور اتومات وسیلو او چوکاټونو سره د ادغام نشتوالی؛
  • د ډیټا حجم په لسګونو ټیرابایټ کې؛
  • په هر ساعت کې د 2 ملیون څخه ډیر عملیات؛
  • اهمیت - سوداګرۍ - مهم.

په ورته وخت کې، زموږ په لوري کې د سرچینې کوډ ذخیره نه وه. هیڅکله. اسناد موجود وو، مګر ټول کلیدي پوهه او وړتیاوې د یوې بهرنۍ موسسې په لوري وې.
موږ د سیسټم پراختیا نږدې له پیل څخه پیل کړه، د هغې ځانګړتیاوې او ټیټ ویش په پام کې نیولو سره. د اکتوبر په 2018 کې پیل شوی:

  • د کوډ تولید اسناد او اساسات مطالعه کړل؛
  • موږ د پلورونکي څخه ترلاسه شوي پرمختګ لنډ کورس مطالعه کړ؛
  • د لومړني پرمختیا مهارتونو کې مهارت ترلاسه کول؛
  • موږ د نوي ټیم غړو لپاره د روزنې لارښود ترتیب کړی؛
  • موږ موافقه وکړه چې ټیم په "جګړی" حالت کې شامل کړو؛
  • د کوډ کیفیت کنټرول سره مسله حل کړه؛
  • موږ د پرمختګ لپاره دریځ تنظیم کړ.

موږ درې میاشتې د تخصص په پراختیا او په سیسټم کې ځان ډوب کړو، او د 2019 له پیل څخه، د کور دننه پراختیا د روښانه راتلونکي په لور حرکت پیل کړ، کله ناکله له ستونزو سره، مګر په ډاډه او هدف سره.

د ذخیره کولو مهاجرت او اتوماتیک ازموینه

د DevOps لومړۍ دنده ذخیره ده. موږ په چټکۍ سره د لاسرسي چمتو کولو په اړه موافقه وکړه ، مګر دا اړینه وه چې د اوسني SVN څخه د یوې ډنډ څانګې سره زموږ هدف Git ته د څو څانګو ماډل ته د لیږد او د Git فلو پراختیا سره مهاجرت وکړو. موږ 2 ټیمونه هم لرو چې د دوی خپل زیربنا لري، په بهر کې د پلورونکي ټیم برخه. زه باید د دوه ګیټ سره ژوند وکړم او همغږي ډاډمن کړم. په داسې حالت کې دا د دوو بدیو څخه کمه وه.

د ذخیره کولو مهاجرت په مکرر ډول وځنډول شو؛ دا یوازې د اپریل په میاشت کې د لومړۍ کرښې د همکارانو په مرسته بشپړ شو. د ګیټ فلو سره ، موږ پریکړه وکړه چې شیان د پیل لپاره ساده وساتو او د هاټ فکس ، پراختیا او خوشې کولو سره په کلاسیک سکیم کې میشت شو. دوی پریکړه وکړه چې ماسټر پریږدي (د پروډ په څیر). لاندې به موږ تشریح کړو چې ولې دا اختیار زموږ لپاره غوره و. یو بهرنی ذخیره چې د پلورونکي پورې اړه لري، د دوو ټیمونو لپاره عام، د کارګر په توګه کارول کیده. دا د مهال ویش سره سم د داخلي ذخیره کولو سره همغږي شوی. اوس د Git او Gitlab سره دا ممکنه وه چې پروسې اتومات کړئ.

د آټوټسټس مسله په حیرانتیا سره په اسانۍ سره حل شوه - موږ ته چمتو شوی چوکاټ چمتو شوی و. د سیسټم ځانګړتیاو په پام کې نیولو سره، د جلا عملیاتو غوښتنه کول د سوداګرۍ پروسې یوه د پوهیدو وړ برخه وه او په ورته وخت کې د واحد ازموینې په توګه کار کاوه. ټول هغه څه چې پاتې وو د ازموینې ډیټا چمتو کول او د سکریپټونو زنګ وهلو او د پایلو ارزولو مطلوب ترتیب ترتیب کول وو. لکه څنګه چې د سناریو لیست، د عملیاتي احصایو پراساس جوړ شوی، د پروسو انتقاد او د راجستر کولو موجوده میتودولوژي، ډک شوی، اتوماتیک ازموینې څرګندې شوې. اوس موږ کولی شو د پایپ لاین جوړول پیل کړو.

دا څنګه وه: د اتومات کولو دمخه ماډل

د تطبیق د پروسې موجوده ماډل یوه جلا کیسه ده. هر تعدیل په لاسي ډول د جلا زیاتیدونکي نصب کولو کڅوړې په توګه لیږدول شوی. بیا په جیرا کې لاسي ثبت کول او په چاپیریال کې لاسي نصب کول راغلل. د انفرادي کڅوړو لپاره، هرڅه روښانه ښکاري، مګر د خوشې کولو چمتو کولو سره، شیان خورا پیچلي وو.

مجلس د انفرادي تحویلونو په کچه ترسره شو، کوم چې خپلواک توکي وو. هر بدلون یو نوی تحویل دی. د نورو شیانو په مینځ کې، 60-70 تخنیکي نسخې د اصلي ریلیز جوړښت 10-15 کڅوړو کې اضافه شوي - هغه نسخې چې د خوشې کیدو څخه یو څه اضافه کول یا خارج کول او د خوشې کیدو بهر پلور کې بدلون منعکس کول ترلاسه شوي.

د تحویلۍ دننه توکي یو له بل سره تیر شوي ، په ځانګړي توګه د اجرا وړ کوډ کې ، کوم چې له نیمایي څخه لږ ځانګړی و. د لا دمخه نصب شوي کوډ او په هغه چا باندې چې نصب یې یوازې پلان شوی و ډیری انحصارونه شتون درلود. 

د کوډ د اړتیا وړ نسخه ترلاسه کولو لپاره، دا اړینه وه چې د نصب کولو امر په کلکه تعقیب شي، په کوم کې چې شیان په فزیکي توګه ډیری ځله لیکل شوي، ځینې 10-12 ځله.

د کڅوړو د یوې بستې نصبولو وروسته، زه باید په لاسي ډول د ترتیباتو پیل کولو لپاره لارښوونې تعقیب کړم. خوشې کول د پلورونکي لخوا راټول او نصب شوي. د خوشې کولو ترکیب تقریبا د پلي کیدو له شیبې دمخه روښانه شوی و ، کوم چې د "ډیکوپلینګ" کڅوړو رامینځته کولو ته اړتیا لري. د پایلې په توګه، د اکمالاتو یوه د پام وړ برخه د خوشې کولو څخه خوشې کولو ته د خپل ځان د "ډیکوپلینګز" سره لیږدول شوې.

اوس دا روښانه ده چې د دې طریقې سره - د بسته بندۍ په کچه د ریلیز پزل راټولول - یو واحد ماسټر څانګه هیڅ عملي معنی نلري. په تولید کې نصب له یو نیم څخه تر دوه ساعتونو پورې لاسي کار واخیست. دا ښه ده چې لږترلږه د نصب کونکي په کچه د اعتراض پروسس کولو ترتیب مشخص شوی و: ساحې او جوړښتونه د دوی او پروسیجرونو لپاره د معلوماتو دمخه داخل شوي. په هرصورت، دا یوازې په جلا بسته کې کار کاوه.

د دې کړنلارې منطقي پایله د اجباري نصب کولو نیمګړتیاوې د شیانو د کرغېړنې نسخو ، غیر ضروري کوډونو ، ورک شوي لارښوونو او د شیانو د متقابل تاثیراتو لپاره بې حسابه وه ، کوم چې د خوشې کیدو وروسته په تبه سره له مینځه وړل شوي. 

لومړی تازه معلومات: مجلس او تحویل ته ژمن

اتومات د دې لارې په اوږدو کې د پایپ له لارې د کوډ لیږدولو سره پیل شو:

  • له ذخیره کولو څخه بشپړ تحویلي واخلئ؛
  • دا په وقف شوي چاپیریال کې نصب کړئ؛
  • د اتوماتیک ازموینې ترسره کول؛
  • د نصب کولو پایله ارزونه؛
  • د ازموینې کمانډ اړخ ته لاندې پایپ لاین ته زنګ ووهئ.

راتلونکی پایپ لاین باید دنده په جیرا کې ثبت کړي او د ټاکل شوي ټیسټ لوپونو ته د قوماندې ویشلو ته انتظار وباسي ، کوم چې د دندې پلي کولو وخت پورې اړه لري. ټریګر - ورکړل شوي پته ته د تحویل لپاره د چمتووالي په اړه یو لیک. دا، البته، یو څرګند کرچ و، مګر ما باید له یو ځای پیل کړي. د می په 2019 کې، د کوډ لیږد زموږ په چاپیریال کې د چکونو سره پیل شو. پروسه پیل شوې، ټول هغه څه چې پاتې دي هغه په ​​ښه شکل کې راوستل دي:

  • هر تعدیل په جلا څانګه کې ترسره کیږي، کوم چې د نصب کولو کڅوړې سره مطابقت لري او د هدف ماسټر څانګې سره یوځای کیږي؛
  • د پایپ لاین لانچ ټریګر د انضمام غوښتنې له لارې په ماسټر برانچ کې د نوي ژمنې څرګندیدل دي ، کوم چې د داخلي ټیم څخه د ساتونکو لخوا تړل شوی؛
  • ذخیره په هرو پنځو دقیقو کې یو ځل همغږي کیږي.
  • د نصب کولو کڅوړه راټولول پیل شوي - د پلورونکي څخه ترلاسه شوي جمع کونکي په کارولو سره.

له دې وروسته، د کوډ چک کولو او لیږدولو لپاره، د پایپ پیلولو او زموږ په اړخ کې راټولولو لپاره لا دمخه موجود ګامونه شتون لري.

دا اختیار د جولای په میاشت کې پیل شو. د لیږد ستونزې د پلورونکي او لومړۍ کرښې ترمینځ د یو څه نا رضایتۍ لامل شوې ، مګر په راتلونکې میاشت کې موږ وکولی شو ټولې ناخوالې لرې کړو او د ټیمونو ترمینځ پروسه رامینځته کړو. موږ اوس د ژمنې او تحویل له لارې مجلس لرو.
د اګست په میاشت کې، موږ د خپل پایپ لاین په کارولو سره د تولید لپاره د جلا کڅوړې لومړی نصبولو اداره وکړه، او د سپتمبر راهیسې، پرته له استثنا، د انفرادي غیر خوشې کڅوړو ټول نصبونه زموږ د CD وسیلې له لارې ترسره شوي. برسېره پردې، موږ د پلورونکي په پرتله د کوچني ټیم سره د خوشې کولو جوړښت 40٪ کې د داخلي کارونو برخه ترلاسه کړې - دا یو مشخص بریالیتوب دی. ترټولو جدي دنده پاتې ده - د خوشې کولو راټولول او نصب کول.

وروستی حل: د نصب کولو مجموعي کڅوړې 

موږ په بشپړ ډول پوهیږو چې د پلورونکي لارښوونو سکریپټ کول دومره اتومات و؛ موږ باید پخپله پروسه له سره غور وکړو. د حل لاره څرګنده وه - د اړتیا وړ نسخو د ټولو شیانو سره د خوشې څانګې څخه مجموعي اکمالات راټولول.

موږ د مفهوم ثبوت سره پیل وکړ: موږ د تیرو پلي کولو مینځپانګو سره سم د خوشې کولو کڅوړه په لاسي ډول راټول کړه او زموږ په چاپیریال کې یې نصب کړه. هرڅه سم شول، مفهوم د اعتبار وړ وګرځید. بیا ، موږ د پیل کولو تنظیماتو سکریپټ کولو مسله حل کړه او په ژمنې کې یې شامل کړل. موږ یو نوی کڅوړه چمتو کړې او د کانټور تازه کولو برخې په توګه یې د ازموینې چاپیریال کې ازموینه کړې. انسټالشن بریالی و، سره له دې چې د پلي کولو ټیم له پراخو تبصرو سره. مګر اصلي شی دا دی چې موږ ته زموږ د مجلس سره د نومبر په ریلیز کې تولید ته د تلو اجازه راکړل شوه.

یوازې یوه میاشت پاتې کیدو سره ، لاسي غوره شوي اکمالات په روښانه ډول اشاره کوي چې وخت تیریږي. دوی پریکړه وکړه چې د خوشې څانګې څخه جوړ کړي، مګر ولې باید جلا شي؟ موږ د پروډ په څیر نلرو، او موجوده څانګې ښه ندي - ډیر غیر ضروري کوډ شتون لري. موږ په عاجله توګه اړتیا لرو چې د پروډ خوښونه پرې کړو ، او دا له دریو زرو څخه ډیر ژمنې دي. د لاس په واسطه راټولول هیڅ اختیار نه دی. موږ یو سکریپټ جوړ کړ چې د محصول نصبولو لاګ له لارې تیریږي او څانګې ته ژمنې راټولوي. دریم ځل دا په سمه توګه کار وکړ، او د "د فایل سره بشپړولو" وروسته څانګه چمتو شوه. 

موږ د نصب کولو کڅوړې لپاره خپل جوړونکی ولیکه او په یوه اونۍ کې یې پای ته ورسوو. بیا موږ باید د سیسټم اصلي فعالیت څخه انسټالر بدل کړو، ځکه چې دا خلاص سرچینه ده. د یو لړ چکونو او تعدیلاتو وروسته، پایله بریالۍ وګڼل شوه. په ورته وخت کې، د خوشې کولو جوړښت بڼه ونیوله، د سم نصب کولو لپاره چې دا اړینه وه چې د تولید سرکټ سره د ازموینې سرکټ ترتیب کړي، او د دې لپاره یو جلا سکریپټ لیکل شوی.

په طبیعي توګه، د لومړي نصب په اړه ډیری تبصرې وې، مګر په ټولیز ډول کوډ کار وکړ. او د دریم نصب کولو وروسته هرڅه ښه ښکاري. د شیانو جوړښت کنټرول او نسخه کنټرول په لارښود حالت کې په جلا توګه وڅارل شو ، کوم چې پدې مرحله کې خورا توجیه شوی و.

یوه اضافي ننګونه د نه خپریدو لوی شمیر و چې باید په پام کې ونیول شي. مګر د پروډ په څیر څانګې او ریبیس سره، دنده شفافه شوه.

لومړی ځل، ګړندی او پرته له خطا

موږ خوشې کیدو ته د خوشبینۍ چلند سره نږدې شو او په مختلف سرکټونو کې له درجن څخه ډیر بریالي نصبونه. مګر په حقیقت کې د نیټې نیټې څخه یوه ورځ دمخه ، دا معلومه شوه چې پلورونکي په منل شوي ډول د نصب لپاره خوشې کولو چمتو کولو لپاره کار بشپړ کړی نه و. که د کوم دلیل لپاره زموږ جوړونه کار ونه کړي، خوشې کول به ګډوډ شي. سربیره پردې، زموږ د هڅو له لارې، کوم چې په ځانګړې توګه ناخوښه دی. موږ د وتلو لپاره هیڅ لاره نه درلوده. له همدې امله، موږ د بدیل اختیارونو له لارې فکر وکړ، د عمل پلانونه یې چمتو کړل او نصب یې پیل کړ.

په حیرانتیا سره، ټوله خپرونه، چې له 800 څخه ډیر شیان لري، په سمه توګه پیل شوي، لومړی ځل او یوازې په 10 دقیقو کې. موږ یو ساعت تیر کړ د خطونو په کتلو کې د غلطیو په لټه کې شو، مګر هیڅ یې ونه موندل.

ټوله بله ورځ د ریلیز چیٹ کې چوپتیا وه: د پلي کولو کومه ستونزه ، کرغېړنې نسخې یا "نامناسب" کوډ شتون نلري. دا حتی یو څه ناڅاپه وه. وروسته، ځینې تبصرې راڅرګندې شوې، مګر د نورو سیسټمونو او پخوانیو تجربو په پرتله، د دوی شمیر او لومړیتوب د پام وړ کم و.

د مجموعي اغیزې څخه اضافي اغیزه د مجلس او ازموینې کیفیت کې زیاتوالی و. د بشپړ خوشې کولو ډیری نصبونو له امله، د جوړونې نیمګړتیاوې او د پلي کولو تېروتنې په وخت سره پیژندل شوي. د بشپړ خوشې کولو ترتیبونو کې ازموینې دا امکان رامینځته کړی چې د شیانو دوه اړخیز نفوذ کې نیمګړتیاوې هم وپیژني چې د زیاتیدونکي تاسیساتو په جریان کې ندي څرګند شوي. دا یقینا یو بریالیتوب و، په ځانګړې توګه د خوشې کولو لپاره زموږ 57٪ ونډه ورکړل شوه.

پایلې او پایلې

له یو کال څخه په کم وخت کې موږ وکولی شو:

  • د بهرني سیسټم په کارولو سره بشپړ داخلي پراختیا رامینځته کړئ؛
  • د عمده پلورونکي انحصار له منځه یوسي؛
  • د خورا غیر دوستانه میراث لپاره CI/CD پیل کړئ؛
  • نوي تخنیکي کچې ته د تطبیق پروسې لوړول؛
  • د پام وړ د ځای پرځای کولو وخت کم کړئ؛
  • د پام وړ د تطبیق غلطیتونو شمیر کم کړئ؛
  • په ډاډ سره خپل ځان د مخکښ پرمختیایی متخصص په توګه اعلان کړئ.

البته، ډیری هغه څه چې تشریح شوي د ښکاره کریپ په څیر ښکاري، مګر دا د سیسټم ځانګړتیاوې او د پروسې محدودیتونه دي چې پدې کې شتون لري. په اوس وخت کې، بدلونونو د IS پروفایل محصولات او خدمات اغیزمن کړي (ماسټر حسابونه، پلاستيکي کارتونه، د سپما حسابونه، ایسکرو، نغدي پورونه)، مګر په احتمالي توګه دا طریقه په هر IS کې پلي کیدی شي د کوم لپاره چې د DevOps عملونو پلي کولو دنده ټاکل شوې. مجموعي ماډل د ډیری تحویلۍ څخه د راتلونکو پلي کولو (د نه خوشې کیدو په شمول) لپاره په خوندي ډول نقل کیدی شي.

سرچینه: www.habr.com

Add a comment