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

DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Embed Size (px)

Citation preview

Page 1: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

DevOps практики

в разработке приложений

для бизнеса

Максим Пашук

Page 2: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Проект

CRM-система

7 стран

9 сервисов

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

Page 3: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Всё просто

ASP.NET

MVC

Web

ServerAdmin

Confluence

App

config

5-10 мин

Page 4: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Недостатки

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

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

Page 5: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Всё сложно

ASP.NET

MVC

Service1

Service2

Country1

Country2

CountryN

Country1

Country2

CountryN

Admin

Server1

Server2

ServerN

30-60 мин

Page 6: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Мы стали медленнее

Overhead по инфраструктуре

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

Page 7: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

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

release

feedback

release

feedback

release

release

feedback

feedback

Page 8: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

DevOps

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

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

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

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

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

Page 9: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Continuous Integration

Юнит-тесты

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

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

Метрики кода

Page 10: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Быстрый feedback

Dev TeamCity

Page 11: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Continuous Delivery

Configure

ServerDeploy App

Configure

App

Continuous

Integration

Page 12: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Ищем инструменты

chef, puppet, ansible, capistrano

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

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

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

Page 13: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

PowerShell (Ops)

Простой

Path.Combine(path1, path2);

Join-Path $path1 $path2

vs

Page 14: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

PowerShell (Ops)

Однострочники

Get-VM | Start-VM | Stop-VM

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

IIS, SQL Server, NetApp, etc.

Page 15: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

PowerShell (Dev)

.NET runtime

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

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

Add-Type 'any.net.dll'

[string]::IsNullOrEmpty()

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

Page 16: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Automate Everything

Confluence PowerShellPowerShell

Modules

Page 17: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Version Everything

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

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

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

Page 18: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Infrastructure As Code

$Table=@{'Env1'=@{};'Env2'=@{}

}

Уровень 1

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

}

Уровень 2

Page 19: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Infrastructure As Code

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

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

$Table['Env1']['Host']

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

Page 20: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

PowerShell Remoting

Аналог ssh

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

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

Page 21: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Configuration service

Configuration

Servicepull App

Apppush Configuration

Service

Page 22: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Configuration service

Master config<configuration>

<appSettings><add

key="BusinessModel"value="Russia"/>

</appSettings></configuration>

XDT transform <configuration><appSettings>

<addkey="BusinessModel"value="Cyprus"xdt:Transform="SetAttributes"xdt:Locator="Match(key)"/>

</appSettings></configuration>

Page 23: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Configuration service

PM> Install-Package Microsoft.Web.Xdt

NuGet

PowerShell

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

Page 24: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Сложный код

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

Powershell не хватает

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

Page 25: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

psake

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

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

task Task1 -depends Task2, Task3

task Task4 -depends Task1, Task3

Page 26: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

psakePre-post conditions

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

{...}

Page 27: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

psake

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

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

Page 28: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Всё вместе

psakeRemote

Management

Infrastructure

as Code Server1

Server2

ServerNConfiguration

service

PowerShellTeamCity

UI

Page 29: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Continuous Delivery

Automate everything

Version everything

PowerShell

Team Business

Page 30: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

Что дальше

Continuous Deployment

Continuous Monitoring

Page 31: DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2GIS, Новосибирск

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

Спасибо

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