SlideShare a Scribd company logo
1 of 352
Download to read offline
Лучшие практики
Continuous Delivery
с Docker
Дмитрий Столяров
v3
Привет!
# whoami
dmitry.stolyarov
# hostname -d
flant.ru
# cat /etc/motd
Лучшие практики
Continuous Delivery с Docker
flant.ru
Continuous Delivery
git
build
test
release
operate
Continuous Delivery
git
build
test
release
operate
Зачем?
Continuous Delivery
git
build
test
release
operate
Опыт
OpenSolaris Zones
# capsh --print | grep experience
Опыт
Gentoo и Linux-VServer 2006
OpenSolaris Zones
# capsh --print | grep experience
Опыт
Gentoo и Linux-VServer 2006
OpenSolaris Zones
procfs v1 by flant 2008
# capsh --print | grep experience
Опыт
Gentoo и Linux-VServer 2006
OpenSolaris Zones
procfs v1 by flant 2008
LXC
# capsh --print | grep experience
Опыт
Gentoo и Linux-VServer 2006
OpenSolaris Zones
procfs v1 by flant 2008
jailer by flant 2009
LXC
# capsh --print | grep experience
Опыт
Gentoo и Linux-VServer 2006
OpenSolaris Zones
procfs v1 by flant 2008
jailer by flant 2009
LXC
Docker 2013, осень
# capsh --print | grep experience
Опыт
Gentoo и Linux-VServer 2006
OpenSolaris Zones
procfs v1 by flant 2008
jailer by flant 2009
LXC
Docker 2013, осень
Docker 2014, 6 июня
# capsh --print | grep experience
Клиенты
Первый канал Forbes.ru Лепра и Dirty Ситимобил Нотамедиа
# capsh --print | grep clients
Внедрения
# capsh --print | grep implementations
10+
прошлых поколений
с 2011 года
Внедрения
4
проекта
уже в продакшне
# capsh --print | grep implementations
10+
прошлых поколений
с 2011 года
Внедрения
4
проекта
уже в продакшне
# capsh --print | grep implementations
10+
прошлых поколений
с 2011 года
2
проекта
на подходе
Зачем Docker? ?
Zero Downtime Deployment
V1
Старая версия
работает
Zero Downtime Deployment
V1
Старая версия
работает
Старая версия
остановлена
Zero Downtime Deployment
V1 V2
Старая версия
работает
Старая версия
остановлена
Новая версия
“прогревается”
Zero Downtime Deployment
V1 V2 V2
Старая версия
работает
Старая версия
остановлена
Новая версия
“прогревается”
Новая версия
работает
Zero Downtime Deployment
V1 V2 V2
Старая версия
работает
Старая версия
остановлена
Новая версия
“прогревается”
Новая версия
работает
Zero Downtime Deployment
V1
Старая версия
работает
Zero Downtime Deployment
V1
Старая версия
работает
Новая версия
“прогревается”
V2V1
Zero Downtime Deployment
V1 V2
Старая версия
работает
Новая версия
“прогревается”
Переключили
трафик
V2V1 V1
Zero Downtime Deployment
V1 V2 V2
Старая версия
работает
Новая версия
“прогревается”
Переключили
трафик
Старая версия
остановлена
V2V1 V1
Zero Downtime Deployment
V1 V2 V2
Старая версия
работает
Новая версия
“прогревается”
Переключили
трафик
Старая версия
остановлена
V2V1 V1
Zero Downtime Deployment
V1 V2 V2
V1 V2 V2V2V1 V1
Zero Downtime Deployment
V1 V2 V2
V1 V2 V2V2V1 V1
Запуск “двух версий”
V1
:80
Запуск “двух версий”
V1
:80
V2
Запуск “двух версий”
V1
:80
V2
:81
Запуск “двух версий”
V1 V2
:80 :81 Сетевые ресурсы
порты, сетевые интерфейсы
Запуск “двух версий”
V1 V2
:80 :81 Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
Запуск “двух версий”
V1 V2
:80 :81 Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
IPC
общая память, семафоры, сообщения
Запуск “двух версий”
V1 V2
Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
IPC
общая память, семафоры, сообщения
PID
идентификаторы процессов, видимость
:80 :81
Убрать конфликты можно...
Запуск “двух версий”
V1
:80
V2
:80
Запуск “двух версий”
V1
:80
V2
:80
Сетевые ресурсы
порты, сетевые интерфейсы
Запуск “двух версий”
V1
:80
V2
:80
Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
Запуск “двух версий”
V1
:80
V2
:80
Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
IPC
общая память, семафоры, сообщения
Запуск “двух версий”
V1
:80
V2
:80
Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
IPC
общая память, семафоры, сообщения
PID
идентификаторы процессов, видимость
Запуск “двух версий”
V1
:80
V2
:80
Docker даёт гарантию изоляции ресурсов
Сетевые ресурсы
порты, сетевые интерфейсы
Файловая система
pid-файлы, директории с кэшем, собственные пути
IPC
общая память, семафоры, сообщения
PID
идентификаторы процессов, видимость
Обновление зависимостей
V1
PHP
v1
driver
v1
Обновление зависимостей
V1
PHP
v1
driver
v1
V1 V2
PHP
driver
v1
driver
v2
Обновление зависимостей
V1
PHP
v1
driver
v1
V1 V2
PHP
driver
v1
driver
v2
V1 V2
PHP
v1
driver
v1
PHP
v2
driver
v2
Обновление зависимостей
V1
PHP
v1
driver
v1
V1 V2
PHP
driver
v1
driver
v2
V1 V2
PHP
v1
driver
v1
PHP
v2
driver
v2
Разрулить конфликты зависимостей тоже можно...
Главный паттерн
V1
Старая версия работает
1
Главный паттерн
V1 V1 V2
Старая версия работает Новая версия “прогревается”
1 2
Главный паттерн
V1 V1 V2
V1 V2
Старая версия работает Новая версия “прогревается”
Переключили трафик
1 2
3
Главный паттерн
V1 V1 V2
V1 V2 V2
Старая версия работает Новая версия “прогревается”
Переключили трафик Старая версия остановлена
1 2
3 4
Главный паттерн
дырявый
openssl
дырявый
openssl
безопасный
openssl
дырявый
openssl
безопасный
openssl
безопасный
openssl
Старая версия работает Новая версия “прогревается”
Переключили трафик Старая версия остановлена
1 2
3 4
Главный паттерн
Ubuntu
14.04
Ubuntu
14.04
Ubuntu
16.04
Ubuntu
14.06
Ubuntu
16.04
Ubuntu
16.04
Старая версия работает Новая версия “прогревается”
Переключили трафик Старая версия остановлена
1 2
3 4
Главный паттерн
Старая версия работает Новая версия “прогревается”
Переключили трафик Старая версия остановлена
1 2
3 4
Независимость
Ubuntu
Независимость
Ubuntu CentOS
Независимость
Ubuntu CentOS Slackware Enterprise Linux
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Конфликт зависимостей приложений
bower, bundler, pip, npm, composer и их зависимостей
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Конфликт зависимостей приложений
bower, bundler, pip, npm, composer и их зависимостей
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Конфликт зависимостей приложений
bower, bundler, pip, npm, composer и их зависимостей
Обновление системного ПО
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Конфликт зависимостей приложений
bower, bundler, pip, npm, composer и их зависимостей
Обновление системного ПО
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Конфликт зависимостей приложений
bower, bundler, pip, npm, composer и их зависимостей
Обновление системного ПО
Возможность отката
Zero Downtime Deployment
Конфликт общих ресурсов
ФС, сокеты, порты, инит-скрипты
Конфликт зависимостей приложений
bower, bundler, pip, npm, composer и их зависимостей
Обновление системного ПО
Возможность отката
#1: Используйте Docker
Воспроизводимость
программисты
git
программисты
staging
git
Воспроизводимость
программисты
staging
QA
git
Воспроизводимость
программисты
staging production
QA
git
Воспроизводимость
production
production
production
cервер #1
git
Воспроизводимость
cервер #1
git
зеркало
пакетов
Воспроизводимость
cервер #1
git
зеркало
пакетов
обновлённое
зеркало
Воспроизводимость
cервер #1
git
зеркало
пакетов
cервер #2
обновлённое
зеркало
Воспроизводимость
cервер #2
cервер#2
cервер
#2
Разработчик: “У меня локально всё работает!”
… а разработчиков пускать на прод запретили.
Воспроизводимость
Тестовое окружение → Продакшн
Воспроизводимость
Тестовое окружение → Продакшн
Выкат на множество серверов
Воспроизводимость
Выкат на несколько кластеров / площадок
Тестовое окружение → Продакшн
Выкат на множество серверов
Воспроизводимость
Выкат на несколько кластеров / площадок
Локальный запуск точной копии
Тестовое окружение → Продакшн
Выкат на множество серверов
Выкат на несколько кластеров / площадок
Локальный запуск точной копии
Тестовое окружение → Продакшн
Выкат на множество серверов
Запуск “старых” версий
Воспроизводимость
Гарантия воспроизводимости
gitпрограммисты
Гарантия воспроизводимости
gitпрограммисты
docker
образ
Гарантия воспроизводимости
git
тестовая
площадка
программисты
docker
образ
Гарантия воспроизводимости
gitпрограммисты
docker
образ
production
тестовая
площадка
Гарантия воспроизводимости
gitпрограммисты
docker
образ
программисты
тестовая
площадка
production
Гарантия воспроизводимости
gitпрограммисты
docker
образ
другие
площадки
тестовая
площадка
production
программисты
Гарантия воспроизводимости
gitпрограммисты
docker
образ
архив
тестовая
площадка
production
программисты
другие
площадки
#2: One image to rule them all
Разобрались с Docker ✔
✔
Как собирать docker-образы? ?
Разобрались с Docker ✔
Разобрались с Docker ✔
Как собирать docker-образы? ?
Куда положить Dockerfile? ?
Код и инфраструктура
development master
git
Код и инфраструктура
development master
git
V2 V1
staging production
Код и инфраструктура
development master
git
V2 V1
staging production
Код и инфраструктура
development master
git
V1 PHP 5.5
V2 V1
Код и инфраструктура
development
staging production
master
git
V2 V1PHP 7 PHP 5.5
V2 V1
Код и инфраструктура
development
staging production
master
git
V2 V1PHP 7 PHP 5.5
V2 V2
Код и инфраструктура
development master
staging production
git
V2 V2PHP 7
V2 V2
PHP 5.5
Код и инфраструктура
development master
staging production
git
V2 V2PHP 7 PHP 5.5
V2 V2
Код и инфраструктура
development master
V2
staging production
V1
git
V2 V1PHP 7 PHP 5.5
Код и инфраструктура
development master
V2
staging production
V1
git
V2 V1PHP 7 PHP 5.5
PHP 7 PHP 5.5
Код и инфраструктура
development master
V2 V1
git
PHP 7 PHP 5.5
staging production
V2 PHP 7 V1 PHP 5.5
Код и инфраструктура
development master
V2
staging production
V2
git
PHP 7 PHP 7
V2 PHP 7 V1 PHP 5.5
Код и инфраструктура
development master
staging production
V2
git
PHP 7
V2 PHP 7 V2 PHP 7
V2
PHP 7
… и должна жить с ним
#3: Инфраструктура – это код
Код и многослойная архитектура
nginx 1.2
V2
frontend
backend
production
V1
Код и многослойная архитектура
nginx 1.2
V2
nginx 1.3
V2
frontend
backend
staging production
V1
Код и многослойная архитектура
nginx 1.2
V2
nginx 1.3
V2
frontend
backend
staging production
V1
Код и многослойная архитектура
nginx 1.2
V2
nginx 1.3
V2
frontend
backend
staging production
V2
Код и многослойная архитектура
nginx 1.2
V2
nginx 1.3
V2
frontend
backend
staging production
V2
Код и многослойная архитектура
nginx 1.3
V2
nginx 1.3
V2
frontend
backend
staging production
V2
Код и многослойная архитектура
V1
development
PHP 5.5
git
V2
production
PHP 7
Код и многослойная архитектура
V1
development
PHP 5.5
nginx 1.2
git
V2
production
PHP 7
nginx 1.3
Код и многослойная архитектура
V2
PHP 7
nginx 1.3
git
программисты
devops
V2
docker-образ #1
PHP 7
nginx 1.3
docker-образ #2
… и это касается не только бекенда
#3: Инфраструктура – это код
Несколько проектов
git project_1
Код nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
Несколько проектов
git project_1
Код nginx
git project_2
Код nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
git project_3
Код nginx
nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
git project_3
Код nginx
nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
git project_3
Код
git project_4
Код nginx
nginx
nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
git project_3
Код
git project_4
Код
Код nginx
git project_6
Код nginx
git project_5
nginx
nginx nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
git project_3
Код
git project_4
Код
Код nginx
git project_6
Код nginx
git project_5
nginx
nginx nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
git project_3
Код
git project_4
Код
Код nginx
git project_6
Код nginx
git project_5
nginx
nginx nginx
WET
WET
we enjoy typing
WET
we enjoy typing
write everything twice
WET
we enjoy typing
write everything twice
waste everyone's time
DRY
DRY
don't repeat yourself
Несколько проектов
git project_1
Код nginx
Несколько проектов
git project_1
Код nginx
git project_2
Код
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginxnginx
Несколько проектов
git project_1
Код
nginx
v1
git project_2
Код
git nginx
nginx
v1
Несколько проектов
git project_1
Код
nginx
v1
git project_2
Код
git nginx
nginx
v1
nginx
v1
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v2
nginx
v1
nginx
v1
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v2
nginx
v2
nginx
v1
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v2
nginx
v2
nginx
v2
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v2
nginx
v3
nginx
v2
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v2
nginx
v3
nginx
v3
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
bundler, composer, pip, npm, ...
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
Dockerfile
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Dockerfile + git submodules
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Dockerfile + git submodules
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Chef
Dockerfile + git submodules
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Chef + Berkshelf
Dockerfile + git submodules
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Chef + Berkshelf
Puppet
Dockerfile + git submodules
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Chef + Berkshelf
Puppet + Librarian
Dockerfile + git submodules
Несколько проектов
git project_1
Код
git project_2
Код
git nginx
nginx
v4
nginx
v4
nginx
v2
Dependency management
bundler, composer, pip, npm, ...
Chef + Berkshelf
Puppet + Librarian
… и требует соответствующих подходов
#3: Инфраструктура – это код
Разобрались с Docker ✔
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Разобрались с Docker
Интегрировали код инфраструктуры ✔
Когда собирать docker-образы? ?
✔
Разобрались с Docker
Интегрировали код инфраструктуры ✔
Когда собирать docker-образы?
Как лучше тегировать docker-образы?
?
?
✔
Git → Docker
Какие бранчи собирать?
Git → Docker
Какие бранчи собирать?
Как тегировать образы?
Как найти старую версию?
Git → Docker
Какие бранчи собирать?
Как тегировать образы?
Как найти старую версию?
Git → Docker
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Как найти старую версию?
Git → Docker
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Что побывало в продакшне? На какую версию откатиться?
Какие из образов должны проходить QA?
Как найти старую версию?
Git → Docker
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Что побывало в продакшне? На какую версию откатиться?
master
Временные образы
master
Временные образы
master
app:master
Временные образы
master
app:master
preview
Временные образы
master
app:master
preview
app:master
Временные образы
master
app:master
release_7
preview
app:master
Временные образы
master
app:master
release_7
app:release_7
preview
app:master
Временные образы
master
app:master
release_7
app:release_7
preview
app:master
Временные образы
master
app:master
release_7
app:release_7
preview
app:master
Временные образы
master
app:master
release_7
app:release_7
preview
app:master
Временные образы
release_7
app:release_7
preview
Временные образы
app:master
master
app:master
app:master
release_7
app:release_7
preview
Временные образы
master
app:master
release_7
app:release_7
preview
Временные образы
master
app:master
app:master
release_7
app:release_7
preview
Временные образы
master
app:master app:master
≠
master
app:master
release_7
app:release_7
preview
Временные образы
app:master
master
app:master
release_7
app:release_7
preview
app:master
Временные образы
master
app:master
release_7
app:release_7
preview
Временные образы
app:master
feature_x
master
app:master
release_7
app:release_7
preview
app:feature_x
Временные образы
app:master
Временные образы
Собирать все бранчи?
Временные образы
Собирать все бранчи? Не стоит
Временные образы
Собирать все бранчи? Не стоит
master — общая интеграция
Временные образы
master — общая интеграция
release — интеграция релизов /^release_.*/
Собирать все бранчи? Не стоит
Временные образы
master — общая интеграция
release — интеграция релизов /^release_.*/
feature — интеграция “фич” /^feature_.*/
Собирать все бранчи? Не стоит
Временные образы
master — общая интеграция
release — интеграция релизов /^release_.*/
feature — интеграция “фич” /^feature_.*/
Выкатывать автоматом?
Собирать все бранчи? Не стоит
Временные образы
master — общая интеграция
release — интеграция релизов /^release_.*/
feature — интеграция “фич” /^feature_.*/
Выкатывать автоматом? Как удобнее
Собирать все бранчи? Не стоит
master 6.0.1
Релизные образы
staging production
master
Релизные образы
app:6.0.1
6.0.1
staging production
staging production
master
Релизные образы
app:6.0.1
6.0.1
app:6.0.1
staging production
master
release_7
Релизные образы
6.0.1
app:6.0.1
app:6.0.1
staging production
6.0.1master
release_7
Релизные образы
app:6.0.1
app:6.0.1
staging production
6.0.1master
release_7 7.0.0
Релизные образы
app:6.0.1
app:6.0.1
staging production
6.0.1master
release_7
Релизные образы
app:6.0.1
app:6.0.1 app:7.0.0
7.0.0
staging production
6.0.1master
release_7
Релизные образы
app:6.0.1
app:6.0.1
7.0.0
app:7.0.0
app:7.0.0
staging production
6.0.1master
release_7
Релизные образы
app:6.0.1
app:6.0.1
7.0.0
app:7.0.0
app:7.0.0
staging production
6.0.1
7.0.0
master
release_7
Релизные образы
app:6.0.1
app:6.0.1 app:7.0.0
app:7.0.0
✗
staging production
6.0.1master
release_7 7.0.0
Релизные образы
app:6.0.1
app:6.0.1 app:7.0.0
app:7.0.0
✗
staging production
master
release_7 7.0.0
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:7.0.0
✗
staging production
master
release_7 7.0.0
6.1.0
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:7.0.0
✗
staging production
master
release_7 7.0.0
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:7.0.0
✗ app:6.1.0
6.1.0
staging production
master
release_7 7.0.0
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
6.1.0
staging production
master
release_7 7.0.0
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
6.1.0
staging production
master
release_7 7.0.0
release_8
Релизные образы
6.0.1 6.1.0
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
staging production
master
release_7 7.0.0
release_8
Релизные образы
6.0.1 6.1.0
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
staging production
6.1.0master
release_7 7.0.0
release_8
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
✗
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
✗
staging production
master
release_7 7.0.0
release_8
6.1.0 6.1.1
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
✗
staging production
master
release_7 7.0.0
release_8
6.1.0 6.1.1
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.0
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0 6.1.1
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0 6.1.1
Релизные образы
6.0.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.0.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
OK
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0
7.0.1
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:6.1.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
7.0.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
7.0.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
app:6.1.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
7.0.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
7.0.1
app:6.1.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
7.0.1
app:6.1.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
OK
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
7.0.1
app:7.0.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
7.0.1
app:7.0.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
staging production
master
release_7 7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
7.0.1
app:7.0.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
staging production
master
7.0.0
release_8
6.1.0
Релизные образы
6.0.1 6.1.1
7.0.1
app:7.0.1
app:6.0.1 app:7.0.0
app:7.0.1
✗ app:6.1.0
✗
app:6.1.1 app:7.0.1
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
git branch
git tag
временные образы
релизные образы
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
docker tag git tag
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
релиз багфикс итерация QA6.0.3
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
релиз багфикс итерация QA6.0.3
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
релиз багфикс итерация QA6.0.3
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
Как найти старую версию?
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
Как найти старую версию?
git tag docker tag
Git`о Docker`ный workflow
Какие бранчи собирать?
Как тегировать образы?
Какой коммит на продакшне? Дельта выката?
Какие из образов должны проходить QA?
Что побывало в продакшне? На какую версию откатиться?
Как найти старую версию?
#4: Свяжите Git с Docker
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Связали Git с Docker ✔
Чего не хватает? ?
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Связали Git с Docker ✔
frontend
backend
Последовательность выката
nginx 1.2
HTTP
PHP 5.5V1
Старая версия
работает
frontend
backend
Последовательность выката
nginx 1.2
HTTP
nginx 1.2
HTTP
Старая версия
работает
Обновили
backend
PHP 5.5V1 PHP 7V2
1
frontend
backend
Последовательность выката
nginx 1.2
HTTP
nginx 1.2
HTTP WS
Старая версия
работает
Обновили
backend
PHP 5.5V1 PHP 7V2
1
frontend
backend
Последовательность выката
nginx 1.2
HTTP
nginx 1.2
HTTP WS
nginx 1.3
HTTP WS
Старая версия
работает
Обновили
backend
Обновили
frontend
PHP 5.5V1 PHP 7V2 PHP 7
1
V2
2
Последовательность выката
PHP 5.5
HTTP
nginx 1.2
HTTP WS
nginx 1.3
HTTP WS
Старая версия
работает
frontend
backend V1
nginx 1.2
PHP 7V2 PHP 7V2
2
1
Обновили
backend
Обновили
frontend
Последовательность выката
PHP 5.5
HTTP
Старая версия
работает
frontend
backend V1
nginx 1.2
Последовательность выката
PHP 5.5
HTTP
nginx 1.3
HTTP
Старая версия
работает
frontend
backend V1
nginx 1.2
PHP 5.5V1
Обновили
frontend
1
Последовательность выката
PHP 5.5
HTTP
nginx 1.3
HTTP
nginx 1.3
HTTP WS
Старая версия
работает
frontend
backend V1
nginx 1.2
PHP 5.5V1 PHP 7V2
Обновили
frontend
Обновили
backend
1
2
Последовательность выката
PHP 5.5
HTTP
nginx 1.3
HTTP
nginx 1.3
HTTP WS
Старая версия
работает
frontend
backend V1
nginx 1.2
PHP 5.5V1 PHP 7V2 2
1
Обновили
frontend
Обновили
backend
Например: frontend → migration → backend
#5: Регламентируйте порядок выката
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Связали Git с Docker ✔
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Связали Git с Docker ✔
Установили порядок выката ✔
Интегрировали код инфраструктуры ✔
Разобрались с Docker ✔
Связали Git с Docker ✔
Установили порядок выката ✔
Снова чего-то не хватает? ?
Docker swarm Docker compose
Docker swarm Docker compose
Docker swarm Docker compose Consul Serf
Dokku
Docker swarm Docker compose Consul Serf
Dokku Shipyard
Docker swarm Docker compose Consul Serf
Dokku Shipyard
Docker swarm Docker compose Consul Serf
Dokku Shipyard
Docker swarm Docker compose Consul Serf
Accelerate Your Delivery
by Google
κυβερνήτης
кормчий
Readiness probe
V1
Старая версия
работает
Readiness probe
V1
Старая версия
работает
V1
Новая версия
прогревается
V2
Readiness probe
V1
Старая версия
работает
V1
Новая версия
прогревается
V2 V1 V2
Readiness
probe
Readiness probe
V1
Старая версия
работает
V1
Новая версия
прогревается
V2 V1
Readiness
probe
V2 V1
Переключили
трафик
V2
Старая версия
остановлена
V2
Synchronous update
V1 V1 V1 V1 V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1 V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1
Synchronous update
V1 V1 V1 V1V2
Synchronous update
V1 V1 V1 V1V2
Synchronous update
V1 V1 V1 V1V2 V2
Synchronous update
V1 V1 V1 V1V2 V2
Synchronous update
V1 V1 V1 V1V2 V2 V2
Synchronous update
V1 V1 V1 V1V2 V2 V2 V2
Synchronous update
V1 V1 V1 V1V2 V2 V2 V2
Synchronous update
V1 V1 V1V2 V2 V2 V2
Synchronous update
V1 V1V2 V2 V2 V2
Synchronous update
V2 V2 V2 V2
Synchronous update
V2 V2 V2 V2 V2
Synchronous update
V2 V2 V2 V2 V2 V2
Synchronous update
V2 V2 V2 V2 V2 V2 V2 V2
Rolling update
V1 V1 V1 V1 V1 V1 V1 V1
Rolling update
V1 V1 V1 V1 V1 V1 V1 V1
Rolling update
V1 V1 V1 V1 V1 V1 V1
Rolling update
V2 V1 V1 V1 V1 V1 V1 V1
Rolling update
V2 V1 V1 V1 V1 V1 V1 V1
Rolling update
V2 V1 V1 V1 V1 V1 V1 V1
Rolling update
V2 V1 V1 V1 V1 V1 V1
Rolling update
V2 V2 V1 V1 V1 V1 V1 V1
Rolling update
V2 V2 V1 V1 V1 V1 V1 V1
Rolling update
V2 V2 V2 V1 V1 V1 V1 V1
Rolling update
V2 V2 V2 V2 V1 V1 V1 V1
Rolling update
V2 V2 V2 V2 V2 V1 V1 V1
Rolling update
V2 V2 V2 V2 V2 V2 V1 V1
Rolling update
V2 V2 V2 V2 V2 V2 V2 V1
Rolling update
V2 V2 V2 V2 V2 V2 V2 V2
kubernetes & release
readiness
probe
kubernetes & release
readiness
probe
synchronous
update
kubernetes & release
readiness
probe
synchronous
update
rolling
update
kubernetes & release
readiness
probe
synchronous
update
canary
releases
rolling
update
kubernetes & operate
service
supervision
kubernetes & operate
service
supervision
liveness probe
kubernetes & operate
service
supervision
liveness probe self-healing
kubernetes & operate
service
supervision
liveness probe
autoscaling
self-healing
kubernetes & operate
service
supervision
liveness probe
monitoring
influx + grafana
autoscaling
self-healing
kubernetes & operate
service
supervision
liveness probe
monitoring
influx + grafana
autoscaling
self-healing
logging
elastic + fluent + kibana
kubernetes
Мощный
фундамент
kubernetes
Мощный
фундамент
Большие
перспективы
kubernetes
Мощный
фундамент
Большие
перспективы
Интеграция
вместо велосипедов
kubernetes
Мощный
фундамент
Большие
перспективы
Простота
Интеграция
вместо велосипедов
kubernetes
Мощный
фундамент
Большие
перспективы
Невероятная
совместимость
Простота
Интеграция
вместо велосипедов
kubernetes
Мощный
фундамент
Большие
перспективы
Невероятная
совместимость
Простота
Интеграция
вместо велосипедов
Всеразмерность
… ведь она есть и работает!
#6: Используйте готовую платформу
#1: Используйте Docker
#1: Используйте Docker
#2: One image to rule them all
#1: Используйте Docker
#2: One image to rule them all
#3: Инфраструктура – это код
#1: Используйте Docker
#2: One image to rule them all
#3: Инфраструктура – это код
#4: Свяжите Git и Docker
#1: Используйте Docker
#2: One image to rule them all
#3: Инфраструктура – это код
#4: Свяжите Git и Docker
#5: Регламентируйте порядок выката
#1: Используйте Docker
#2: One image to rule them all
#3: Инфраструктура – это код
#4: Свяжите Git и Docker
#5: Регламентируйте порядок выката
#6: Используйте готовую платформу
Приглашаем в гости
на наш стенд В3
LINUX-КВЕСТ
Удивительный квест для самых
отважных сисадминов.
Записывайтесь прямо сейчас
и покажите свой опыт
в Linux-кунгфу.
1 июня, 12:30
Участникам потребуется ssh-клиент ;)
pam_docker
github.com/flant/pam_docker
Поддержите нас, поставьте ★
#1: Используйте Docker
#2: One image to rule them all
#3: Инфраструктура – это код
#4: Свяжите Git и Docker
#5: Регламентируйте порядок выката
#6: Используйте готовую платформу
Дмитрий Столяров
dmitry.stolyarov@flant.ru
flant.ru
Работа в Нижнем Новгороде
Пишите на hr@flant.ru
Лучшие практики
Continuous Delivery
с Docker
Continuous Delivery
git
build
test
release
operate
Gitlab
Kubernetes

