devops-практики в разработке решений для бизнеса —...

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

Upload: 2-

Post on 25-Jul-2015

157 views

Category:

Technology


1 download

TRANSCRIPT

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

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

Максим Пашук

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

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

7 стран

9 сервисов

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

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

Всё просто

ASP.NET MVC

Web Server

Admin

Confluence

App config

5-10 мин

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

Недостатки

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

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

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

Всё сложно

ASP.NET MVC

Service1

Service2

Country1

Country2

CountryN

Country1

Country2

CountryN

Admin

Server1

Server2

ServerN

30-60 мин

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

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

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

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

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

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

releasefeedback

release

feedback

release

release

feedback

feedback

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

DevOps

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

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

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

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

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

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

Continuous Integration

Юнит-тесты

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

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

Метрики кода

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

Быстрый feedback

Dev TeamCity

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

Continuous Delivery

Configure Server

Deploy AppConfigure

AppContinuous Integration

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

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

chef, puppet, ansible, capistrano

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

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

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

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

PowerShell (Ops)

Простой

Path.Combine(path1, path2);

Join-Path $path1 $path2

vs

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

PowerShell (Ops)

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

Get-VM | Start-VM | Stop-VM Стандартные модули

IIS, SQL Server, NetApp, etc.

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

PowerShell (Dev).NET runtime

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

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

Add-Type 'any.net.dll'

[string]::IsNullOrEmpty()

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

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

Automate Everything

Confluence PowerShellPowerShell

Modules

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

Version Everything

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

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

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

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

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

Уровень 1

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

Уровень 2

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

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

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

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

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

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

PowerShell RemotingАналог ssh

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

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

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

Configuration service

Configuration Service

pull App

Apppush ConfigurationService

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

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

Configuration service

PM> Install-Package Microsoft.Web.Xdt

NuGet

PowerShell

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

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

Сложный код

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

Powershell не хватает

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

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

psake

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

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

task Task1 -depends Task2, Task3

task Task4 -depends Task1, Task3

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

psakePre-post conditions

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

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

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

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

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

Всё вместе

psakeRemote

Management

Infrastructureas Code Server1

Server2

ServerNConfigurationservice

PowerShellTeamCity

UI

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

Continuous DeliveryAutomate everything

Version everything

PowerShell

Team Business

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

Что дальшеContinuous Deployment

Continuous Monitoring

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

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

Спасибо

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