SlideShare a Scribd company logo
1 of 22
DEPLOYMENT-ЪТ КАТО
ИНДИКАТОР ЗА ЗДРАВЕ НА
       ПРОЕКТА.
     Христо Дешев - @hdeshev
     Петьо Иванов - @petyosi
AGILE?



• Изисква   итеративен подход

•И   всяка итерация завършва с deployment
БЕЗ DEPLOYMENT - НЕ СМЕ
         AGILE
МАЛКО ИЗВЕСТНИ ФАКТИ
     ЗА DEPLOYMENT-A


• Той   е наша (програмистка) отговорност

• Сам   по себе си е feature на проекта
ДОБЪР DEPLOYMENT?


• Чест

• Лесен   (автоматизиран)

• Прост
ЛОШ?

• Ръчен

• Труден

•С   възможност за грешка

• “поп-фолк” деплоймънт

• Заради   което, обикновено - рядък
КАКЪВ Е МОЯТ?


• Колко   лесно можете да оправите проблем/бъг?

•А колко лесно вашите колеги могат да оправят ваш
 проблем/бъг?

• Дали   всички в тима го “могат”?
АНАТОМИЯТА
  НА ЕДИН
DEPLOYMENT
SOURCE CONTROL
                КАЗАРМА


• Всякаква   работа по проекта се извършва през source
 control.

• Задължително!!!!
SOURCE CONTROL
               КАЗАРМА

• Всекиcommit причинява deployment. Различни branch-ове
 съответсват на различни среди.

• Промяна в сорс контрола е единствения (нормален) начин
 да деплойнем.
ТЕСТОВЕ


• Къде   без тях?

• Ако   тестовете не минат, deployment-а се прекъсва.

•И   хвърчат глави (иска ни се).
ОБНОВЯВАНЕ НА САЙТА

• Kодът   на сървъра - копие от source control.

• Взимаме    новия код в чиста директория;

• Пренасочваме    сайта към новото място;

•И   пазим старото, ако се наложи.

• Symlink   - ваш приятел (има го и за Windows)
БАЗАТА - МИГРАЦИЙ


• Добре   де, миграции.

• Закон   в Ruby on Rails. Харесвана от всички.

• Има   го и за вашия език.

• Автоматизиран    бекъп преди миграцията.
$: ls -1 db/migrate
20100124115439_create_users.rb
20100206144447_create_expenses.rb
20100207123935_create_categories.rb
class CreateUsers < ActiveRecord::Migration
 def self.up
   create_table :users do |t|
    t.string :email
    t.string :crypted_password
    t.string :password_salt
    t.string :persistence_token
    t.timestamps
   end
 end

 def self.down
  drop_table :users
 end
end
СЛЕД DEPLOYMENT


• Рестартиране   на процеси, при нужда

• Разпращане   на съобщения до щастливците

• Диагностични   тестове
ЗНАЧЕНИЕ



• За   вас

•И     за другите
• Търсите  съвет как да си организирате деплоймънта?
 http://groups.google.com/group/software-craftsmanship-
 bulgaria/
ВЪПРОСИ?

More Related Content

Similar to wtconference

Life In the cloud
Life In the cloudLife In the cloud
Life In the cloudzeridon
 
VarnaConf Blue/Green Deployments with Docker, HAProxy and Consul
VarnaConf Blue/Green Deployments with Docker, HAProxy and ConsulVarnaConf Blue/Green Deployments with Docker, HAProxy and Consul
VarnaConf Blue/Green Deployments with Docker, HAProxy and Consulzeridon
 
Пет неща, които всеки програмист трябва да знае
Пет неща, които всеки програмист трябва да знаеПет неща, които всеки програмист трябва да знае
Пет неща, които всеки програмист трябва да знаеNikolay Bachiyski
 
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...DAVID Academy
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtAdrian Mitev
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъдеStoyan Stefanov
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummiesCode Runners
 
Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.
Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.
Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.Octopus Events
 
Introduction to Reverse Engineering
Introduction to Reverse EngineeringIntroduction to Reverse Engineering
Introduction to Reverse EngineeringDobromir Enchev
 

Similar to wtconference (15)

Life In the cloud
Life In the cloudLife In the cloud
Life In the cloud
 
