{"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\/it\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: come affrontare i problemi con XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao, Habr! In passato mi sono lamentato della vita nella penultima paradigmi Infrastructure as code senza offrire soluzioni per la situazione attuale. Oggi sono tornato per raccontare quali approcci e pratiche possono aiutare a uscire dall'abisso della disperazione e raddrizzare la situazione. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con 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 \/>\nNell'articolo precedente <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u00abInfrastructure as code: prima introduzione\u00bb<\/a><\/noindex> ho condiviso le mie impressioni su questo settore, ho cercato di riflettere sulla situazione attuale in quest'area e ho persino suggerito che pratiche standard, conosciute da tutti gli sviluppatori, potrebbero essere utili. Potrebbe sembrare che ci fossero molte lamentele sulla vita, ma mancavano proposte per uscire dalla situazione attuale. <\/p>\n<h2>Chi siamo, dove siamo e quali sono i nostri problemi<\/h2>\n<p>\nOra ci troviamo nel Sre Onboarding Team, composto da sei programmatori e tre ingegneri di infrastruttura. Tutti noi stiamo cercando di scrivere Infrastructure as code (IaC). Lo facciamo perch\u00e9 in linea di massima sappiamo scrivere codice e abbiamo un background di sviluppatori di livello 'sopra la media'. <\/p>\n<ul>\n<li>Abbiamo un insieme di vantaggi: un certo background, conoscenza delle pratiche, capacit\u00e0 di scrivere codice e voglia di imparare cose nuove. <\/li>\n<li>C'\u00e8 una parte pendente, che \u00e8 anche un aspetto negativo: la mancanza di conoscenze sulla scienza dei materiali dell'infrastruttura. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Stack tecnologico che utilizziamo nel nostro IaC.<\/b><\/p>\n<ul>\n<li>Terraform per creare risorse.<\/li>\n<li>Packer per creare immagini. Questi sono immagini di Windows e CentOS 7.<\/li>\n<li>Jsonnet per realizzare una potente build in drone.io, oltre che per generare packer json e i nostri moduli Terraform.<\/li>\n<li>Azure.<\/li>\n<li>Ansible durante la preparazione delle immagini.<\/li>\n<li>Python per servizi ausiliari e script di provisioning.<\/li>\n<li>E tutto questo in VSCode con plugin condivisi tra i membri del team.<\/li>\n<\/ul>\n<p>L'output del mio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">articolo precedente<\/a><\/noindex> era: ho cercato di infondere (soprattutto in me stesso) ottimismo, volevo dire che proveremo ad utilizzare gli approcci e le pratiche che conosciamo per affrontare le difficolt\u00e0 e le complessit\u00e0 presenti in questo campo. <\/p>\n<p>Attualmente stiamo affrontando problemi con l'IaC:<\/p>\n<ul>\n<li>Imperfezione degli strumenti e dei mezzi per sviluppare il codice.<\/li>\n<li>Lento dispiegamento. L'infrastruttura \u00e8 parte del mondo reale, e questo pu\u00f2 richiedere tempo.<\/li>\n<li>Mancanza di approcci e pratiche.<\/li>\n<li>Siamo principianti e non sappiamo molto.<\/li>\n<\/ul>\n<p><\/p>\n<h2>L'estreme programming (XP) corre in aiuto.<\/h2>\n<p>\nTutti gli sviluppatori conoscono bene l'estreme programming (XP) e le pratiche che lo accompagnano. Molti di noi hanno lavorato con questo approccio, e ha avuto successo. Quindi, perch\u00e9 non sfruttare i principi e le pratiche che ne derivano per affrontare le difficolt\u00e0 infrastrutturali? Abbiamo deciso di applicare questo approccio e vedere cosa ne risulta.<\/p>\n<p><b class=\"spoiler_title\">Verifica dell'applicabilit\u00e0 dell'approccio XP al tuo settore<\/b>Ecco una descrizione dell'ambiente in cui XP si adatta bene, e come si relaziona con noi: <\/p>\n<p>1. Requisiti software in continua evoluzione. Era chiaro qual era l'obiettivo finale. Ma nei dettagli \u00e8 possibile variare. Siamo noi a decidere quale direzione prendere, quindi i requisiti cambiano periodicamente (soprattutto da parte nostra). Prendendo in considerazione il team SRE, che automatizza da solo e stabilisce autonomamente i requisiti e l'ambito del lavoro, questo punto si applica bene. <\/p>\n<p>2. Rischi causati da progetti a tempo fisso che utilizzano nuove tecnologie. Possiamo incontrare rischi nell'uso di tecnologie a noi sconosciute. E questo \u00e8 sicuramente il nostro caso. L'intero progetto si basa sull'uso di tecnologie con cui non siamo completamente familiari. Questo \u00e8 un problema costante, poich\u00e9 nel settore delle infrastrutture emergono continuamente nuove tecnologie. <\/p>\n<p>3,4. Piccola squadra di sviluppo estesa e co-locata. La tecnologia che stai utilizzando consente test automatizzati a livello unitario e funzionale. Questi due punti non si adattano esattamente a noi. Innanzitutto, non siamo un team co-locato, e in secondo luogo, siamo nove persone, che possono essere considerate una grande squadra. Tuttavia, secondo alcune definizioni, una 'grande' squadra \u00e8 composta da 14 o pi\u00f9 persone. <\/p>\n<p>Esaminiamo alcune pratiche dell'XP e come influiscono sulla velocit\u00e0 e sulla qualit\u00e0 del feedback.<\/p>\n<h4>Il principio del ciclo di feedback nell'XP<\/h4>\n<p>\nNel mio modo di vedere, il feedback \u00e8 la risposta alla domanda se sto facendo bene, se stiamo andando nella giusta direzione. Nell'XP c'\u00e8 un diagramma molto interessante: il ciclo di feedback temporale. La cosa interessante \u00e8 che quanto pi\u00f9 in basso ci troviamo, pi\u00f9 velocemente possiamo ottenere l'output necessario per rispondere alle domande essenziali. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 un tema piuttosto interessante da discutere, poich\u00e9 nel settore IT \u00e8 possibile ottenere rapidamente un sistema operativo. Immagina quanto sarebbe frustrante lavorare a un progetto per sei mesi e poi scoprire che fin dall'inizio c'era un errore. Questo pu\u00f2 accadere sia nella progettazione che nella realizzazione di sistemi complessi. <\/p>\n<p>Nel nostro caso, IaC ci aiuta con il feedback. Faccio subito una piccola correzione allo schema sopra: il piano di rilascio non segue un ciclo mensile, ma avviene pi\u00f9 volte al giorno. A questo ciclo sono legate alcune pratiche che esamineremo pi\u00f9 in dettaglio.<\/p>\n<blockquote><p>Importante: il feedback pu\u00f2 diventare la soluzione per tutti i problemi sopra menzionati. Insieme alle pratiche XP, pu\u00f2 sollevarti dall'abisso della disperazione.<\/p><\/blockquote>\n<p><\/p>\n<h2>Come tirarsi fuori dall'abisso della disperazione: tre pratiche<\/h2>\n<p><\/p>\n<h4>Test <\/h4>\n<p>\nI test vengono menzionati due volte nel ciclo di feedback XP. Non \u00e8 casuale. Sono estremamente importanti per tutta la tecnica della programmazione estrema. <\/p>\n<p>Si presume che tu abbia test Unitari e di Accettazione. I primi ti forniscono feedback in pochi minuti, i secondi in qualche giorno, motivo per cui sono scritti pi\u00f9 a lungo e eseguiti meno frequentemente. <\/p>\n<p>Esiste una classica piramide di test che mostra che ci devono essere pi\u00f9 test di un certo tipo. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome si applica questo schema al nostro progetto IaC? In realt\u00e0... non si applica affatto. <\/p>\n<ul>\n<li>Nonostante ci dovrebbe essere un gran numero di unit test, in realt\u00e0 non possono essere cos\u00ec tanti. O sono molto indirettamente collegati a qualcosa. Possiamo dire che in effetti non li scriviamo affatto. Tuttavia, ecco alcune applicazioni per questi test che siamo riusciti a realizzare:\n<ol>\n<li>Test del codice su jsonnet. Questo \u00e8, ad esempio, il nostro pipeline di assemblaggio in drone, che \u00e8 abbastanza complesso. Il codice su jsonnet \u00e8 ben coperto dai test. <br \/>\n Utilizziamo questo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testing framework for Jsonnet<\/a><\/noindex>. <\/li>\n<li> Test degli script che vengono eseguiti all'avvio delle risorse. Gli script sono in Python, e quindi anche i test su di essi possono essere scritti.<\/li>\n<\/ol>\n<\/li>\n<li>\u00c8 potenzialmente possibile controllare la configurazione nei test, ma noi non facciamo cos\u00ec. C'\u00e8 anche la possibilit\u00e0 di configurare il controllo delle regole per la configurazione delle risorse tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Tuttavia, per terraform ci sono solo controlli di base, ma sono stati scritti molti scenari di verifica per AWS. E noi siamo su Azure, quindi non si adatta di nuovo.<\/li>\n<li>Test di integrazione dei componenti: qui dipende da come li classificano e dove li posizionano. Ma in linea di principio funzionano.\n<p>Ecco come appaiono i test di integrazione. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 un esempio di creazione di immagini in Drone CI. Per arrivarci, bisogna attendere 30 minuti affinch\u00e9 l'immagine Packer venga creata, poi altri 15 minuti perch\u00e9 vengano superati. Ma ci sono! <\/p>\n<p><b class=\"spoiler_title\">Algoritmo di verifica delle immagini<\/b> <\/p>\n<ol>\n<li>Prima di tutto, Packer deve preparare completamente l'immagine.<\/li>\n<li>Accanto al test c'\u00e8 Terraform con uno stato locale, con cui distribuiamo questa immagine. <\/li>\n<li>Durante la distribuzione viene utilizzato un piccolo modulo, posizionato accanto, per lavorare pi\u00f9 facilmente con l'immagine. <\/li>\n<li>Quando la VM \u00e8 stata distribuita dall'immagine, si possono iniziare le verifiche. In gran parte, le verifiche vengono effettuate sulla macchina. Si controlla come sono stati eseguiti gli script all'avvio e come funzionano i demoni. A questo scopo, tramite ssh o winrm, accediamo alla macchina appena avviata e controlliamo lo stato della configurazione o se i servizi sono stati avviati.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>Una situazione simile si presenta anche con i test di integrazione nei moduli per Terraform. Ecco una tabella riepilogativa che spiega le caratteristiche di tali test.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl feedback sulla pipeline \u00e8 di circa 40 minuti. Tutto richiede molto tempo. Pu\u00f2 essere usato per il regression testing, ma per lo sviluppo nuovo \u00e8 assolutamente impossibile. Se ci si prepara molto, predisponendo running e script, si pu\u00f2 ridurre a 10 minuti. Ma comunque non si tratta di test unitari che possono essere eseguiti in 5 secondi per 100 casi. <\/li>\n<\/ul>\n<p>\nL'assenza di test unitari nella costruzione di immagini o moduli di Terraform spinge a delegare il lavoro a servizi separati, che possono semplicemente essere chiamati tramite REST, o a script Python.<\/p>\n<p>Ad esempio, avevamo bisogno di fare in modo che all'avvio della macchina virtuale si registrasse nel servizio <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, e che all'eliminazione della macchina virtuale si cancellasse.<\/p>\n<p>Poich\u00e9 ScaleFT \u00e8 un nostro servizio, siamo costretti a lavorare con esso tramite API. \u00c8 stata scritta una wrapper che pu\u00f2 essere chiamata per dire: \u00abAccedi e cancella questo e quello\u00bb. Essa conserva tutte le configurazioni e gli accessi necessari. <\/p>\n<p>Ora possiamo scrivere test adeguati, poich\u00e9 questo non differisce affatto dal software normale: si simula un qualche API, la si chiama e si osserva cosa succede. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Risultati dei test: i test unitari, che dovrebbero fornire un feedback all'OS in un minuto, non lo fanno. Tuttavia, i livelli di test superiori nella piramide forniscono risultati, ma risolvono solo una parte dei problemi. <\/p><\/blockquote>\n<h4>Programmazione in coppia<\/h4>\n<p>\nI test sono sicuramente importanti. Si possono scrivere molti test, in diverse forme. Lavoreranno ai loro livelli e ci forniranno feedback. Ma il problema dei cattivi test unitari, che non forniscono il riscontro pi\u00f9 veloce all'OS, resta. Allo stesso tempo, si desidera ancora un'OS veloce, con cui \u00e8 facile e piacevole lavorare. Senza contare la qualit\u00e0 della soluzione finale. Fortunatamente, ci sono tecniche che permettono di ottenere un feedback ancora pi\u00f9 veloce rispetto ai test unitari. Questa \u00e8 la programmazione in coppia.<\/p>\n<p>Quando si scrive codice, si desidera ricevere il feedback sulla sua qualit\u00e0 il pi\u00f9 rapidamente possibile. Certo, si pu\u00f2 scrivere tutto in un ramo di funzionalit\u00e0 (per non rompere nulla a nessuno), fare una pull request su GitHub, assegnare a qualcuno il cui parere conta, e attendere una risposta. <\/p>\n<p>Ma si pu\u00f2 aspettare a lungo. Le persone sono tutte occupate, e la risposta, anche se arriva, potrebbe non essere della massima qualit\u00e0. Supponiamo che la risposta arrivi subito, il revisore ha capito immediatamente l'intero concetto, ma la risposta comunque arriva con ritardo, post factum. E invece si desidera farlo prima. Ecco perch\u00e9 la programmazione in coppia \u00e8 finalizzata a questo: per ottenere feedback immediato, mentre si scrive.<\/p>\n<p>Di seguito riporto gli stili della programmazione in coppia e la loro applicabilit\u00e0 nel lavoro su IaC: <\/p>\n<p><b>1. Classico, Esperto+Esperto, cambio a tempo.<\/b> Due ruoli \u2013 driver e navigator. Due persone. Lavorano sullo stesso codice e cambiano ruolo dopo un determinato intervallo di tempo precedentemente stabilito. <\/p>\n<p>Consideriamo la compatibilit\u00e0 dei nostri problemi con lo stile: <\/p>\n<ul>\n<li>Problema: imperfezione degli strumenti, mezzi per lo sviluppo del codice. <br \/>\nInfluenza negativa: sviluppo pi\u00f9 lungo, ci rallentiamo, si interrompe il ritmo di lavoro.<br \/>\n Come affrontiamo: utilizziamo un altro tooling, un IDE condiviso e impariamo anche le scorciatoie.<\/li>\n<li> Problema: distribuzione lenta. <br \/>\nInfluenza negativa: aumenta il tempo per creare un pezzo di codice funzionante. Ci annoiamo mentre aspettiamo, le mani si tendono a fare qualcos'altro mentre si attende. <br \/>\nCome affrontiamo: non siamo riusciti a risolverlo.<\/li>\n<li> Problema: mancanza di approcci e pratiche. <br \/>\nImpatto negativo: non si sa come fare bene e come fare male. Allunga il ricevimento di feedback. <br \/>\nCome affrontiamo: lo scambio di opinioni e pratiche nel lavoro a coppie quasi risolve il problema.<\/li>\n<\/ul>\n<p>\nLa principale difficolt\u00e0 nell'applicazione di questo stile in IaC \u00e8 il ritmo di lavoro irregolare. Nello sviluppo software tradizionale hai un'andatura molto regolare. Puoi impiegare cinque minuti e scrivere N. Spendere 10 minuti e scriverne 2N, 15 minuti \u2013 3N. Qui, puoi spendere cinque minuti e scrivere N, e poi spendere altri 30 minuti per scrivere un decimo di N. Qui non sai nulla, hai un blocco. L'analisi richiede tempo e distrae dalla programmazione vera e propria. <\/p>\n<blockquote><p>Conclusione: nella sua forma pura non ci si adatta.<\/p><\/blockquote>\n<p><b>2. Ping-pong. Questo approccio prevede che un partecipante scriva un test, mentre l'altro si occupa della sua implementazione.<\/b> Tenendo presente che gli Unit test sono complicati e che \u00e8 necessario scrivere un test di integrazione che richiede molto tempo per la programmazione, tutta la facilit\u00e0 del ping-pong svanisce. <\/p>\n<p>Posso dire che abbiamo provato a separare i compiti tra la progettazione dello script di test e la sua implementazione. Un partecipante creava lo script e in quest'area del lavoro era responsabile, aveva l'ultima parola. L'altro era incaricato dell'implementazione. Questo ha funzionato bene. La qualit\u00e0 dello script con questo approccio aumenta. <\/p>\n<blockquote><p>Conclusione: sfortunatamente, il ritmo di lavoro non consente di utilizzare il ping-pong come pratica di programmazione in coppia in 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\">Pratica complessa.<\/a><\/noindex>L'idea \u00e8 che un partecipante diventa un navigatore autoritario, mentre l'altro assume il ruolo di driver esecutivo. In questo caso, il diritto decisionale spetta esclusivamente al navigatore. Il driver si limita a scrivere e pu\u00f2 influenzare ci\u00f2 che accade con le parole. I ruoli non cambiano a lungo. <\/p>\n<p>Adatto per l'apprendimento, ma richiede forti soft skills. Qui ci siamo inceppati. La tecnica \u00e8 stata difficile. E non si tratta nemmeno dell'infrastruttura. <\/p>\n<blockquote><p>Conclusione: potenzialmente applicabile, non desistiamo dai tentativi.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming e tutti gli stili noti, ma non elencati qui.<\/b> Non li consideriamo, poich\u00e9 non li abbiamo provati e non possiamo parlare di questo nel contesto del nostro lavoro.<\/p>\n<blockquote><p>Risultati generali sull'utilizzo del pair programming:<\/p>\n<ul>\n<li>Abbiamo un ritmo di lavoro irregolare che crea confusione.<\/li>\n<li>Ci siamo scontrati con soft skills non sufficientemente sviluppate. E l'area tematica non facilita il superamento di queste nostre carenze.<\/li>\n<li>Test lunghi e problemi con gli strumenti rendono la programmazione in coppia difficile.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Nonostante ci\u00f2, ci sono stati anche dei successi. Abbiamo ideato il nostro metodo \"Convergenza \u2013 Divergenza\".<\/b> Descriver\u00f2 brevemente come funziona. <\/p>\n<p>Abbiamo partner fissi per alcuni giorni (meno di una settimana). Lavoriamo insieme su un compito. Per un certo periodo stiamo insieme: uno scrive, l'altro osserva, come un supporto. Poi ci separiamo per un po', ognuno lavora su attivit\u00e0 indipendenti, poi ci riuniamo rapidamente, ci sincronizziamo, facciamo qualcosa insieme e ci separiamo di nuovo. <\/p>\n<h4>Pianificazione e comunicazione<\/h4>\n<p>\nL'ultimo gruppo di pratiche attraverso le quali si risolvono i problemi OS \u00e8 l'organizzazione del lavoro stesso con i compiti. Qui rientra anche lo scambio di esperienze, che si trova al di fuori del lavoro in coppia. Esaminiamo tre pratiche:<\/p>\n<p><b>1. Compiti tramite l'albero degli obiettivi.<\/b> La gestione generale del progetto \u00e8 organizzata attraverso un albero che si estende all'infinito nel futuro. Tecnologicamente, la gestione avviene tramite Miro. C'\u00e8 un compito principale \u2013 un obiettivo intermedio. Da questo si diramano obiettivi pi\u00f9 piccoli o gruppi di attivit\u00e0. Da questi scaturiscono le singole attivit\u00e0. Tutte le attivit\u00e0 vengono create e gestite su questa bacheca. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto schema fornisce anche un feedback che avviene una volta al giorno, quando ci sincronizziamo durante le riunioni. Avere un piano comune, strutturato e completamente aperto, consente a tutti di essere a conoscenza di ci\u00f2 che sta accadendo e di quanto abbiamo fatto fino ad oggi. <\/p>\n<p>Vantaggi della visualizzazione delle attivit\u00e0:<\/p>\n<ul>\n<li>Causalit\u00e0. Ogni attivit\u00e0 porta a un obiettivo globale. Le attivit\u00e0 sono raggruppate in obiettivi pi\u00f9 piccoli. Il dominio dell'infrastruttura \u00e8 piuttosto tecnico. Non \u00e8 sempre chiaro quale impatto specifico abbia sull'azienda, ad esempio, la scrittura di un runbook per la migrazione su un altro nginx. Avere vicino una scheda obiettivo rende questo pi\u00f9 comprensibile.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n La causalit\u00e0 \u00e8 una propriet\u00e0 importante delle attivit\u00e0. Risponde direttamente alla domanda: \u00abSt\u00f2 facendo la cosa giusta?\u00bb <\/li>\n<li>Paralleli. Siamo nove persone e non \u00e8 fisicamente possibile che tutti si occupino di un singolo compito. Non sempre ci sono abbastanza compiti in un unico settore. Siamo costretti a svolgere il lavoro in parallelo tra piccoli gruppi di lavoro. In questo modo, i gruppi si concentrano su un compito per un certo periodo di tempo, e possono essere rinforzati da qualcun altro. A volte alcune persone lasciano il gruppo di lavoro. Qualcuno va in vacanza, qualcuno presenta un report per la conferenza DevOps conf, qualcun altro scrive un articolo su Habr. \u00c8 molto importante sapere quali obiettivi e compiti possono essere svolti in parallelo. <\/li>\n<\/ul>\n<p>\n<b>2. Leader sostituibili per le riunioni mattutine.<\/b> Nei nostri stand-up \u00e8 emerso un problema: molte persone stanno svolgendo compiti in parallelo. A volte i compiti sono poco correlati e non c'\u00e8 chiarezza su chi stia facendo cosa. L'opinione di un altro membro del team \u00e8 molto importante. Questa \u00e8 un'informazione supplementare che pu\u00f2 cambiare l'andamento della risoluzione del compito. Certo, di solito c'\u00e8 qualcuno con cui lavorare in coppia, ma consultazioni e suggerimenti non sono mai superflui. <\/p>\n<p>Per migliorare questa situazione, abbiamo applicato la tecnica della \"Rotazione del facilitatore di standup\". Ora ruotano secondo un elenco specifico, e questo ha il suo effetto. Quando arriva il tuo turno, sei costretto a immergerti e capire cosa sta succedendo, per condurre bene la riunione di scrumming. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Demo interna.<\/b> L'assistenza nella risoluzione dei problemi tramite programmazione in coppia, la visualizzazione su un albero delle attivit\u00e0 e l'aiuto durante le riunioni di scrumming al mattino sono utili, ma non ideali. In coppia sei limitato solo dalle tue conoscenze. L'albero delle attivit\u00e0 aiuta a comprendere globalmente chi fa cosa. E il facilitatore e i colleghi durante la riunione mattutina non si immergeranno profondamente nei tuoi problemi. Possono sicuramente trascurare qualcosa. <\/p>\n<p>La soluzione \u00e8 stata trovata mostrando i lavori svolti l'uno all'altro e discutendoli successivamente. Ci incontriamo una volta alla settimana per un'ora e mostriamo i dettagli delle soluzioni sui compiti svolti nell'ultima settimana. <\/p>\n<p>Durante la dimostrazione \u00e8 necessario rivelare i dettagli dell'attivit\u00e0 e dimostrarne assolutamente il funzionamento. <\/p>\n<p><b class=\"spoiler_title\">Il resoconto pu\u00f2 essere fatto seguendo un checklist.<\/b>1. Introduci il contesto. Da dove \u00e8 emersa l'attivit\u00e0, perch\u00e9 era necessaria?<\/p>\n<p>2. Come veniva risolta la questione prima? Ad esempio, era necessario effettuare clic massivi con il mouse, oppure era impossibile fare qualcosa.<\/p>\n<p>3. Come miglioriamo questo. Ad esempio: \u00abGuarda, ora c'\u00e8 uno script, ecco il README\u00bb.<\/p>\n<p>4. Mostra come funziona. Sarebbe ideale eseguire un qualche scenario utente. Voglio X, faccio Y, vedo Z (o Y). Per esempio, distribuisco NGINX, controllo l'url, ottengo 200 OK. Se l'azione richiede tempo, preparati prima per poterlo dimostrare. \u00c8 consigliabile non rompere nulla, soprattutto se fragile, un'ora prima della demo.<\/p>\n<p>5. Spiega quanto bene \u00e8 stata risolta la problema, quali difficolt\u00e0 sono rimaste, cosa non \u00e8 stato completato, quali miglioramenti sono possibili in futuro. Ad esempio, ora abbiamo il CLI, in seguito ci sar\u00e0 una completa automazione in CI.<\/p>\n<p>Ogni relatore dovrebbe rimanere entro i 5-10 minuti. Se la tua presentazione \u00e8 particolarmente importante e richieder\u00e0 pi\u00f9 tempo, accordati in anticipo nel canale sre-takeover.<\/p>\n<p>Dopo la parte dal vivo, ci sar\u00e0 necessariamente una discussione nel thread. Qui emerge il feedback necessario sulle proprie attivit\u00e0. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAlla fine viene condotto un sondaggio per valutare l'utilit\u00e0 di quanto sta accadendo. Questa \u00e8 gi\u00e0 una retroazione riguardo l'essenza della presentazione e l'importanza del compito.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: come affrontare i problemi con XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Conclusioni lunghe e cosa fare dopo<\/h2>\n<p>\nPotrebbe sembrare che il tono dell'articolo sia piuttosto pessimista. Non \u00e8 cos\u00ec. Due livelli di base per ottenere feedback, ovvero i test e la programmazione in coppia, stanno funzionando. Non cos\u00ec perfettamente come nello sviluppo tradizionale, ma c'\u00e8 un effetto positivo. <\/p>\n<p>I test, nella loro forma attuale, offrono solo una copertura parziale del codice. Molte funzionalit\u00e0 di configurazione risultano non testate. Il loro impatto sull'operativit\u00e0 nel momento della scrittura del codice \u00e8 basso. Tuttavia, c'\u00e8 un effetto positivo dai test di integrazione, che permettono di effettuare refactoring senza timori. Questo \u00e8 un grande risultato. Con il trasferimento del focus verso lo sviluppo in linguaggi di alto livello (noi usiamo Python, Go), il problema si attenua. Inoltre, per le verifiche 'collanti', ce ne sono molte e non \u00e8 necessario, basta la verifica generale di integrazione.<\/p>\n<p>Il lavoro di coppia dipende molto dalle persone specifiche coinvolte. Ci sono fattori relativi al compito e alle nostre soft skills. A volte si riesce a collaborare molto bene, altre volte meno. Di sicuro c'\u00e8 un vantaggio. \u00c8 chiaro che, anche considerando il rispetto insufficiente delle regole del lavoro di coppia, il semplice fatto di lavorare insieme ha un'influenza positiva sulla qualit\u00e0 del risultato. Personalmente, trovo pi\u00f9 facile e piacevole lavorare in coppia.<\/p>\n<p>Metodi di intervento pi\u00f9 avanzati sul sistema operativo \u2013 pianificazione e gestione dei compiti portano effettivamente a risultati: uno scambio di conoscenze di alta qualit\u00e0 e un miglioramento nella qualit\u00e0 dello sviluppo. <\/p>\n<h4>Conclusioni brevi in una sola riga <\/h4>\n<p><\/p>\n<ul>\n<li>Le pratiche XP funzionano in IaC, ma con un'efficacia inferiore.<\/li>\n<li>Rafforzate ci\u00f2 che funziona.<\/li>\n<li>Inventate i vostri meccanismi e pratiche compensativi.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/470620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b,\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Infrastruttura come codice: come affrontare i problemi con XP | ProHoster","description":"Ciao, Habr! In passato mi sono lamentato della vita nella paradigma dell'Infrastructure as Code e non ho proposto soluzioni per la situazione attuale. Oggi sono tornato per raccontare quali approcci e pratiche possono aiutare a uscire dall'abisso della disperazione e indirizzare la situazione nella giusta direzione. Nel precedente articolo \"Infrastructure as Code: primo incontro\" ho condiviso le mie impressioni su questo campo,","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b,","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:25:42+00:00","article:modified_time":"2019-10-31T19:25:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38747","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:16:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:04:30","updated":"2026-01-23 23:16:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}