{"id":38747,"date":"2019-10-31T22:25:42","date_gmt":"2019-10-31T19:25:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\/"},"modified":"2019-10-31T22:25:42","modified_gmt":"2019-10-31T19:25:42","slug":"infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, Habr! M\u00eb par\u00eb kisha ankuar p\u00ebr jet\u00ebn n\u00eb paradigm\u00ebn e Infrastruktur\u00ebs si Kod dhe nuk ofrova asnj\u00eb zgjidhje p\u00ebr situat\u00ebn e krijuar. Sot u ktheva p\u00ebr t\u00eb treguar se cilat qasje dhe praktika mund t\u00eb ndihmojn\u00eb p\u00ebr t'u \u00e7liruar nga gremina e ngashm\u00ebrimit dhe p\u00ebr t\u00eb drejtuar situat\u00ebn n\u00eb nj\u00eb drejtim t\u00eb duhur. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/e23fbf20980e731ae1cdb4719c97eb00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nN\u00eb artikullin e m\u00ebparsh\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u00abInfrastruktura si Kod: nj\u00eb takim i par\u00eb\u00bb<\/a><\/noindex> ndaja p\u00ebrshtypjet e mia nga ky fush\u00eb, p\u00ebrpiqesha t\u00eb reflektoja mbi situat\u00ebn aktuale n\u00eb k\u00ebt\u00eb fush\u00eb dhe madje sugjeroja se praktikat standarde, t\u00eb njohura p\u00ebr t\u00eb gjith\u00eb zhvilluesit, mund t\u00eb ndihmojn\u00eb. Mund t\u00eb dukej se kishte shum\u00eb ankesa p\u00ebr jet\u00ebn, por nuk kishte propozime p\u00ebr daljen nga situata e krijuar. <\/p>\n<h2>Kush jemi, ku jemi dhe cilat jan\u00eb problemet tona<\/h2>\n<p>\nTani jemi n\u00eb Ekipin e Sre Onboarding, i cili p\u00ebrb\u00ebhet nga gjasht\u00eb programues dhe tre inxhinier\u00eb t\u00eb infrastruktur\u00ebs. T\u00eb gjith\u00eb ne p\u00ebrpiqemi t\u00eb shkruajm\u00eb Infrastruktur\u00eb si Kod (IaC). E b\u00ebjm\u00eb k\u00ebt\u00eb sepse n\u00eb parim dim\u00eb t\u00eb shkruajm\u00eb kod dhe n\u00eb histori jemi zhvillues t\u00eb nivelit 'mbi mesatar'. <\/p>\n<ul>\n<li>Kemi nj\u00eb grup p\u00ebrfitimesh: nj\u00eb sfond t\u00eb caktuar, njohuri t\u00eb praktikave, aft\u00ebsi n\u00eb programim dhe d\u00ebshir\u00eb p\u00ebr t\u00eb m\u00ebsuar di\u00e7ka t\u00eb re. <\/li>\n<li>Dhe ka nj\u00eb pjes\u00eb t\u00eb varur, e njohur gjithashtu si minus: mungesa e njohurive n\u00eb materialin e infrastruktur\u00ebs. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Grupi i teknologjive q\u00eb p\u00ebrdorim n\u00eb IaC ton\u00eb.<\/b><\/p>\n<ul>\n<li>Terraform p\u00ebr krijimin e burimeve.<\/li>\n<li>Packer p\u00ebr nd\u00ebrtimin e imazheve. K\u00ebto jan\u00eb imazhe t\u00eb Windows dhe CentOS 7.<\/li>\n<li>Jsonnet, p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb nd\u00ebrtim t\u00eb fuqish\u00ebm n\u00eb drone.io, si dhe p\u00ebr t\u00eb gjeneruar packer json dhe modulet tona t\u00eb terraform.<\/li>\n<li>Azure.<\/li>\n<li>Ansible gjat\u00eb p\u00ebrgatitjes s\u00eb imazheve.<\/li>\n<li>Python p\u00ebr sh\u00ebrbimet ndihm\u00ebse, si dhe p\u00ebr skriptet e provizionimit.<\/li>\n<li>Dhe gjith\u00e7ka kjo brenda VSCode me plugin\u00ebt e ndara midis an\u00ebtar\u00ebve t\u00eb ekipit.<\/li>\n<\/ul>\n<p>P\u00ebrfundimi nga artikulli im <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">t\u00eb kaluar<\/a><\/noindex> ishte ky: p\u00ebrpiqesha t\u00eb jepja (para s\u00eb gjithash p\u00ebr veten time) optimiz\u00ebm, doja t\u00eb thosha se do t\u00eb p\u00ebrpiqeshim p\u00ebr t\u00eb provuar qasjet dhe praktikat q\u00eb njohim p\u00ebr t\u00eb luftuar v\u00ebshtir\u00ebsit\u00eb dhe sfidat q\u00eb ekzistojn\u00eb n\u00eb k\u00ebt\u00eb fush\u00eb. <\/p>\n<p>Tani po luftojm\u00eb me k\u00ebto probleme t\u00eb IaC:<\/p>\n<ul>\n<li>P\u00ebrkryerja e mjeteve, burimeve p\u00ebr zhvillimin e kodit.<\/li>\n<li>Zhvillimi i ngadalsh\u00ebm. Infrastruktura \u00ebsht\u00eb nj\u00eb pjes\u00eb e bot\u00ebs reale, dhe ajo mund t\u00eb mos jet\u00eb e shpejt\u00eb.<\/li>\n<li>Mungesa e qasjeve dhe praktikave.<\/li>\n<li>Jemi t\u00eb rinj dhe nuk dim\u00eb shum\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Programimi ekstrem (XP) vjen p\u00ebr ndihm\u00eb.<\/h2>\n<p>\nT\u00eb gjith\u00eb zhvilluesit e njohin mir\u00eb programimin ekstrem (XP) dhe praktikat q\u00eb e mb\u00ebshtesin at\u00eb. Shumica prej nesh kemi punuar n\u00eb k\u00ebt\u00eb qasje, dhe ajo ka qen\u00eb e suksesshme. Pse t\u00eb mos e shfryt\u00ebzojm\u00eb parimet dhe praktikat e vendosura aty p\u00ebr t\u00eb p\u00ebrballuar v\u00ebshtir\u00ebsit\u00eb e infrastruktur\u00ebs? Ne vendos\u00ebm t\u00eb aplikojm\u00eb k\u00ebt\u00eb qasje dhe t\u00eb shohim se \u00e7far\u00eb rezultati do t\u00eb sjell\u00eb.<\/p>\n<p><b class=\"spoiler_title\">Kontrolli i aplikueshm\u00ebris\u00eb s\u00eb qasjes XP n\u00eb fush\u00ebn tuaj<\/b>Po paraqes p\u00ebrshkrimin e mjedisit, p\u00ebr t\u00eb cilin XP \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm, dhe si lidhet kjo me ne: <\/p>\n<p>1. K\u00ebrkesat e softuerit q\u00eb ndryshojn\u00eb dinamikisht. Na ishte e qart\u00eb cila ishte q\u00ebllimi p\u00ebrfundimtar. Por n\u00eb detaje \u00ebsht\u00eb e mundur t\u00eb ndryshohet. Ne vet\u00eb vendosim se ku duam t\u00eb orientohemi, k\u00ebshtu q\u00eb k\u00ebrkesat ndryshojn\u00eb periodikisht (kryesisht nga ne vet\u00eb). N\u00ebse merrni ekipin SRE, i cili b\u00ebn automatizimin vet\u00eb dhe gjithashtu e kufizon vet\u00eb k\u00ebrkesat dhe p\u00ebrmbajtjen e pun\u00ebs, at\u00ebher\u00eb ky pik\u00eb \u00ebsht\u00eb shum\u00eb i p\u00ebrshtatsh\u00ebm. <\/p>\n<p>2. Rreziqet e shkaktuara nga projektet me koh\u00eb t\u00eb fiksuar duke p\u00ebrdorur teknologji t\u00eb reja. Ka mund\u00ebsi q\u00eb t\u00eb hasim rreziqe kur p\u00ebrdorim gj\u00ebra q\u00eb nuk i njohim. Kjo \u00ebsht\u00eb 100% situata jon\u00eb. I gjith\u00eb projekti yn\u00eb p\u00ebrfshin p\u00ebrdorimin e teknologjive me t\u00eb cilat nuk jemi njohur plot\u00ebsisht. N\u00eb fakt, kjo \u00ebsht\u00eb nj\u00eb problem i vazhduesh\u00ebm, pasi n\u00eb fush\u00ebn e infrastruktur\u00ebs vazhdimisht shfaqen shum\u00eb teknologji t\u00eb reja. <\/p>\n<p>3,4. Ekip i vog\u00ebl, i vendosur s\u00eb bashku p\u00ebr zhvillim t\u00eb zgjeruar. Teknologjia q\u00eb po p\u00ebrdorni lejon teste automatike nj\u00ebsi dhe funksionale. K\u00ebto dy pika nuk jan\u00eb krejt\u00ebsisht t\u00eb p\u00ebrshtatshme p\u00ebr ne. S\u00eb pari, ne nuk jemi nj\u00eb ekip i vendosur s\u00eb bashku, s\u00eb dyti, jemi n\u00ebnt\u00eb persona, q\u00eb mund t\u00eb konsiderohet si nj\u00eb ekip i madh. Megjithat\u00eb, sipas disa definicionesh, nj\u00eb \" ekip i madh\" \u00ebsht\u00eb ai q\u00eb p\u00ebrfshin 14+ persona. <\/p>\n<p>Le t\u00eb shqyrtojm\u00eb disa praktika nga XP dhe si ato ndikojn\u00eb n\u00eb shpejt\u00ebsin\u00eb dhe cil\u00ebsin\u00eb e p\u00ebrgjigjeve.<\/p>\n<h4>Parimi i ciklit t\u00eb p\u00ebrgjigjes n\u00eb XP<\/h4>\n<p>\nN\u00eb kuptimin tim, p\u00ebrgjigjja \u00ebsht\u00eb nj\u00eb p\u00ebrgjigje ndaj pyetjes, a e b\u00ebj sakt\u00eb, a po shkojm\u00eb n\u00eb drejtimin e duhur? N\u00eb XP ka nj\u00eb grafik t\u00eb mrekulluesh\u00ebm p\u00ebr k\u00ebt\u00eb: cikli i p\u00ebrgjigjes me koh\u00eb. Interesant \u00ebsht\u00eb se sa m\u00eb posht\u00eb t\u00eb jemi, aq m\u00eb shpejt kemi mund\u00ebsi t\u00eb marrim informacione p\u00ebr t\u00eb p\u00ebrgjigjur pyetjeve t\u00eb nevojshme. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKjo \u00ebsht\u00eb nj\u00eb tem\u00eb mjaft interesante p\u00ebr t'u diskutuar, p\u00ebr sa i p\u00ebrket industris\u00eb s\u00eb TI-s\u00eb, ku \u00ebsht\u00eb e mundur t\u00eb fitosh nj\u00eb OS shpejt. Imagjinoni sesi \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb t\u00eb punoni n\u00eb nj\u00eb projekt p\u00ebr gjasht\u00eb muaj dhe pastaj t\u00eb kuptoni se n\u00eb fillim \u00ebsht\u00eb b\u00ebr\u00eb nj\u00eb gabim. Kjo ndodh ndonj\u00ebher\u00eb n\u00eb projektim dhe n\u00eb nd\u00ebrtimin e sistemeve t\u00eb komplikuara. <\/p>\n<p>N\u00eb rastin ton\u00eb, IaC na ndihmon me feedback-un. Menj\u00ebher\u00eb b\u00ebj nj\u00eb rregullim t\u00eb vog\u00ebl n\u00eb skem\u00ebn e m\u00ebsip\u00ebrme: plani i l\u00ebshimit nuk ndodh \u00e7do muaj, por disa her\u00eb n\u00eb dit\u00eb. N\u00eb k\u00ebt\u00eb cik\u00ebl, OS \u00ebsht\u00eb e lidhur me disa praktika q\u00eb do t'i shqyrtojm\u00eb m\u00eb n\u00eb detaje.<\/p>\n<blockquote><p>\u00cbsht\u00eb e r\u00ebnd\u00ebsishme: feedback-u mund t\u00eb b\u00ebhet zgjidhja p\u00ebr t\u00eb gjitha problemet e shpallura m\u00eb sip\u00ebr. N\u00eb bashk\u00ebpunim me praktikat XP, ai mund ta nxjerr\u00eb nga humbja e shpres\u00ebs.<\/p><\/blockquote>\n<p><\/p>\n<h2>Si t\u00eb nxjerr\u00ebsh veten nga humbja e shpres\u00ebs: tri praktika<\/h2>\n<p><\/p>\n<h4>Testet <\/h4>\n<p>\nTestet p\u00ebrmenden dy her\u00eb gjat\u00eb ciklit t\u00eb feedback-ut XP. Kjo nuk \u00ebsht\u00eb rast\u00ebsi. Ato jan\u00eb jasht\u00ebzakonisht t\u00eb r\u00ebnd\u00ebsishme p\u00ebr t\u00eb gjith\u00eb teknik\u00ebn e programimit ekstrem. <\/p>\n<p>Supozimi \u00ebsht\u00eb se ti ke Testet e Nj\u00ebsis\u00eb dhe Testet e Pranimit. Nj\u00ebra t\u00eb jep feedback p\u00ebr disa minuta, tjetra p\u00ebr disa dit\u00eb, ndaj ato shkruhen m\u00eb gjat\u00eb, por ekzekutohen m\u00eb rrall\u00eb. <\/p>\n<p>Ekziston nj\u00eb piramid\u00eb klasike testimi q\u00eb tregon se duhet t\u00eb ket\u00eb m\u00eb shum\u00eb testime t\u00eb caktuara. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi \u00ebsht\u00eb kjo skem\u00eb e aplikueshme p\u00ebr ne n\u00eb projektin IaC? N\u00eb t\u00eb v\u00ebrtet\u00eb\u2026 askund. <\/p>\n<ul>\n<li>Testet unit, pavar\u00ebsisht se sa shum\u00eb duhet t\u00eb jen\u00eb, nuk mund t\u00eb jen\u00eb shum\u00eb. Ose ato testojn\u00eb di\u00e7ka n\u00eb m\u00ebnyr\u00eb shum\u00eb indirekte. N\u00eb fakt, mund t\u00eb themi se ne nuk i shkruajm\u00eb fare. Por ja disa aplikacione p\u00ebr k\u00ebto teste q\u00eb megjithat\u00eb kemi arritur t'i b\u00ebjm\u00eb:\n<ol>\n<li>Testimi i kodit n\u00eb jsonnet. Kjo \u00ebsht\u00eb, p\u00ebr shembull, pipeline yn\u00eb i nd\u00ebrtimit n\u00eb drone, i cili \u00ebsht\u00eb mjaft i komplikuar. Kodi n\u00eb jsonnet mbulohet mir\u00eb me teste. <br \/>\n Ne p\u00ebrdorim k\u00ebt\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testing framework for Jsonnet<\/a><\/noindex>. <\/li>\n<li> Testet p\u00ebr skriptet q\u00eb ekzekutohen n\u00eb fillim t\u00eb burimit. Skriptet n\u00eb Python, dhe prandaj mund t\u00eb shkruhen teste p\u00ebr to.<\/li>\n<\/ol>\n<\/li>\n<li>Potencialisht mund t\u00eb b\u00ebhet verifikimi i konfigurimit n\u00eb teste, por ne nuk e b\u00ebjm\u00eb k\u00ebt\u00eb. Ka gjithashtu mund\u00ebsin\u00eb e konfigurimit t\u00eb verifikimit t\u00eb rregullave t\u00eb konfigurimit t\u00eb burimeve p\u00ebrmes <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Megjithat\u00eb, thjesht p\u00ebr Terraform aty ka kontrollime shum\u00eb t\u00eb bazuara, por shum\u00eb skenar\u00eb verifikimi jan\u00eb shkruar p\u00ebr AWS. Dhe ne jemi n\u00eb Azure, k\u00ebshtu q\u00eb p\u00ebrs\u00ebri nuk p\u00ebrshtatet.<\/li>\n<li>Testet e integrimit komponent: kjo varet nga m\u00ebnyra se si i klasifikoni dhe ku i vendosni. Por, n\u00eb parim, ato funksionojn\u00eb.\n<p>K\u00ebto jan\u00eb testet e integrimit. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKy \u00ebsht\u00eb nj\u00eb shembull gjat\u00eb nd\u00ebrtimit t\u00eb imazheve n\u00eb Drone CI. P\u00ebr t'u arritur atyre, duhen 30 minuta p\u00ebr t\u00eb pritur q\u00eb imazhi Packer t\u00eb nd\u00ebrtohet, pastaj edhe 15 minuta p\u00ebr t\u00eb kaluar. Por ato ekzistojn\u00eb! <\/p>\n<p><b class=\"spoiler_title\">Algoritmi i kontrollit t\u00eb imazheve<\/b> <\/p>\n<ol>\n<li>S\u00eb pari, Packer duhet t\u00eb p\u00ebrgatis\u00eb imazhin plot\u00ebsisht.<\/li>\n<li>Pran\u00eb testit, ka Terraform me gjendje lokale, me t\u00eb cilin ne e zhvillojm\u00eb k\u00ebt\u00eb imazh. <\/li>\n<li>Gjat\u00eb zhvillimit p\u00ebrdoret nj\u00eb modul i vog\u00ebl pran\u00eb, p\u00ebr ta b\u00ebr\u00eb m\u00eb t\u00eb thjesht\u00eb pun\u00ebn me imazhin. <\/li>\n<li>Kur nj\u00eb VM \u00ebsht\u00eb zhvilluar nga imazhi, mund t\u00eb filloni kontrollimet. N\u00eb p\u00ebrgjith\u00ebsi, kontrollimet kryhen n\u00eb makin\u00eb. Kontrollohet se si kan\u00eb punuar skriptet gjat\u00eb nisjes, si funksionojn\u00eb demon\u00ebt. P\u00ebr k\u00ebt\u00eb, ne hyjm\u00eb n\u00eb makin\u00ebn e sapo ngritur p\u00ebrmes SSH ose WinRM dhe kontrollojm\u00eb gjendjen e konfigurimit apo a jan\u00eb ngritur sh\u00ebrbimet.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Nj\u00eb situat\u00eb e ngjashme \u00ebsht\u00eb edhe me testet e integrimit n\u00eb modulet p\u00ebr Terraform. K\u00ebtu \u00ebsht\u00eb nj\u00eb tabel\u00eb e shkurt\u00ebr q\u00eb shpjegon ve\u00e7orit\u00eb e k\u00ebtyre testeve.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00ebrgjigjia n\u00eb pipeline \u00ebsht\u00eb rreth 40 minuta. Gjith\u00e7ka ndodh shum\u00eb ngadal\u00eb. Mund t\u00eb p\u00ebrdoret p\u00ebr regresion, por p\u00ebr zhvillim t\u00eb ri \u00ebsht\u00eb krejt\u00ebsisht e pamundur. N\u00ebse p\u00ebrgatiteni shum\u00eb, duke p\u00ebrgatitur running dhe skriptet, at\u00ebher\u00eb mund ta shkurtoni deri n\u00eb 10 minuta. Por kjo akoma nuk \u00ebsht\u00eb nj\u00eb testim unitar, i cili b\u00ebhet p\u00ebr 5 sekonda 100 her\u00eb. <\/li>\n<\/ul>\n<p>\nMungesa e testeve unitare gjat\u00eb nd\u00ebrtimit t\u00eb imazheve ose moduleve t\u00eb Terraform nxit t\u00eb menjani pun\u00ebn n\u00eb sh\u00ebrbime t\u00eb ve\u00e7anta, t\u00eb cilat mund t'i th\u00ebrras\u00ebsh thjesht p\u00ebrmes REST, ose me skripte Python.<\/p>\n<p>P\u00ebr shembull, na duhej q\u00eb kur makina virtuale t\u00eb nis\u00eb, ajo t\u00eb regjistrohet n\u00eb sh\u00ebrbimin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, dhe kur virtualja t\u00eb shkat\u00ebrrohet, t\u00eb fshihet vet\u00eb.<\/p>\n<p>Duke qen\u00eb se ScaleFT \u00ebsht\u00eb nj\u00eb sh\u00ebrbim n\u00eb vetvete, ne jemi t\u00eb detyruar t\u00eb punojm\u00eb me t\u00eb p\u00ebrmes API-s\u00eb. Atje \u00ebsht\u00eb shkruar nj\u00eb mb\u00ebshtjell\u00ebs, t\u00eb cilin mund ta th\u00ebrras\u00ebsh dhe t\u00eb thuash: \"Shko dhe fshi k\u00ebt\u00eb, at\u00eb\". Ai ruan t\u00eb gjitha konfigurimet dhe akseset e nevojshme. <\/p>\n<p>Tani mund t\u00eb shkruajm\u00eb teste normale p\u00ebr k\u00ebt\u00eb, pasi nuk ndryshon nga softi i zakonsh\u00ebm: moku nj\u00eb API, e th\u00ebrris, dhe shohim \u00e7far\u00eb ndodh. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>P\u00ebrfundimet nga testet: Testimi i nj\u00ebsive, i cili duhet t\u00eb jepet nga OS p\u00ebr minuta, nuk e b\u00ebn at\u00eb. Nd\u00ebrsa llojet m\u00eb t\u00eb larta t\u00eb testimeve n\u00eb piramid\u00eb japin efekt, ato zgjidhin vet\u00ebm disa probleme. <\/p><\/blockquote>\n<h4>Programimi n\u00eb \u00e7ift<\/h4>\n<p>\nTestet jan\u00eb, sigurisht, t\u00eb mira. Mund t\u00eb shkruhen shum\u00eb, ato mund t\u00eb jen\u00eb t\u00eb llojeve t\u00eb ndryshme. Ato do t\u00eb funksionojn\u00eb n\u00eb nivelet e tyre dhe do t\u00eb na japin feedback. Por problemi me testet e dob\u00ebta t\u00eb nj\u00ebsive, t\u00eb cilat japin sistemin m\u00eb t\u00eb shpejt\u00eb operativ, mbetet. Megjithat\u00eb, vazhdon t\u00eb d\u00ebshirohet nj\u00eb sistem operativ i shpejt\u00eb, me t\u00eb cilin \u00ebsht\u00eb leht\u00eb dhe k\u00ebndsh\u00ebm t\u00eb punosh. Pa p\u00ebrmendur cil\u00ebsin\u00eb e zgjidhjes s\u00eb marr\u00eb. Fatmir\u00ebsisht, ekzistojn\u00eb teknika q\u00eb mund t\u00eb ofrojn\u00eb feedback edhe m\u00eb t\u00eb shpejt\u00eb se testet modulare. Kjo \u00ebsht\u00eb programimi n\u00eb \u00e7ift.<\/p>\n<p>Kur shkruajm\u00eb kod, d\u00ebshirojm\u00eb t\u00eb marrim feedback p\u00ebr cil\u00ebsin\u00eb e tij sa m\u00eb shpejt t\u00eb jet\u00eb e mundur. Po, mund t\u00eb shkruajm\u00eb gjith\u00e7ka n\u00eb nj\u00eb deg\u00eb funksionimi (n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mos prishim asgj\u00eb p\u00ebr ask\u00ebnd), t\u00eb b\u00ebjm\u00eb nj\u00eb k\u00ebrkes\u00eb p\u00ebr bashkim n\u00eb GitHub, t\u00eb em\u00ebrojm\u00eb dik\u00eb, opinioni i t\u00eb cilit ka r\u00ebnd\u00ebsi, dhe t\u00eb presim p\u00ebrgjigje. <\/p>\n<p>Por ben\u00eb mund t\u00eb presim gjat\u00eb. Njer\u00ebzit jan\u00eb t\u00eb z\u00ebn\u00eb, dhe p\u00ebrgjigja, madje edhe n\u00ebse vjen, mund t\u00eb mos jet\u00eb e niveli m\u00eb i lart\u00eb. Supozoni se p\u00ebrgjigja ka ardhur menj\u00ebher\u00eb, rishikuesi ka kuptuar menj\u00ebher\u00eb t\u00eb gjith\u00eb q\u00ebllimin, por p\u00ebrgjigja akoma vjen me vones\u00eb, pas faktit. Por d\u00ebshirojm\u00eb ta kemi m\u00eb her\u00ebt. Kjo \u00ebsht\u00eb ajo q\u00eb programimi n\u00eb \u00e7ift synon - q\u00eb t\u00eb ndodh\u00eb menj\u00ebher\u00eb, n\u00eb momentin e shkruajtjes.<\/p>\n<p>M\u00eb posht\u00eb sjell stil\u00ebt e programimit n\u00eb \u00e7ift dhe aplikueshm\u00ebrin\u00eb e tyre n\u00eb pun\u00ebn me IaC: <\/p>\n<p><b>1. Klasik, Ekspert + ekspert, nd\u00ebrrimi sipas nj\u00eb timeri.<\/b> Dy role \u2013 driver dhe navigator. Dy njer\u00ebz. Ata punojn\u00eb mbi nj\u00eb kod dhe nd\u00ebrronin rolet pas nj\u00eb periudhe t\u00eb caktuar t\u00eb parap\u00ebrcaktuar. <\/p>\n<p>Le t\u00eb shqyrtojm\u00eb p\u00ebrputhshm\u00ebrin\u00eb e problemeve tona me stilin: <\/p>\n<ul>\n<li>Problemi: imperfeksionet e mjeteve, t\u00eb burimeve p\u00ebr zhvillimin e kodit. <br \/>\nNdikimi negativ: zhvillimi merr m\u00eb gjat\u00eb, ne ngadalssohemi, humbasim ritmin e pun\u00ebs.<br \/>\n Si luftojm\u00eb: p\u00ebrdorim mjete t\u00eb tjera, IDE t\u00eb p\u00ebrbashk\u00ebta dhe m\u00ebsojm\u00eb shkurtesa.<\/li>\n<li> Problemi: zbatuar ngadal\u00eb. <br \/>\nNdikimi negativ: rrit koh\u00ebn p\u00ebr t\u00eb krijuar nj\u00eb cop\u00eb funksionuese t\u00eb kodit. Ne m\u00ebrzitemi gjat\u00eb pritjes, duar t\u00eb tjera k\u00ebrkojn\u00eb t\u00eb merremi me di\u00e7ka tjet\u00ebr, derisa presim. <br \/>\nSi luftojm\u00eb: nuk kemi arritur ta p\u00ebrballojm\u00eb.<\/li>\n<li> Problemi: mungesa e qasjeve dhe praktikave. <br \/>\nNdikimi negativ: nuk ka njohuri se si t\u00eb b\u00ebsh mir\u00eb dhe si t\u00eb b\u00ebsh keq. E zgjat marrjen e feedback-ut. <br \/>\nSi luftojm\u00eb: shk\u00ebmbimi i mendimeve dhe praktikave n\u00eb pun\u00ebn n\u00eb \u00e7ift zgjidh pothuajse problemin.<\/li>\n<\/ul>\n<p>\nProblemi kryesor n\u00eb aplikimin e k\u00ebtij stili n\u00eb IaC \u00ebsht\u00eb ritmi i paq\u00ebndruesh\u00ebm i pun\u00ebs. N\u00eb zhvillimin tradicional t\u00eb softuerit ke nj\u00eb l\u00ebvizje shum\u00eb t\u00eb rregullt. Mund t\u00eb shkosh p\u00ebr pes\u00eb minuta dhe t\u00eb shkruash N. T\u00eb kalosh 10 minuta dhe t\u00eb shkruash 2N, 15 minuta - 3N. K\u00ebtu mund t\u00eb kalosh pes\u00eb minuta dhe t\u00eb shkruash N, dhe pastaj t\u00eb kalosh 30 minuta e t\u00eb shkruash nj\u00eb pjes\u00eb t\u00eb dhjet\u00eb t\u00eb N. K\u00ebtu nuk di asgj\u00eb, ke nj\u00eb bllokim. Hulumtimi merr koh\u00eb dhe t\u00eb shp\u00ebrqendron nga programimi i drejtp\u00ebrdrejt\u00eb. <\/p>\n<blockquote><p>P\u00ebrfundimi: n\u00eb form\u00ebn e past\u00ebr nuk na p\u00ebrshtatet.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Ky qasje parashikon se nj\u00eb pjes\u00ebmarr\u00ebs shkruan testin, nd\u00ebrsa tjetri b\u00ebn realizimin p\u00ebr t\u00eb.<\/b> Duke marr\u00eb parasysh q\u00eb me testet Unike \u00ebsht\u00eb e komplikuar, dhe duhet t\u00eb shkruhet nj\u00eb test integrimi q\u00eb zgjat, gjith\u00eb leht\u00ebsia e ping-pongut zhduket. <\/p>\n<p>Mund t\u00eb them se kemi provuar ndarjen e detyrave n\u00eb projektimin e skenarit t\u00eb testit dhe implementimin e kodit p\u00ebr t\u00eb. Nj\u00eb pjes\u00ebmarr\u00ebs krijoi skenarin, dhe n\u00eb k\u00ebt\u00eb pjes\u00eb t\u00eb pun\u00ebs ai ishte p\u00ebrgjegj\u00ebs, ai kishte fjal\u00ebn e fundit. Nj\u00eb tjet\u00ebr ishte p\u00ebrgjegj\u00ebs p\u00ebr implementimin. Kjo funksionoi mir\u00eb. Cil\u00ebsia e skenarit rritej me k\u00ebt\u00eb qasje. <\/p>\n<blockquote><p>P\u00ebrfundimi: fatkeq\u00ebsisht, ritmi i pun\u00ebs nuk lejon p\u00ebrdorimin e ping-pong, si nj\u00eb praktik\u00eb programimi t\u00eb \u00e7iftuar n\u00eb IaC.<\/p><\/blockquote>\n<p>\n <b>3. Stili i fort\u00eb.<\/b> <noindex><a rel=\"nofollow\" href=\"http:\/\/llewellynfalco.blogspot.com\/2014\/06\/llewellyns-strong-style-pairing.html\">Praktika komplekse.<\/a><\/noindex>Ideja \u00ebsht\u00eb q\u00eb nj\u00eb pjes\u00ebmarr\u00ebs t\u00eb b\u00ebhet nj\u00eb udh\u00ebheq\u00ebs direktiv, nd\u00ebrsa tjetri merr rolin e shoferit ekzekutiv. N\u00eb k\u00ebt\u00eb rast, e drejta p\u00ebr vendime i takon ekskluzivisht udh\u00ebheq\u00ebsit. Shoferi vet\u00ebm shkruan dhe me fjal\u00eb mund t\u00eb ndikoj\u00eb n\u00eb at\u00eb q\u00eb po ndodh. Roli nuk ndryshon p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. <\/p>\n<p>P\u00ebrshtatet mir\u00eb p\u00ebr m\u00ebsimin, por k\u00ebrkon aft\u00ebsi t\u00eb forta sociale. K\u00ebtu u p\u00ebrball\u00ebm. Teknikat ishin t\u00eb komplikuara. Dhe problemi nuk \u00ebsht\u00eb as n\u00eb infrastruktur\u00eb. <\/p>\n<blockquote><p>P\u00ebrfundimi: potencialisht mund t\u00eb p\u00ebrdoret, ne nuk po e l\u00ebm\u00eb k\u00ebt\u00eb p\u00ebrpjekje.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming dhe t\u00eb gjitha stilet e njohura, por q\u00eb nuk jan\u00eb p\u00ebrmendur k\u00ebtu.<\/b> nuk shqyrtojm\u00eb, pasi nuk i kemi provuar dhe nuk mund t\u00eb flasim p\u00ebr t\u00eb n\u00eb kontekstin e pun\u00ebs ton\u00eb.<\/p>\n<blockquote><p>P\u00ebrmbledhja e p\u00ebrgjithshme e p\u00ebrdorimit t\u00eb programimit n\u00eb \u00e7ift:<\/p>\n<ul>\n<li>Kemi nj\u00eb rit\u00ebm pune t\u00eb paekuilibruar, i cili shkakton pengesa.<\/li>\n<li>Ndeshim munges\u00eb t\u00eb aft\u00ebsive t\u00eb mira p\u00ebr t\u00eb komunikuar. Dhe fusha e temave nuk ndihmon p\u00ebr t\u00eb kap\u00ebrcyer k\u00ebto mang\u00ebsi.<\/li>\n<li>Testime t\u00eb gjata, probleme me mjetet e pun\u00ebs e b\u00ebjn\u00eb zhvillimin n\u00eb \u00e7ift t\u00eb ngadalt\u00eb.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Megjithat\u00eb, kishim edhe suksese. Krijuam metod\u00ebn ton\u00eb \"Konvergjenca - Divergjenca\".<\/b> Do ta p\u00ebrshkruaj shkurtimisht se si funksionon. <\/p>\n<p>Ne kemi partner\u00eb t\u00eb rregullt p\u00ebr disa dit\u00eb (m\u00eb pak se nj\u00eb jav\u00eb). B\u00ebjm\u00eb nj\u00eb detyr\u00eb s\u00eb bashku. P\u00ebr nj\u00eb koh\u00eb, jemi s\u00eb bashku: nj\u00ebri shkruan, tjetri ulur dhe v\u00ebzhgon, si nj\u00eb ekip mb\u00ebshtetje. Pastaj shk\u00ebputemi p\u00ebr nj\u00eb koh\u00eb, secili b\u00ebn disa gj\u00ebra t\u00eb pavarura, pastaj e rikthejm\u00eb veten, sinkronizohemi shum\u00eb shpejt, b\u00ebjm\u00eb di\u00e7ka s\u00eb bashku dhe p\u00ebrs\u00ebri shk\u00ebputemi. <\/p>\n<h4>Planifikimi dhe komunikimi<\/h4>\n<p>\nBlloku i fundit i praktikave, p\u00ebrmes t\u00eb cilave zgjidhen problemet e OS, \u00ebsht\u00eb organizimi i pun\u00ebs me detyrat vet\u00eb. Ky informacion gjithashtu p\u00ebrfshin shk\u00ebmbimin e p\u00ebrvoj\u00ebs q\u00eb \u00ebsht\u00eb jasht\u00eb pun\u00ebs n\u00eb \u00e7ift. Le t\u00eb shqyrtojm\u00eb tre praktika:<\/p>\n<p><b>1. Detyrat p\u00ebrmes pem\u00ebs s\u00eb q\u00ebllimeve.<\/b> Menaxhimi i p\u00ebrgjithsh\u00ebm i projektit e kemi organizuar p\u00ebrmes nj\u00eb strukture, e cila shkon pafund\u00ebsisht n\u00eb t\u00eb ardhmen. Teknikisht, menaxhimi b\u00ebhet n\u00eb Miro. Ka nj\u00eb detyr\u00eb - ajo \u00ebsht\u00eb nj\u00eb objektiv p\u00ebrfundimtar. Nga ajo burojn\u00eb ose objektiva m\u00eb t\u00eb vogla, ose grupe detyrash. Prej tyre dalin detyrat vet\u00eb. T\u00eb gjitha detyrat krijohen dhe menaxhohen n\u00eb k\u00ebt\u00eb table. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKjo skem\u00eb gjithashtu ofron nj\u00eb feedback q\u00eb ndodh nj\u00eb her\u00eb n\u00eb dit\u00eb, kur ne sinkronizohemi n\u00eb takime. Prania e nj\u00eb plani t\u00eb p\u00ebrbashk\u00ebt p\u00ebrpara t\u00eb gjith\u00ebve, duke qen\u00eb k\u00ebshtu e strukturuar dhe plot\u00ebsisht e hapur, i lejon secilit t\u00eb jet\u00eb n\u00eb dijeni t\u00eb asaj q\u00eb po ndodh dhe se sa larg kemi avancuar n\u00eb progres. <\/p>\n<p>Avantazhet e vizionit vizual t\u00eb detyrave:<\/p>\n<ul>\n<li>Kausaliteti. \u00c7do detyr\u00eb \u00e7on n\u00eb nj\u00eb objektiv global. Detyrat grupohen sipas objektivave m\u00eb t\u00eb vogla. Domeni i infrastruktur\u00ebs vet\u00eb \u00ebsht\u00eb mjaft teknik. Nuk \u00ebsht\u00eb gjithmon\u00eb e qart\u00eb se \u00e7far\u00eb ndikimi t\u00eb drejtp\u00ebrdrejt\u00eb n\u00eb biznes ka, p\u00ebr shembull, p\u00ebrgatitja e nj\u00eb manuali migrimi n\u00eb nj\u00eb nginx tjet\u00ebr. Prania e nj\u00eb kartice q\u00ebllimi p\u00ebrkrah e b\u00ebn at\u00eb m\u00eb t\u00eb kuptuesh\u00ebm.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Kausaliteti \u00ebsht\u00eb nj\u00eb ve\u00e7ori e r\u00ebnd\u00ebsishme e detyrave. Ai p\u00ebrgjigjet drejtp\u00ebrdrejt pyetjes: \"Po b\u00ebj at\u00eb q\u00eb duhet?\" <\/li>\n<li>Paralelizmi. Jemi n\u00ebnt\u00eb veta dhe nuk \u00ebsht\u00eb fizikisht e mundur q\u00eb t\u00eb gjith\u00eb t\u00eb angazhohemi n\u00eb nj\u00eb detyr\u00eb t\u00eb vetme. Nuk \u00ebsht\u00eb gjithmon\u00eb e mjaftueshme t\u00eb kemi detyra nga nj\u00eb fush\u00eb. Jemi t\u00eb detyruar t\u00eb ndajm\u00eb pun\u00ebn n\u00eb grupe t\u00eb vogla. Gjat\u00eb k\u00ebsaj kohe, grupet punojn\u00eb n\u00eb detyrat e tyre dhe mund t\u00eb forcohen nga ndonj\u00eb person tjet\u00ebr. Disa her\u00eb, njer\u00ebz nga k\u00ebto grupe e l\u00ebshojn\u00eb pun\u00ebn. Disa shkojn\u00eb n\u00eb pushim, disa b\u00ebjn\u00eb nj\u00eb prezantim p\u00ebr konferenc\u00ebn DevOps conf, disa shkruajn\u00eb nj\u00eb artikull p\u00ebr Habr. T\u00eb dini cilat jan\u00eb objektivat dhe detyrat q\u00eb mund t\u00eb b\u00ebhen paralelisht b\u00ebhet shum\u00eb e r\u00ebnd\u00ebsishme. <\/li>\n<\/ul>\n<p>\n<b>2. Nd\u00ebrrimi i udh\u00ebheq\u00ebsve t\u00eb takimeve t\u00eb m\u00ebngjesit.<\/b> N\u00eb stand-up na doli nj\u00eb problem \u2013 shum\u00eb njer\u00ebz punojn\u00eb n\u00eb detyra paralelisht. N sometimes detyrat jan\u00eb t\u00eb lidhura dob\u00ebt dhe nuk kemi nj\u00eb kuptim t\u00eb qart\u00eb se kush po b\u00ebn \u00e7far\u00eb. Mendimi i nj\u00eb an\u00ebtari t\u00eb ekipit \u00ebsht\u00eb shum\u00eb i r\u00ebnd\u00ebsish\u00ebm. Kjo \u00ebsht\u00eb informacion shtes\u00eb q\u00eb mund t\u00eb ndryshoj\u00eb rrjedh\u00ebn e zgjidhjes s\u00eb detyr\u00ebs. Sigurisht, zakonisht ke dik\u00eb pran\u00eb, por konsultimi dhe k\u00ebshillat gjithmon\u00eb jan\u00eb t\u00eb dobishme. <\/p>\n<p>P\u00ebrmir\u00ebsimi i k\u00ebsaj situate p\u00ebrfshin p\u00ebrdorimin e teknik\u00ebs \"Nd\u00ebrrimi i udh\u00ebheq\u00ebsit t\u00eb takimit\". Tani ata rotullohen sipas nj\u00eb liste t\u00eb caktuar, dhe kjo ka efektin e vet. Kur t\u00eb vij\u00eb radha jote, je i detyruar t\u00eb thellohesh dhe t\u00eb kuptosh se \u00e7far\u00eb po ndodh, p\u00ebr t\u00eb realizuar mir\u00eb takimin e skramit. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Demonstrimi i brendsh\u00ebm.<\/b> Ndihma n\u00eb zgjidhjen e problemeve nga programimi n\u00eb \u00e7ift, vizualizimi n\u00eb pem\u00ebn e detyrave dhe ndihma n\u00eb takimet e skramit n\u00eb m\u00ebngjes \u2013 \u00ebsht\u00eb mir\u00eb, por jo ideale. N\u00eb \u00e7ift, je i kufizuar vet\u00ebm me njohurit\u00eb tuaja. Pema e detyrave ndihmon p\u00ebr t\u00eb kuptuar globalisht se kush b\u00ebn \u00e7far\u00eb. Nd\u00ebrsa udh\u00ebheq\u00ebsi dhe koleg\u00ebt n\u00eb takimin e m\u00ebngjesit nuk do t\u00eb thellohen n\u00eb problemet e tua. Sigurisht, ata mund t\u00eb humbasin di\u00e7ka. <\/p>\n<p>Zgjidhja u gjet n\u00eb demonstrimin e punimeve t\u00eb kryera nj\u00ebri p\u00ebr tjetrin dhe diskutimin e tyre pas k\u00ebsaj. Ne mblidhemi nj\u00eb her\u00eb n\u00eb jav\u00eb p\u00ebr nj\u00eb or\u00eb dhe tregojm\u00eb detajet e zgjidhjeve p\u00ebr detyrat q\u00eb kemi b\u00ebr\u00eb gjat\u00eb jav\u00ebs s\u00eb kaluar. <\/p>\n<p>Gjat\u00eb demonstrimit duhet t\u00eb sqarosh detajet e detyr\u00ebs dhe patjet\u00ebr t\u00eb demonstrosh funksionimin e saj. <\/p>\n<p><b class=\"spoiler_title\">Raporti mund t\u00eb ndiqet sipas nj\u00eb liste kontrolli.<\/b>1. Futni n\u00eb kontekst. Nga ka ardhur detyra, p\u00ebrse ishte e nevojshme?<\/p>\n<p>2. Si si zgjidhte problemi deri m\u00eb tani? P\u00ebr shembull, k\u00ebrkohej klikim masiv ose ishte e pamundur t\u00eb b\u00ebhej di\u00e7ka krejt\u00ebsisht.<\/p>\n<p>3. Si e p\u00ebrmir\u00ebsojm\u00eb k\u00ebt\u00eb. P\u00ebr shembull: \u00abShikoni, tani ka nj\u00eb skript, ja ridhmi\u00bb.<\/p>\n<p>4. Tregoni si funksionon. Preferohet t\u00eb realizoni nj\u00eb skenar t\u00eb caktuar t\u00eb p\u00ebrdoruesit. Dua X, b\u00ebj Y, shoh Z (ose Y). P\u00ebr shembull, deploji NGINX, kontrolloj url, marr 200 OK. N\u00ebse veprimi zgjat, p\u00ebrgatitni m\u00eb par\u00eb p\u00ebr ta treguar m\u00eb pas. Preferohet q\u00eb nj\u00eb or\u00eb para demonstrimit t\u00eb mos prishet n\u00eb m\u00ebnyr\u00eb t\u00eb ve\u00e7ant\u00eb, n\u00ebse \u00ebsht\u00eb e brisht\u00eb.<\/p>\n<p>5. Shpjegoni se sa mir\u00eb \u00ebsht\u00eb zgjidhur problemi, cilat v\u00ebshtir\u00ebsi kan\u00eb mbetur, \u00e7far\u00eb nuk \u00ebsht\u00eb p\u00ebrfunduar, cilat p\u00ebrmir\u00ebsime jan\u00eb t\u00eb mundshme n\u00eb t\u00eb ardhmen. P\u00ebr shembull, tani cli, pastaj do t\u00eb ket\u00eb automatizim t\u00eb plot\u00eb n\u00eb CI.<\/p>\n<p>Preferohet q\u00eb \u00e7do fol\u00ebs t\u00eb p\u00ebrfundoj\u00eb brenda 5-10 minutash. N\u00ebse paraqitja juaj \u00ebsht\u00eb natyrsh\u00ebm e r\u00ebnd\u00ebsishme dhe do t\u00eb zgjas\u00eb m\u00eb shum\u00eb, miratoni k\u00ebt\u00eb paraprakisht n\u00eb kanal.<\/p>\n<p>Pas pjes\u00ebs n\u00eb jet\u00ebr, \u00ebsht\u00eb e nevojshme t\u00eb diskutohet n\u00eb thirrje. K\u00ebtu \u00ebsht\u00eb ku shfaqet p\u00ebrmbledhja e nevojshme p\u00ebr detyrat tona. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00eb p\u00ebrfundim, b\u00ebhet nj\u00eb anket\u00eb p\u00ebr t\u00eb identifikuar dobishm\u00ebrin\u00eb e asaj q\u00eb po ndodh. Kjo \u00ebsht\u00eb nj\u00eb p\u00ebrgjigje e ndjer\u00eb p\u00ebr thelbin e paraqitjes dhe r\u00ebnd\u00ebsin\u00eb e detyr\u00ebs.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: si t\u00eb zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>P\u00ebrfundimet e gjata dhe \u00e7far\u00eb do t\u00eb ndodh\u00eb m\u00eb pas<\/h2>\n<p>\nMund t\u00eb duket se tonin e artikullit \u00ebsht\u00eb disi pesimist. Kjo nuk \u00ebsht\u00eb e v\u00ebrtet\u00eb. Dy nivelet e poshtme t\u00eb marrjes s\u00eb feedback-ut, pik\u00ebrisht testet dhe programimi n\u00eb \u00e7ift, funksionojn\u00eb. Jo aq si\u00e7 duhet n\u00eb zhvillimin tradicional, por ka nj\u00eb efekt pozitiv nga kjo. <\/p>\n<p>Testet, n\u00eb form\u00ebn e tyre aktuale, ofrojn\u00eb vet\u00ebm mbulimin e pjessh\u00ebm t\u00eb kodit. Shum\u00eb funksione konfiguruese mbesin t\u00eb patestuar. Ndikimi i tyre n\u00eb pun\u00ebn e menj\u00ebhershme gjat\u00eb kodimit \u00ebsht\u00eb i ul\u00ebt. Megjithat\u00eb, ka nj\u00eb efekt nga testet integruese, dhe pik\u00ebrisht ato e lejojn\u00eb t\u00eb b\u00ebhen refaktorizime pa frik\u00eb. Kjo \u00ebsht\u00eb nj\u00eb arritje e madhe. Po ashtu, me transferimin e fokusit n\u00eb zhvillimin n\u00eb gjuh\u00ebt e nivelit t\u00eb lart\u00eb (ne p\u00ebrdorim python, go), problemi zhduket. Nd\u00ebrsa p\u00ebr 'ngjit\u00ebsin', ka shum\u00eb kontrollime dhe nuk \u00ebsht\u00eb e nevojshme, mjafton integrimi i p\u00ebrgjithsh\u00ebm.<\/p>\n<p>Punimi n\u00eb \u00e7ift varet m\u00eb shum\u00eb nga njer\u00ebzit e caktuar. Ka faktor\u00eb t\u00eb detyrave dhe aft\u00ebsi tona t\u00eb buta. Disa e ndjekin shum\u00eb mir\u00eb, t\u00eb tjer\u00eb m\u00eb keq. Pavaresisht k\u00ebsaj, p\u00ebrfitimi \u00ebsht\u00eb i sigurt. E qart\u00eb \u00ebsht\u00eb se, edhe n\u00eb rastin e mosrespektimit t\u00eb rregullave t\u00eb pun\u00ebs n\u00eb \u00e7ift, vet\u00eb fakti i p\u00ebrfundimit t\u00eb detyrave s\u00eb bashku ndikon pozitivisht n\u00eb cil\u00ebsin\u00eb e rezultateve. Personalist, m\u00eb \u00ebsht\u00eb m\u00eb leht\u00eb dhe m\u00eb k\u00ebndsh\u00ebm t\u00eb punoj n\u00eb \u00e7ift.<\/p>\n<p>M\u00ebnyrat m\u00eb t\u00eb avancuara p\u00ebr t\u00eb ndikuar n\u00eb OS \u2013 planifikimi dhe puna me detyrat me siguri japin efekte: shk\u00ebmbimi cil\u00ebsor i njohurive dhe p\u00ebrmir\u00ebsimi i cil\u00ebsis\u00eb s\u00eb zhvillimit. <\/p>\n<h4>P\u00ebrfundime t\u00eb shkurtra nj\u00eb rresht <\/h4>\n<p><\/p>\n<ul>\n<li>Praktikat e XP funksionojn\u00eb n\u00eb IaC, por me efikasitet m\u00eb t\u00eb ul\u00ebt.<\/li>\n<li>Forconi at\u00eb q\u00eb funksionon.<\/li>\n<li>Krijoni mekanizmat dhe praktikat tuaja kompensuese.<\/li>\n<\/ul>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/470620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:25:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:25:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Infrastruktura si Kod: si t\u00eb p\u00ebrballojm\u00eb problemet me ndihm\u00ebn e XP | ProHoster","description":"P\u00ebrsh\u00ebndetje, Habr! M\u00eb par\u00eb kam ankuar p\u00ebr jet\u00ebn n\u00eb paran\u00eb e infrastruktur\u00ebs si kod dhe nuk kam ofruar asgj\u00eb p\u00ebr t\u00eb zgjidhur situat\u00ebn e krijuar. Sot kam rikthyer p\u00ebr t\u00eb treguar se cilat qasje dhe praktika do t\u00eb ndihmojn\u00eb t\u00eb shp\u00ebtojm\u00eb nga shk\u00ebmbi i d\u00ebshp\u00ebrimit dhe t\u00eb rregullojm\u00eb situat\u00ebn n\u00eb drejtimin e duhur. N\u00eb artikullin e kaluar \"Infrastruktura si kod: njohja e par\u00eb\", kam ndar\u00eb p\u00ebrshtypjet e mia p\u00ebr k\u00ebt\u00eb fush\u00eb,","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b,","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:25:42+00:00","article:modified_time":"2019-10-31T19:25:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38747","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:16:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:04:30","updated":"2026-01-23 23:16:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}