More Related Content

What's hot

Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Ontico
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)Ontico
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Ontico
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Anton Turetsky
 
Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...
Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...
Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...Ontico
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Ontico
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон ТурецкийCodeFest
 
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays HighloadYehor Herasymchuk
 
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...Ontico
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав БахмутовCodeFest
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Антон Галицын
Антон ГалицынАнтон Галицын
Антон ГалицынCodeFest
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into BadooAnton Turetsky
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
 

What's hot (20)

Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...
Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...
Управление секретами в кластере Kubernetes при помощи Hashicorp Vault / Серге...
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Антон Турецкий
Антон ТурецкийАнтон Турецкий
Антон Турецкий
 
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload
 
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Антон Галицын
Антон ГалицынАнтон Галицын
Антон Галицын
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 

Similar to Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)

Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Triggermesh - FaaS платформа на Kubernetes
Triggermesh - FaaS платформа на KubernetesTriggermesh - FaaS платформа на Kubernetes
Triggermesh - FaaS платформа на KubernetesMad Devs
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаYandex
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityDefconRussia
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
 
Service mesh для микросервисов
Service mesh для микросервисовService mesh для микросервисов
Service mesh для микросервисовIvan Kruglov
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Fwdays
 

Similar to Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант) (20)

Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Triggermesh - FaaS платформа на Kubernetes
Triggermesh - FaaS платформа на KubernetesTriggermesh - FaaS платформа на Kubernetes
Triggermesh - FaaS платформа на Kubernetes
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
Anton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source securityAnton Bolshakov - Joint anti-crime. Open source security
Anton Bolshakov - Joint anti-crime. Open source security
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевПакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
 
Service mesh для микросервисов
Service mesh для микросервисовService mesh для микросервисов
Service mesh для микросервисов
 
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
 
Vanessa.services разработка в облаке
Vanessa.services   разработка в облакеVanessa.services   разработка в облаке
Vanessa.services разработка в облаке
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)