VarnaConf Blue/Green Deployments with Docker, HAProxy and Consul
VarnaConf Blue/Green Deployments with Docker, HAProxy and ConsulVarnaConf Blue/Green Deployments with Docker, HAProxy and Consul
VarnaConf Blue/Green Deployments with Docker, HAProxy and Consul
 
Пет неща, които всеки програмист трябва да знае
Пет неща, които всеки програмист трябва да знаеПет неща, които всеки програмист трябва да знае
Пет неща, които всеки програмист трябва да знае
 
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
 
DrupalCamp Sofia 2015
DrupalCamp Sofia 2015DrupalCamp Sofia 2015
DrupalCamp Sofia 2015
 
Programirane i organizaciq
Programirane i organizaciqProgramirane i organizaciq
Programirane i organizaciq
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Неволята Учи
Неволята УчиНеволята Учи
Неволята Учи
 
JavaScript навсякъде
JavaScript навсякъдеJavaScript навсякъде
JavaScript навсякъде
 
работа с Ruby on rails
работа с Ruby on railsработа с Ruby on rails
работа с Ruby on rails
 
Penetration testing for dummies
Penetration testing for dummiesPenetration testing for dummies
Penetration testing for dummies
 
Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.
Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.
Владимир Драгиев. SEO предизвикателствата стоящи пред големите проекти.
 
Ruby 0
Ruby 0Ruby 0
Ruby 0
 
Introduction to Reverse Engineering
Introduction to Reverse EngineeringIntroduction to Reverse Engineering
Introduction to Reverse Engineering
 
TestOps - BurgasConf 2017
TestOps - BurgasConf 2017TestOps - BurgasConf 2017
TestOps - BurgasConf 2017
 

wtconference

  • 1. DEPLOYMENT-ЪТ КАТО ИНДИКАТОР ЗА ЗДРАВЕ НА ПРОЕКТА. Христо Дешев - @hdeshev Петьо Иванов - @petyosi
  • 2. AGILE? • Изисква итеративен подход •И всяка итерация завършва с deployment
  • 3. БЕЗ DEPLOYMENT - НЕ СМЕ AGILE
  • 4. МАЛКО ИЗВЕСТНИ ФАКТИ ЗА DEPLOYMENT-A • Той е наша (програмистка) отговорност • Сам по себе си е feature на проекта
  • 5. ДОБЪР DEPLOYMENT? • Чест • Лесен (автоматизиран) • Прост
  • 6. ЛОШ? • Ръчен • Труден •С възможност за грешка • “поп-фолк” деплоймънт • Заради което, обикновено - рядък
  • 7.
  • 8. КАКЪВ Е МОЯТ? • Колко лесно можете да оправите проблем/бъг? •А колко лесно вашите колеги могат да оправят ваш проблем/бъг? • Дали всички в тима го “могат”?
  • 9. АНАТОМИЯТА НА ЕДИН DEPLOYMENT
  • 10. SOURCE CONTROL КАЗАРМА • Всякаква работа по проекта се извършва през source control. • Задължително!!!!
  • 11.
  • 12. SOURCE CONTROL КАЗАРМА • Всекиcommit причинява deployment. Различни branch-ове съответсват на различни среди. • Промяна в сорс контрола е единствения (нормален) начин да деплойнем.
  • 13. ТЕСТОВЕ • Къде без тях? • Ако тестовете не минат, deployment-а се прекъсва. •И хвърчат глави (иска ни се).
  • 14.
  • 15. ОБНОВЯВАНЕ НА САЙТА • Kодът на сървъра - копие от source control. • Взимаме новия код в чиста директория; • Пренасочваме сайта към новото място; •И пазим старото, ако се наложи. • Symlink - ваш приятел (има го и за Windows)
  • 16. БАЗАТА - МИГРАЦИЙ • Добре де, миграции. • Закон в Ruby on Rails. Харесвана от всички. • Има го и за вашия език. • Автоматизиран бекъп преди миграцията.
  • 17. $: ls -1 db/migrate 20100124115439_create_users.rb 20100206144447_create_expenses.rb 20100207123935_create_categories.rb
  • 18. class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :email t.string :crypted_password t.string :password_salt t.string :persistence_token t.timestamps end end def self.down drop_table :users end end
  • 19. СЛЕД DEPLOYMENT • Рестартиране на процеси, при нужда • Разпращане на съобщения до щастливците • Диагностични тестове
  • 20. ЗНАЧЕНИЕ • За вас •И за другите
  • 21. • Търсите съвет как да си организирате деплоймънта? http://groups.google.com/group/software-craftsmanship- bulgaria/

