د دوامداره ادغام لپاره په ډاکر کې د مایکرو خدماتو اتومات ازموینه

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

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

دا ټول او یو څه نور د ډاکر کانټینر کې د بشپړ مایکرو سرویس ازموینې سره حل کیدی شي. د ازموینو اعتبار تضمین کولو لپاره بې له شکه ګټه دا ده چې ورته ډاکر عکسونه چې تولید ته ځي ازمول کیږي.

د دې طریقې اتومات کول یو شمیر ستونزې وړاندې کوي، چې د حل لاره به یې لاندې تشریح شي:

  • په ورته ډاکر کوربه کې د موازي دندو شخړه؛
  • د ازموینې تکرارونو پرمهال په ډیټابیس کې د پیژندونکي شخړې؛
  • د مایکرو خدماتو چمتو کیدو ته انتظار کول؛
  • په بهرني سیسټمونو کې د لاګونو یوځای کول او تولید کول؛
  • د وتلو HTTP غوښتنو ازموینه؛
  • د ویب ساکټ ازموینه (د سیګنال آر په کارولو سره)؛
  • د OAuth تصدیق او واک ازمول.

دا مقاله پر بنسټ ولاړه ده زما وینا په SECR 2019 کې. نو د هغو کسانو لپاره چې په لوستلو کې ډیر سست دي، دلته د وینا ریکارډ دی.

د دوامداره ادغام لپاره په ډاکر کې د مایکرو خدماتو اتومات ازموینه

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

ورته سکریپټ دواړه پخپله د دوی وینډوز ډیسټاپونو کې د پراختیا کونکو لخوا او د لینکس لاندې د ګیټلاب CI سرور لخوا پرمخ وړل کیږي.

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

ازموینه باید د لاندې دلایلو لپاره په محلي سرور کې پرمخ ولاړه شي:

  • شبکه هیڅکله په بشپړه توګه د اعتبار وړ نه ده. د زرو غوښتنو څخه، یو ممکن ناکام شي؛
    په دې حالت کې، اتوماتیک ازموینه به کار ونکړي، کار به ودروي، او تاسو باید په لاګونو کې دلیل وګورئ؛
  • د ځینې دریمې ډلې خدماتو لخوا ډیری بار بار غوښتنې اجازه نلري.

سربیره پردې ، دا د سټینډ کارول ناغوښتل دي ځکه چې:

  • یو سټینډ نه یوازې د خراب کوډ په واسطه مات کیدی شي ، بلکه د ډیټا لخوا هم مات کیدی شي چې سم کوډ نشي پروسس کولی؛
  • مهمه نده چې موږ څومره سخت هڅه کوو چې د ازموینې په جریان کې د ازموینې لخوا رامینځته شوي ټول بدلونونه بیرته راستون کړو ، یو څه غلط کیدی شي (که نه نو ولې ازموینه؟).

د پروژې او پروسې تنظیم په اړه

زموږ شرکت د ایمیزون AWS کلاوډ کې په ډاکر کې د مایکرو سرویس ویب غوښتنلیک رامینځته کړی. د واحد ازموینې دمخه په پروژه کې کارول شوي ، مګر ډیری وختونه غلطۍ رامینځته شوي چې د واحد ازموینې ندي کشف شوي. دا اړینه وه چې د ډیټابیس او ایمیزون خدماتو سره یو بشپړ مایکرو خدمت و ازموئ.

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

د پروژې معمارۍ

د دوامداره ادغام لپاره په ډاکر کې د مایکرو خدماتو اتومات ازموینه

غوښتنلیک له لسو څخه ډیر خدمات لري. ځینې ​​یې په .NET کور کې لیکل شوي او ځینې یې په NodeJs کې. هر خدمت د ایمیزون لچک لرونکي کانټینر خدمت کې د ډاکر کانټینر کې پرمخ ځي. هر یو خپل د پوسټګریس ډیټابیس لري، او ځینې یې هم Redis لري. هیڅ عام ډیټابیس شتون نلري. که څو خدمتونه ورته ډیټا ته اړتیا ولري، نو دا ډاټا، کله چې دا بدلیږي، د SNS (ساده خبرتیا خدمت) او SQS (Amazon ساده قطار خدمت) له لارې هر یو ته لیږدول کیږي، او خدمتونه دا په خپلو جلا ډیټابیسونو کې خوندي کوي.

