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

Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)

  • Upload
    ontico

  • View
    7.779

  • Download
    4

Embed Size (px)

Citation preview

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