SlideShare a Scribd company logo
Лучшие практики
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
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Код и инфраструктура
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
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Код и многослойная архитектура
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
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
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
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Accelerate Your Delivery
by Google
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
κυβερνήτης
кормчий
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

PPT
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
PDF
Docker networking
PDF
Проникновение в Docker с примерами
PDF
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
PDF
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
PPTX
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
PDF
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
PPTX
Процесс разработки и тестирования с Docker + gitlab ci
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Docker networking
Проникновение в Docker с примерами
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Процесс разработки и тестирования с Docker + gitlab ci

What's hot (20)

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

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

PPTX
Введение в Docker
PPTX
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
PPTX
Docker в работе: взгляд на использование в Badoo через год
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PDF
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
PDF
Локальное окружение на Docker
PPTX
Стабильны ли ваши приложения в облаках?
PDF
Docker - счастье для хомячка или ника?
PPT
Docker - быстро, просто, наглядно
PDF
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
PDF
obzor-tiekhnologhii-kontieinierov
PDF
DC/OS more than PAAS
PDF
Docker контейнерная революция
PDF
Continuousdelivery
PPTX
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
PPTX
PDF
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
PDF
Как не стать рабом облака. PaaS 2.0 с Docker
Введение в Docker
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на использование в Badoo через год
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Локальное окружение на Docker
Стабильны ли ваши приложения в облаках?
Docker - счастье для хомячка или ника?
Docker - быстро, просто, наглядно
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
obzor-tiekhnologhii-kontieinierov
DC/OS more than PAAS
Docker контейнерная революция
Continuousdelivery
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)
Как не стать рабом облака. PaaS 2.0 с Docker
Ad

More from Ontico (20)

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

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