SQS او SNS

SQS تاسو ته اجازه درکوي پیغامونه په کتار کې واچوئ او د HTTPS پروتوکول په کارولو سره له کتار څخه پیغامونه ولولئ.

که څو خدمتونه یو کتار ولولي، نو هر پیغام یوازې یو ته راځي. دا ګټور دی کله چې د ورته خدمت ډیری مثالونه چلوي ترڅو د دوی ترمینځ بار توزیع کړي.

که تاسو غواړئ چې هر پیغام څو خدماتو ته وسپارل شي، هر ترلاسه کونکی باید خپل قطار ولري، او SNS ته اړتیا ده چې پیغامونه په څو کتارونو کې نقل کړي.

په SNS کې تاسو یوه موضوع جوړه کړئ او د هغې ګډون وکړئ، د بیلګې په توګه، د SQS کتار. تاسو کولی شئ موضوع ته پیغامونه واستوئ. په دې حالت کې، پیغام د دې موضوع په ګډون هر کتار ته لیږل کیږي. SNS د پیغامونو لوستلو لپاره میتود نلري. که د ډیبګ کولو یا ازموینې پرمهال تاسو اړتیا لرئ ومومئ چې SNS ته څه لیږل شوي ، تاسو کولی شئ د SQS کتار جوړ کړئ ، مطلوب موضوع ته یې ګډون وکړئ او کتار ولولئ.

د دوامداره ادغام لپاره په ډاکر کې د مایکرو خدماتو اتومات ازموینه

د API ګیټ وی

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

د ریښتیني وخت خبرتیاوې

غوښتنلیک کاروي سیګنال آرکارونکي ته د ریښتیني وخت خبرتیاو ښودلو لپاره. دا د خبرتیا خدمت کې پلي کیږي. دا په مستقیم ډول له انټرنیټ څخه د لاسرسي وړ دی او پخپله د OAuth سره کار کوي، ځکه چې دا د OAuth او د خبرتیا خدمت ادغام کولو په پرتله په ګیټ وے کې د ویب ساکټونو لپاره ملاتړ رامینځته کول غیر عملي ثابت شوي.

د ښه پیژندل شوي ازموینې طریقه

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

В د مایکروسافټ څخه مقاله دا وړاندیز شوی چې په حافظه کې ډیټابیس وکاروئ او جعلي توکي پلي کړئ.

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

موک توکي هغه ټولګي ماډل کوي چې دوی یې ځای په ځای کوي یوازې تر هغه حده چې د ازموینې پراختیا کونکی پوهیږي چې دا څنګه کار کوي.

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

راځئ چې حل ته لاړ شو

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

د ازموینې چاپیریال تنظیم کول

لومړی دنده د ازموینې چاپیریال ځای په ځای کول دي. د مایکروسافټ چلولو لپاره اړین ګامونه:

  • د ځایی چاپیریال لپاره د ازموینې لاندې خدمت تنظیم کړئ ، د چاپیریال متغیرونو کې ډیټابیس او AWS سره وصل کولو لپاره توضیحات مشخص کړئ؛
  • پوسټګریس پیل کړئ او د Liquibase په چلولو سره مهاجرت ترسره کړئ.
    په اړونده DBMSs کې، په ډیټابیس کې د معلوماتو لیکلو دمخه، تاسو اړتیا لرئ چې د ډیټا سکیما جوړ کړئ، په بل عبارت، میزونه. کله چې د غوښتنلیک تازه کول، میزونه باید د نوې نسخې لخوا کارول شوي فارم ته راوړل شي، او په غوره توګه، پرته له دې چې ډاټا له لاسه ورکړي. دې ته مهاجرت ویل کیږي. په ابتدايي خالي ډیټابیس کې د میزونو جوړول د مهاجرت یوه ځانګړې قضیه ده. مهاجرت پخپله غوښتنلیک کې رامینځته کیدی شي. دواړه .NET او NodeJS د مهاجرت چوکاټونه لري. زموږ په قضیه کې، د امنیتي دلایلو لپاره، مایکرو خدمتونه د ډیټا سکیما بدلولو حق څخه بې برخې شوي، او مهاجرت د Liquibase په کارولو سره ترسره کیږي.
  • د ایمیزون لوکل سټیک لانچ کړئ. دا په کور کې د چلولو لپاره د AWS خدماتو پلي کول دي. په ډاکر هب کې د LocalStack لپاره چمتو شوی عکس شتون لري.
  • په LocalStack کې د اړینو ادارو جوړولو لپاره سکریپټ چل کړئ. شیل سکریپټونه د AWS CLI کاروي.

