{"id":34140,"date":"2019-10-31T21:56:35","date_gmt":"2019-10-31T18:56:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1\/"},"modified":"2019-10-31T21:56:35","modified_gmt":"2019-10-31T18:56:35","slug":"printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1","title":{"rendered":"Parimet e zhvillimit t\u00eb aplikacioneve moderne nga NGINX. Pjesa 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, miq. N\u00eb prag t\u00eb nisjes s\u00eb kursit <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/h4Ez\/\">\u00abZhvilluesi Backend n\u00eb PHP\u00bb<\/a><\/noindex>, tradicionalisht ndaje me ju p\u00ebrkthimin e materialit t\u00eb dobish\u00ebm.<\/p>\n<p>Softueri zgjidh gjithnj\u00eb e m\u00eb shum\u00eb detyra t\u00eb p\u00ebrditshme, duke u b\u00ebr\u00eb gjithnj\u00eb e m\u00eb i komplikuar. Si\u00e7 tha nj\u00eb her\u00eb Mark Andreessen, ai po p\u00ebrthith bot\u00ebn. <\/p>\n<p><img decoding=\"async\" alt=\"Parimet e zhvillimit t\u00eb aplikacioneve moderne nga NGINX. Pjesa 1\" src=\"\/wp-content\/uploads\/928924e3036beaac518dd4a2674a8a30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi rezultat, gjat\u00eb disa viteve t\u00eb fundit, qasjet ndaj zhvillimit dhe shp\u00ebrndarjes s\u00eb aplikacioneve jan\u00eb ndryshuar ndjesh\u00ebm. K\u00ebto ishin l\u00ebvizje t\u00eb m\u00ebdha, t\u00eb cilat \u00e7uan n\u00eb shfaqjen e nj\u00eb grupi parimesh. K\u00ebto parime kan\u00eb rezultuar t\u00eb dobishme n\u00eb formimin e ekipit, dizajnimin, zhvillimin dhe shp\u00ebrndarjen e aplikacionit tuaj p\u00ebr p\u00ebrdoruesit p\u00ebrfundimtar\u00eb. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Parimet mund t\u00eb p\u00ebrmblidheshin si m\u00eb posht\u00eb: <i>aplikacioni duhet t\u00eb jet\u00eb i vog\u00ebl, rrjetor dhe t\u00eb ket\u00eb nj\u00eb arkitektur\u00eb t\u00eb orientuar ndaj zhvilluesit<\/i>. Duke u mb\u00ebshtetur n\u00eb k\u00ebto tre parime, mund t\u00eb krijoni nj\u00eb aplikacion t\u00eb besuesh\u00ebm, komplekse, q\u00eb mund t\u00eb shp\u00ebrndahet shpejt dhe sigurt p\u00ebr p\u00ebrdoruesin p\u00ebrfundimtar, si dhe t\u00eb shkall\u00ebzohet dhe zgjerohet leht\u00ebsisht.<\/p>\n<p><img decoding=\"async\" alt=\"Parimet e zhvillimit t\u00eb aplikacioneve moderne nga NGINX. Pjesa 1\" src=\"\/wp-content\/uploads\/9116869a53fb6cf89d92f1d507d7904f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c7do nj\u00eb nga parimet e propozuara ka nj\u00eb s\u00ebr\u00eb aspektesh, t\u00eb cilat ne do t'i diskutojm\u00eb p\u00ebr t\u00eb treguar se si \u00e7do parim kontribuon n\u00eb arritjen e q\u00ebllimit p\u00ebrfundimtar, q\u00eb \u00ebsht\u00eb shp\u00ebrndarja e shpejt\u00eb e aplikacioneve t\u00eb besueshme q\u00eb jan\u00eb t\u00eb lehta p\u00ebr t'u mbajtur dhe p\u00ebrdorur. Ne do t\u00eb shqyrtojm\u00eb parimet n\u00eb krahasim me kund\u00ebrshtit\u00eb e tyre, p\u00ebr t\u00eb sqaruar se \u00e7far\u00eb do t\u00eb thot\u00eb, p\u00ebr shembull, \u00abSigurohuni q\u00eb t\u00eb p\u00ebrdorni <i>parimin e vog\u00eblsis\u00eb<\/i>\u00bb.<\/p>\n<p>Shpresojm\u00eb se ky artikull do t'ju nxis\u00eb t\u00eb p\u00ebrdorni parimet e propozuara p\u00ebr nd\u00ebrtimin e aplikacioneve moderne, t\u00eb cilat do t\u00eb sigurojn\u00eb nj\u00eb qasje t\u00eb nj\u00ebtrajtshme n\u00eb dizajn n\u00eb kontekstin e nj\u00eb grumbulli teknologjish q\u00eb vazhdon t\u00eb rritet. <\/p>\n<p>Duke aplikuar k\u00ebto parime, do t\u00eb zbuloni se po shfryt\u00ebzoni tendencat m\u00eb t\u00eb fundit n\u00eb zhvillimin e softuerit, p\u00ebrfshir\u00eb qasjen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/tag\/devops\/\">DevOps<\/a><\/noindex> n\u00eb zhvillimin dhe shp\u00ebrndarjen e aplikacioneve, p\u00ebrdorimin e konteiner\u00ebve (p.sh., <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/tag\/docker\/\">Docker<\/a><\/noindex>) dhe framework-eve p\u00ebr orkestrimin e konteiner\u00ebve (p.sh., <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/tag\/kubernetes\/\">Kubernetes<\/a><\/noindex>), p\u00ebrdorimin e mikrosh\u00ebrbimeve (duke p\u00ebrfshir\u00eb Arkitektur\u00ebn e Mikrosh\u00ebrbimeve <noindex>NGINX<\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/what-is-a-service-mesh\/\">arkitektur\u00ebn e komunikimit n\u00eb rrjet<\/a><\/noindex> p\u00ebr aplikacionet mikrosh\u00ebrbimore.<\/p>\n<p><b>\u00c7far\u00eb \u00ebsht\u00eb nj\u00eb aplikacion modern?<\/b><\/p>\n<p>Aplikacionet moderne? Grumbulli modern? \u00c7far\u00eb sakt\u00ebsisht do t\u00eb thot\u00eb \u00abmodern\u00bb? <\/p>\n<p>Shumica e zhvilluesve kan\u00eb vet\u00ebm nj\u00eb kuptim t\u00eb p\u00ebrgjithsh\u00ebm t\u00eb asaj q\u00eb p\u00ebrb\u00ebn nj\u00eb aplikacion modern, prandaj \u00ebsht\u00eb e nevojshme t\u00eb jepet nj\u00eb p\u00ebrcaktim i qart\u00eb i k\u00ebtij koncepti.<\/p>\n<p>Nj\u00eb aplikacion modern mb\u00ebshtet disa klient\u00eb, qofshin ato nj\u00eb nd\u00ebrfaqe p\u00ebrdoruesi n\u00eb bibliotek\u00ebn JavaScript React, nj\u00eb aplikacion celular p\u00ebr Android ose iOS, ose nj\u00eb aplikacion q\u00eb lidhet me nj\u00eb tjet\u00ebr p\u00ebrmes API. Nj\u00eb aplikacion modern n\u00ebnkupton pranin\u00eb e nj\u00eb numri t\u00eb pap\u00ebrcaktuar klient\u00ebsh, p\u00ebr t\u00eb cil\u00ebt ofron t\u00eb dh\u00ebna ose sh\u00ebrbime.<\/p>\n<p>Nj\u00eb aplikacion modern ofron nj\u00eb API p\u00ebr qasje n\u00eb t\u00eb dh\u00ebnat dhe sh\u00ebrbimet e k\u00ebrkuara. API duhet t\u00eb jet\u00eb e pandryshueshme dhe e q\u00ebndrushme, dhe jo e shkruar specifikisht p\u00ebr nj\u00eb k\u00ebrkes\u00eb t\u00eb caktuar nga ndonj\u00eb klient t\u00eb ve\u00e7ant\u00eb. API \u00ebsht\u00eb e aksesueshme p\u00ebrmes HTTP(S) dhe siguron qasje n\u00eb t\u00eb gjith\u00eb funksionalitetin q\u00eb ka GUI ose CLI. <\/p>\n<p>T\u00eb dh\u00ebnat duhet t\u00eb jen\u00eb t\u00eb aksesueshme n\u00eb nj\u00eb format t\u00eb pranuar, t\u00eb p\u00ebrputhsh\u00ebm, si\u00e7 \u00ebsht\u00eb JSON. API ofron objekte dhe sh\u00ebrbime n\u00eb nj\u00eb form\u00eb t\u00eb kuptueshme dhe t\u00eb organizuar, p\u00ebr shembull, API-t\u00eb RESTful ose GraphQL ofrojn\u00eb nj\u00eb nd\u00ebrfaqe t\u00eb p\u00ebrshtatshme.<\/p>\n<p>Aplikacionet moderne nd\u00ebrtohen mbi nj\u00eb stak modern, dhe nj\u00eb stak modern \u00ebsht\u00eb ai stak q\u00eb mb\u00ebshtet k\u00ebto aplikacione p\u00ebrkat\u00ebse. Ky stak lejon zhvilluesin t\u00eb krijoj\u00eb me leht\u00ebsi nj\u00eb aplikacion me nj\u00eb nd\u00ebrfaqe HTTP dhe pika t\u00eb qarta API. Qasja e zgjedhur do t'i lejoj\u00eb aplikacionit tuaj t\u00eb pranoj\u00eb dhe d\u00ebrgoj\u00eb t\u00eb dh\u00ebna n\u00eb formatin JSON. N\u00eb tjera fjal\u00eb, staku modern p\u00ebrmbush element\u00ebt e aplikacionit Nj\u00ebmb\u00ebdhjet\u00eb-Faktor. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/microservices-reference-architecture-nginx-twelve-factor-app\/\">mikrosh\u00ebrbimeve<\/a><\/noindex>. <\/p>\n<p>Versionet popullore t\u00eb k\u00ebtij lloji staku bazohen n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-photoresizer\">Java<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-user-manager\">Python<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-photouploader\">Nyja<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-album-manager\">Ruby<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-pages\">PHP<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-content-service\">Go<\/a><\/noindex>. Arkitektura Mikroservizore <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-ingenious\">NGINX<\/a><\/noindex> p\u00ebrfaq\u00ebson nj\u00eb shembull t\u00eb stakut modern, t\u00eb implementuar n\u00eb \u00e7do nj\u00eb nga gjuh\u00ebt e p\u00ebrmendura.<\/p>\n<p>Vini re se ne nuk promovojm\u00eb ekskluzivisht qasjen mikroservizore. Shum\u00eb nga ju punoni me monolite q\u00eb duhet t\u00eb evoluojn\u00eb, nd\u00ebrsa t\u00eb tjer\u00eb kan\u00eb t\u00eb b\u00ebjn\u00eb me aplikacionet SOA q\u00eb zgjaten dhe zhvillohen n\u00eb aplikacione mikroservizore. T\u00eb tjer\u00eb po e ndjekin drejtimin e aplikacioneve pa server (serverless), dhe disa implementojn\u00eb kombinime t\u00eb asaj q\u00eb u p\u00ebrmend m\u00eb par\u00eb. Parimet e paraqitura n\u00eb k\u00ebt\u00eb artikull jan\u00eb t\u00eb aplikueshme p\u00ebr \u00e7do nj\u00eb nga k\u00ebto sisteme me disa ndryshime t\u00eb vogla. <\/p>\n<p><b>Parimet<\/b><\/p>\n<p>Tani, kur arrit\u00ebm nj\u00eb kuptim t\u00eb p\u00ebrbashk\u00ebt p\u00ebr \u00e7far\u00eb jan\u00eb aplikacionet moderne dhe stoku modern, tani \u00ebsht\u00eb koha t\u00eb thellohemi n\u00eb parimet e arkitektur\u00ebs dhe zhvillimit q\u00eb do t'ju sh\u00ebrbejn\u00eb mir\u00eb n\u00eb zhvillimin, implementimin dhe mb\u00ebshtetjes s\u00eb nj\u00eb aplikacioni modern.<\/p>\n<p>Nj\u00eb nga parimet \u00ebsht\u00eb \"krijoni aplikacione t\u00eb vogla\", le ta quajm\u00eb thjesht <i>principi i voglis\u00eb<\/i>. Ekzistojn\u00eb aplikacione jasht\u00ebzakonisht komplekse q\u00eb p\u00ebrb\u00ebhen nga shum\u00eb komponent\u00eb t\u00eb l\u00ebvizsh\u00ebm. Nga ana tjet\u00ebr, nd\u00ebrtimi i nj\u00eb aplikacioni nga komponente t\u00eb vogla dhe diskrete e thjeshton projektimin, mir\u00ebmbajtjen dhe funksionimin e tij n\u00eb p\u00ebrgjith\u00ebsi. (Vini re, ne tham\u00eb \"thjeshton\" dhe jo \"b\u00ebn t\u00eb thjesht\u00eb\").<\/p>\n<p>Parimi i dyt\u00eb \u00ebsht\u00eb se ne mund t\u00eb rrisim produktivitetin e zhvilluesve duke i ndihmuar ata t\u00eb p\u00ebrqendrohen n\u00eb funksionalitetet q\u00eb ata po zhvillojn\u00eb, duke i \u00e7liruar nga shqet\u00ebsimet p\u00ebr infrastruktur\u00ebn dhe CI\/CD gjat\u00eb implementimit. Pra, n\u00eb dy fjal\u00eb, qasja jon\u00eb <i>\u00ebsht\u00eb orientuar ndaj zhvilluesve<\/i>.<\/p>\n<p>N\u00eb fund, gjith\u00e7ka q\u00eb ka t\u00eb b\u00ebj\u00eb me aplikacionin tuaj duhet t\u00eb jet\u00eb e lidhur me rrjetin. Gjat\u00eb 20 viteve t\u00eb fundit, ne kemi avancuar shum\u00eb drejt nj\u00eb t\u00eb ardhmeje rrjetore, pasi rrjetet kan\u00eb b\u00ebr\u00eb p\u00ebrparime t\u00eb m\u00ebdha dhe aplikacionet jan\u00eb b\u00ebr\u00eb m\u00eb komplekse. Si\u00e7 e kemi kuptuar, nj\u00eb aplikacion modern duhet t\u00eb p\u00ebrdoret n\u00eb rrjet nga shum\u00eb klient\u00eb t\u00eb ndrysh\u00ebm. Aplikimi i mendimit t\u00eb rrjetit n\u00eb arkitektur\u00eb ka p\u00ebrfitime t\u00eb r\u00ebnd\u00ebsishme q\u00eb p\u00ebrshtaten mir\u00eb me <i>principi i voglis\u00eb<\/i> dhe konceptin e qasjes, <i>orientuar ndaj zhvilluesve<\/i>.<\/p>\n<p>N\u00ebse gjat\u00eb zhvillimit dhe implementimit t\u00eb aplikacionit mbani mend parimet e p\u00ebrmendura, do t\u00eb keni nj\u00eb avantazh t\u00eb pakund\u00ebrshtuesh\u00ebm n\u00eb zhvillimin dhe dor\u00ebzimin e produktit tuaj.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb k\u00ebto tri parime m\u00eb n\u00eb detaje.<\/p>\n<p><b>Principi i voglis\u00eb<\/b><\/p>\n<p>Mendja njer\u00ebzore ka v\u00ebshtir\u00ebsi t\u00eb perceptoj\u00eb nj\u00eb sasi t\u00eb madhe informacioni nj\u00ebkoh\u00ebsisht. N\u00eb psikologji, termi ngarkesa kognitive i referohet sasis\u00eb s\u00eb p\u00ebrgjithshme t\u00eb p\u00ebrpjekjeve mendore t\u00eb nevojshme p\u00ebr t\u00eb mbajtur informacionin n\u00eb memorie. Reduktimi i ngarkes\u00ebs kognitive p\u00ebr zhvilluesit \u00ebsht\u00eb nj\u00eb prioritet, pasi n\u00eb k\u00ebt\u00eb rast ata mund t\u00eb p\u00ebrqendrohen n\u00eb zgjidhjen e problemeve, n\u00eb vend q\u00eb t\u00eb mbajn\u00eb n\u00eb mend modelin kompleks aktual t\u00eb gjith\u00eb aplikacionit dhe funksionalitetet q\u00eb po zhvillohen. <\/p>\n<p><img decoding=\"async\" alt=\"Parimet e zhvillimit t\u00eb aplikacioneve moderne nga NGINX. Pjesa 1\" src=\"\/wp-content\/uploads\/26df2016a46d8b82b45832fe1df9bf23.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Aplikacionet \u00e7antarizohen p\u00ebr arsyet e m\u00ebposhtme:<\/p>\n<ul>\n<li>Ulja e ngarkes\u00ebs kognitive mbi zhvilluesit;<\/li>\n<li>Shpejtimi dhe thjeshtimi i testimit;<\/li>\n<li>D\u00ebrgimi i shpejt\u00eb i ndryshimeve n\u00eb aplikacion.<\/li>\n<\/ul>\n<p><\/i><br \/>\nEkzistojn\u00eb disa m\u00ebnyra p\u00ebr t\u00eb ulur ngarkes\u00ebn kognitive mbi zhvilluesit, dhe k\u00ebtu hyn n\u00eb loj\u00eb parimi i vog\u00eblsis\u00eb.<\/p>\n<p>Pra, tre m\u00ebnyra p\u00ebr t\u00eb ulur ngarkes\u00ebn kognitive:<\/p>\n<ol>\n<li>T\u00eb reduktojm\u00eb koh\u00ebzgjatjen q\u00eb ata duhet t\u00eb ken\u00eb parasysh kur zhvillojn\u00eb nj\u00eb funksion t\u00eb ri \u2013 sa m\u00eb e shkurt\u00ebr t\u00eb jet\u00eb periudha, aq m\u00eb e ul\u00ebt \u00ebsht\u00eb ngarkesa kognitive.<\/li>\n<li>T\u00eb reduktojm\u00eb sasin\u00eb e kodit me t\u00eb cilin punojn\u00eb n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb \u2013 m\u00eb pak kod, m\u00eb pak ngarkes\u00eb.<\/li>\n<li>T\u00eb thjeshtojm\u00eb procesin e b\u00ebrjes s\u00eb ndryshimeve inkrementale n\u00eb aplikacion.<\/li>\n<\/ol>\n<p>\n<b>Reduktimi i koh\u00ebzgjatjeve t\u00eb zhvillimit<\/b><\/p>\n<p>Le t\u00eb kthehemi n\u00eb ato koh\u00eb kur metodologjia <code>waterfall<\/code> ishte standardi p\u00ebr procesin e zhvillimit, dhe koh\u00ebzgjatjet prej gjasht\u00eb muajsh deri n\u00eb dy vjet p\u00ebr zhvillimin ose p\u00ebrmir\u00ebsimin e nj\u00eb aplikacioni ishin praktik\u00eb e zakonshme. Zakonisht, inxhinier\u00ebt s\u00eb pari lexonin dokumentet p\u00ebrkat\u00ebse, t\u00eb tilla si k\u00ebrkesat p\u00ebr produktin (PRD), dokumentin referues t\u00eb sistemit (SRD), planin e arkitektur\u00ebs dhe fillonin t\u00eb bashkonin k\u00ebto gj\u00ebra n\u00eb nj\u00eb model kognitiv, sipas t\u00eb cilit ata shkruanin kod. Nd\u00ebrsa k\u00ebrkesat dhe, n\u00eb p\u00ebrputhje me to, arkitektura ndryshonin, duhej b\u00ebr\u00eb p\u00ebrpjekje t\u00eb m\u00ebdha p\u00ebr t\u00eb informuar t\u00eb gjith\u00eb ekipin mbi p\u00ebrdit\u00ebsimet e modelit kognitiv. Ky qasje, n\u00eb rastin m\u00eb t\u00eb keq, mund t\u00eb paralizoj\u00eb thjesht pun\u00ebn.<\/p>\n<p>Ndryshimi m\u00eb i madh n\u00eb procesin e zhvillimit t\u00eb aplikacioneve ka qen\u00eb implementimi i metodologjis\u00eb agile. Nj\u00eb nga karakteristikat kryesore t\u00eb metodologjis\u00eb <code>agile<\/code> \u00ebsht\u00eb zhvillimi iterativ. Kjo, nga ana e saj, \u00e7on n\u00eb uljen e ngarkes\u00ebs kognitive mbi inxhinier\u00ebt. N\u00eb vend q\u00eb t\u00eb k\u00ebrkohet nga ekipi i zhvilluesve t\u00eb realizoj\u00eb aplikacionin n\u00eb nj\u00eb cik\u00ebl t\u00eb gjat\u00eb, <code>agile<\/code> pranimi lejon p\u00ebrqendrimin n\u00eb sasi t\u00eb vogla kodi q\u00eb mund t\u00eb testohen dhe shp\u00ebrndahen shpejt, duke marr\u00eb gjithashtu edhe reagime. Ngarkesa kognitive e aplikacionit u zhvendos nga nj\u00eb periudh\u00eb prej gjasht\u00eb muajsh deri n\u00eb dy vjet, duke marr\u00eb parasysh nj\u00eb sasi t\u00eb madhe specifikimesh, n\u00eb shtesa apo ndryshime funksionesh p\u00ebr dy jav\u00ebsh, t\u00eb orientuara n\u00eb nj\u00eb mir\u00ebkuptim m\u00eb t\u00eb paqart\u00eb t\u00eb nj\u00eb aplikacioni t\u00eb madh.<\/p>\n<p>Kalimet e fokusit nga aplikacionet masive n\u00eb funksione t\u00eb vogla specifike, t\u00eb cilat mund t\u00eb p\u00ebrfundojn\u00eb brenda nj\u00eb sprinti dy-javor, me nj\u00eb shikim p\u00ebrpara p\u00ebr vet\u00ebm nj\u00eb funksion nga sprinti i ardhsh\u00ebm n\u00eb mendje, \u00ebsht\u00eb nj\u00eb ndryshim i r\u00ebnd\u00ebsish\u00ebm. Kjo ka lejuar rritjen e produktivitetit t\u00eb zhvillimit duke ulur ngarkes\u00ebn kognitive, e cila ka qen\u00eb vazhdimisht e luhatshme.<\/p>\n<p>N\u00eb metodologjin\u00eb <code>agile<\/code> supozon q\u00eb aplikacioni p\u00ebrfundimtar do t\u00eb jet\u00eb nj\u00eb version pak t\u00eb ndryshuar i konceptit fillestar, prandaj pika p\u00ebrfundimtare e zhvillimit \u00ebsht\u00eb domosdoshm\u00ebrisht e paqart\u00eb. Vet\u00ebm rezultatet e \u00e7do sprinti t\u00eb ve\u00e7ant\u00eb mund t\u00eb jen\u00eb t\u00eb qarta dhe t\u00eb sakta.<\/p>\n<p><b>Baza t\u00eb vogla t\u00eb kodit<\/b><\/p>\n<p>Hapi i ardhsh\u00ebm n\u00eb uljen e ngarkes\u00ebs kognitive \u00ebsht\u00eb t\u00eb reduktoj\u00eb baz\u00ebn e kodit. N\u00eb p\u00ebrgjith\u00ebsi, aplikacionet moderne jan\u00eb masive \u2013 nj\u00eb aplikacion i besuesh\u00ebm dhe korporativ mund t\u00eb p\u00ebrb\u00ebhet nga mij\u00ebra skedare dhe qindra mij\u00ebra rreshta kodi. N\u00eb var\u00ebsi t\u00eb organizat\u00ebs s\u00eb skedar\u00ebve, lidhjet dhe var\u00ebsit\u00eb e kodit dhe skedar\u00ebve mund t\u00eb jen\u00eb t\u00eb dukshme ose p\u00ebrkundrazi. Edhe debugging i vet\u00eb ekzekutimit t\u00eb kodit mund t\u00eb shkaktoj\u00eb probleme, n\u00eb var\u00ebsi t\u00eb bibliotekave t\u00eb p\u00ebrdorura dhe se sa mir\u00eb mjetet e debugging ndajn\u00eb bibliotekat\/paketat\/modulet dhe kodin e p\u00ebrdoruesit.<\/p>\n<p>Nd\u00ebrtoni nj\u00eb model mendor t\u00eb pun\u00ebs t\u00eb kodit t\u00eb aplikacionit mund t\u00eb marr\u00eb nj\u00eb koh\u00eb t\u00eb konsiderueshme, duke ia ngarkuar s\u00ebrish zhvilluesit nj\u00eb ngarkes\u00eb t\u00eb madhe kognitive. Kjo \u00ebsht\u00eb sidomos e zakonshme p\u00ebr bazat e kodit monolitike, ku ka nj\u00eb sasi t\u00eb madhe kodi, nd\u00ebrveprimi nd\u00ebrmjet komponent\u00ebve funksional\u00eb nuk \u00ebsht\u00eb qart\u00eb i p\u00ebrcaktuar, dhe ndarja e objekteve t\u00eb v\u00ebmendjes shpesh \u00ebsht\u00eb e paqart\u00eb, p\u00ebr shkak se nuk respektohen kufijt\u00eb funksional\u00eb. <\/p>\n<p>Nj\u00eb nga m\u00ebnyrat efektive p\u00ebr t\u00eb ulur ngarkes\u00ebn kognitive t\u00eb inxhinier\u00ebve \u00ebsht\u00eb kalimi n\u00eb arkitektur\u00ebn mikrosh\u00ebrbimore. N\u00eb qasjen mikrosh\u00ebrbimore, \u00e7do sh\u00ebrbim p\u00ebrqendrohet n\u00eb nj\u00eb grup funksionesh; nd\u00ebrkoh\u00eb, kuptimi i sh\u00ebrbimit zakonisht \u00ebsht\u00eb i qart\u00eb dhe i kuptuesh\u00ebm. Kufijt\u00eb e sh\u00ebrbimit jan\u00eb gjithashtu t\u00eb qart\u00eb \u2013 kujtoni se komunikimi me sh\u00ebrbimin b\u00ebhet p\u00ebrmes API-s\u00eb, prandaj t\u00eb dh\u00ebnat e gjeneruara nga nj\u00eb sh\u00ebrbim mund t\u00eb transferohen leht\u00ebsisht n\u00eb nj\u00eb tjet\u00ebr.<\/p>\n<p>Nd\u00ebrveprimi me sh\u00ebrbime t\u00eb tjera zakonisht \u00ebsht\u00eb i kufizuar n\u00eb disa sh\u00ebrbime p\u00ebrdoruesi dhe disa sh\u00ebrbime t\u00eb ofruesit q\u00eb p\u00ebrdorin thirrje API t\u00eb thjeshta dhe t\u00eb pastra, si p\u00ebr shembull n\u00ebp\u00ebrmjet REST. K\u00ebshtu, ngarkesa kognitive p\u00ebr inxhinierin zvog\u00eblohet ndjesh\u00ebm. Detyra m\u00eb e v\u00ebshtir\u00eb mbetet kuptimi i modelit t\u00eb nd\u00ebrveprimit t\u00eb sh\u00ebrbimeve dhe se si gj\u00ebra t\u00eb tilla si transaksionet ndodhin n\u00eb disa sh\u00ebrbime. Si p\u00ebrfundim, p\u00ebrdorimi i mikrosh\u00ebrbimeve zvog\u00eblon ngarkes\u00ebn kognitive, duke reduktuar sasin\u00eb e kodit, duke p\u00ebrcaktuar kufij t\u00eb qart\u00eb t\u00eb sh\u00ebrbimeve dhe duke siguruar nj\u00eb kuptim t\u00eb marr\u00ebdh\u00ebnieve nd\u00ebrmjet p\u00ebrdoruesve dhe ofruesve.<\/p>\n<p><b>Ndryshime t\u00eb vogla inkrimentuese<\/b><\/p>\n<p>Elementi p\u00ebrfundimtar i parimit <i>voglsira<\/i> \u2013 \u00ebsht\u00eb menaxhimi i ndryshimeve. Nj\u00eb joshje e ve\u00e7ant\u00eb p\u00ebr zhvilluesit \u00ebsht\u00eb t\u00eb shikojn\u00eb baz\u00ebn e kodit (madje, ndoshta edhe kodin e tyre m\u00eb t\u00eb vjet\u00ebr) dhe t\u00eb deklarojn\u00eb: \"Kjo \u00ebsht\u00eb dert, na nevojitet ta rishkruajm\u00eb t\u00eb gjith\u00eb k\u00ebt\u00eb.\" Ndonj\u00ebher\u00eb, kjo \u00ebsht\u00eb zgjidhje e sakt\u00eb, ndonj\u00ebher\u00eb jo. Ajo i ngarkon ekipit t\u00eb zhvilluesve barr\u00ebn e ndryshimit global t\u00eb modelit, q\u00eb, nga ana e saj, \u00e7on n\u00eb nj\u00eb ngarkes\u00eb kognitive n\u00eb shkall\u00eb t\u00eb gjer\u00eb. M\u00eb mir\u00eb \u00ebsht\u00eb q\u00eb inxhinier\u00ebt t\u00eb p\u00ebrqendrohen n\u00eb ndryshimet q\u00eb mund t\u00eb b\u00ebjn\u00eb gjat\u00eb sprintit, p\u00ebr ta nxjerr\u00eb n\u00eb koh\u00eb funksionalitetin e nevojsh\u00ebm, ndon\u00ebse gradualisht. Produkti p\u00ebrfundimtar duhet t\u00eb ngjasoj\u00eb me at\u00eb t\u00eb planifikuar, por me disa ndryshime dhe testime p\u00ebr t'u p\u00ebrputhur me nevojat e klientit.<\/p>\n<p>Kur nd\u00ebrhyrje t\u00eb m\u00ebdha n\u00eb kod, ndonj\u00ebher\u00eb realizimi i shpejt\u00eb i ndryshimeve b\u00ebhet i pamundur, pasi k\u00ebtu hyjn\u00eb n\u00eb loj\u00eb var\u00ebsi t\u00eb tjera t\u00eb sistemit. P\u00ebr t\u00eb kontrolluar rrjedh\u00ebn e ndryshimeve, mund t\u00eb p\u00ebrdoret fshehja e funksionaliteteve (feature hiding). N\u00eb parim, kjo do t\u00eb thot\u00eb se funksionaliteti ekziston n\u00eb prodhim, por nuk \u00ebsht\u00eb i aksesuesh\u00ebm p\u00ebrmes p\u00ebrball\u00ebs s\u00eb variablave t\u00eb ambientit (env-var) ose ndonj\u00eb mekanizmi tjet\u00ebr konfigurimi. N\u00ebse kodi kalon t\u00eb gjitha proceset e kontrollit t\u00eb cil\u00ebsis\u00eb, at\u00ebher\u00eb mund t\u00eb p\u00ebrfundoj\u00eb n\u00eb prodhim n\u00eb nj\u00eb gjendje t\u00eb fshehur. Megjithat\u00eb, kjo strategji funksionon vet\u00ebm n\u00ebse funksioni n\u00eb fund do t\u00eb aktivizohet. N\u00eb t\u00eb kund\u00ebrt, ai vet\u00ebm sa do t\u00eb mbush\u00eb kodin dhe do t\u00eb shtoj\u00eb nj\u00eb ngarkes\u00eb njoh\u00ebse q\u00eb zhvilluesi do t\u00eb duhet ta p\u00ebrballoj\u00eb p\u00ebr t\u00eb punuar produktivisht. Menaxhimi i ndryshimeve dhe ndryshimet incremental vet\u00eb ndihmojn\u00eb n\u00eb mbajtjen e ngarkes\u00ebs njoh\u00ebse t\u00eb zhvilluesve n\u00eb nivele t\u00eb pranueshme. <\/p>\n<p>Inxhinier\u00ebt shpesh p\u00ebrballen me shum\u00eb v\u00ebshtir\u00ebsi edhe gjat\u00eb implementimit t\u00eb funksionaliteteve shtes\u00eb t\u00eb thjeshta. Nga ana e menaxhimit, do t\u00eb ishte e arsyeshme t\u00eb zvog\u00eblohej ngarkesa e panevojshme mbi ekipin, n\u00eb m\u00ebnyr\u00eb q\u00eb ata t\u00eb mund t\u00eb p\u00ebrqendrohen n\u00eb elementet ky\u00e7e t\u00eb funksionalitetit. Ka tre gj\u00ebra q\u00eb mund t\u00eb b\u00ebni p\u00ebr t\u00eb ndihmuar ekipin tuaj t\u00eb zhvilluesve:<\/p>\n<ol>\n<li>T\u00eb p\u00ebrdorni metodologjin\u00eb <code>agile<\/code>, p\u00ebr t\u00eb kufizuar afatet e koh\u00ebs n\u00eb t\u00eb cilat ekipi duhet t\u00eb p\u00ebrqendrohet n\u00eb funksionalitetet ky\u00e7e.<\/li>\n<li>T\u00eb realizoni aplikacionin tuaj si disa mikrosherbime. Kjo do t\u00eb kufizoj\u00eb numrin e funksionaliteteve t\u00eb fuqishme dhe do t\u00eb forc\u00ebsoj\u00eb kufijt\u00eb q\u00eb mbajn\u00eb ngarkes\u00ebn njoh\u00ebse gjat\u00eb pun\u00ebs.<\/li>\n<li>T\u00eb preferoni ndryshimet incremental ndaj atyre t\u00eb m\u00ebdha e ngadalta, duke ndryshuar copa t\u00eb vogla kodi. P\u00ebrdorni fshehjen e funksioneve p\u00ebr t\u00eb realizuar ndryshime, edhe n\u00ebse ato nuk do t\u00eb jen\u00eb t\u00eb dukshme menj\u00ebher\u00eb pas shtimit.<\/li>\n<\/ol>\n<p>\nN\u00ebse aplikoni parimin e vog\u00eblsis\u00eb n\u00eb pun\u00ebn tuaj, ekipi juaj do t\u00eb jet\u00eb shum\u00eb m\u00eb i lumtur, do t\u00eb fokusoheni m\u00eb mir\u00eb n\u00eb realizimin e funksionaliteteve t\u00eb nevojshme dhe do t\u00eb keni m\u00eb shum\u00eb gjasa t\u00eb krijoni ndryshime cil\u00ebsore m\u00eb shpejt. Por kjo nuk do t\u00eb thot\u00eb q\u00eb puna nuk mund t\u00eb komplikoj\u00eb, ndonj\u00ebher\u00eb, p\u00ebrkundrazi, implementimi i funksionaliteteve t\u00eb reja k\u00ebrkon modifikimin e disa sh\u00ebrbimeve dhe ky proces mund t\u00eb jet\u00eb m\u00eb i komplikuar se ai n\u00eb nj\u00eb arkitektur\u00eb monolite. N\u00eb \u00e7do rast, p\u00ebrfitimet nga aplikimi i qasjes s\u00eb vog\u00eblsis\u00eb e meritojn\u00eb.<\/p>\n<p>Krahu i par\u00eb \u00ebsht\u00eb p\u00ebrfunduar.<\/p>\n<p>N\u00eb nj\u00eb t\u00eb ardhme t\u00eb af\u00ebrt do t\u00eb publikojm\u00eb pjes\u00ebn e dyt\u00eb t\u00eb p\u00ebrkthimit, nd\u00ebrkoh\u00eb presim komentet tuaja dhe ju ftojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/mJ6e\/\">dit\u00ebn e hapur<\/a><\/noindex>, i cili do t\u00eb zhvillohet sot n\u00eb ora 20:00.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/452748\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0434\u0440\u0443\u0437\u044c\u044f. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00abBackend \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 PHP\u00bb, \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0441\u044c \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041a\u0430\u043a \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0441\u043a\u0430\u0437\u0430\u043b \u041c\u0430\u0440\u043a \u0410\u043d\u0434\u0440\u0435\u0441\u0441\u0435\u043d, \u043e\u043d\u043e \u043f\u043e\u0433\u043b\u043e\u0449\u0430\u0435\u0442 \u043c\u0438\u0440. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34140","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0434\u0440\u0443\u0437\u044c\u044f.\" \/>\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\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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\udd47\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0442 NGINX. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0434\u0440\u0443\u0437\u044c\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1\" \/>\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-31T18:56:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:56:35+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\udd47Parimet e zhvillimit t\u00eb aplikacioneve moderne nga NGINX. Pjesa 1 | ProHoster","description":"P\u00ebrsh\u00ebndetje, miq.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1","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\udd47\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0442 NGINX. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0434\u0440\u0443\u0437\u044c\u044f.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1","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-31T18:56:35+00:00","article:modified_time":"2019-10-31T18:56:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34140","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-21 18:05:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:27:30","updated":"2026-01-21 18:05: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\/34140","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=34140"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/34140\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=34140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=34140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=34140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}