Эволюция процесса деплоя в проекте — Денис Яковлев,...

38
Эволюция процесса деплоя в проекте Яковлев Денис 2gis.ru @rnd2gis

Upload: 2-

Post on 25-Jul-2015

90 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Эволюция процесса деплоя впроектеЯковлев Денис

2gis.ru    @rnd2gis

Page 2: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

О себе

Page 3: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

•  Parallels

•  10 лет

•  От QA engineer до Team Lead

•  2ГИС

•  ~1.5 года

•  Ведущий разработчик

3

Page 4: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Deploy

Page 5: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Составляющие

Page 6: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Код

•  SCP

•  FTP/SFTP

•  Rsync

•  Git pull

6

Page 7: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Данные

•  Миграции

•  yii migrate

•  django-admin.py migrate

•  etc...

7

Page 8: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Конфиги

•  Значения переменных

•  Рестарт сервисов

8

Page 9: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Third party•  Install

•  Upgrade

•  Configure

9

Page 10: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Решения"в лоб"

Page 11: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

"Ручками"

•  Wiki

•  SSH

11

Page 12: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Скрипты

•  Bash

•  Perl

•  PowerShell

12

Page 13: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Плюсы

Page 14: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

•  Быстро

•  Просто

Но только для простых проектов

14

Page 15: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Минусы

Page 16: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Увеличивается

•  Количество документации

•  Сложность скриптов

•  Ручной труд

16

Page 17: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Infrastructure asa code

Page 18: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

The essence of Infrastructure as Code is to treat the configuration of systems

the same way that software source code is treated

Kief Morris. ThoughtWorks

Infrastructure automation makes it possible to carry out actions repeatedly,

across a large number of nodes. Infrastructure as code uses techniques,

practices, and tools from software development to ensure those actions are

thoroughly tested before being applied to business critical systems.

Kief Morris. ThoughtWorks

““

18

Page 19: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Инструменты

Page 20: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

CMS

•  Ansible

•  Chef

•  SaltStack

•  Puppet

•  ...

20

Page 21: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Ansible

Page 22: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Ansible. Host inventory[webservers]

www.example1.com

www.example2.com

[dbservers]

db1.example.com

db2.example.com

01.

02.

03.

04.

05.

06.

22

Page 23: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Ansible. Playbooks•  hosts

•  tasks

ansible-playbook -i hosts playbook.yml

23

Page 24: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Ansible. nginx install---

- hosts: webservers

tasks:

- name: Install nginx

yum: name=nginx state=latest

- name: Copy nginx configuration

template: src=default.conf dest=/path/to/file

notify: restart nginx

01.

02.

03.

04.

05.

06.

07.

08.

24

Page 25: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

25

Page 26: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Chef

Page 27: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Chef

•  Cookbooks

•  Roles

•  Environment

27

Page 28: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Chef. Configurations•  Chef server

28

Page 29: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

29

Page 30: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Chef. Configurations•  Chef server

•  Chef zero

•  Chef solo

30

Page 31: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Chef: nginx installpackage "nginx" do

action :install

end

01.

02.

03.

31

Page 32: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Рабочиемоменты

Page 33: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

•  Зона ответственности

•  Новый workflow разработки

•  + Написание инфраструктуры

•  + Тестирование инфраструктуры

33

Page 34: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Тестирование

•  Vagrant

vagrant init hashicorp/precise32

vagrant up

34

Page 35: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Тестирование

Vagrant.configure("2") do |config|

config.vm.provision "chef_solo" do |chef|

chef.cookbooks_path = ["cookbooks", "my_cookbooks"]

chef.add_recipe "apache"

end

end

01.

02.

03.

04.

05.

06.

35

Page 36: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

С чего начать?

Page 37: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

•  Автоматизировать простой сервис

•  Ссылки

•  https://galaxy.ansible.com

•  https://supermarket.chef.io/cookbooks

•  https://docs.ansible.com/playbooks_best_practices.html

37

Page 38: Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС

Вопросы?

Яковлев Денис

[email protected]

38