په پروژه کې د ازموینې لپاره کارول کیږي پوسټ مین. دا دمخه شتون درلود ، مګر دا په لاسي ډول پیل شوی و او یو غوښتنلیک یې ازمویلی چې دمخه په سټینډ کې ځای په ځای شوی و. دا وسیله تاسو ته اجازه درکوي په خپل سري HTTP(S) غوښتنې وکړئ او وګورئ چې ایا ځوابونه د توقعاتو سره سمون لري. پوښتنې په ټولګه کې یوځای شوي، او ټوله ټولګه چلولی شي.

د دوامداره ادغام لپاره په ډاکر کې د مایکرو خدماتو اتومات ازموینه

اتومات ازموینه څنګه کار کوي؟

د ازموینې په جریان کې ، هرڅه په ډاکر کې کار کوي: د ازموینې لاندې خدمت ، پوسټګریس ، د مهاجرت وسیله ، او پوسټ مین ، یا د دې کنسول نسخه - نیومین.

ډاکر یو شمیر ستونزې حل کوي:

  • د کوربه ترتیب څخه خپلواکي؛
  • د انحصارونو نصب کول: ډاکر د ډاکر هب څخه عکسونه ډاونلوډ کوي؛
  • د سیسټم بیرته خپل اصلي حالت ته: په ساده ډول د کانټینرونو لرې کول.

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

ازموینه د شیل سکریپټ لخوا کنټرول کیږي. په وینډوز کې د ازموینې چلولو لپاره موږ git-bash کاروو. په دې توګه، یو سکریپټ د وینډوز او لینکس دواړو لپاره کافي دی. Git او Docker په پروژه کې د ټولو پراختیا کونکو لخوا نصب شوي. کله چې په وینډوز کې Git نصب کړئ، git-bash نصب شوی، نو هرڅوک دا هم لري.

سکریپټ لاندې مرحلې ترسره کوي:

  • د ډاکر عکسونو جوړول
    docker-compose build
  • د ډیټابیس او LocalStack پیل کول
    docker-compose up -d <контейнер>
  • د ډیټابیس مهاجرت او د LocalStack چمتو کول
    docker-compose run <контейнер>
  • د ازموینې لاندې خدمت پیل کول
    docker-compose up -d <сервис>
  • ټیسټ چلول (نیومن)
  • ټول کانتینرونه ودرول
    docker-compose down
  • په سلیک کې د پایلو پوسټ کول
    موږ یو چیټ لرو چیرې چې پیغامونه د شنه چک مارک یا سور کراس سره او د ننوتلو لینک سره ځي.

لاندې ډاکر عکسونه پدې مرحلو کې دخیل دي:

  • هغه خدمت چې ازمول کیږي د تولید لپاره ورته عکس دی. د ازموینې لپاره ترتیب د چاپیریال متغیرونو له لارې دی.
  • د Postgres، Redis او LocalStack لپاره، د Docker Hub څخه چمتو شوي انځورونه کارول کیږي. د Liquibase او Newman لپاره چمتو شوي انځورونه هم شتون لري. موږ خپل د دوی په کنکال کې جوړوو، هلته زموږ فایلونه اضافه کوو.
  • د LocalStack چمتو کولو لپاره، تاسو د چمتو شوي AWS CLI انځور کاروئ او یو انځور جوړ کړئ چې د هغې پر بنسټ سکریپټ لري.

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

هغه ستونزې چې تاسو ورسره مخامخ شئ

د چمتووالي په تمه

کله چې یو کانټینر د خدماتو سره روان وي، دا پدې معنی ندي چې دا د اړیکو منلو ته چمتو دی. تاسو باید د پیوستون دوام ته انتظار وکړئ.

