В тайните програмистки общества, старите илюминати винаги са казвали „Покажи си деплоймънта, за дати кажа в какво здравословно състояние е проектът ти.“
Подобно на кръвоносната система в един жив организъм, всеки проект има система, по която текат различните функционалности, минават през много хора и отдели и накрая стигат до потребителите. Последната и най-важна стъпка от тази система е когато със свито сърце разставяме новонаписания код, току що опечената база данни и каквото още се сетите пред треперещите пръсти на клиента. Много рядко се замисляме колко важна е тази стъпка и как на практика тя определя целия процес на разработка на софтуер.
Целта ни е да покажем как, обратно на популярните програмистки легенди, и ние и бизнеса печелим от въвеждането на чест deployment. Изглежда незначително, но тази промяна налага съвсем различен и, според много хора по-добър, работен процес.
Разглеждайки този процес ще се спрем на излекуването на един болен проект чрез тайни масонски ритуали за deployment без стрес като постоянна интеграция, автоматизация до дупка и тестване на всичко, което мърда.
6. ЛОШ?
• Ръчен
• Труден
•С възможност за грешка
• “поп-фолк” деплоймънт
• Заради което, обикновено - рядък
7.
8. КАКЪВ Е МОЯТ?
• Колко лесно можете да оправите проблем/бъг?
•А колко лесно вашите колеги могат да оправят ваш
проблем/бъг?
• Дали всички в тима го “могат”?
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