Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

757 views

Published on

Обычно разработчик успокаивается как только написан код, решающий задачи бизнеса. На самом деле есть ещё целый ряд вопросов, которые также необходимо решать.

Как донести изменения разработчика до тестирования в согласованном виде (база данных, приложение, конфиги)? Как донести эти же изменения до production и ничего не потерять по дороге? Что делать если продукт — распределённая многокомпонентная система, работающая в отказоустойчивом кластере? Тогда ситуация требует тесной совместной работы разработчиков и администраторов, а это, как известно, люди немного с разных планет.

Я расскажу на примере конкретного проекта на .NET стеке, как мы построили мост дружбы. Как свели воедино систему сборки, развёртывания и автоматизации, используя библиотеку psake и достигли взаимопонимания.

Published in: Technology
  • Login to see the comments

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

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

×