دا ستونزه کله ناکله د سکریپټ په کارولو سره حل کیږي انتظار-for-it.sh، کوم چې د TCP پیوستون رامینځته کولو فرصت ته انتظار باسي. په هرصورت، LocalStack ممکن د 502 خراب ګیټ وے تېروتنه وغورځوي. سربیره پردې، دا ډیری خدمتونه لري، او که یو یې چمتو وي، دا د نورو په اړه څه نه وايي.

پریکړه: د LocalStack چمتو کولو سکریپټونه چې د SQS او SNS دواړو څخه 200 ځواب ته انتظار کوي.

موازي کاري شخړې

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

پریکړه: سکریپټ COMPOSE_PROJECT_NAME متغیر یو ځانګړي ارزښت ته ټاکي.

د وینډوز ځانګړتیاوې

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

  1. په کانټینر کې د شیل سکریپټونه باید د لینکس لاین پایونه ولري.
    د شیل CR سمبول د ترکیب تېروتنه ده. دا ستونزمنه ده چې د خطا پیغام څخه ووایاست چې دا قضیه ده. کله چې په وینډوز کې دا ډول سکریپټونه ایډیټ کړئ، تاسو یو مناسب متن ایډیټر ته اړتیا لرئ. برسېره پردې، د نسخې کنټرول سیسټم باید په سمه توګه تنظیم شي.

دا څنګه git تنظیم شوی دی:

git config core.autocrlf input

  1. Git-bash د معیاري لینکس فولډرونو تقلید کوي او کله چې د exe فایل زنګ وهي (د docker.exe په شمول)، مطلق لینکس لارې د وینډوز لارو سره بدلوي. په هرصورت، دا د هغو لارو لپاره معنی نلري چې په محلي ماشین کې ندي (یا په کانټینر کې لارې). دا چلند غیر فعال کیدی نشي.

پریکړه: د لارې په پیل کې اضافي سلیش اضافه کړئ: //bin د /bin پرځای. لینکس دا ډول لارې پیژني؛ د دې لپاره، څو سلیشونه یو شان دي. مګر git-bash دا ډول لارې نه پیژني او د دوی د بدلولو هڅه نه کوي.

د ننوتلو محصول

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

اصلي حل دا و ډاکر - جوړ کړئ بیرغ نشته -d، مګر د شیل وړتیاو په کارولو سره ، دا پروسه شالید ته واستوئ:

docker-compose up <service> &

دې کار وکړ تر هغه چې دا اړینه وه چې له ډاکر څخه د دریمې ډلې خدمت ته لاګونه واستول شي. ډاکر - جوړ کړئ کنسول ته د لاګونو تولید بند کړ. په هرصورت، ټیم کار وکړ ډوکر ضمیمه.

پریکړه:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<сервис>_1 &

د ازموینې تکرار په جریان کې د پیژندونکي شخړه

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

د دې څخه د مخنیوي لپاره، یا IDs باید ځانګړي وي، یا د ازموینې لخوا رامینځته شوي ټول شیان باید حذف شي. ځینې ​​شیان د اړتیاو له امله حذف کیدی نشي.

پریکړه: د پوسټ مین سکریپټونو په کارولو سره GUIDs رامینځته کړئ.

var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);

بیا په پوښتنه کې سمبول وکاروئ {{myUUID}}، کوم چې به د متغیر ارزښت سره بدل شي.

د LocalStack له لارې همکاري

که چیرې ازمول شوی خدمت د SQS کتار ته لوستل یا لیکي ، نو د دې تصدیق کولو لپاره ، ازموینه باید پخپله هم د دې کتار سره کار وکړي.

پریکړه: د پوسټ مین څخه لوکل سټیک ته غوښتنې.

د AWS خدماتو API مستند شوی، د SDK پرته پوښتنو ته اجازه ورکوي.

که یو خدمت په کتار کې لیکي، نو موږ یې لوستلو او د پیغام منځپانګې یې ګورو.

که چیرې خدمت SNS ته پیغامونه واستوي، د چمتووالي په مرحله کې LocalStack هم یو قطار جوړوي او د دې SNS موضوع کې ګډون کوي. بیا دا ټول هغه څه ته راځي چې پورته تشریح شوي.

