31
DevOps практики в разработке приложений для бизнеса Максим Пашук

Devops-практики в разработке решений для бизнеса, Максим Пашук

  • Upload
    devday

  • View
    99

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Devops-практики в разработке решений для бизнеса, Максим Пашук

DevOps практики в разработке приложений для бизнеса

Максим Пашук

Page 2: Devops-практики в разработке решений для бизнеса, Максим Пашук

Проект CRM-система

7 стран

9 сервисов

3k пользователей

Page 3: Devops-практики в разработке решений для бизнеса, Максим Пашук

Всё просто

ASP.NET MVC

Web Server Admin

Confluence

App config

5-10 мин

Page 4: Devops-практики в разработке решений для бизнеса, Максим Пашук

Недостатки Человеческий фактор

Инертность сознания

Page 5: Devops-практики в разработке решений для бизнеса, Максим Пашук

Всё сложно

ASP.NET MVC

Service1

Service2

Country1

Country2

CountryN

Country1

Country2

CountryN

Admin

Server1

Server2

ServerN

30-60 мин

Page 6: Devops-практики в разработке решений для бизнеса, Максим Пашук

Мы стали медленнее Overhead по инфраструктуре

Дольше тестируем

Page 7: Devops-практики в разработке решений для бизнеса, Максим Пашук

Заказчик недоволен

release feedback

release

feedback

release

release feedback

feedback

Page 8: Devops-практики в разработке решений для бизнеса, Максим Пашук

DevOps

Быстрая доставка изменений заказчику

Уменьшение стоимости доставки

Это agile в администрировании

Культура общения dev и ops

Автоматизация

Page 9: Devops-практики в разработке решений для бизнеса, Максим Пашук

Continuous Integration Юнит-тесты

Статический анализ кода

Общий стиль кода

Метрики кода

Page 10: Devops-практики в разработке решений для бизнеса, Максим Пашук

Быстрый feedback

Dev TeamCity

Page 11: Devops-практики в разработке решений для бизнеса, Максим Пашук

Continuous Delivery

Configure Server Deploy App Configure

App Continuous Integration

Page 12: Devops-практики в разработке решений для бизнеса, Максим Пашук

Ищем инструменты chef, puppet, ansible, capistrano

Слабая поддержка Windows

Уникальные знания

Хочется родного

Page 13: Devops-практики в разработке решений для бизнеса, Максим Пашук

PowerShell (Ops) Простой

Path.Combine(path1,  path2);

Join-Path $path1 $path2

vs

Page 14: Devops-практики в разработке решений для бизнеса, Максим Пашук

PowerShell (Ops) Однострочники

Get-VM | Start-VM | Stop-VM

Стандартные модули

IIS, SQL Server, NetApp, etc.

Page 15: Devops-практики в разработке решений для бизнеса, Максим Пашук

PowerShell (Dev) .NET runtime

Работа с .NET библиотеками (!)

Процедурное программирование

Add-Type 'any.net.dll'

[string]::IsNullOrEmpty()

function Add($x, $y){$x + $y}

Page 16: Devops-практики в разработке решений для бизнеса, Максим Пашук

Automate Everything

Confluence PowerShell PowerShell Modules

Page 17: Devops-практики в разработке решений для бизнеса, Максим Пашук

Version Everything История изменений

Версионирование знаний

Версионирование инфраструктуры

Page 18: Devops-практики в разработке решений для бизнеса, Максим Пашук

Infrastructure As Code $Environments=@{ 'Env1'=@{}; 'Env2'=@{} }

Уровень 1

$Environments=@{ 'Env1'=@{'Host'='Host1'}; 'Env2'=@{'Host'='Host2'} }

Уровень 2

Page 19: Devops-практики в разработке решений для бизнеса, Максим Пашук

Infrastructure As Code Можно обратиться

$Environments['Production'] ['Russia'] ['OrderValidation'] ['Hosts']

$Environments['Env1']['Host']

Реальный пример

Page 20: Devops-практики в разработке решений для бизнеса, Максим Пашук

PowerShell Remoting Аналог ssh

Не нужно доп. агентов

Передача файлов

Page 21: Devops-практики в разработке решений для бизнеса, Максим Пашук

Configuration service

Configuration Service

pull App

App push ConfigurationService

Page 22: Devops-практики в разработке решений для бизнеса, Максим Пашук

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-практики в разработке решений для бизнеса, Максим Пашук

Configuration service

PM> Install-Package Microsoft.Web.Xdt

NuGet

PowerShell

Add-Type 'Microsoft.Web.XmlTransform.dll'

Page 24: Devops-практики в разработке решений для бизнеса, Максим Пашук

Сложный код

psake (https://github.com/psake/psake)

Powershell не хватает

Только процедурный стиль

Page 25: Devops-практики в разработке решений для бизнеса, Максим Пашук

psake

Task выполняется один раз

Task может зависеть от другого task

task Task1 -depends Task2, Task3

task Task4 -depends Task1, Task3

Page 26: Devops-практики в разработке решений для бизнеса, Максим Пашук

psake Pre-post conditions

task Migrate-Elasticsearch ` -precondition ` { $metadata['HasElasticsearch'] } { ... }

Page 27: Devops-практики в разработке решений для бизнеса, Максим Пашук

psake Оркестровка процесса доставки

task Deliver -depends ` Create-Infrastructure, ` Configure-Infrastructure, ` Deploy-Services, ` Configure-Services

Page 28: Devops-практики в разработке решений для бизнеса, Максим Пашук

Всё вместе

psake Remote Management

Infrastructure as Code Server1

Server2

ServerN Configuration service

PowerShell TeamCity UI

Page 29: Devops-практики в разработке решений для бизнеса, Максим Пашук

Continuous Delivery Automate everything

Version everything

PowerShell

Team Business

Page 30: Devops-практики в разработке решений для бизнеса, Максим Пашук

Что дальше Continuous Deployment

Continuous Monitoring

Page 31: Devops-практики в разработке решений для бизнеса, Максим Пашук

Максим Пашук [email protected]

Спасибо

Задай вопрос, не стесняйся