{"id":77783,"date":"2020-04-14T01:42:28","date_gmt":"2020-04-13T23:42:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack"},"modified":"2020-04-14T01:42:28","modified_gmt":"2020-04-13T23:42:28","slug":"metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack","title":{"rendered":"Metodologia di implementazione dei progetti utilizzata in Slack","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>La pubblicazione di una nuova versione del progetto in produzione richiede una attenta osservanza del bilanciamento tra la velocit\u00e0 di distribuzione e l'affidabilit\u00e0 della soluzione. In azienda, Slack apprezza le iterazioni rapide, i cicli di feedback brevi e la reazione tempestiva alle richieste degli utenti. Inoltre, l'azienda dispone di centinaia di programmatori che mirano alla massima produttivit\u00e0 possibile.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/496838\/\"><img decoding=\"async\" alt=\"Metodologia di implementazione dei progetti utilizzata in Slack\" src=\"\/wp-content\/uploads\/2020\/04\/a3d3cec330e9b9bd402035c22bda48ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Gli autori del materiale, la cui traduzione pubblichiamo oggi, affermano che un'azienda che cerca di attenersi a tali valori e allo stesso tempo cresce, deve costantemente migliorare il proprio sistema di distribuzione dei progetti. L'azienda deve investire risorse nella trasparenza e nell'affidabilit\u00e0 dei processi di lavoro, affinch\u00e9 questi rispettino la scala del progetto. Qui parleremo dei processi di lavoro che si sono sviluppati in Slack e di alcune soluzioni che hanno portato l'azienda a utilizzare l'attuale sistema di distribuzione dei progetti.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Come funzionano oggi i processi di distribuzione dei progetti<\/h2>\n<p>\nOgni PR (pull request) in Slack deve essere necessariamente sottoposta a codice revisione e deve superare tutti i test con successo. Solo dopo che queste condizioni sono state soddisfatte, il programmatore pu\u00f2 eseguire la fusione del proprio codice con il branch master del progetto. Tuttavia, la distribuzione di tale codice avviene solo durante l'orario lavorativo secondo il fuso orario nordamericano. Di conseguenza, grazie al fatto che i nostri dipendenti sono al lavoro, siamo completamente pronti a risolvere eventuali problemi imprevisti.<\/p>\n<p>Ogni giorno eseguiamo circa 12 distribuzioni programmate. Durante ogni distribuzione, il programmatore designato come responsabile della distribuzione \u00e8 responsabile dell'implementazione della nuova build in produzione. Si tratta di un processo multi-fase che garantisce un'implementazione fluida della build in modalit\u00e0 operativa. Grazie a questo approccio, possiamo individuare errori prima che colpiscano tutti i nostri utenti. Se ci sono troppi errori, la distribuzione della build pu\u00f2 essere annullata. Se, invece, un singolo problema viene rilevato dopo la pubblicazione, \u00e8 facile rilasciare una correzione per esso.<\/p>\n<p><img decoding=\"async\" alt=\"Metodologia di implementazione dei progetti utilizzata in Slack\" src=\"\/wp-content\/uploads\/2020\/04\/e05d8ecf210832734a7bb691621a1f96.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>L'interfaccia del sistema Checkpoint, utilizzata in Slack per la distribuzione dei progetti<\/i><\/p>\n<p>Il processo di distribuzione di una nuova versione in produzione pu\u00f2 essere rappresentato come costituito da quattro passaggi.<\/p>\n<h3>\u258d1. Creazione del ramo di rilascio<\/h3>\n<p>\nOgni rilascio inizia con un nuovo ramo di rilascio, a partire da un certo punto nella nostra storia Git. Questo consente di assegnare tag al rilascio e offre uno spazio dove apportare correzioni per errori trovati durante la preparazione del rilascio per la produzione.<\/p>\n<h3>\u258d2. Distribuzione nell'ambiente di staging<\/h3>\n<p>\nIl passo successivo consiste nella distribuzione della build sui server di staging e nell'esecuzione di un test automatico per verificare la funzionalit\u00e0 generale del progetto (smoke test). L'ambiente di staging \u00e8 un ambiente di produzione che non riceve traffico esterno. In questo ambiente effettuamo ulteriori prove manuali. Questo ci d\u00e0 maggiore sicurezza che il progetto modificato funzioni correttamente. Non sono sufficienti solo i test automatizzati per poter avere tale certezza.<\/p>\n<h3>\u258d3. Distribuzione negli ambienti dogfood e canary<\/h3>\n<p>\nLa distribuzione in produzione inizia con l'ambiente dogfood, rappresentato da un insieme di host che servono i nostri ambienti di lavoro interni su Slack. Essendo utenti molto attivi di Slack, questo approccio ha aiutato a scoprire molti errori nelle fasi iniziali della distribuzione. Dopo averci assicurati che la funzionalit\u00e0 di base del sistema non sia compromessa, procediamo con la distribuzione della build nell'ambiente canary. Quest'ultimo rappresenta i sistemi che ricevono circa il 2% del traffico in produzione.<\/p>\n<h3>\u258d4. Rilascio graduale in produzione<\/h3>\n<p>\nSe i parametri di monitoraggio del nuovo rilascio risultano stabili, e dopo la distribuzione del progetto nell'ambiente canary non riceviamo lamentele, continuiamo a trasferire gradualmente i server di produzione al nuovo rilascio. Il processo di distribuzione \u00e8 suddiviso nelle seguenti fasi: 10%, 25%, 50%, 75% e 100%. In questo modo possiamo lentamente reindirizzare il traffico di produzione al nuovo rilascio del sistema. Abbiamo cos\u00ec tempo per analizzare la situazione in caso emergano anomalie.<\/p>\n<h3>\u258dCosa fare se qualcosa va storto durante la distribuzione?<\/h3>\n<p>\nApportare modifiche al codice comporta sempre un rischio. Ma riusciamo a gestirlo grazie alla presenza di esperti ben preparati nei \"deployment\", che guidano il processo di rilascio della nuova versione in produzione, monitorano le metriche di controllo e coordinano il lavoro dei programmatori che rilasciano il codice.<\/p>\n<p>Nel caso in cui qualcosa vada realmente storto, cerchiamo di identificare il problema il prima possibile. Analizziamo il problema, troviamo il PR che causa errori, lo annulliamo, lo analizziamo attentamente e creiamo una nuova build. A volte, per\u00f2, il problema passa inosservato fino al rilascio del progetto in produzione. In una tale situazione, la cosa pi\u00f9 importante \u00e8 ripristinare il funzionamento del servizio. Per questo motivo, prima di iniziare a esplorare il problema, torniamo immediatamente all'ultima build funzionante.<\/p>\n<h2>Strutture di base del sistema di deployment<\/h2>\n<p>\nConsideriamo le tecnologie che stanno alla base del nostro sistema di deployment dei progetti.<\/p>\n<h3>\u258dDeployment rapidi<\/h3>\n<p>\nIl processo di lavoro descritto sopra potrebbe sembrare, a posteriori, del tutto ovvio. Ma il nostro sistema di deployment non \u00e8 diventato tale da un giorno all'altro.<\/p>\n<p>Quando l'azienda era significativamente pi\u00f9 piccola, tutta la nostra applicazione poteva funzionare su 10 istanze Amazon EC2. In tale situazione, il deployment del progetto significava l'uso di rsync per una rapida sincronizzazione di tutti i server. In passato, un nuovo codice era separato dalla produzione da un solo passaggio rappresentato da un ambiente intermedio. Le build venivano create e verificate in tale ambiente, per poi andare direttamente in produzione. Capire un sistema del genere era molto semplice, permetteva a qualsiasi programmatore di distribuire il codice che aveva scritto in qualsiasi momento.<\/p>\n<p>Ma con l'aumento del numero dei nostri clienti, anche le dimensioni dell'infrastruttura necessaria per il funzionamento del progetto sono aumentate. Presto, considerando la continua crescita del sistema, il nostro modello di deployment, basato sull'invio di nuovo codice ai server, ha smesso di funzionare. Aggiungere ogni nuovo server significava aumentare il tempo necessario per eseguire il deployment. Anche le strategie basate sull'applicazione parallela di rsync hanno delle limitazioni.<\/p>\n<p>Alla fine abbiamo risolto questo problema passando a un sistema di distribuzione completamente parallelo, strutturato in modo diverso rispetto al vecchio sistema. In particolare, ora non inviavamo il codice ai server utilizzando uno script di sincronizzazione. Ora ogni server scaricava autonomamente la nuova build, venendo a conoscenza della necessit\u00e0 di farlo grazie all'osservazione della modifica della chiave Consul. I server scaricavano il codice in parallelo. Questo ci ha permesso di mantenere un'elevata velocit\u00e0 di distribuzione anche in un contesto di crescita costante del sistema.<\/p>\n<p><img decoding=\"async\" alt=\"Metodologia di implementazione dei progetti utilizzata in Slack\" src=\"\/wp-content\/uploads\/2020\/04\/baf52b60024eb9881e8a31fbf0da08bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1. I server di produzione monitorano la chiave Consul. 2. La chiave cambia, comunicando ai server di iniziare a scaricare il nuovo codice. 3. I server scaricano i file tarball con il codice dell'applicazione.<\/i><\/p>\n<h3>\u258dDistribuzioni atomiche<\/h3>\n<p>\nUn'altra soluzione che ci ha aiutato a raggiungere un sistema di distribuzione multilivello \u00e8 stata la distribuzione atomica.<\/p>\n<p>Prima di utilizzare le distribuzioni atomiche, ogni distribuzione poteva portare alla generazione di un numero significativo di messaggi di errore. Questo perch\u00e9 il processo di copia di nuovi file sui server di produzione non era atomico. Ci\u00f2 portava all'esistenza di un breve intervallo di tempo in cui il codice che richiamava nuove funzioni era accessibile prima che queste funzioni fossero disponibili. Quando questo codice veniva eseguito, si traduceva in errori interni. Questo si manifestava in richieste API non riuscite e in pagine web \"rotte\".<\/p>\n<p>Il team che si occupava di questo problema lo ha risolto introducendo il concetto di directory \"calde\" (hot) e \"fredde\" (cold). Il codice nella directory \"calda\" \u00e8 responsabile dell'elaborazione del traffico di produzione. Nelle directory \"fredde\", il codice viene solo preparato per l'uso durante il funzionamento del sistema. Durante la distribuzione, il nuovo codice viene copiato in una directory \"fredda\" non utilizzata. Poi, quando sul server non ci sono processi attivi, viene eseguito un cambio istantaneo delle directory.<\/p>\n<p><img decoding=\"async\" alt=\"Metodologia di implementazione dei progetti utilizzata in Slack\" src=\"\/wp-content\/uploads\/2020\/04\/05ab374f047e53e408f3e75ad3a73d68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1. Decompressione del codice dell'applicazione nella directory \"fredda\". 2. Cambio del sistema sulla directory \"fredda\", che diventa \"calda\" (operazione atomica).<\/i><\/p>\n<h2>Conclusioni: spostamento dell'accento sulla robustezza<\/h2>\n<p>\nNel 2018, il progetto \u00e8 cresciuto a tal punto che il rapido deployment ha iniziato a danneggiare la stabilit\u00e0 del prodotto. Avevamo un sistema di deployment piuttosto avanzato, in cui abbiamo investito molte energie e tempo. Dovevamo solo ristrutturare e migliorare i processi di organizzazione del deployment. Siamo diventati un'azienda abbastanza grande, le cui soluzioni sono state utilizzate in tutto il mondo per garantire comunicazioni ininterrotte e per affrontare compiti importanti. Pertanto, l'affidabilit\u00e0 \u00e8 diventata il nostro obiettivo principale.<\/p>\n<p>Era necessario rendere il processo di deployment delle nuove versioni di Slack pi\u00f9 sicuro. Questa esigenza ci ha portato a migliorare il nostro sistema di deployment. In effetti, abbiamo discusso proprio di questo sistema avanzato. All'interno del sistema continuiamo a utilizzare tecnologie di deployment rapide e atomiche. \u00c8 cambiato il modo in cui viene effettuato il deployment. Il nostro nuovo sistema \u00e8 progettato per eseguire il deployment del nuovo codice in modo graduale, su diversi livelli e in ambienti differenti. Ora utilizziamo strumenti ausiliari e sistemi di monitoraggio pi\u00f9 sofisticati rispetto a prima. Questo ci consente di rilevare e correggere errori molto prima che possano raggiungere l'utente finale.<\/p>\n<p>Ma non intendiamo fermarci qui. Miglioriamo costantemente questo sistema, utilizzando strumenti ausiliari e mezzi di automazione pi\u00f9 avanzati.<\/p>\n<p><b>Gentili lettori!<\/b> Come \u00e8 organizzato il processo di deployment delle nuove versioni nei progetti dove lavori tu?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ruvds.com\/ru-rub\/#order\"><img decoding=\"async\" alt=\"Metodologia di implementazione dei progetti utilizzata in Slack\" src=\"\/wp-content\/uploads\/2020\/04\/1aeb4af5770ce139b651be62e955f130.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/496838\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u044b\u0432\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Slack \u0446\u0435\u043d\u044f\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0446\u0438\u043a\u043b\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438, \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0440\u0435\u0430\u043a\u0446\u0438\u044e \u043d\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0441\u043e\u0442\u043d\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438. \u0410\u0432\u0442\u043e\u0440\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c, \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":77784,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-77783","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u044b\u0432\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0435\u043d\u0438\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\/it\/blog\/administrirovanie\/metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0432 Slack | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u044b\u0432\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack\" \/>\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-04-13T23:42:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-13T23:42:28+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\udd47Metodologia di deployment dei progetti utilizzata in Slack | ProHoster","description":"Il rilascio di una nuova versione di un progetto in produzione richiede un attento bilanciamento tra la velocit\u00e0 di deployment e l'affidabilit\u00e0 della soluzione.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack","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\u041c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0432 Slack | ProHoster","og:description":"\u0412\u044b\u0432\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/metodika-razvyortyvaniya-proektov-primenyaemaya-v-slack","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-04-13T23:42:28+00:00","article:modified_time":"2020-04-13T23:42:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"77783","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"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 17:11:30","updated":"2026-08-11 12:50:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/77783","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=77783"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/77783\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/77784"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=77783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=77783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=77783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}