که خدمت د قطار څخه یو پیغام لوستلو ته اړتیا ولري، نو په تیرو ازموینې مرحله کې موږ دا پیغام په قطار کې لیکو.

د ټیسټ لاندې د مایکرو سرویس څخه د HTTP غوښتنې معاینه کول

ځینې ​​​​خدمتونه د HTTP څخه د AWS پرته بل څه سره کار کوي، او د AWS ځینې ځانګړتیاوې په LocalStack کې ندي پلي شوي.

پریکړه: په دې قضیو کې دا مرسته کولی شي MockServer، کوم چې په کې چمتو شوی عکس لري ډاکر هب. تمه شوي غوښتنې او دوی ته ځوابونه د HTTP غوښتنې لخوا ترتیب شوي. API مستند شوی، نو موږ د پوسټ مین څخه غوښتنې کوو.

د OAuth تصدیق او واک ازمول

موږ OAuth کاروو او د JSON ویب ټوکن (JWT). ازموینه د OAuth چمتو کونکي ته اړتیا لري چې موږ کولی شو په ځایی توګه پرمخ یوسو.

د خدمت او OAuth چمتو کونکي تر مینځ ټول تعامل دوه غوښتنو ته راځي: لومړی ، ترتیب غوښتنه کیږي /.well-known/openid-configuration، او بیا د عامه کیلي (JWKS) له ترتیب څخه په پته کې غوښتنه کیږي. دا ټول جامد مواد دي.

پریکړه: زموږ د ازموینې OAuth چمتو کوونکی د جامد مینځپانګې سرور او په دې کې دوه فایلونه دي. نښه یوځل رامینځته کیږي او Git ته ژمن دی.

د سیګنال آر ازموینې ځانګړتیاوې

پوسټ مین د ویب ساکټونو سره کار نه کوي. د سیګنال آر ازموینې لپاره یو ځانګړی وسیله رامینځته شوې.

د سیګنال آر پیرودونکي یوازې د براوزر څخه ډیر کیدی شي. د دې لپاره د .NET کور لاندې د مراجعینو کتابتون شتون لري. پیرودونکي، چې په .NET کور کې لیکل شوي، اړیکه رامینځته کوي، تصدیق شوی، او د پیغامونو ځانګړي ترتیب ته انتظار کوي. که یو غیر متوقع پیغام ترلاسه شي یا اړیکه له لاسه ورکړي، پیرودونکي د 1 کوډ سره وځي. که وروستی متوقع پیغام ترلاسه شي، پیرودونکي د 0 کوډ سره وځي.

نیومن د پیرودونکي سره په ورته وخت کې کار کوي. ډیری پیرودونکي په لاره اچول شوي ترڅو وګوري چې پیغامونه هرچا ته سپارل شوي چې ورته اړتیا لري.

د دوامداره ادغام لپاره په ډاکر کې د مایکرو خدماتو اتومات ازموینه

د ډیری پیرودونکو چلولو لپاره اختیار وکاروئ -- پیمانه د ډاکر - کمپوز کمانډ لاین کې.

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

پریکړه: په کانتینر کې پیرودونکي میکانیزم کاروي د روغتیا معاینهد کوربه په اړه سکریپټ د هغې د وضعیت په اړه خبر کړئ. پیرودونکی په یوه مشخصه لاره کې فایل رامینځته کوي ، ووایه / روغتیا چیک ، هرڅومره ژر چې اړیکه جوړه شي. د ډاکر فایل کې د روغتیا چیک سکریپټ داسې ښکاري:

HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi

ټیم ډاکر معاینه کوي د کانټینر لپاره نورمال حالت ، روغتیا حالت او د وتلو کوډ ښیې.

د نیومن بشپړیدو وروسته ، سکریپټ ګوري چې د پیرودونکي سره ټول کانټینرونه د کوډ 0 سره پای ته رسیدلي.

هېپینز شتون لري

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

دا ازموینې د 30+ پراختیا کونکو ټیم په غوښتنلیک کې د تیروتنو څخه ساتي د 10+ مایکرو خدماتو پیچلي تعامل سره د مکرر ګمارلو سره.

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

Add a comment