Editor's Notes

  1. &amp;#x41A;&amp;#x43E;&amp;#x43B;&amp;#x435;&amp;#x433;&amp;#x438; &amp;#x441;&amp;#x43C;&amp;#x435;, &amp;#x43F;&amp;#x440;&amp;#x430;&amp;#x43A;&amp;#x442;&amp;#x438;&amp;#x43A;&amp;#x443;&amp;#x432;&amp;#x430;&amp;#x43C;&amp;#x435; agile development. &amp;#x41F;&amp;#x440;&amp;#x43E;&amp;#x438;&amp;#x437;&amp;#x432;&amp;#x435;&amp;#x436;&amp;#x434;&amp;#x430;&amp;#x43C;&amp;#x435; web-&amp;#x431;&amp;#x430;&amp;#x437;&amp;#x438;&amp;#x440;&amp;#x430;&amp;#x43D;&amp;#x438; &amp;#x443;&amp;#x441;&amp;#x43B;&amp;#x443;&amp;#x433;&amp;#x438;, &amp;#x438; &amp;#x441;&amp;#x43C;&amp;#x435; &amp;#x449;&amp;#x430;&amp;#x441;&amp;#x442;&amp;#x43B;&amp;#x438;&amp;#x432;&amp;#x438; &amp;#x43A;&amp;#x43E;&amp;#x433;&amp;#x430;&amp;#x442;&amp;#x43E; &amp;#x432;&amp;#x438;&amp;#x436;&amp;#x434;&amp;#x430;&amp;#x43C;&amp;#x435;, &amp;#x447;&amp;#x435; &amp;#x445;&amp;#x438;&amp;#x43B;&amp;#x44F;&amp;#x434;&amp;#x438; &amp;#x445;&amp;#x43E;&amp;#x440;&amp;#x430; &amp;#x433;&amp;#x438; &amp;#x43F;&amp;#x43E;&amp;#x43B;&amp;#x437;&amp;#x432;&amp;#x430;&amp;#x442;.
  2. (&amp;#x41F;&amp;#x43E; &amp;#x441;&amp;#x440;&amp;#x435;&amp;#x434;&amp;#x430;&amp;#x442;&amp;#x430; &amp;#x43D;&amp;#x430; &amp;#x441;&amp;#x43B;&amp;#x430;&amp;#x439;&amp;#x434;&amp;#x430; - &amp;#x425;&amp;#x440;&amp;#x438;&amp;#x441;&amp;#x442;&amp;#x43E; &amp;#x433;&amp;#x43E;&amp;#x432;&amp;#x43E;&amp;#x440;&amp;#x438; &amp;#x437;&amp;#x430; build maister). Feature &amp;#x435; &amp;#x43F;&amp;#x43E; &amp;#x441;&amp;#x44A;&amp;#x449;&amp;#x438;&amp;#x44F; &amp;#x43D;&amp;#x430;&amp;#x447;&amp;#x438;&amp;#x43D;, &amp;#x43F;&amp;#x43E; &amp;#x43A;&amp;#x43E;&amp;#x439;&amp;#x442;&amp;#x43E; security &amp;#x438;&amp;#x43B;&amp;#x438; (god forbid) Search Engine Optimization.
  3. &amp;#x41F;&amp;#x43E;&amp;#x43F;-&amp;#x444;&amp;#x43E;&amp;#x43B;&amp;#x43A; - &amp;#x43D;&amp;#x435;&amp;#x434;&amp;#x43E;&amp;#x43A;&amp;#x443;&amp;#x43C;&amp;#x435;&amp;#x43D;&amp;#x442;&amp;#x438;&amp;#x440;&amp;#x430;&amp;#x43D;, &amp;#x43A;&amp;#x43E;&amp;#x43C;&amp;#x430;&amp;#x43D;&amp;#x434;&amp;#x438;, &amp;#x43A;&amp;#x43E;&amp;#x438;&amp;#x442;&amp;#x43E; &amp;#x43D;&amp;#x438;&amp;#x43A;&amp;#x43E;&amp;#x439; &amp;#x43D;&amp;#x435; &amp;#x437;&amp;#x43D;&amp;#x430;&amp;#x435; &amp;#x447;&amp;#x435; &amp;#x441;&amp;#x430; &amp;#x438;&amp;#x437;&amp;#x43F;&amp;#x44A;&amp;#x43B;&amp;#x43D;&amp;#x435;&amp;#x43D;&amp;#x438;. &amp;#x421;&amp;#x430;&amp;#x43D;&amp;#x434;&amp;#x43E;&amp;#x43A;&amp;#x430;&amp;#x43D; &amp;#x441; &amp;#x434;&amp;#x432;&amp;#x430;&amp;#x442;&amp;#x430; &amp;#x43D;&amp;#x43E;&amp;#x436;&amp;#x430;! &amp;#x420;&amp;#x44F;&amp;#x434;&amp;#x44A;&amp;#x43A; - &amp;#x425;&amp;#x440;&amp;#x438;&amp;#x441;&amp;#x442;&amp;#x43E;.
  4. &amp;#x425;&amp;#x440;&amp;#x438;&amp;#x441;&amp;#x442;&amp;#x43E; - &amp;#x437;&amp;#x430; &amp;#x43C;&amp;#x43E;&amp;#x436;&amp;#x435;&amp;#x43D;&amp;#x435;&amp;#x442;&amp;#x43E;.
  5. &amp;#x412;&amp;#x43D;&amp;#x438;&amp;#x43C;&amp;#x430;&amp;#x43D;&amp;#x438;&amp;#x435;&amp;#x442;&amp;#x43E; &amp;#x43A;&amp;#x44A;&amp;#x43C; deployment-a &amp;#x433;&amp;#x43E;&amp;#x432;&amp;#x43E;&amp;#x440;&amp;#x438; &amp;#x43C;&amp;#x43D;&amp;#x43E;&amp;#x433;&amp;#x43E; &amp;#x437;&amp;#x430; &amp;#x43D;&amp;#x430;&amp;#x441;, &amp;#x438; &amp;#x437;&amp;#x430; &amp;#x43D;&amp;#x430;&amp;#x448;&amp;#x438;&amp;#x442;&amp;#x435; &amp;#x446;&amp;#x435;&amp;#x43D;&amp;#x43D;&amp;#x43E;&amp;#x441;&amp;#x442;&amp;#x438;. &amp;#x41F;&amp;#x43E;&amp;#x437;&amp;#x432;&amp;#x43E;&amp;#x43B;&amp;#x44F;&amp;#x432;&amp;#x430; &amp;#x43D;&amp;#x438; &amp;#x434;&amp;#x430; &amp;#x434;&amp;#x43E;&amp;#x441;&amp;#x442;&amp;#x430;&amp;#x432;&amp;#x44F;&amp;#x43C;&amp;#x435; &amp;#x441;&amp;#x43E;&amp;#x444;&amp;#x442;&amp;#x443;&amp;#x435;&amp;#x440; &amp;#x43C;&amp;#x430;&amp;#x43B;&amp;#x43A;&amp;#x43E; &amp;#x43F;&amp;#x43E;-&amp;#x447;&amp;#x435;&amp;#x441;&amp;#x442;&amp;#x43E;, &amp;#x43F;&amp;#x43E;-&amp;#x43F;&amp;#x440;&amp;#x435;&amp;#x434;&amp;#x441;&amp;#x43A;&amp;#x430;&amp;#x437;&amp;#x443;&amp;#x435;&amp;#x43C;&amp;#x43E;. &amp;#x41A;&amp;#x43E;&amp;#x435;&amp;#x442;&amp;#x43E; &amp;#x43F;&amp;#x440;&amp;#x430;&amp;#x432;&amp;#x438; &amp;#x43F;&amp;#x43E;&amp;#x442;&amp;#x440;&amp;#x435;&amp;#x431;&amp;#x438;&amp;#x442;&amp;#x435;&amp;#x43B;&amp;#x438;&amp;#x442;&amp;#x435; &amp;#x434;&amp;#x43E;&amp;#x432;&amp;#x43E;&amp;#x43B;&amp;#x43D;&amp;#x438;, &amp;#x437;&amp;#x430;&amp;#x449;&amp;#x43E;&amp;#x442;&amp;#x43E; &amp;#x432;&amp;#x438;&amp;#x436;&amp;#x434;&amp;#x430;&amp;#x442; &amp;#x43F;&amp;#x440;&amp;#x43E;&amp;#x433;&amp;#x440;&amp;#x435;&amp;#x441;&amp;#x430; &amp;#x432; &amp;#x43D;&amp;#x430;&amp;#x448;&amp;#x430;&amp;#x442;&amp;#x430; &amp;#x440;&amp;#x430;&amp;#x431;&amp;#x43E;&amp;#x442;&amp;#x430;. &amp;#x418; &amp;#x442;&amp;#x43E;&amp;#x432;&amp;#x430; (&amp;#x43E;&amp;#x431;&amp;#x438;&amp;#x43A;&amp;#x43D;&amp;#x43E;&amp;#x432;&amp;#x435;&amp;#x43D;&amp;#x43E;) &amp;#x432;&amp;#x43E;&amp;#x434;&amp;#x438; &amp;#x434;&amp;#x43E; &amp;#x43F;&amp;#x43E;-&amp;#x43C;&amp;#x430;&amp;#x43B;&amp;#x43A;&amp;#x43E; &amp;#x441;&amp;#x442;&amp;#x440;&amp;#x435;&amp;#x441; &amp;#x437;&amp;#x430; &amp;#x43D;&amp;#x430;&amp;#x441;. &amp;#x41E;&amp;#x442;&amp;#x43D;&amp;#x430;&amp;#x447;&amp;#x430;&amp;#x43B;&amp;#x43E; &amp;#x43C;&amp;#x43E;&amp;#x436;&amp;#x435; &amp;#x431;&amp;#x438; &amp;#x435; &amp;#x442;&amp;#x440;&amp;#x443;&amp;#x434;&amp;#x43D;&amp;#x43E; (&amp;#x442;&amp;#x43E; &amp;#x432;&amp;#x441;&amp;#x438;&amp;#x447;&amp;#x43A;&amp;#x43E; &amp;#x435;), &amp;#x43D;&amp;#x43E; &amp;#x441;&amp;#x43B;&amp;#x435;&amp;#x434; &amp;#x43D;&amp;#x44F;&amp;#x43A;&amp;#x43E;&amp;#x43B;&amp;#x43A;&amp;#x43E; &amp;#x43F;&amp;#x44A;&amp;#x442;&amp;#x438; &amp;#x441;&amp;#x442;&amp;#x430;&amp;#x432;&amp;#x430; &amp;#x43B;&amp;#x435;&amp;#x441;&amp;#x43D;&amp;#x43E;. (&amp;#x41F;&amp;#x435;&amp;#x442;&amp;#x44C;&amp;#x43E;) &amp;#x415; &amp;#x43B;&amp;#x435;&amp;#x441;&amp;#x435;&amp;#x43D; &amp;#x438;&amp;#x43D;&amp;#x434;&amp;#x438;&amp;#x43A;&amp;#x430;&amp;#x442;&amp;#x43E;&amp;#x440;, &amp;#x441; &amp;#x43A;&amp;#x43E;&amp;#x439;&amp;#x442;&amp;#x43E; &amp;#x43C;&amp;#x43E;&amp;#x436;&amp;#x435;&amp;#x442;&amp;#x435; &amp;#x434;&amp;#x430; &amp;#x43F;&amp;#x440;&amp;#x435;&amp;#x446;&amp;#x435;&amp;#x43D;&amp;#x438;&amp;#x442;&amp;#x435; &amp;#x444;&amp;#x438;&amp;#x440;&amp;#x43C;&amp;#x430;&amp;#x442;&amp;#x430; &amp;#x438; &amp;#x445;&amp;#x43E;&amp;#x440;&amp;#x430;&amp;#x442;&amp;#x430; &amp;#x441;&amp;#x440;&amp;#x435;&amp;#x449;&amp;#x443; &amp;#x432;&amp;#x430;&amp;#x441;.