devops-практики в разработке решений для бизнеса, Максим...
TRANSCRIPT
![Page 1: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/1.jpg)
DevOps практики в разработке приложений для бизнеса
Максим Пашук
![Page 2: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/2.jpg)
Проект CRM-система
7 стран
9 сервисов
3k пользователей
![Page 3: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/3.jpg)
Всё просто
ASP.NET MVC
Web Server Admin
Confluence
App config
5-10 мин
![Page 4: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/4.jpg)
Недостатки Человеческий фактор
Инертность сознания
![Page 5: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/5.jpg)
Всё сложно
ASP.NET MVC
Service1
Service2
Country1
Country2
CountryN
Country1
Country2
CountryN
Admin
Server1
Server2
ServerN
30-60 мин
![Page 6: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/6.jpg)
Мы стали медленнее Overhead по инфраструктуре
Дольше тестируем
![Page 7: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/7.jpg)
Заказчик недоволен
release feedback
release
feedback
release
release feedback
feedback
![Page 8: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/8.jpg)
DevOps
Быстрая доставка изменений заказчику
Уменьшение стоимости доставки
Это agile в администрировании
Культура общения dev и ops
Автоматизация
![Page 9: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/9.jpg)
Continuous Integration Юнит-тесты
Статический анализ кода
Общий стиль кода
Метрики кода
![Page 10: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/10.jpg)
Быстрый feedback
Dev TeamCity
![Page 11: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/11.jpg)
Continuous Delivery
Configure Server Deploy App Configure
App Continuous Integration
![Page 12: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/12.jpg)
Ищем инструменты chef, puppet, ansible, capistrano
Слабая поддержка Windows
Уникальные знания
Хочется родного
![Page 13: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/13.jpg)
PowerShell (Ops) Простой
Path.Combine(path1, path2);
Join-Path $path1 $path2
vs
![Page 14: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/14.jpg)
PowerShell (Ops) Однострочники
Get-VM | Start-VM | Stop-VM
Стандартные модули
IIS, SQL Server, NetApp, etc.
![Page 15: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/15.jpg)
PowerShell (Dev) .NET runtime
Работа с .NET библиотеками (!)
Процедурное программирование
Add-Type 'any.net.dll'
[string]::IsNullOrEmpty()
function Add($x, $y){$x + $y}
![Page 16: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/16.jpg)
Automate Everything
Confluence PowerShell PowerShell Modules
![Page 17: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/17.jpg)
Version Everything История изменений
Версионирование знаний
Версионирование инфраструктуры
![Page 18: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/18.jpg)
Infrastructure As Code $Environments=@{ 'Env1'=@{}; 'Env2'=@{} }
Уровень 1
$Environments=@{ 'Env1'=@{'Host'='Host1'}; 'Env2'=@{'Host'='Host2'} }
Уровень 2
![Page 19: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/19.jpg)
Infrastructure As Code Можно обратиться
$Environments['Production'] ['Russia'] ['OrderValidation'] ['Hosts']
$Environments['Env1']['Host']
Реальный пример
![Page 20: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/20.jpg)
PowerShell Remoting Аналог ssh
Не нужно доп. агентов
Передача файлов
![Page 21: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/21.jpg)
Configuration service
Configuration Service
pull App
App push ConfigurationService
![Page 22: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/22.jpg)
Configuration service Master config
<configuration> <appSettings> <add
key="BusinessModel" value="Russia"/>
</appSettings> </configuration>
XDT transform <configuration> <appSettings> <add
key="BusinessModel" value="Cyprus" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings> </configuration>
![Page 23: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/23.jpg)
Configuration service
PM> Install-Package Microsoft.Web.Xdt
NuGet
PowerShell
Add-Type 'Microsoft.Web.XmlTransform.dll'
![Page 24: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/24.jpg)
Сложный код
psake (https://github.com/psake/psake)
Powershell не хватает
Только процедурный стиль
![Page 25: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/25.jpg)
psake
Task выполняется один раз
Task может зависеть от другого task
task Task1 -depends Task2, Task3
task Task4 -depends Task1, Task3
![Page 26: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/26.jpg)
psake Pre-post conditions
task Migrate-Elasticsearch ` -precondition ` { $metadata['HasElasticsearch'] } { ... }
![Page 27: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/27.jpg)
psake Оркестровка процесса доставки
task Deliver -depends ` Create-Infrastructure, ` Configure-Infrastructure, ` Deploy-Services, ` Configure-Services
![Page 28: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/28.jpg)
Всё вместе
psake Remote Management
Infrastructure as Code Server1
Server2
ServerN Configuration service
PowerShell TeamCity UI
![Page 29: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/29.jpg)
Continuous Delivery Automate everything
Version everything
PowerShell
Team Business
![Page 30: Devops-практики в разработке решений для бизнеса, Максим Пашук](https://reader034.vdocuments.site/reader034/viewer/2022051414/55b350f7bb61eb49148b472f/html5/thumbnails/30.jpg)
Что дальше Continuous Deployment
Continuous Monitoring