{"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\/hu\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1","title":{"rendered":"Az NGINX \u00e1ltal kidolgozott modern alkalmaz\u00e1sfejleszt\u00e9si elvek. 1. r\u00e9sz","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hell\u00f3, bar\u00e1tok. A kurzus indul\u00e1sa el\u0151tt <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/h4Ez\/\">\u201ePHP backend fejleszt\u0151\u201d<\/a><\/noindex>, hagyom\u00e1nyosan megosztjuk veletek egy hasznos anyag ford\u00edt\u00e1s\u00e1t.<\/p>\n<p>A szoftver egyre t\u00f6bb mindennapi feladatra tal\u00e1l megold\u00e1st, mik\u00f6zben egyre bonyolultabb\u00e1 v\u00e1lik. Ahogy Mark Andreessen egyszer mondta, \u201ea vil\u00e1got elnyeli\u201d. <\/p>\n<p><img decoding=\"async\" alt=\"Az NGINX \u00e1ltal kidolgozott modern alkalmaz\u00e1sfejleszt\u00e9si elvek. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/928924e3036beaac518dd4a2674a8a30.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEnnek eredm\u00e9nyek\u00e9nt az utols\u00f3 n\u00e9h\u00e1ny \u00e9vben az alkalmaz\u00e1sfejleszt\u00e9si \u00e9s -sz\u00e1ll\u00edt\u00e1si megk\u00f6zel\u00edt\u00e9sek komolyan megv\u00e1ltoztak. Ezek a tectonikus m\u00e9ret\u0171 elmozdul\u00e1sok v\u00e9g\u00fcl egy elvhalmazt eredm\u00e9nyeztek. Ezek az elvek hasznosak voltak a csapatok kialak\u00edt\u00e1s\u00e1ban, a tervez\u00e9sben, fejleszt\u00e9sben \u00e9s az alkalmaz\u00e1s v\u00e9gfelhaszn\u00e1l\u00f3khoz val\u00f3 eljuttat\u00e1s\u00e1ban. <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Az elvek a k\u00f6vetkez\u0151 m\u00f3don \u00f6sszefoglalhat\u00f3k: <i>az alkalmaz\u00e1snak kicsinek, h\u00e1l\u00f3zatra \u00e9p\u00fcltnek \u00e9s a fejleszt\u0151k sz\u00e1m\u00e1ra orient\u00e1ltnak kell lennie.<\/i>. Ezekre a h\u00e1rom elvre t\u00e1maszkodva megb\u00edzhat\u00f3, \u00e1tfog\u00f3 alkalmaz\u00e1st hozhat l\u00e9tre, amelyet gyorsan \u00e9s biztons\u00e1gosan eljuttathat a v\u00e9gfelhaszn\u00e1l\u00f3hoz, valamint k\u00f6nnyen sk\u00e1l\u00e1zhat\u00f3 \u00e9s b\u0151v\u00edthet\u0151.<\/p>\n<p><img decoding=\"async\" alt=\"Az NGINX \u00e1ltal kidolgozott modern alkalmaz\u00e1sfejleszt\u00e9si elvek. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/9116869a53fb6cf89d92f1d507d7904f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA javasolt elvek mindegyik\u00e9nek sz\u00e1mos aspektusa van, amelyeket meg fogunk vitatni, hogy megmutassuk, mik\u00e9nt seg\u00edtik az egyes elvek a v\u00e9gs\u0151 c\u00e9l el\u00e9r\u00e9s\u00e9t, amely a megb\u00edzhat\u00f3, k\u00f6nnyen karbantarthat\u00f3 \u00e9s haszn\u00e1lhat\u00f3 alkalmaz\u00e1sok gyors sz\u00e1ll\u00edt\u00e1s\u00e1ban rejlik. Az elveket a ellent\u00e9teikkel \u00f6sszevetve fogjuk vizsg\u00e1lni, hogy tiszt\u00e1zzuk, mit is jelent p\u00e9ld\u00e1ul az, hogy \u201eGy\u0151z\u0151dj meg arr\u00f3l, hogy haszn\u00e1lod a <i>kicsis\u00e9g elvet.<\/i>\u00bb.<\/p>\n<p>Rem\u00e9lj\u00fck, hogy ez a cikk \u00f6szt\u00f6n\u00f6zni fog arra, hogy alkalmazz\u00e1tok a modern alkalmaz\u00e1sok \u00e9p\u00edt\u00e9s\u00e9hez javasolt elveket, amelyek egys\u00e9ges megk\u00f6zel\u00edt\u00e9st biztos\u00edtanak a tervez\u00e9shez a folyamatosan b\u0151v\u00fcl\u0151 technol\u00f3giai stack kontextus\u00e1ban. <\/p>\n<p>Ezeknek az elveknek a alkalmaz\u00e1s\u00e1val felfedezheted, hogy a leg\u00fajabb szoftverfejleszt\u00e9si trendeket haszn\u00e1lod, bele\u00e9rtve a megk\u00f6zel\u00edt\u00e9st <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/tag\/devops\/\">DevOps<\/a><\/noindex> az alkalmaz\u00e1sok fejleszt\u00e9s\u00e9re \u00e9s sz\u00e1ll\u00edt\u00e1s\u00e1ra, valamint a kont\u00e9nerek haszn\u00e1lat\u00e1t (mint p\u00e9ld\u00e1ul <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/tag\/docker\/\">Docker<\/a><\/noindex>) \u00e9s a kont\u00e9nerek ir\u00e1ny\u00edt\u00e1s\u00e1t szolg\u00e1l\u00f3 keretrendszereket (mint p\u00e9ld\u00e1ul <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/tag\/kubernetes\/\">Kubernetes<\/a><\/noindex>), valamint a mikroszolg\u00e1ltat\u00e1sok alkalmaz\u00e1s\u00e1t (bele\u00e9rtve a Mikroszolg\u00e1ltat\u00e1si Architekt\u00far\u00e1t <noindex>NGINX<\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/what-is-a-service-mesh\/\">h\u00e1l\u00f3zati architekt\u00fara<\/a><\/noindex> mikroszolg\u00e1ltat\u00e1sokra \u00e9p\u00fcl\u0151 alkalmaz\u00e1sokhoz.<\/p>\n<p><b>Mi az a modern alkalmaz\u00e1s?<\/b><\/p>\n<p>Modern alkalmaz\u00e1sok? Modern stack? Mit is jelent pontosan a \u201emodern\u201d? <\/p>\n<p>A legt\u00f6bb fejleszt\u0151 csak \u00e1ltal\u00e1nos k\u00e9pet alkot arr\u00f3l, hogy mib\u0151l \u00e1ll egy modern alkalmaz\u00e1s, ez\u00e9rt vil\u00e1gos defin\u00edci\u00f3ra van sz\u00fcks\u00e9g e fogalom sz\u00e1m\u00e1ra.<\/p>\n<p>A modern alkalmaz\u00e1s t\u00f6bb klienst t\u00e1mogat, legyen az egy JavaScript React k\u00f6nyvt\u00e1rra \u00e9p\u00fcl\u0151 felhaszn\u00e1l\u00f3i fel\u00fclet, egy Android vagy iOS mobilalkalmaz\u00e1s, vagy egy m\u00e1sik alkalmaz\u00e1ssal API-n kereszt\u00fcli kapcsol\u00f3d\u00e1s. A modern alkalmaz\u00e1s egy meghat\u00e1rozatlan sz\u00e1m\u00fa klienssel rendelkezik, amelyek sz\u00e1m\u00e1ra adatokat vagy szolg\u00e1ltat\u00e1sokat biztos\u00edt.<\/p>\n<p>A modern alkalmaz\u00e1s API-t biztos\u00edt a k\u00e9rt adatokhoz \u00e9s szolg\u00e1ltat\u00e1sokhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9shez. Az API-nak v\u00e1ltozatlannak \u00e9s \u00e1lland\u00f3nak kell lennie, nem pedig konkr\u00e9t k\u00e9r\u00e9s alapj\u00e1n egy adott klienshez \u00edrva. Az API HTTP(S) protokollon \u00e9rhet\u0151 el, \u00e9s biztos\u00edtja az \u00f6sszes funkci\u00f3hoz val\u00f3 hozz\u00e1f\u00e9r\u00e9st, ami a GUI-ban vagy CLI-ben el\u00e9rhet\u0151. <\/p>\n<p>Az adatoknak egy k\u00f6zismert, kompatibilis form\u00e1tumban kell rendelkez\u00e9sre \u00e1llniuk, mint p\u00e9ld\u00e1ul a JSON. Az API objektumokat \u00e9s szolg\u00e1ltat\u00e1sokat biztos\u00edt \u00e9rthet\u0151, rendezett form\u00e1ban; p\u00e9ld\u00e1ul a RESTful API vagy a GraphQL megfelel\u0151 interf\u00e9szt k\u00edn\u00e1l.<\/p>\n<p>A modern alkalmaz\u00e1sok a modern technol\u00f3giai stackre \u00e9p\u00fclnek, \u00e9s a modern stack olyan stack, amely t\u00e1mogatja az ilyen alkalmaz\u00e1sokat. Ez a stack lehet\u0151v\u00e9 teszi a fejleszt\u0151 sz\u00e1m\u00e1ra, hogy k\u00f6nnyed\u00e9n hozzon l\u00e9tre HTTP interf\u00e9sszel rendelkez\u0151 alkalmaz\u00e1sokat \u00e9s vil\u00e1gos API v\u00e9gpontokat. A v\u00e1lasztott megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy az alkalmaz\u00e1s egyszer\u0171en fogadjon \u00e9s k\u00fcldj\u00f6n adatokat JSON form\u00e1tumban. M\u00e1s szavakkal, a modern stack megfelel a Tizenk\u00e9t Faktoros alkalmaz\u00e1s elemeinek. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/microservices-reference-architecture-nginx-twelve-factor-app\/\">mikroszolg\u00e1ltat\u00e1sokhoz<\/a><\/noindex>. <\/p>\n<p>E technol\u00f3giai stack n\u00e9pszer\u0171 verzi\u00f3i a <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\">Node<\/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> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-content-service\">Go<\/a><\/noindex>. A Mikroszolg\u00e1ltat\u00e1s-Architekt\u00fara <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nginxinc\/mra-ingenious\">NGINX<\/a><\/noindex> p\u00e9ld\u00e1zza a modern stack megval\u00f3sul\u00e1s\u00e1t minden eml\u00edtett nyelven.<\/p>\n<p>Vegye figyelembe, hogy nem csak a mikroszolg\u00e1ltat\u00e1s-alap\u00fa megk\u00f6zel\u00edt\u00e9st n\u00e9pszer\u0171s\u00edtj\u00fck. Sokuk monolitokkal dolgozik, amelyeknek fejl\u0151dni\u00fck kell, m\u00edg m\u00e1sok SOA alkalmaz\u00e1sokkal foglalkoznak, amelyek kib\u0151v\u00fclnek \u00e9s fejl\u0151dnek, hogy mikroszolg\u00e1ltat\u00e1sokk\u00e1 v\u00e1ljanak. Harmadik felek a serverless alkalmaz\u00e1sok ir\u00e1ny\u00e1ba haladnak, m\u00edg egyesek a fent eml\u00edtett megold\u00e1sok kombin\u00e1ci\u00f3j\u00e1t alkalmazz\u00e1k. A cikkben ismertetett elvek minden egyes rendszerre vonatkoznak, csak n\u00e9h\u00e1ny apr\u00f3 v\u00e1ltoztat\u00e1ssal. <\/p>\n<p><b>Elvek<\/b><\/p>\n<p>Most m\u00e1r, hogy egyet\u00e9rtett\u00fcnk abban, mi is az a modern alkalmaz\u00e1s \u00e9s modern technol\u00f3giai stack, itt az ideje, hogy belemer\u00fclj\u00fcnk az \u00e9p\u00edt\u00e9si \u00e9s fejleszt\u00e9si elvekbe, amelyek j\u00f3 szolg\u00e1latot tehetnek a modern alkalmaz\u00e1s fejleszt\u00e9s\u00e9ben, megval\u00f3s\u00edt\u00e1s\u00e1ban \u00e9s karbantart\u00e1s\u00e1ban.<\/p>\n<p>Az egyik elv \u00edgy sz\u00f3l: \u201ek\u00e9sz\u00edts kis alkalmaz\u00e1sokat\u201d, nevezz\u00fck egyszer\u0171en <i>a kicsis\u00e9g elv\u00e9nek<\/i>. Vannak rendk\u00edv\u00fcl bonyolult alkalmaz\u00e1sok, amelyek sz\u00e1mos mozg\u00f3 komponensb\u0151l \u00e1llnak. Ezzel szemben, egy alkalmaz\u00e1s \u00e9p\u00edt\u00e9se kis diszkr\u00e9t komponensekb\u0151l el\u0151seg\u00edti a tervez\u00e9s\u00e9t, karbantart\u00e1s\u00e1t \u00e9s a vele val\u00f3 munk\u00e1t. (Vegy\u00fck \u00e9szre, hogy azt mondtuk: \u201eel\u0151seg\u00edti\u201d, nem pedig \u201eegyszer\u0171s\u00edti\u201d).<\/p>\n<p>A m\u00e1sodik elv az, hogy n\u00f6velhetj\u00fck a fejleszt\u0151k termel\u00e9kenys\u00e9g\u00e9t \u00fagy, hogy lehet\u0151v\u00e9 tessz\u00fck sz\u00e1mukra, hogy a fejlesztett funkci\u00f3kra \u00f6sszpontos\u00edtsanak, mik\u00f6zben elt\u00e1vol\u00edtjuk t\u0151l\u00fck az infrastrukt\u00far\u00e1val \u00e9s a CI\/CD-vel kapcsolatos agg\u00e1lyokat a megval\u00f3s\u00edt\u00e1s sor\u00e1n. Teh\u00e1t r\u00f6viden: a megk\u00f6zel\u00edt\u00e9s\u00fcnk <i>a fejleszt\u0151kre \u00f6sszpontos\u00edt<\/i>.<\/p>\n<p>V\u00e9g\u00fcl, mindennek, ami az alkalmaz\u00e1sodhoz kapcsol\u00f3dik, h\u00e1l\u00f3zatra kell csatlakoznia. Az elm\u00falt 20 \u00e9vben jelent\u0151s l\u00e9p\u00e9seket tett\u00fcnk a h\u00e1l\u00f3zati j\u00f6v\u0151 fel\u00e9, mivel a h\u00e1l\u00f3zatok gyorsabb\u00e1 v\u00e1ltak, m\u00edg az alkalmaz\u00e1sok bonyolultabbak lettek. Ahogyan m\u00e1r eml\u00edtett\u00fck, a modern alkalmaz\u00e1st sz\u00e1mos k\u00fcl\u00f6nb\u00f6z\u0151 kliensnek kell haszn\u00e1lni a h\u00e1l\u00f3zaton. A h\u00e1l\u00f3zati gondolkod\u00e1s alkalmaz\u00e1sa az architekt\u00far\u00e1ban jelent\u0151s el\u0151ny\u00f6ket k\u00edn\u00e1l, amelyek j\u00f3l kieg\u00e9sz\u00edtik <i>a kicsis\u00e9g elv\u00e9nek<\/i> \u00e9s a megk\u00f6zel\u00edt\u00e9st, <i>a fejleszt\u0151kre \u00f6sszpontos\u00edtva.<\/i>.<\/p>\n<p>Ha a fejleszt\u00e9s \u00e9s az alkalmaz\u00e1s bevezet\u00e9se sor\u00e1n figyelembe veszed ezeket az elveket, vitathatatlan el\u0151nyre tehetsz szert a term\u00e9ked fejleszt\u00e9s\u00e9ben \u00e9s kiszolg\u00e1ltat\u00e1s\u00e1ban.<\/p>\n<p>N\u00e9zz\u00fck meg ezeket a h\u00e1rom elvet r\u00e9szletesebben.<\/p>\n<p><b>A kicsis\u00e9g elve<\/b><\/p>\n<p>Az emberi agy nehezen tud egyszerre nagy mennyis\u00e9g\u0171 inform\u00e1ci\u00f3t feldolgozni. A pszichol\u00f3gi\u00e1ban a kognit\u00edv terhel\u00e9s kifejez\u00e9s az inform\u00e1ci\u00f3 mem\u00f3ri\u00e1ban val\u00f3 meg\u0151rz\u00e9s\u00e9hez sz\u00fcks\u00e9ges ment\u00e1lis er\u0151fesz\u00edt\u00e9sek \u00f6sszeg\u00e9t jelenti. A fejleszt\u0151k kognit\u00edv terhel\u00e9s\u00e9nek cs\u00f6kkent\u00e9se priorit\u00e1s, mivel \u00edgy a probl\u00e9m\u00e1k megold\u00e1s\u00e1ra tudnak \u00f6sszpontos\u00edtani, ahelyett, hogy a teljes alkalmaz\u00e1s aktu\u00e1lis bonyolult modellj\u00e9t \u00e9s a fejlesztett funkci\u00f3kat kellene a fej\u00fckben tartaniuk. <\/p>\n<p><img decoding=\"async\" alt=\"Az NGINX \u00e1ltal kidolgozott modern alkalmaz\u00e1sfejleszt\u00e9si elvek. 1. r\u00e9sz\" src=\"\/wp-content\/uploads\/26df2016a46d8b82b45832fe1df9bf23.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Az alkalmaz\u00e1sok az al\u00e1bbi okokb\u00f3l dekompon\u00e1l\u00f3dnak:<\/p>\n<ul>\n<li>A fejleszt\u0151k kognit\u00edv terhel\u00e9s\u00e9nek cs\u00f6kkent\u00e9se;<\/li>\n<li>A tesztel\u00e9s felgyors\u00edt\u00e1sa \u00e9s leegyszer\u0171s\u00edt\u00e9se;<\/li>\n<li>A v\u00e1ltoz\u00e1sok gyorsan t\u00f6rt\u00e9n\u0151 sz\u00e1ll\u00edt\u00e1sa az alkalmaz\u00e1sban.<\/li>\n<\/ul>\n<p><\/i><br \/>\nT\u00f6bbf\u00e9le m\u00f3d van a fejleszt\u0151k kognit\u00edv terhel\u00e9s\u00e9nek cs\u00f6kkent\u00e9s\u00e9re, \u00e9s itt j\u00f6n a k\u00e9pbe a kis m\u00e9ret elve.<\/p>\n<p>Teh\u00e1t h\u00e1rom m\u00f3dszer a kognit\u00edv terhel\u00e9s cs\u00f6kkent\u00e9s\u00e9re:<\/p>\n<ol>\n<li>Cs\u00f6kkenteni azokat az id\u0151kereteket, amelyeket figyelembe kell venni\u00fck egy \u00faj funkci\u00f3 fejleszt\u00e9sekor \u2013 min\u00e9l r\u00f6videbb az id\u0151keret, ann\u00e1l alacsonyabb a kognit\u00edv terhel\u00e9s.<\/li>\n<li>Cs\u00f6kkenteni azt a k\u00f3dmennyis\u00e9get, amellyel egyszerre dolgoznak \u2013 kevesebb k\u00f3d \u2013 kevesebb terhel\u00e9s.<\/li>\n<li>Egyszer\u0171s\u00edteni a fokozatos v\u00e1ltoztat\u00e1sok v\u00e9grehajt\u00e1s\u00e1t az alkalmaz\u00e1sban.<\/li>\n<\/ol>\n<p>\n<b>A fejleszt\u00e9si id\u0151keretek cs\u00f6kkent\u00e9se<\/b><\/p>\n<p>T\u00e9rj\u00fcnk vissza azokra az id\u0151kre, amikor a waterfall m\u00f3dszertan <code>standard volt a fejleszt\u00e9si folyamatban, \u00e9s a hat h\u00f3napt\u00f3l k\u00e9t \u00e9vig terjed\u0151 id\u0151keretek az alkalmaz\u00e1s fejleszt\u00e9s\u00e9re vagy friss\u00edt\u00e9s\u00e9re \u00e1ltal\u00e1nos gyakorlatt\u00e1 v\u00e1ltak. \u00c1ltal\u00e1ban a m\u00e9rn\u00f6k\u00f6k el\u0151sz\u00f6r elolvast\u00e1k a megfelel\u0151 dokumentumokat, mint p\u00e9ld\u00e1ul a term\u00e9k k\u00f6vetelm\u00e9nyeket (PRD), a rendszer hivatkoz\u00e1si dokumentum\u00e1t (SRD), az architekt\u00fara tervet, \u00e9s elkezdt\u00e9k ezeket \u00f6sszegy\u00farni egy kognit\u00edv modellbe, amely alapj\u00e1n k\u00f3dot \u00edrtak. Ahogy a k\u00f6vetelm\u00e9nyek \u00e9s az architekt\u00fara v\u00e1ltozott, komoly er\u0151fesz\u00edt\u00e9seket kellett tenni az eg\u00e9sz csapat inform\u00e1l\u00e1s\u00e1ra a kognit\u00edv modell friss\u00edt\u00e9seir\u0151l. Ilyen megk\u00f6zel\u00edt\u00e9s a legrosszabb esetben egyszer\u0171en megb\u00e9n\u00edthatta a munk\u00e1t.<\/code> A legnagyobb v\u00e1ltoz\u00e1s az alkalmaz\u00e1sfejleszt\u00e9s folyamat\u00e1ban az agilis m\u00f3dszertan bevezet\u00e9se volt. Az agilis m\u00f3dszertan egyik alapvet\u0151 jellemz\u0151je az iterat\u00edv fejleszt\u00e9s.<\/p>\n<p>Ez viszont cs\u00f6kkenti a m\u00e9rn\u00f6k\u00f6k kognit\u00edv terhel\u00e9s\u00e9t. Ahelyett, hogy azt v\u00e1rn\u00e1nk a fejleszt\u0151i csapatt\u00f3l, hogy egy hossz\u00fa ciklus alatt megval\u00f3s\u00edts\u00e1k az alkalmaz\u00e1st, <code>ez a megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy kis mennyis\u00e9g\u0171 k\u00f3dra \u00f6sszpontos\u00edtsanak, amelyet gyorsan tesztelni \u00e9s telep\u00edteni lehet, mik\u00f6zben visszajelz\u00e9st is kapnak. Az alkalmaz\u00e1s kognit\u00edv terhel\u00e9se elmozdult a hat h\u00f3nap \u00e9s k\u00e9t \u00e9v k\u00f6z\u00f6tti id\u0151kerett\u0151l, figyelembe v\u00e9ve rengeteg specifik\u00e1ci\u00f3t egy k\u00e9thetes funkci\u00f3 hozz\u00e1ad\u00e1s\u00e1hoz vagy m\u00f3dos\u00edt\u00e1s\u00e1hoz, amit egy t\u00e1gabb \u00e9rtelemben vett nagy alkalmaz\u00e1sr\u00f3l val\u00f3 megl\u00e1t\u00e1s is kedvez\u0151bb\u00e9 tesz.<\/code> agile <code>ez a megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy kis mennyis\u00e9g\u0171 k\u00f3dra \u00f6sszpontos\u00edtsanak, amelyet gyorsan tesztelni \u00e9s telep\u00edteni lehet, mik\u00f6zben visszajelz\u00e9st is kapnak. Az alkalmaz\u00e1s kognit\u00edv terhel\u00e9se elmozdult a hat h\u00f3nap \u00e9s k\u00e9t \u00e9v k\u00f6z\u00f6tti id\u0151kerett\u0151l, figyelembe v\u00e9ve rengeteg specifik\u00e1ci\u00f3t egy k\u00e9thetes funkci\u00f3 hozz\u00e1ad\u00e1s\u00e1hoz vagy m\u00f3dos\u00edt\u00e1s\u00e1hoz, amit egy t\u00e1gabb \u00e9rtelemben vett nagy alkalmaz\u00e1sr\u00f3l val\u00f3 megl\u00e1t\u00e1s is kedvez\u0151bb\u00e9 tesz.<\/code> approach allows for a focus on small amounts of code that can be quickly tested and deployed, while also receiving feedback. The cognitive load of an application has shifted from a time frame of six months to two years with a huge number of specifications to a two-week addition or change of a feature, oriented toward a more nebulous understanding of a large application.<\/p>\n<p>A f\u00f3kusz elmozd\u00edt\u00e1sa a nagym\u00e9ret\u0171 alkalmaz\u00e1sokr\u00f3l konkr\u00e9t, kis funkci\u00f3kra, amelyeket k\u00e9t h\u00e9t alatt be lehet fejezni, an\u00e9lk\u00fcl, hogy t\u00f6bbet n\u00e9zn\u00e9nk el\u0151re, mint egy funkci\u00f3 a k\u00f6vetkez\u0151 sprintr\u0151l, jelent\u0151s v\u00e1ltoz\u00e1st jelent. Ez lehet\u0151v\u00e9 tette a fejleszt\u00e9si produktivit\u00e1s n\u00f6vel\u00e9s\u00e9t, mik\u00f6zben cs\u00f6kkentette a folyamatosan ingadoz\u00f3 kognit\u00edv terhel\u00e9st.<\/p>\n<p>A m\u00f3dszertan <code>ez a megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy kis mennyis\u00e9g\u0171 k\u00f3dra \u00f6sszpontos\u00edtsanak, amelyet gyorsan tesztelni \u00e9s telep\u00edteni lehet, mik\u00f6zben visszajelz\u00e9st is kapnak. Az alkalmaz\u00e1s kognit\u00edv terhel\u00e9se elmozdult a hat h\u00f3nap \u00e9s k\u00e9t \u00e9v k\u00f6z\u00f6tti id\u0151kerett\u0151l, figyelembe v\u00e9ve rengeteg specifik\u00e1ci\u00f3t egy k\u00e9thetes funkci\u00f3 hozz\u00e1ad\u00e1s\u00e1hoz vagy m\u00f3dos\u00edt\u00e1s\u00e1hoz, amit egy t\u00e1gabb \u00e9rtelemben vett nagy alkalmaz\u00e1sr\u00f3l val\u00f3 megl\u00e1t\u00e1s is kedvez\u0151bb\u00e9 tesz.<\/code> felt\u00e9telezi, hogy a v\u00e9gs\u0151 alkalmaz\u00e1s egy m\u00f3dos\u00edtott verzi\u00f3ja lesz az eredeti koncepci\u00f3nak, ez\u00e9rt a fejleszt\u00e9si folyamat v\u00e9gs\u0151 pontja sz\u00fcks\u00e9gszer\u0171en bizonytalan. Csak az egyes sprintek konkr\u00e9t eredm\u00e9nyei lehetnek vil\u00e1gosak \u00e9s egy\u00e9rtelm\u0171ek.<\/p>\n<p><b>Kis k\u00f3dalapok<\/b><\/p>\n<p>A kognit\u00edv terhel\u00e9s cs\u00f6kkent\u00e9s\u00e9nek k\u00f6vetkez\u0151 l\u00e9p\u00e9se a k\u00f3dalap cs\u00f6kkent\u00e9se. \u00c1ltal\u00e1ban a modern alkalmaz\u00e1sok nagym\u00e9ret\u0171ek \u2013 egy megb\u00edzhat\u00f3, v\u00e1llalati alkalmaz\u00e1s lehet t\u00f6bb ezer f\u00e1jlb\u00f3l \u00e9s sz\u00e1mos ezer sor k\u00f3db\u00f3l \u00e1ll. A f\u00e1jlok k\u00f6z\u00f6tti kapcsolatok \u00e9s a k\u00f3d f\u00e1jlok k\u00f6z\u00f6tti f\u00fcgg\u0151s\u00e9gek nyilv\u00e1nval\u00f3ak lehetnek, vagy \u00e9ppen ellenkez\u0151leg. M\u00e9g a k\u00f3d v\u00e9grehajt\u00e1s\u00e1nak hibakeres\u00e9se is probl\u00e9m\u00e1kat okozhat, att\u00f3l f\u00fcgg\u0151en, hogy milyen k\u00f6nyvt\u00e1rakat haszn\u00e1lunk, \u00e9s mennyire j\u00f3l k\u00fcl\u00f6nb\u00f6ztetik meg a hibakeres\u0151 eszk\u00f6z\u00f6k a k\u00f6nyvt\u00e1rakat\/csomagokat\/moduleket \u00e9s a felhaszn\u00e1l\u00f3i k\u00f3dot.<\/p>\n<p>A program k\u00f3dj\u00e1nak m\u0171k\u00f6d\u00e9si ment\u00e1lis modellj\u00e9nek fel\u00e9p\u00edt\u00e9se jelent\u0151s id\u0151t is ig\u00e9nybe vehet, \u00e9s \u00fajra nagy kognit\u00edv terhel\u00e9st r\u00f3 a fejleszt\u0151re. Ez k\u00fcl\u00f6n\u00f6sen jellemz\u0151 a monolitikus k\u00f3dalapokra, ahol a k\u00f3d mennyis\u00e9ge nagy, \u00e9s a funkcion\u00e1lis \u00f6sszetev\u0151k k\u00f6z\u00f6tti interakci\u00f3k nincsenek vil\u00e1gosan meghat\u00e1rozva, m\u00edg a figyelem sz\u00e9tv\u00e1laszt\u00e1sa gyakran elmos\u00f3dott, mivel nem tartj\u00e1k be a funkcion\u00e1lis hat\u00e1rokat. <\/p>\n<p>Az egyik hat\u00e9kony m\u00f3dszer a m\u00e9rn\u00f6k\u00f6k kognit\u00edv terhel\u00e9s\u00e9nek cs\u00f6kkent\u00e9s\u00e9re a mikroszerviz-architekt\u00far\u00e1ra val\u00f3 \u00e1tt\u00e9r\u00e9s. A mikroszerviz megk\u00f6zel\u00edt\u00e9s\u00e9ben minden szolg\u00e1ltat\u00e1s egy funkci\u00f3csoportra \u00f6sszpontos\u00edt; a szolg\u00e1ltat\u00e1s \u00e9rtelme \u00e1ltal\u00e1ban meghat\u00e1rozott \u00e9s \u00e9rthet\u0151. A szolg\u00e1ltat\u00e1s hat\u00e1rai is vil\u00e1gosak \u2013 ne feledj\u00fck, hogy a szolg\u00e1ltat\u00e1ssal val\u00f3 kommunik\u00e1ci\u00f3 API-n kereszt\u00fcl t\u00f6rt\u00e9nik, \u00edgy az egy szolg\u00e1ltat\u00e1s \u00e1ltal gener\u00e1lt adatok k\u00f6nnyen \u00e1tadhat\u00f3k egy m\u00e1siknak.<\/p>\n<p>A szolg\u00e1ltat\u00e1sok k\u00f6z\u00f6tti interakci\u00f3 \u00e1ltal\u00e1ban n\u00e9h\u00e1ny felhaszn\u00e1l\u00f3i szolg\u00e1ltat\u00e1sra \u00e9s a szolg\u00e1ltat\u00f3 n\u00e9h\u00e1ny szolg\u00e1ltat\u00e1s\u00e1ra korl\u00e1toz\u00f3dik, amelyek egyszer\u0171 \u00e9s tiszta API h\u00edv\u00e1sokat haszn\u00e1lnak, p\u00e9ld\u00e1ul REST seg\u00edts\u00e9g\u00e9vel. Ez azt jelenti, hogy a m\u00e9rn\u00f6k\u00f6k kognit\u00edv terhel\u00e9se jelent\u0151sen cs\u00f6kken. A legnehezebb feladat tov\u00e1bbra is a szolg\u00e1ltat\u00e1sok k\u00f6z\u00f6tti interakci\u00f3s modell meg\u00e9rt\u00e9se \u00e9s annak meg\u00e9rt\u00e9se, hogy az olyan dolgok, mint a tranzakci\u00f3k, hogyan t\u00f6rt\u00e9nnek t\u00f6bb szolg\u00e1ltat\u00e1sban. V\u00e9gs\u0151 soron a mikroszolg\u00e1ltat\u00e1sok alkalmaz\u00e1sa cs\u00f6kkenti a kognit\u00edv terhel\u00e9st az\u00e1ltal, hogy cs\u00f6kkenti a k\u00f3d mennyis\u00e9g\u00e9t, egy\u00e9rtelm\u0171 hat\u00e1rokat szab a szolg\u00e1ltat\u00e1sok k\u00f6z\u00f6tt, \u00e9s biztos\u00edtja a felhaszn\u00e1l\u00f3k \u00e9s szolg\u00e1ltat\u00f3k k\u00f6z\u00f6tti kapcsolatok meg\u00e9rt\u00e9s\u00e9t.<\/p>\n<p><b>Kis, fokozatos v\u00e1ltoz\u00e1sok<\/b><\/p>\n<p>A elv utols\u00f3 eleme <i>kicsinyek<\/i> \u2013 ez a v\u00e1ltoz\u00e1sok kezel\u00e9se. K\u00fcl\u00f6n\u00f6sen cs\u00e1b\u00edt\u00f3 a fejleszt\u0151k sz\u00e1m\u00e1ra, hogy r\u00e1pillantsanak a k\u00f3dalapra (m\u00e9g a saj\u00e1t, r\u00e9gebbi k\u00f3djukra is), \u00e9s azt mondj\u00e1k: \"Ez szem\u00e9tdomb, ezt mind \u00fajra kellene \u00edrni.\" N\u00e9ha ez helyes d\u00f6nt\u00e9s, m\u00e1skor nem. Ez a csapatra h\u00e1r\u00edtja a glob\u00e1lis modellv\u00e1ltoztat\u00e1s terh\u00e9t, ami viszont fokozott kognit\u00edv terhel\u00e9st eredm\u00e9nyez. Jobb, ha a m\u00e9rn\u00f6k\u00f6k arra \u00f6sszpontos\u00edtanak, hogy azokat a v\u00e1ltoztat\u00e1sokat v\u00e9gezz\u00e9k el a sprintek sor\u00e1n, amelyek r\u00e9v\u00e9n id\u0151ben ki tudj\u00e1k adni a sz\u00fcks\u00e9ges funkci\u00f3t, m\u00e9g ha fokozatosan is. A v\u00e9gterm\u00e9knek hasonl\u00edtania kell egy el\u0151re tervezett term\u00e9kre, n\u00e9h\u00e1ny m\u00f3dos\u00edt\u00e1ssal \u00e9s tesztel\u00e9ssel, hogy megfeleljen a kliens ig\u00e9nyeinek.<\/p>\n<p>N\u00e9ha lehetetlen gyorsan v\u00e9grehajtani a v\u00e1ltoztat\u00e1sokat nagy k\u00f3dr\u00e9szletek \u00e1tkonvert\u00e1l\u00e1sakor, mivel m\u00e1s rendszerszempontok is k\u00f6zbe l\u00e9pnek. A v\u00e1ltoz\u00e1sok \u00e1raml\u00e1s\u00e1nak ellen\u0151rz\u00e9s\u00e9re haszn\u00e1lhat\u00f3 a funkci\u00f3k elrejt\u00e9se (feature hiding). Ez l\u00e9nyeg\u00e9ben annyit jelent, hogy a funkci\u00f3 akt\u00edv a termel\u00e9si k\u00f6rnyezetben, de a k\u00f6rnyezeti v\u00e1ltoz\u00f3k (env-var) vagy m\u00e1s konfigur\u00e1ci\u00f3s mechanizmusok be\u00e1ll\u00edt\u00e1sai r\u00e9v\u00e9n nem el\u00e9rhet\u0151. Ha a k\u00f3d sikeresen teljes\u00edtette az \u00f6sszes min\u0151s\u00e9gellen\u0151rz\u00e9si folyamatot, akkor rejtve ker\u00fclhet a termel\u00e9si k\u00f6rnyezetbe. Ez a strat\u00e9gia azonban csak akkor m\u0171k\u00f6dik, ha a funkci\u00f3 v\u00e9g\u00fcl be lesz kapcsolva. Ellenkez\u0151 esetben csak zs\u00fafoltt\u00e1 teszi a k\u00f3dot, \u00edgy megn\u00f6veli a fejleszt\u0151kre nehezed\u0151 kognit\u00edv terheket, amelyeket kezelni\u00fck kell a hat\u00e9kony munk\u00e1hoz. A v\u00e1ltoz\u00e1sok kezel\u00e9se \u00e9s az increment\u00e1lis m\u00f3dos\u00edt\u00e1sok eleve seg\u00edtenek a fejleszt\u0151k kognit\u00edv terheinek el\u00e9rhet\u0151 szinten tart\u00e1s\u00e1ban. <\/p>\n<p>A m\u00e9rn\u00f6k\u00f6knek sok neh\u00e9zs\u00e9ggel kell megk\u00fczdeni\u00fck m\u00e9g egy \u00faj funkci\u00f3 egyszer\u0171 bevezet\u00e9sekor is. A vezet\u0151s\u00e9g r\u00e9sz\u00e9r\u0151l \u00e9sszer\u0171 lesz cs\u00f6kkenteni a csapatra nehezed\u0151 felesleges terheket, hogy a kulcsfontoss\u00e1g\u00fa funkci\u00f3kra tudjanak \u00f6sszpontos\u00edtani. H\u00e1rom dolgot tehet, hogy seg\u00edtse fejleszt\u0151csapat\u00e1t:<\/p>\n<ol>\n<li>Haszn\u00e1ljon m\u00f3dszertant <code>ez a megk\u00f6zel\u00edt\u00e9s lehet\u0151v\u00e9 teszi, hogy kis mennyis\u00e9g\u0171 k\u00f3dra \u00f6sszpontos\u00edtsanak, amelyet gyorsan tesztelni \u00e9s telep\u00edteni lehet, mik\u00f6zben visszajelz\u00e9st is kapnak. Az alkalmaz\u00e1s kognit\u00edv terhel\u00e9se elmozdult a hat h\u00f3nap \u00e9s k\u00e9t \u00e9v k\u00f6z\u00f6tti id\u0151kerett\u0151l, figyelembe v\u00e9ve rengeteg specifik\u00e1ci\u00f3t egy k\u00e9thetes funkci\u00f3 hozz\u00e1ad\u00e1s\u00e1hoz vagy m\u00f3dos\u00edt\u00e1s\u00e1hoz, amit egy t\u00e1gabb \u00e9rtelemben vett nagy alkalmaz\u00e1sr\u00f3l val\u00f3 megl\u00e1t\u00e1s is kedvez\u0151bb\u00e9 tesz.<\/code>, hogy korl\u00e1tozza az id\u0151kereteket, amelyekben a csapatnak koncentr\u00e1lnia kell a kulcsfontoss\u00e1g\u00fa funkci\u00f3kra.<\/li>\n<li>Val\u00f3s\u00edtsa meg alkalmaz\u00e1s\u00e1t t\u00f6bb mikroszolg\u00e1ltat\u00e1sk\u00e9nt. Ez korl\u00e1tozza a bevezetend\u0151 funkci\u00f3k sz\u00e1m\u00e1t, \u00e9s meger\u0151s\u00edti a hat\u00e1rokat, amelyek megakad\u00e1lyozz\u00e1k a kognit\u00edv terhel\u00e9st munka k\u00f6zben.<\/li>\n<li>El\u0151nyben r\u00e9szes\u00edtse az increment\u00e1lis v\u00e1ltoztat\u00e1sokat a nagym\u00e9ret\u0171, terjedelmes m\u00f3dos\u00edt\u00e1sokkal szemben, \u00e9s v\u00e1ltoztasson meg kis k\u00f3dr\u00e9szleteket. Alkalmazzon funkci\u00f3elrejt\u00e9st, hogy v\u00e9grehajthassa a m\u00f3dos\u00edt\u00e1sokat, m\u00e9g akkor is, ha azok nem l\u00e1that\u00f3k azonnal a hozz\u00e1ad\u00e1s ut\u00e1n.<\/li>\n<\/ol>\n<p>\nHa a munk\u00e1dban a kis l\u00e9pt\u00e9k elv\u00e9t alkalmazod, a csapatod sokkal boldogabb lesz, jobban tud f\u00f3kusz\u00e1lni a sz\u00fcks\u00e9ges funkci\u00f3k megval\u00f3s\u00edt\u00e1s\u00e1ra, \u00e9s val\u00f3sz\u00edn\u0171bb, hogy gyorsabban k\u00e9pes lesz min\u0151s\u00e9gi v\u00e1ltoztat\u00e1sokat bevezetni. De ez nem jelenti azt, hogy a munka nem bonyol\u00f3dhat, n\u00e9ha \u00e9ppen ellenkez\u0151leg, az \u00faj funkci\u00f3k bevezet\u00e9se t\u00f6bb szolg\u00e1ltat\u00e1s m\u00f3dos\u00edt\u00e1s\u00e1t ig\u00e9nyli, \u00e9s ez a folyamat bonyolultabb lehet, mint a hasonl\u00f3 egy monolitikus architekt\u00far\u00e1ban. Mindenesetre a kis l\u00e9pt\u00e9k alkalmaz\u00e1s\u00e1nak el\u0151nyei meg\u00e9rik az \u00e1r\u00e1t.<\/p>\n<p>Az els\u0151 r\u00e9sz v\u00e9ge.<\/p>\n<p>Hamarosan nyilv\u00e1nos\u00e1 tessz\u00fck a ford\u00edt\u00e1s m\u00e1sodik r\u00e9sz\u00e9t, de addig is v\u00e1rjuk a kommentjeiteket \u00e9s megh\u00edvunk a <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/mJ6e\/\">ny\u00edlt napra<\/a><\/noindex>, amely ma 20:00-kor ker\u00fcl megrendez\u00e9sre.<br \/>\n<br \/>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47A modern alkalmaz\u00e1sok fejleszt\u00e9s\u00e9nek elvei az NGINX-t\u0151l. 1. r\u00e9sz | ProHoster","description":"Hell\u00f3, bar\u00e1tok.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/printsipy-razrabotki-sovremennyh-prilozhenij-ot-nginx-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/34140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=34140"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/34140\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=34140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=34140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=34140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}