{"id":87467,"date":"2020-07-08T13:42:11","date_gmt":"2020-07-08T11:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn"},"modified":"2020-07-08T13:42:11","modified_gmt":"2020-07-08T11:42:11","slug":"rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Guida per principianti: creiamo un pipeline DevOps","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Se sei un novizio in DevOps, dai un'occhiata a questa guida per costruire il tuo primo pipeline in cinque fasi.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Guida per principianti: creiamo un pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps \u00e8 diventato la soluzione standard per risolvere processi di sviluppo software lenti, disconnessi o non funzionanti. Il problema \u00e8 che, se sei un principiante in DevOps e non sai da dove cominciare, potresti mancare di comprensione di questi metodi. In questo articolo parleremo di cosa sia un pipeline DevOps, insieme a una guida per costruirne uno in cinque passi. Anche se questo tutorial non \u00e8 esaustivo, dovrebbe fornirti una base per iniziare il tuo percorso e ampliare le tue conoscenze in futuro. Ma cominciamo con la storia.<\/p>\n<h3>Il mio viaggio nel DevOps<\/h3>\n<p>\nIn passato ho lavorato nel team cloud di Citi Group, sviluppando un'applicazione web per l'Infrastructure-as-a-Service (IaaS) per la gestione dell'infrastruttura cloud di Citi, ma sono sempre stato interessato a come rendere il processo di sviluppo pi\u00f9 efficiente e portare cambiamenti culturali positivi nel team di sviluppo. La risposta l'ho trovata in un libro raccomandato da Greg Lavender, il direttore tecnico di Citi per l'architettura e l'infrastruttura cloud. Il libro si intitola \u00abIl Progetto Fenice\u00bb (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">Il Progetto Fenice<\/a><\/noindex>), e in esso vengono spiegati i principi del DevOps, presentati come un romanzo.<\/p>\n<p>Nella tabella sul retro del libro \u00e8 mostrato quanto spesso le diverse aziende distribuiscono i loro sistemi in un ambiente di rilascio:<\/p>\n<p>Amazon: 23.000 al giorno<br \/>\nGoogle: 5.500 al giorno<br \/>\nNetflix: 500 al giorno<br \/>\nFacebook: Una volta al giorno<br \/>\nTwitter: 3 volte a settimana<br \/>\nAzienda tipica: Una volta ogni 9 mesi<\/p>\n<p>Come sono possibili le frequenze di Amazon, Google e Netflix? Tutto perch\u00e9 queste aziende hanno trovato il modo di creare una pipeline DevOps quasi perfetta.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEravamo lontani da questo fino a quando non abbiamo implementato DevOps in Citi. All'epoca, nel mio team c'erano vari ambienti, ma il deployment sul server di sviluppo era completamente manuale. Tutti gli sviluppatori avevano accesso a un solo server di sviluppo basato su IBM WebSphere Application Server Community Edition. Il problema era che il server si spegneva ogni volta che pi\u00f9 utenti tentavano di eseguire il deployment contemporaneamente, quindi gli sviluppatori dovevano informarsi reciprocamente delle loro intenzioni, il che era piuttosto doloroso. Inoltre, c'erano problemi con una copertura del codice a basso livello, processi di deployment manuali ingombranti e l'assenza di tracciabilit\u00e0 del codice deployato associato a un determinato task o storia utente.<\/p>\n<p>Ho capito che era necessario agire e ho trovato un collega con cui condividere la stessa visione. Abbiamo deciso di collaborare per creare un primo pipeline DevOps: lui ha installato una macchina virtuale e un server applicativo Tomcat, mentre io lavoravo su Jenkins, integrando Atlassian Jira e BitBucket, e occupandomi della copertura dei test del codice. Questo progetto collaterale \u00e8 stato molto successo: abbiamo quasi completamente automatizzato molti processi, raggiunto un'affidabilit\u00e0 del nostro server di sviluppo del quasi 100%, garantito monitoraggio e migliorato la copertura dei test del codice, e aggiunto la possibilit\u00e0 di collegare i rami in Git con le attivit\u00e0 in Jira o i deployment. La maggior parte degli strumenti che abbiamo utilizzato per costruire la nostra pipeline DevOps erano open source.<\/p>\n<p>Ora capisco quanto fosse semplice la nostra pipeline DevOps: non abbiamo usato estensioni come Jenkins files o Ansible. Tuttavia, questa pipeline semplice funzionava bene, forse grazie al principio di Pareto (noto anche come regola 80\/20).<\/p>\n<h3>Introduzione al DevOps e alla pipeline CI\/CD<\/h3>\n<p>\nSe chiedi a diverse persone: \"Che cos'\u00e8 il DevOps?\", probabilmente riceverai risposte diverse. Il DevOps, come l'Agile, si \u00e8 evoluto per comprendere molteplici discipline, ma la maggior parte delle persone concorda su alcuni aspetti: il DevOps \u00e8 una pratica di sviluppo software o un ciclo di vita dello sviluppo software (SDLC) con al centro il cambiamento della cultura, in cui sviluppatori e non sviluppatori operano in un ambiente in cui:<\/p>\n<p>Sono automatizzate operazioni che prima venivano svolte manualmente; <br \/>\nOgnuno fa ci\u00f2 che sa fare meglio;<br \/>\nIl numero di implementazioni in un determinato intervallo di tempo aumenta; aumenta la capacit\u00e0 di lavoro; <br \/>\nSi migliora la flessibilit\u00e0 nello sviluppo.<\/p>\n<p>Sebbene avere i giusti strumenti software non sia l'unica cosa necessaria per creare un ambiente DevOps, alcuni strumenti sono indispensabili. Uno strumento chiave \u00e8 l'integrazione continua e il deployment continuo (CI\/CD). In questa pipeline, gli ambienti hanno varie fasi (ad esempio, DEV, INT, TST, QA, UAT, STG, PROD), molte operazioni sono automatizzate e gli sviluppatori possono scrivere codice di alta qualit\u00e0, ottenere flessibilit\u00e0 nello sviluppo e un'alta frequenza di deployment.<\/p>\n<p>Questo articolo descrive un approccio a cinque fasi per la creazione di una pipeline DevOps, simile a quella mostrata nel diagramma seguente, utilizzando strumenti open source.<\/p>\n<h3>Passo 1: Metodi CI\/CD<\/h3>\n<p>\nLa prima cosa necessaria \u00e8 uno strumento per CI\/CD. Jenkins, uno strumento open source basato su Java e distribuito con licenza MIT, \u00e8 il mezzo che ha reso popolare l'approccio DevOps ed \u00e8 diventato lo standard de facto.<\/p>\n<p>Cos'\u00e8 Jenkins? Pensalo come un magico telecomando universale che pu\u00f2 comunicare con vari servizi e strumenti, organizzandoli. Di per s\u00e9, uno strumento CI\/CD come Jenkins \u00e8 inutile, ma diventa pi\u00f9 potente man mano che si connette a diversi strumenti e servizi.<\/p>\n<p>Jenkins \u00e8 solo uno dei tanti strumenti open source per CI\/CD che puoi utilizzare per costruire un pipeline DevOps.<\/p>\n<p>Jenkins: Creative Commons e MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>Ecco come appaiono i processi DevOps con uno strumento CI\/CD:<\/p>\n<p><img decoding=\"async\" alt=\"Guida per principianti: creiamo un pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hai uno strumento CI\/CD in esecuzione sul tuo localhost, ma al momento puoi fare poco. Passiamo quindi alla fase successiva del viaggio nel mondo DevOps.<\/p>\n<h3>Passo 2: Gestione dei sistemi di controllo del codice sorgente<\/h3>\n<p>\nIl miglior (e forse il pi\u00f9 semplice) modo per verificare che il tuo strumento CI\/CD possa fare magie \u00e8 integrarlo con uno strumento di controllo della versione (SCM). Perch\u00e9 hai bisogno del controllo del codice sorgente? Supponiamo che tu stia sviluppando un'applicazione. Ogni volta che crei un'app, stai programmando e non importa se usi Java, Python, C++, Go, Ruby, JavaScript o uno qualsiasi dei tantissimi linguaggi di programmazione. Il codice che scrivi si chiama codice sorgente. All'inizio, specialmente quando lavori da solo, probabilmente puoi mettere tutto in una directory locale. Ma quando il progetto cresce e inviti altre persone a collaborare, hai bisogno di un modo per prevenire conflitti mentre condividi efficacemente le modifiche. Hai anche bisogno di un modo per ripristinare versioni precedenti, perch\u00e9 creare backup e fare copia\/incollo \u00e8 ormai obsoleto. Hai bisogno di qualcosa di meglio per te e per i tuoi compagni di squadra.<\/p>\n<p>\u00c8 proprio qui che uno strumento di controllo del codice sorgente diventa praticamente fondamentale. Questo strumento salva il tuo codice nei repository, tiene traccia delle versioni e coordina il lavoro dei membri del progetto.<\/p>\n<p>Sebbene esistano numerosi strumenti di controllo del codice sorgente, Git \u00e8 lo standard, e questo \u00e8 un dato di fatto. Ti consiglio vivamente di utilizzare Git, anche se, se lo desideri, ci sono altre opzioni open source.<\/p>\n<p>Git: GPLv2 e LGPL v2.1<br \/>\nSubversion: Apache 2.0<br \/>\nConcurrent Versions System (CVS): GNU<br \/>\nVesta: LGPL<br \/>\nMercurial: GNU GPL v2+<\/p>\n<p>Ecco come appare una pipeline DevOps con l'aggiunta di strumenti di controllo del codice sorgente.<\/p>\n<p><img decoding=\"async\" alt=\"Guida per principianti: creiamo un pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Uno strumento CI\/CD pu\u00f2 automatizzare i processi di verifica, acquisizione del codice sorgente e collaborazione tra i membri. Non sembra male? Ma come creare un'applicazione funzionante che miliardi di persone possano usare e apprezzare?<\/p>\n<h3>Passo 3: Creazione dello strumento di automazione della compilazione<\/h3>\n<p>\nOttimo! Puoi controllare il codice e apportare modifiche al sistema di controllo del codice sorgente, oltre a invitare i tuoi amici a collaborare allo sviluppo. Ma non hai ancora creato un'applicazione. Per fare un'applicazione web, deve essere compilata e impacchettata in un formato di pacchetto distribuibile o eseguita come file eseguibile. (Tieni presente che un linguaggio di programmazione interpretato, come JavaScript o PHP, non richiede compilazione).<\/p>\n<p>Utilizza uno strumento di automazione della compilazione. Indipendentemente dallo strumento di automazione della compilazione che decidi di utilizzare, tutti perseguono lo stesso obiettivo: raccogliere il codice sorgente in un formato desiderato e automatizzare il compito di pulizia, compilazione, test e distribuzione in un determinato ambiente. Gli strumenti di compilazione varieranno a seconda del tuo linguaggio di programmazione, ma ecco alcune opzioni comuni open source.<\/p>\n<p>Nome<br \/>\nLicenza<br \/>\nLinguaggio di programmazione<\/p>\n<p>Maven<br \/>\nApache 2.0<br \/>\n Java<\/p>\n<p>Ant<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Gradle<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Bazel<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Make<br \/>\nGNU<br \/>\nN\/A<\/p>\n<p>Grunt<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Gulp<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Buildr<br \/>\nApache<br \/>\nRuby<\/p>\n<p>Rake<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>A-A-P<br \/>\nGNU<br \/>\nPython<\/p>\n<p>SCons<br \/>\nMIT<br \/>\nPython<\/p>\n<p>BitBake<br \/>\nGPLv2<br \/>\nPython<\/p>\n<p>Cake<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>Ottimo! Puoi inserire i file di configurazione dello strumento di automazione della build nel sistema di gestione del codice sorgente e lasciare che il tuo strumento CI\/CD componga tutto insieme.<\/p>\n<p><img decoding=\"async\" alt=\"Guida per principianti: creiamo un pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Tutto bene, vero? Ma dove vuoi distribuire la tua applicazione?<\/p>\n<h3>Passo 4: Server per applicazioni web<\/h3>\n<p>\nFinora hai un file impacchettato, che pu\u00f2 essere eseguibile o installabile. Affinch\u00e9 qualsiasi applicazione sia davvero utile, deve fornire qualche servizio o interfaccia, ma hai bisogno di un contenitore per ospitare la tua applicazione.<\/p>\n<p>Il server per applicazioni web \u00e8 proprio quel contenitore. Il server fornisce un ambiente in cui pu\u00f2 essere definita la logica del pacchetto da distribuire. Inoltre, il server offre un'interfaccia e mette a disposizione servizi web, aprendo socket per il mondo esterno. Hai bisogno di un server HTTP, oltre a un ambiente (come una macchina virtuale) per la sua installazione. Per ora, supponiamo che tu lo scopra pi\u00f9 avanti (anche se parler\u00f2 di contenitori pi\u00f9 sotto).<\/p>\n<p>Esistono diversi server per applicazioni web open source.<\/p>\n<p>Nome<br \/>\nLicenza<br \/>\nLinguaggio di programmazione<\/p>\n<p>Tomcat<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Jetty<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>WildFly<br \/>\nGNU Lesser Public<br \/>\nJava<\/p>\n<p>GlassFish<br \/>\nCDDL &amp; GNU Less Public<br \/>\nJava<\/p>\n<p>Django<br \/>\n3-Clause BSD<br \/>\nPython<\/p>\n<p>Tornado<br \/>\nApache 2.0<br \/>\nPython<\/p>\n<p>Gunicorn<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Python<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Rails<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>Node.js<br \/>\nMIT<br \/>\nJavascript<\/p>\n<p>Il tuo pipeline DevOps \u00e8 quasi pronto per l'uso. Ottimo lavoro!<\/p>\n<p><img decoding=\"async\" alt=\"Guida per principianti: creiamo un pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Anche se puoi fermarti qui e gestire l'integrazione da solo, la qualit\u00e0 del codice \u00e8 fondamentale per uno sviluppatore di applicazioni e vale la pena prendersene cura.<\/p>\n<h3>Passo 5: Copertura dei test del codice<\/h3>\n<p>\nImplementare i test pu\u00f2 essere un'ulteriore richiesta complessa, ma gli sviluppatori devono rilevare eventuali errori nell'applicazione in una fase iniziale e migliorare la qualit\u00e0 del codice per garantire che gli utenti finali siano soddisfatti. Fortunatamente, esistono molti strumenti open source per testare il tuo codice e fornire raccomandazioni per migliorare la sua qualit\u00e0. Ancora meglio, la maggior parte degli strumenti CI\/CD pu\u00f2 integrarsi con questi strumenti e automatizzare il processo.<\/p>\n<p>Il testing del codice consiste in due parti: framework di testing del codice che aiutano a scrivere e eseguire test, e strumenti di suggerimento che aiutano a migliorare la qualit\u00e0 del codice.<\/p>\n<p><b>Sistemi di testing del codice<\/b><\/p>\n<p>Nome<br \/>\nLicenza<br \/>\nLinguaggio di programmazione<\/p>\n<p>JUnit<br \/>\nEclipse Public License<br \/>\nJava<\/p>\n<p>EasyMock<br \/>\nApache<br \/>\nJava<\/p>\n<p>Mockito<br \/>\nMIT<br \/>\nJava<\/p>\n<p>PowerMock<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Pytest<br \/>\n MIT<br \/>\nPython<\/p>\n<p>Hypothesis<br \/>\nMozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p><b>Sistemi di raccomandazione per migliorare il codice<\/b><\/p>\n<p>Nome<br \/>\nLicenza<br \/>\nLinguaggio di programmazione<\/p>\n<p>Cobertura<br \/>\nGNU<br \/>\nJava<\/p>\n<p>CodeCover<br \/>\nEclipse Public (EPL)<br \/>\nJava<\/p>\n<p>Coverage.py<br \/>\n Apache 2.0<br \/>\nPython<\/p>\n<p>Emma<br \/>\nCommon Public License<br \/>\nJava<\/p>\n<p>JaCoCo<br \/>\n Eclipse Public License<br \/>\nJava<\/p>\n<p>Hypothesis<br \/>\n Mozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Jasmine<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Karma<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Mocha<br \/>\n MIT<br \/>\nJavaScript<\/p>\n<p>Jest<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Nota che la maggior parte degli strumenti e dei framework menzionati sopra sono scritti per Java, Python e JavaScript, mentre C++ e C# sono linguaggi di programmazione proprietari (sebbene GCC abbia un codice sorgente aperto).<\/p>\n<p>Ora che hai implementato strumenti di copertura del codice attraverso dei test, il tuo pipeline DevOps dovrebbe apparire simile al diagramma mostrato all'inizio di questa guida.<\/p>\n<h3>Passi aggiuntivi<\/h3>\n<p>\n<b>Container<\/b><\/p>\n<p>Come ho gi\u00e0 detto, puoi ospitare il tuo server su una macchina virtuale o su un server, ma i contenitori sono una soluzione popolare.<\/p>\n<p>Cosa sono i contenitori? In breve, una macchina virtuale richiede un ingente volume di memoria del sistema operativo, superiore alla dimensione dell'applicazione, mentre un contenitore ha bisogno solo di alcune librerie e configurazioni per eseguire l'applicazione. \u00c8 evidente che le macchine virtuali hanno ancora applicazioni importanti, ma un contenitore \u00e8 una soluzione leggera per l'hosting di applicazioni, inclusi i server di applicazione.<\/p>\n<p>Sebbene ci siano altre opzioni di container, i pi\u00f9 popolari sono Docker e Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Strumenti di automazione intermedi<\/b><\/p>\n<p>Il nostro pipeline DevOps \u00e8 principalmente focalizzato sulla co-creazione e sul disegno di applicazioni, ma ci sono molte altre cose che possono essere fatte con gli strumenti DevOps. Una di queste \u00e8 l'utilizzo di strumenti Infrastructure as Code (IaC), noti anche come strumenti di automazione intermedi. Questi strumenti aiutano ad automatizzare l'installazione, la gestione e altre attivit\u00e0 per il software intermedio. Ad esempio, uno strumento di automazione pu\u00f2 estrarre applicazioni come server di applicazioni, database e strumenti di monitoraggio, con configurazioni appropriate e distribuirle su un server di applicazioni.<\/p>\n<p>Ecco alcuni strumenti di automazione intermedi open source:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache o GPL<\/p>\n<p><img decoding=\"async\" alt=\"Guida per principianti: creiamo un pipeline DevOps\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Scopri come ottenere una professione richiesta da zero o migliorare le tue competenze e stipendio, seguendo corsi online a pagamento di SkillFactory:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DEVOPS&amp;utm_term=regular&amp;utm_content=07072002\">Corso di DevOps<\/a><\/noindex> (12 mesi)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">altri corsi<\/b><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=ML&amp;utm_term=regular&amp;utm_content=07072002\">Corso di Machine Learning<\/a><\/noindex> (12 settimane)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/data-scientist?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DST&amp;utm_term=regular&amp;utm_content=07072002\">Formazione per la professione di Data Science da zero<\/a><\/noindex> (12 mesi)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=SDA&amp;utm_term=regular&amp;utm_content=07072002\">Professione di analista a qualsiasi livello di partenza<\/a><\/noindex> (9 mesi)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=PWS&amp;utm_term=regular&amp;utm_content=07072002\">Corso 'Python per lo sviluppo web'<\/a><\/noindex> (9 mesi)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Utili<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 corsi gratuiti dalla Ivy League<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Tendenze in Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science \u00e8 morta. Lunga vita alla Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Data Science agli steroidi: introduzione all'Intelligenza Decisionale<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">Il progetto di Data Science pi\u00f9 riuscito e controverso: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/509964\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87467","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=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412\" \/>\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\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\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\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\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=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T11:42:11+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\udd47Guida per principianti: creiamo un pipeline DevOps | ProHoster","description":"Se sei un principiante in DevOps, dai un'occhiata a questa guida per creare il tuo primo pipeline in cinque fasi. DevOps \u00e8 diventato la soluzione standard per risolvere processi di sviluppo software lenti, disconnessi o non funzionanti. Il problema \u00e8 che se sei nuovo in DevOps e non sai da dove cominciare, potresti mancare di comprensione di questi metodi. Ne","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","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\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","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":"2020-07-08T11:42:11+00:00","article:modified_time":"2020-07-08T11:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87467","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:50:31","updated":"2022-09-29 03:37:01"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87467","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=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}