{"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":"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, Habr! M\u00eb par\u00eb ankoja mbi jet\u00ebn n\u00eb paradigmen e Infrastruktur\u00ebs si Kod dhe nuk ofroja asnj\u00eb zgjidhje p\u00ebr situat\u00ebn e krijuar. Sot kam rikthyer p\u00ebr t'ju treguar se cilat qasje dhe praktika mund t'i b\u00ebjn\u00eb t\u00eb largoheni nga humbja e shpres\u00ebs dhe t\u00eb rregulloni situat\u00ebn drejt rrug\u00ebs s\u00eb duhur. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te 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: njohje e par\u00eb\u00bb<\/a><\/noindex> ndaja p\u00ebrshtypjet e mia p\u00ebr k\u00ebt\u00eb fush\u00eb, p\u00ebrpiqesha t\u00eb reflektoja mbi situat\u00ebn aktuale n\u00eb k\u00ebt\u00eb fush\u00eb dhe madje t\u00eb supozova se praktikat e njohura, t\u00eb njohura p\u00ebr t\u00eb gjith\u00eb zhvilluesit, mund t\u00eb ndihmojn\u00eb. Mund t\u00eb ket\u00eb dukur se kishte shum\u00eb ankesa p\u00ebr jet\u00ebn, por nuk kishte propozime p\u00ebr zgjidhjen e situat\u00ebs. <\/p>\n<h2>Kush jemi, ku jemi dhe cilat jan\u00eb problemet tona<\/h2>\n<p>\nTani jemi n\u00eb Sre Onboarding Team, q\u00eb p\u00ebrb\u00ebhet nga gjasht\u00eb programues dhe tre inxhinier\u00eb infrastrukture. 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 thelb, dim\u00eb t\u00eb shkruajm\u00eb kod dhe kemi nj\u00eb histori si zhvillues m\u00eb t\u00eb avancuar. <\/p>\n<ul>\n<li>Kemi nj\u00eb grup p\u00ebrpar\u00ebsish: nj\u00eb p\u00ebrvoj\u00eb t\u00eb caktuar, njohuri praktike, aft\u00ebsi n\u00eb kodim, d\u00ebshir\u00eb p\u00ebr t\u00eb m\u00ebsuar t\u00eb reja. <\/li>\n<li>Dhe kemi nj\u00eb pjes\u00eb q\u00eb t\u00ebrhiqet mbrapa, q\u00eb \u00ebsht\u00eb nj\u00eb minus: mungesa e njohurive p\u00ebr materien 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 t\u00eb krijuar burime.<\/li>\n<li>Packer p\u00ebr nd\u00ebrtimin e imazheve. K\u00ebto jan\u00eb imazhe Windows dhe CentOS 7.<\/li>\n<li>Jsonnet, p\u00ebr t\u00eb krijuar nj\u00eb nd\u00ebrtim t\u00eb fuqish\u00ebm n\u00eb drone.io, si dhe p\u00ebr gjenerimin e packer json dhe moduleve t\u00eb terraformit tan\u00eb.<\/li>\n<li>Azure.<\/li>\n<li>Ansible gjat\u00eb p\u00ebrgatitjes s\u00eb imazheve.<\/li>\n<li>Python p\u00ebr sh\u00ebrbime ndihm\u00ebse dhe gjithashtu p\u00ebr skriptet e provisioning.<\/li>\n<li>Dhe gjith\u00e7ka kjo n\u00eb VSCode me shtesa t\u00eb ndara midis pjes\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 m\u00ebparsh\u00ebm<\/a><\/noindex> ishte ky: kam p\u00ebrpiquar t\u00eb transmetoj (s\u00eb pari n\u00eb veten time) optimiz\u00ebm, doja t\u00eb thosha se do t\u00eb provojm\u00eb qasjet dhe praktikat q\u00eb na jan\u00eb t\u00eb njohura p\u00ebr t\u00eb luftuar me 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 veglave, mjeteve p\u00ebr zhvillimin e kodit.<\/li>\n<li>Nd\u00ebrtime t\u00eb ngadalta. Infrastruktura \u00ebsht\u00eb nj\u00eb pjes\u00eb e bot\u00ebs reale, dhe ajo mund t\u00eb jet\u00eb e ngadalt\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) nxiton p\u00ebr ndihm\u00eb<\/h2>\n<p>\nT\u00eb gjith\u00eb zhvilluesit e njohin mir\u00eb programimin ekstreme (XP) dhe praktikat q\u00eb e mb\u00ebshtesin at\u00eb. Shum\u00eb prej nesh kan\u00eb punuar sipas k\u00ebtij qasjeje, dhe ka qen\u00eb e suksesshme. Pse mos t\u00eb 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 zbatonim k\u00ebt\u00eb qasje dhe t\u00eb shohim se \u00e7far\u00eb do t\u00eb dal\u00eb prej saj.<\/p>\n<p><b class=\"spoiler_title\">Kontrolli i aplikueshm\u00ebris\u00eb s\u00eb qasjes XP n\u00eb fush\u00ebn tuaj<\/b>Ja p\u00ebrshkrimi i mjedisit p\u00ebr t\u00eb cilin XP p\u00ebrshtatet mir\u00eb dhe si lidhet kjo me ne: <\/p>\n<p>1. K\u00ebrkesat e softuerit q\u00eb ndryshojn\u00eb dinamikisht. Na ishte e qart\u00eb se cila ishte q\u00ebllimi p\u00ebrfundimtar. Por n\u00eb detaje mund t\u00eb kemi variacione. Ne vet\u00eb vendosim se ku duam t\u00eb shkojm\u00eb, prandaj k\u00ebrkesat ndryshojn\u00eb her\u00eb pas here (kryesisht nga ne vet\u00eb). N\u00ebse marrim ekipin SRE, i cili automatikisht b\u00ebn automatizimin dhe vet\u00eb kufizon k\u00ebrkesat dhe p\u00ebrmbajtjen e pun\u00ebve, ky pik\u00eb \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm. <\/p>\n<p>2. Rreziqet e shkaktuara nga projektet me koh\u00eb t\u00eb fixuar duke p\u00ebrdorur teknologji t\u00eb reja. Ne mund t\u00eb hasim rreziqe kur p\u00ebrdorim gj\u00ebra q\u00eb nuk i njohim. Dhe ky \u00ebsht\u00eb rasti yn\u00eb 100%. T\u00eb gjith\u00eb projekti yn\u00eb \u00ebsht\u00eb p\u00ebrdorimi i teknologjive me t\u00eb cilat nuk ishim plot\u00ebsisht t\u00eb njohur. P\u00ebr m\u00eb tep\u00ebr, kjo \u00ebsht\u00eb nj\u00eb problem n\u00eb vazhdim\u00ebsi, sepse n\u00eb fush\u00ebn e infrastruktur\u00ebs vazhdimisht po shfaqen teknologji t\u00eb reja. <\/p>\n<p>3,4. Ekip i vog\u00ebl, i vendosur s\u00eb bashku. Teknologjia q\u00eb po p\u00ebrdorni lejon teste automatike unitare dhe funksionale. K\u00ebta dy pik\u00eb nuk na p\u00ebrshtaten plot\u00ebsisht. S\u00eb pari, ne nuk jemi nj\u00eb ekip i vendosur, s\u00eb dyti, kemi n\u00ebnt\u00eb persona, q\u00eb mund t\u00eb konsiderohet nj\u00eb ekip i madh. Megjithat\u00eb, sipas disa definicion\u00ebve t\u00eb ekipit \"t\u00eb madh\", shum\u00eb do t\u00eb ishte 14+ persona. <\/p>\n<p>Le t\u00eb shqyrtojm\u00eb disa praktika nga XP dhe si ato ndikojn\u00eb n\u00eb shbrirjen dhe cil\u00ebsin\u00eb e feedback-ut.<\/p>\n<h4>Parimi i ciklit t\u00eb feedback-ut n\u00eb XP<\/h4>\n<p>\nN\u00eb mendimin tim, feedback-u \u00ebsht\u00eb p\u00ebrgjigja ndaj pyetjes, a po e b\u00ebj drejt, a po shkojm\u00eb drejt? N\u00eb XP ka nj\u00eb diagram hyjnor p\u00ebr k\u00ebt\u00eb: cikli i feedback-ut n\u00eb koh\u00eb. Interesant \u00ebsht\u00eb se sa m\u00eb posht\u00eb jemi, aq m\u00eb shpejt kemi mund\u00ebsi t\u00eb marrim OS, p\u00ebr t\u00eb p\u00ebrgjigjur pyetjeve t\u00eb nevojshme. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te 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, se n\u00eb industri dhe IT \u00ebsht\u00eb e mundur t\u00eb merrni shpejt OS. Imagjinoni sa e v\u00ebshtir\u00eb \u00ebsht\u00eb t\u00eb realizoni 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 jo vet\u00ebm n\u00eb projektim, por n\u00eb \u00e7do nd\u00ebrtim t\u00eb 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 \u00ebsht\u00eb nj\u00eb cik\u00ebl mujor, por ndodh disa her\u00eb n\u00eb dit\u00eb. N\u00eb k\u00ebt\u00eb cik\u00ebl, OS ka lidhje me disa praktika, t\u00eb cilat do 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 p\u00ebrmendura m\u00eb sip\u00ebr. N\u00eb bashk\u00ebpunim me praktikat XP, ai mund t\u00eb na nxjerr\u00eb nga humbja e shpres\u00ebs.<\/p><\/blockquote>\n<p><\/p>\n<h2>Si t\u00eb 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 n\u00eb ciklin e feedback-ut XP. Kjo nuk \u00ebsht\u00eb rast\u00ebsi. Ato jan\u00eb jasht\u00ebzakonisht t\u00eb r\u00ebnd\u00ebsishme p\u00ebr t\u00ebr\u00eb teknik\u00ebn e programimit ekstrem. <\/p>\n<p>Supozoheni se keni teste Unit dhe Acceptance. Disa ju japin feedback brenda disa minutash, t\u00eb tjerat brenda disa dit\u00ebsh, prandaj ato shkruhen m\u00eb gjat\u00eb, por ekzekutohen m\u00eb rrall\u00eb. <\/p>\n<p>Ekziston nj\u00eb piramid\u00eb klasike testimi, e cila tregon se disa teste duhet t\u00eb jen\u00eb m\u00eb shum\u00eb. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi aplikohet kjo skem\u00eb n\u00eb projektin ton\u00eb IaC? N\u00eb t\u00eb v\u00ebrtet\u00eb\u2026 aspak. <\/p>\n<ul>\n<li>Testet Unit, megjith\u00ebse duhet t\u00eb jen\u00eb shum\u00eb, nuk mund t\u00eb jen\u00eb tejet t\u00eb shumta. Ose ato testojn\u00eb di\u00e7ka shum\u00eb indirekt. N\u00eb t\u00eb v\u00ebrtet\u00eb, mund t\u00eb themi se ne nuk i shkruajm\u00eb fare. Megjithat\u00eb, k\u00ebtu jan\u00eb disa aplikime p\u00ebr teste t\u00eb tilla q\u00eb \u00e7do t\u00eb pakt\u00ebn mund\u00ebm t'i realizojm\u00eb:\n<ol>\n<li>Testimi i kodit n\u00eb jsonnet. Ky \u00ebsht\u00eb, p\u00ebr shembull, pipeline yn\u00eb i nd\u00ebrtimit n\u00eb drone, i cili \u00ebsht\u00eb mjaft kompleks. 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, t\u00eb cilat ekzekutohen gjat\u00eb nisjes s\u00eb burimeve. Skriptet n\u00eb Python, dhe p\u00ebr rrjedhoj\u00eb testet p\u00ebr to mund t\u00eb shkruheshin.<\/li>\n<\/ol>\n<\/li>\n<li>Potencialisht \u00ebsht\u00eb e mundur t\u00eb kontrollojm\u00eb konfigurimin n\u00eb teste, por ne nuk e b\u00ebjm\u00eb k\u00ebshtu. Ka gjithashtu mund\u00ebsin\u00eb e konfigurimit t\u00eb rregullave t\u00eb kontrollit t\u00eb burimeve p\u00ebrmes <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Megjithat\u00eb, thjesht p\u00ebr Terraform \u00ebsht\u00eb kryer nj\u00eb kontroll shum\u00eb bazik, por ka shum\u00eb skenar\u00eb testuese t\u00eb shkruar p\u00ebr AWS. Dhe ne jemi n\u00eb Azure, k\u00ebshtu q\u00eb kjo s\u00ebrish nuk i p\u00ebrshtatet.<\/li>\n<li>Testet e integrimit t\u00eb komponent\u00ebve: k\u00ebtu varet nga m\u00ebnyra se si i klasifikoni dhe ku i vendosni. Por ato n\u00eb parim funksionojn\u00eb.\n<p>K\u00ebtu jan\u00eb t\u00eb tilla integrimet e testeve. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te 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\u00eb arritur atje, duhet t\u00eb pres\u00ebsh 30 minuta p\u00ebr t\u00eb pritur q\u00eb imazhi Packer t\u00eb grumbullohet, pastaj 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>Fillimisht, Packer duhet t\u00eb p\u00ebrgatis\u00eb plot\u00ebsisht imazhin.<\/li>\n<li>P\u00ebrkrah testit ka terraform me gjendje lokale, me t\u00eb cilin e zhvillojm\u00eb k\u00ebt\u00eb imazh. <\/li>\n<li>Gjat\u00eb zhvillimit p\u00ebrdoret nj\u00eb modul i vog\u00ebl, i cili ndodhet af\u00ebr, p\u00ebr ta b\u00ebr\u00eb m\u00eb t\u00eb leht\u00eb pun\u00ebn me imazhin. <\/li>\n<li>Kur nj\u00eb VM \u00ebsht\u00eb zhvilluar nga imazhi, mund t\u00eb fillojm\u00eb verifikimet. Kryesisht, verifikimet b\u00ebhen n\u00eb makin\u00eb. K\u00ebtu kontrollohet si kan\u00eb funksionuar skritpat gjat\u00eb startit dhe si funksionojn\u00eb demon\u00ebt. P\u00ebr k\u00ebt\u00eb, p\u00ebrmes ssh ose winrm ne hyjm\u00eb n\u00eb makin\u00ebn e sapolindur dhe kontrollojm\u00eb gjendjen e konfigurimit ose n\u00ebse sh\u00ebrbimet jan\u00eb aktivizuar.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Situat\u00eb e ngjashme ka me testet integruese dhe n\u00eb modul\u00ebt p\u00ebr terraform. Ja nj\u00eb tabel\u00eb e shkurt\u00ebr q\u00eb shpjegon ve\u00e7orit\u00eb e k\u00ebtyre testeve.\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKthimi i informacionit n\u00eb pipeline \u00ebsht\u00eb rreth 40 minuta. Gjith\u00e7ka ndodh shum\u00eb ngadal\u00eb. Mund t\u00eb p\u00ebrdoret p\u00ebr regresin\u00eb, por p\u00ebr zhvillim t\u00eb ri \u00ebsht\u00eb krejt\u00ebsisht e pamundur. N\u00ebse p\u00ebrgatitemi shum\u00eb, p\u00ebrgatitim running, skritpat, at\u00ebher\u00eb mund ta zvog\u00eblojm\u00eb n\u00eb 10 minuta. Por kjo gjithsesi nuk \u00ebsht\u00eb test Unit, q\u00eb b\u00ebn 100 teste p\u00ebr 5 sekonda. <\/li>\n<\/ul>\n<p>\nMungesa e testeve Unit gjat\u00eb nd\u00ebrtimit t\u00eb imazheve ose modul\u00ebve t\u00eb terraformit na detyron t\u00eb hedhim pun\u00ebn n\u00eb sh\u00ebrbime t\u00eb ve\u00e7anta, t\u00eb cilat thjesht mund t\u00eb thirren p\u00ebrmes REST, ose n\u00eb skritpa Python.<\/p>\n<p>P\u00ebr shembull, na nevojitej t\u00eb b\u00ebnim q\u00eb, gjat\u00eb startit t\u00eb makin\u00ebs virtuale, ajo t\u00eb regjistrohej n\u00eb sh\u00ebrbimin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, dhe gjat\u00eb shkat\u00ebrrimit t\u00eb VM-s\u00eb t\u00eb hiqte veten.<\/p>\n<p>Deri sa ScaleFT \u00ebsht\u00eb nj\u00eb sh\u00ebrbim, ne detyrohemi t\u00eb punojm\u00eb me t\u00eb p\u00ebrmes API-s\u00eb. Atje ishte shkruar nj\u00eb mb\u00ebshtetje, q\u00eb mund t\u00eb thirret dhe t\u00eb thuhet: \"Hy dhe hiqe k\u00ebt\u00eb, at\u00eb\". Ajo mban t\u00eb gjitha konfigurimet dhe qasjen e nevojshme. <\/p>\n<p>Tani mund t\u00eb shkruajm\u00eb teste normale, pasi kjo nuk ka asnj\u00eb ndryshim nga softi i zakonsh\u00ebm: mock-ojm\u00eb ndonj\u00eb API, e thirremi dhe shohim \u00e7far\u00eb ndodh. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te 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 Unit, q\u00eb duhet t\u00eb jap\u00eb OS p\u00ebr nj\u00eb minut\u00eb, nuk e b\u00ebn at\u00eb. Nd\u00ebrsa llojet m\u00eb t\u00eb larta t\u00eb testimit n\u00eb piramid\u00eb japin efekt, por mbulojn\u00eb vet\u00ebm nj\u00eb pjes\u00eb t\u00eb problemeve. <\/p><\/blockquote>\n<h4>Programimi i \u00e7iftave<\/h4>\n<p>\nTestet jan\u00eb, sigurisht, t\u00eb mira. Mund t\u00eb shkruhen shum\u00eb prej tyre, mund t\u00eb jen\u00eb t\u00eb llojeve t\u00eb ndryshme. Ato do t\u00eb punojn\u00eb n\u00eb nivelet e tyre dhe do t\u00eb na japin feedback. Por problemi me testet e dob\u00ebta q\u00eb ofrojn\u00eb sistemin m\u00eb t\u00eb shpejt\u00eb vazhdon t\u00eb ekzistoj\u00eb. Megjithat\u00eb, vazhdojm\u00eb t\u00eb duam nj\u00eb sistem t\u00eb shpejt\u00eb, me t\u00eb cilin \u00ebsht\u00eb leht\u00eb dhe k\u00ebndsh\u00ebm t\u00eb punosh. Pa folur p\u00ebr cil\u00ebsin\u00eb e zgjidhjes q\u00eb marrim. Me fat, ka teknika q\u00eb lejojn\u00eb t\u00eb ofrojn\u00eb nj\u00eb feedback edhe m\u00eb t\u00eb shpejt\u00eb se testet modulare. Kjo \u00ebsht\u00eb programimi i \u00e7iftit.<\/p>\n<p>Kur shkruajm\u00eb kod, duam t\u00eb marrim feedback mbi cil\u00ebsin\u00eb e tij sa m\u00eb shpejt t\u00eb jet\u00eb e mundur. Po, mund t\u00eb shkruani gjith\u00e7ka n\u00eb nj\u00eb deg\u00eb funksionale (p\u00ebr t\u00eb mos prishur asgj\u00eb p\u00ebr ask\u00ebnd), t\u00eb krijoni nj\u00eb pull request n\u00eb GitHub, t\u00eb caktoni dik\u00eb, mendimi i t\u00eb cilit ka pesh\u00eb, dhe t\u00eb prisni p\u00ebrgjigjen. <\/p>\n<p>Por mund t\u00eb presim gjat\u00eb. Njer\u00ebzit jan\u00eb t\u00eb gjith\u00eb t\u00eb z\u00ebn\u00eb, dhe p\u00ebrgjigja, edhe n\u00ebse vjen, mund t\u00eb mos jet\u00eb e cil\u00ebsis\u00eb m\u00eb t\u00eb lart\u00eb. Supozojm\u00eb se p\u00ebrgjigja erdhi menj\u00ebher\u00eb, rishikuesi e kuptoi menj\u00ebher\u00eb gjith\u00eb q\u00ebllimin, por p\u00ebrgjigja gjithsesi vjen me vones\u00eb, pas faktit. Dhe ne duam ta marim at\u00eb m\u00eb t\u00eb shpejt\u00eb. K\u00ebtu synon programimi i \u00e7iftit \u2013 q\u00eb t\u00eb ket\u00eb feedback menj\u00ebher\u00eb, n\u00eb momentin e shkruar.<\/p>\n<p>M\u00eb posht\u00eb po sjell stilet e programimit t\u00eb \u00e7iftit dhe aplikueshm\u00ebrin\u00eb e tyre n\u00eb pun\u00ebn mbi IaC: <\/p>\n<p><b>1. Klasik, Ekspert+ekspert, nd\u00ebrrim sipas nj\u00eb kohezgjatjeje t\u00eb caktuar.<\/b> Dy role \u2013 shofer dhe navigator. Dy persona. Ata punojn\u00eb mbi nj\u00eb kod dhe nd\u00ebrrimin e roleve e b\u00ebjn\u00eb pas nj\u00eb periudhe t\u00eb caktuar kohore. <\/p>\n<p>Le t\u00eb shqyrtojm\u00eb p\u00ebrputhshm\u00ebrin\u00eb e problemeve tona me stilin: <\/p>\n<ul>\n<li>Problemi: p\u00ebrsosm\u00ebrit\u00eb e mjeteve, mjeteve p\u00ebr zhvillimin e kodit. <br \/>\nNdikimi negativ: zhvillimi zgjat m\u00eb gjat\u00eb, ne ngadal\u00ebsohemi, humbasim ritmin.<br \/>\n Si luftojm\u00eb: aplikojm\u00eb mjete t\u00eb tjera, IDE p\u00ebr t\u00eb gjith\u00eb dhe m\u00ebsojm\u00eb shkurtesat.<\/li>\n<li> Problemi: shp\u00ebrndarja e ngadalt\u00eb. <br \/>\nNdikimi negativ: rrit koh\u00ebn p\u00ebr t\u00eb krijuar nj\u00eb cop\u00eb funksionale t\u00eb kodit. B\u00ebhemi t\u00eb m\u00ebrzitur gjat\u00eb pritjes, duar t\u00ebrhiqen p\u00ebr t\u00eb b\u00ebr\u00eb di\u00e7ka tjet\u00ebr, derisa presim. <br \/>\nSi luftojm\u00eb: nuk e kemi p\u00ebrballuar.<\/li>\n<li> Problemi: mungesa e qasjeve dhe praktikave. <br \/>\nNdikimi negativ: nuk ka njohuri se si t\u00eb b\u00ebhet mir\u00eb dhe si keq. Zgjat marrjen e feedbackut. <br \/>\nSi luftojm\u00eb: shk\u00ebmbimi i mendimeve dhe praktikave n\u00eb pun\u00ebn e \u00e7iftit pothuajse zgjidh problemin.<\/li>\n<\/ul>\n<p>\nProblemi kryesor i p\u00ebrdorimit t\u00eb k\u00ebtij stili n\u00eb IaC \u00ebsht\u00eb ritmi i pap\u00ebrshtatsh\u00ebm i pun\u00ebs. N\u00eb zhvillimin tradicional t\u00eb softuerit, ke nj\u00eb l\u00ebvizje shum\u00eb uniforme. Mund t\u00eb harxhosh pes\u00eb minuta dhe t\u00eb shkruash N. T\u00eb harxhosh 10 minuta dhe t\u00eb shkruash 2N, 15 minuta \u2013 3N. K\u00ebtu, mund t\u00eb harxhosh pes\u00eb minuta dhe t\u00eb shkruash N, pastaj t\u00eb harxhosh akoma 30 minuta dhe t\u00eb shkruash nj\u00eb t\u00eb dhjet\u00ebn e N. K\u00ebtu nuk di asgj\u00eb, ndihesh i bllokuar. Zgjidhja merr koh\u00eb dhe t\u00eb shp\u00ebrqendron nga programimi vet\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 supozon q\u00eb nj\u00eb pjes\u00ebmarr\u00ebs shkruan testin, nd\u00ebrsa tjetri e b\u00ebn realizimin e tij.<\/b> Duke marr\u00eb parasysh se me testet e nj\u00ebsive gjith\u00e7ka \u00ebsht\u00eb e komplikuar, dhe \u00ebsht\u00eb e nevojshme t\u00eb shkruash nj\u00eb test integrues q\u00eb k\u00ebrkon shum\u00eb koh\u00eb, e gjith\u00eb leht\u00ebsia e ping-pong-ut largohet. <\/p>\n<p>Mund t\u00eb them se kemi provuar ndarjen e detyrave p\u00ebr projektimin e skenarit t\u00eb testit dhe realizimin e kodit p\u00ebr t\u00eb. Nj\u00eb pjes\u00ebmarr\u00ebs shpik skenarin, n\u00eb k\u00ebt\u00eb pjes\u00eb t\u00eb pun\u00ebs ai \u00ebsht\u00eb p\u00ebrgjegj\u00ebs, atij i p\u00ebrket fjala p\u00ebrfundimtare. Nd\u00ebrsa tjetri \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr realizimin. Kjo rezultoi mir\u00eb. Cil\u00ebsia e skenarit n\u00eb k\u00ebt\u00eb qasje rritet. <\/p>\n<blockquote><p>P\u00ebrfundimi: fatkeq\u00ebsisht, ritmi i pun\u00ebs nuk lejon p\u00ebrdorimin e ping-pong si praktik\u00eb t\u00eb programimit n\u00eb \u00e7ift n\u00eb IaC.<\/p><\/blockquote>\n<p>\n <b>3. Strong Style.<\/b> <noindex><a rel=\"nofollow\" href=\"http:\/\/llewellynfalco.blogspot.com\/2014\/06\/llewellyns-strong-style-pairing.html\">Praktik\u00eb e komplikuar.<\/a><\/noindex>. Ideja \u00ebsht\u00eb q\u00eb nj\u00eb pjes\u00ebmarr\u00ebs b\u00ebhet nj\u00eb navigues direktiv, nd\u00ebrsa tjetri merr rolin e shoferit ekzekutues. N\u00eb k\u00ebt\u00eb rast, e drejta p\u00ebr t\u00eb marr\u00eb vendime \u00ebsht\u00eb ekskluzivisht e naviguesit. Shoferi thjesht shtyp dhe me fjal\u00eb mund t\u00eb ndikoj\u00eb n\u00eb ngjarjet. Roli nuk ndryshon p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. <\/p>\n<p>Shkon mir\u00eb p\u00ebr m\u00ebsim, por k\u00ebrkon aft\u00ebsi t\u00eb forta sociale. K\u00ebtu u bllokuam. Teknikat ishin t\u00eb komplikuara. Dhe kjo ndodhi jo p\u00ebr shkak t\u00eb infrastruktur\u00ebs. <\/p>\n<blockquote><p>P\u00ebrfundimi: potencialisht mund t\u00eb aplikohet, ne nuk e l\u00ebm\u00eb mund\u00ebsin\u00eb.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming, dhe t\u00eb gjith\u00eb stil\u00ebt e njohur, por jo t\u00eb p\u00ebrmendur k\u00ebtu,<\/b> nuk shqyrtohen, pasi nuk i kemi provuar dhe nuk mund t\u00eb themi p\u00ebr k\u00ebt\u00eb n\u00eb kontekstin e pun\u00ebs ton\u00eb.<\/p>\n<blockquote><p>P\u00ebrmbledhje e p\u00ebrgjithshme mbi p\u00ebrdorimin e programimit n\u00eb \u00e7ift:<\/p>\n<ul>\n<li>Kemi nj\u00eb rit\u00ebm pune t\u00eb pauniformuar, q\u00eb na pengon.<\/li>\n<li>Ne kemi hasur n\u00eb aft\u00ebsi t\u00eb pamjaftueshme sociale. Dhe fusha tematike nuk ndihmon n\u00eb tejkalimin e k\u00ebtyre mang\u00ebsive tona.<\/li>\n<li>Testet e gjata, problemet 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. Ne krijuam metod\u00ebn ton\u00eb \"Konvergjenc\u00eb - Divergjenc\u00eb\".<\/b> P\u00ebrmbledhtas, do ta p\u00ebrshkruaj si funksionon. <\/p>\n<p>Kemi partner\u00eb t\u00eb p\u00ebrhersh\u00ebm p\u00ebr disa dit\u00eb (pak m\u00eb pak se nj\u00eb jav\u00eb). B\u00ebjm\u00eb nj\u00eb detyr\u00eb s\u00eb bashku. Nj\u00ebfar\u00eb kohe q\u00ebndrojm\u00eb s\u00eb bashku: nj\u00eb shkruan, tjetri q\u00ebndron dhe v\u00ebshtron si nj\u00eb ekip mb\u00ebshtet\u00ebs. Pastaj shp\u00ebrndajm\u00eb p\u00ebr nj\u00eb koh\u00eb, secili b\u00ebn di\u00e7ka t\u00eb pavarur, pastaj prap\u00eb takohemi, shpejt\u00ebkoordinim, b\u00ebjm\u00eb di\u00e7ka s\u00eb bashku dhe p\u00ebrs\u00ebri shp\u00ebrndajm\u00eb. <\/p>\n<h4>Planifikimi dhe komunikimi<\/h4>\n<p>\nBlloku i fundit i praktikave, p\u00ebrmes t\u00eb cilave zgjidhen problemet e OS \u2013 \u00ebsht\u00eb organizimi i pun\u00ebs me detyrat vet\u00eb. K\u00ebtu hyjn\u00eb edhe shk\u00ebmbimi i p\u00ebrvoj\u00ebs, i cili \u00ebsht\u00eb jasht\u00eb pun\u00ebs n\u00eb \u00e7ift. Le t\u00eb shqyrtojm\u00eb tre praktika:<\/p>\n<p><b>1. Detyrat p\u00ebrmes struktur\u00ebs s\u00eb q\u00ebllimeve.<\/b> Menaxhimi i p\u00ebrgjithsh\u00ebm i projektit e kemi organizuar p\u00ebrmes nj\u00eb strukture, q\u00eb shkon pafund\u00ebsisht n\u00eb t\u00eb ardhmen. Teknikisht, mbajtja e v\u00ebshtir\u00ebsohet n\u00eb Miro. Ka nj\u00eb detyr\u00eb \u2013 ajo \u00ebsht\u00eb nj\u00eb q\u00ebllim nd\u00ebrmjet\u00ebs. Prej saj dalin ose q\u00ebllime m\u00eb t\u00eb vogla, ose grupe detyrash. Prej tyre jan\u00eb pa dyshim detyrat. T\u00eb gjitha detyrat krijohen dhe menaxhohen n\u00eb k\u00ebt\u00eb tabel\u00eb. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKy skem\u00eb gjithashtu ofron reagim, i cili ndodh nj\u00eb her\u00eb n\u00eb dit\u00eb, kur ne koordinatohemi n\u00eb mbledhje. Prania e nj\u00eb plani t\u00eb p\u00ebrbashk\u00ebt p\u00ebr t\u00eb gjith\u00eb, i strukturuar dhe plot\u00ebsisht i hapur, lejon \u00e7do kush t\u00eb jet\u00eb n\u00eb dijeni t\u00eb asaj q\u00eb po ndodh dhe se sa p\u00ebrpara kemi avancuar n\u00eb progres. <\/p>\n<p>P\u00ebrpar\u00ebsit\u00eb e shikimit vizual t\u00eb detyrave:<\/p>\n<ul>\n<li>Kauzaliteti. \u00c7do detyr\u00eb \u00e7on n\u00eb nj\u00eb q\u00ebllim global. Detyrat grupohen sipas q\u00ebllimeve m\u00eb t\u00eb vogla. Domeni i infrastruktur\u00ebs vet\u00eb \u00ebsht\u00eb mjaft teknik. Nuk \u00ebsht\u00eb gjithmon\u00eb e qart\u00eb menj\u00ebher\u00eb se cilat ndikim konkret ka n\u00eb biznes, p\u00ebr shembull, shkruani nj\u00eb dokument rregullash p\u00ebr migrimin n\u00eb nj\u00eb nginx tjet\u00ebr. Prania e nj\u00eb kart\u00eb q\u00ebllimike pran\u00eb e b\u00ebn m\u00eb t\u00eb kuptuesh\u00ebm.<br \/>\n <img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Kauzaliteti \u2013 \u00ebsht\u00eb nj\u00eb pron\u00eb e r\u00ebnd\u00ebsishme e detyrave. Ai p\u00ebrgjigjet drejtp\u00ebrdrejt n\u00eb pyetjen: \"A po b\u00ebj at\u00eb q\u00eb duhet?\" <\/li>\n<li>Paraleliteti. Ne jemi n\u00ebnt\u00eb njer\u00ebz, dhe \u00ebsht\u00eb fizikisht e pamundur q\u00eb t\u00eb sulmojm\u00eb t\u00eb gjith\u00eb nj\u00eb detyr\u00eb. Detyrat nga nj\u00eb fush\u00eb gjithashtu nuk jan\u00eb gjithmon\u00eb t\u00eb mjaftueshme. Ne jemi t\u00eb detyruar t\u00eb ndahet pun\u00ebn n\u00eb grupe t\u00eb vogla punuese. Gjat\u00eb k\u00ebsaj, grupet kalojn\u00eb nj\u00eb koh\u00eb t\u00eb caktuar me detyr\u00ebn e tyre dhe mund t\u00eb forcohen nga dikush tjet\u00ebr. Ndonj\u00ebher\u00eb ndodhin ndryshime n\u00eb k\u00ebt\u00eb grup pune. Disa largohen n\u00eb pushim, disa p\u00ebrgatisin nj\u00eb referim p\u00ebr konferenc\u00ebn DevOps conf, disa shkruajn\u00eb nj\u00eb artikull p\u00ebr Habr. T\u00eb dish se cilat q\u00ebllime dhe detyra mund t\u00eb b\u00ebhen paralelisht b\u00ebhet shum\u00eb e r\u00ebnd\u00ebsishme. <\/li>\n<\/ul>\n<p>\n<b>2. Ndryshimi i lider\u00ebve n\u00eb takimet e m\u00ebngjesit.<\/b> N\u00eb standup, u shfaq nj\u00eb problem - shum\u00eb detyra njer\u00ebzit i b\u00ebjn\u00eb paralelisht. Ndonj\u00ebher\u00eb detyrat jan\u00eb pak t\u00eb lidhura dhe nuk ka kuptim se kush b\u00ebn \u00e7far\u00eb. Opinioni i nj\u00eb an\u00ebtari tjet\u00ebr t\u00eb ekipit \u00ebsht\u00eb shum\u00eb i r\u00ebnd\u00ebsish\u00ebm. Ky \u00ebsht\u00eb informacion shtes\u00eb, i cili mund t\u00eb ndryshoj\u00eb kursin e zgjidhjes s\u00eb detyr\u00ebs. Sigurisht, zakonisht je me dik\u00eb, por konsultimi dhe ndihmat jan\u00eb gjithmon\u00eb t\u00eb dobishme. <\/p>\n<p>P\u00ebr t\u00eb p\u00ebrmir\u00ebsuar k\u00ebt\u00eb situat\u00eb, ne aplikuam teknik\u00ebn \"Ndryshimi i liderit t\u00eb standup-it\". Tani ato rotullohen sipas nj\u00eb liste t\u00eb caktuar, dhe ky ka efektin e tij. Kur arrin radha jote, je i detyruar t\u00eb thellohesh dhe t\u00eb kuptosh \u00e7far\u00eb po ndodh, p\u00ebr t\u00eb drejtuar mir\u00eb takimin e skram. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Demo e brendshme.<\/b> Ndihma n\u00eb zgjidhjen e detyr\u00ebs nga programimi i p\u00ebrbashk\u00ebt, vizualizimi n\u00eb pem\u00ebn e detyrave dhe ndihma n\u00eb takimet e skramit n\u00eb m\u00ebngjes \u00ebsht\u00eb e mir\u00eb, por jo perfekte. N\u00eb \u00e7ift je i kufizuar vet\u00ebm nga njohurit\u00eb tuaja. Pema e detyrave ndihmon p\u00ebr t\u00eb kuptuar globalisht se kush dhe \u00e7far\u00eb po b\u00ebn. Nd\u00ebrsa udh\u00ebheq\u00ebsi dhe koleg\u00ebt n\u00eb takimin e m\u00ebngjesit nuk do t\u00eb thellohen shum\u00eb n\u00eb problemet tua. Ata sigurisht mund t\u00eb l\u00ebn\u00eb di\u00e7ka pa q\u00ebn\u00eb v\u00ebn\u00eb re. <\/p>\n<p>Zgjidhja u gjet n\u00eb demontrimin e punimeve t\u00eb b\u00ebra ndaj nj\u00ebri-tjetrit dhe diskutimit t\u00eb m\u00ebpassh\u00ebm t\u00eb tyre. 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 jav\u00ebn e kaluar. <\/p>\n<p>N\u00eb procesin e demontrimit, duhet t\u00eb zbulojm\u00eb detajet e detyr\u00ebs dhe patjet\u00ebr t\u00eb demonstrojm\u00eb funksionimin e saj. <\/p>\n<p><b class=\"spoiler_title\">Raporti mund t\u00eb udh\u00ebhiqet sipas nj\u00eb liste kontrolli.<\/b>1. Fut n\u00eb kontekst. Nga erdhi detyra, p\u00ebrse ishte e nevojshme kjo n\u00eb t\u00eb v\u00ebrtet\u00eb?<\/p>\n<p>2. Si \u00ebsht\u00eb zgjidhur detyra deri tani? P\u00ebr shembull, ishte e nevojshme t\u00eb klikosh shum\u00eb me miun, ose ishte krejt\u00ebsisht e pamundur t\u00eb b\u00ebhej di\u00e7ka.<\/p>\n<p>3. Si e p\u00ebrmir\u00ebsojm\u00eb k\u00ebt\u00eb. P\u00ebr shembull: \"Shikoni, tani ka nj\u00eb skrip, ja README.\"<\/p>\n<p>4. Trego se si funksionon. Preferohet t\u00eb realizoni nj\u00eb skenar t\u00eb p\u00ebrdoruesit. Dua X, b\u00ebj Y, shoh Z (ose Z'). P\u00ebr shembull, deploy NGINX, shikoj url, merr 200 OK. N\u00ebse veprimi zgjat, p\u00ebrgatiteni m\u00eb par\u00eb p\u00ebr ta treguar m\u00eb von\u00eb. Preferohet t\u00eb mos nd\u00ebrpritet shum\u00eb para demos, ve\u00e7an\u00ebrisht n\u00ebse \u00ebsht\u00eb delikat.<\/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, \u00e7far\u00eb p\u00ebrmir\u00ebsimesh jan\u00eb t\u00eb mundshme n\u00eb t\u00eb ardhmen. P\u00ebr shembull, tani cli, m\u00eb von\u00eb 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\u00ebrfshihet brenda 5-10 minutash. N\u00ebse fjalimi juaj \u00ebsht\u00eb me r\u00ebnd\u00ebsi t\u00eb madhe dhe do t\u00eb zgjas\u00eb m\u00eb shum\u00eb, dakordoni k\u00ebt\u00eb paraprakisht n\u00eb kanalin sre-takeover.<\/p>\n<p>Pas pjes\u00ebs me prezenc\u00eb fizike, p\u00ebrcjellja e diskutimeve n\u00eb thread \u00ebsht\u00eb e domosdoshme. K\u00ebtu do t\u00eb dal\u00eb e nevojshmja p\u00ebr ne nj\u00eb informacion t\u00eb kthyer p\u00ebr detyrat tona. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00eb p\u00ebrfundim, organizohet nj\u00eb anket\u00eb p\u00ebr t\u00eb vler\u00ebsuar p\u00ebrdorshm\u00ebrin\u00eb e zhvillimeve. Kjo \u00ebsht\u00eb tashm\u00eb nj\u00eb informacion i kthyer n\u00eb lidhje me p\u00ebrmbajtjen e fjalimit dhe r\u00ebnd\u00ebsin\u00eb e detyr\u00ebs.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastruktura si Kod: si si gali te zgjidhni problemet me XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>P\u00ebrfundime t\u00eb gjata dhe \u00e7far\u00eb do t\u00eb ndodh\u00eb m\u00eb pas<\/h2>\n<p>\nMund t\u00eb duket se q\u00ebndrimi i artikullit \u00ebsht\u00eb disi pesimist. Kjo nuk \u00ebsht\u00eb e sakt\u00eb. Dy nivelet e ul\u00ebta t\u00eb marrjes s\u00eb informacionit t\u00eb kthyer, dometh\u00ebn\u00eb testet dhe programimi n\u00eb \u00e7ift, funksionojn\u00eb. Nuk \u00ebsht\u00eb aq perfekt sa 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 mbulim t\u00eb pjessh\u00ebm t\u00eb kodit. Shum\u00eb funksione konfigurimi nuk jan\u00eb testuar. Ndikimi i tyre n\u00eb pun\u00ebn e menj\u00ebhershme gjat\u00eb shkruarjes s\u00eb kodit \u00ebsht\u00eb i ul\u00ebt. Megjithat\u00eb, ka nj\u00eb efekt nga testet integruese, dhe ato lejojn\u00eb q\u00eb t\u00eb kryhen pa frik\u00eb refaktorizime. Kjo \u00ebsht\u00eb nj\u00eb arritje e madhe. Gjithashtu, me kalimin n\u00eb zhvillimin n\u00eb gjuh\u00eb t\u00eb nivelit t\u00eb lart\u00eb (ne kemi python, go) problemi zhduket. Dhe p\u00ebr \"ndihm\u00ebn\" ka shum\u00eb prova dhe nuk \u00ebsht\u00eb e nevojshme, mjafton teste t\u00eb p\u00ebrgjithshme integruese.<\/p>\n<p>Puna n\u00eb \u00e7ift varet m\u00eb shum\u00eb nga njer\u00ebzit specifik\u00eb. Ka nj\u00eb faktor t\u00eb detyr\u00ebs dhe aft\u00ebsive tona t\u00eb buta. Me dik\u00eb funksionon shum\u00eb mir\u00eb, me dik\u00eb m\u00eb keq. Patjet\u00ebr ka dobi nga kjo. E qart\u00eb \u00ebsht\u00eb se edhe kur rregullat e pun\u00ebs n\u00eb \u00e7ift nuk respektohen, vet\u00eb fakti i realizimit t\u00eb detyrave s\u00eb bashku ndikon pozitivisht n\u00eb cil\u00ebsin\u00eb e rezultatit. P\u00ebr mua, \u00ebsht\u00eb m\u00eb e leht\u00eb dhe m\u00eb e k\u00ebndshme t\u00eb punosh n\u00eb \u00e7ift.<\/p>\n<p>Metoda m\u00eb t\u00eb nivelit t\u00eb lart\u00eb p\u00ebr t\u00eb ndikuar n\u00eb OS - planifikimi dhe puna me detyrat sigurisht q\u00eb japin efekte: shk\u00ebmbimi i njohurive dhe p\u00ebrmir\u00ebsimi i cil\u00ebsis\u00eb s\u00eb zhvillimit. <\/p>\n<h4>P\u00ebrmbledhje t\u00eb shkurtra me nj\u00eb rresht <\/h4>\n<p><\/p>\n<ul>\n<li>Praktikat 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 5.0.1.1 - 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.\" \/>\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) 5.0.1.1\" \/>\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.\" \/>\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\udd47Infrastructure as Code: si t\u00eb kap\u00ebrcejm\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 paradigen Infrastructure as Code dhe nuk kam ofruar asgj\u00eb p\u00ebr t\u00eb zgjidhur situat\u00ebn e krijuar.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}