SQL - хардкорные встречи и...

32
1

Transcript of SQL - хардкорные встречи и...

Page 1: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

1

Page 2: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

2

SQL

Page 3: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

3

SQL

SignalR Redis

Queue

Worker

Page 4: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

4

Page 5: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

5

Горизонтальное масштабирование

CI-сервер и тесты

Staging

Production

Армия клонов

Облако

Компьютеры разработчиков

Окружения для деплоя

Page 6: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

6Dev CI Server Staging Production Cluster Multiple

installlationsCloud

SQL

SignalR

Redis

Queue

Worker

Page 7: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

7

Проблемы при деплое● Сложность самого процесса из-за большого количества

компонент и зависимостей между ними

● Никто полностью не понимает, как и что должно быть развёрнуто

● Устаревание документации

● Зависимости не всегда совместимы друг с другом

● Проблемы с откатом

Page 8: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

8

Page 9: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

9

Проблемы при деплое● Сложность самого процесса из-за большого количества

компонент и зависимостей между ними

● Никто полностью не понимает, как и что должно быть развёрнуто

● Устаревание документации

● Зависимости не всегда совместимы друг с другом

● Проблемы с откатом

Page 10: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

10

Проблемы при решении с помощью VM

● Накладные расходы на виртуализацию (CPU, память)● Каждый образ занимает много места, не относящегося к

приложению● Сложности при хранении конфигурации● Сложно готовить образ● Сложно управлять образами

Page 11: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

11

Эволюция VM

Интерпретатор/рекомпилятор

Intel VTx / AMD-VПаравиртуальные

драйверы

Page 12: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

12

Контейнерная виртуализация

Файловаясистема Сеть

Процесс

1

Процесс

2

Процесс

3

Файловаясистема Сеть

Процесс

1

Процесс

2

Процесс

3

Файловаясистема Сеть

Процесс

1

Процесс

2

Процесс

3

ЯДРО

Контейнер 1 Контейнер 2 Контейнер 1

Page 13: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

13

Проблемы при решении с помощью VM

● Накладные расходы на виртуализацию (CPU, память)● Каждый образ занимает много места, не относящегося к

приложению● Сложности при хранении конфигурации● Сложно готовить образ● Сложно управлять образами

Page 14: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

14

Слои ФС

Базовая системаC:\Windows C:\Program Files C:\Program Files (x86)

Установленные .NET и C++ Redist

Установленное приложение C:\deploydir\

Локальные файлы C:\Temp

Итоговая файловая системаC:\*

Page 15: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

15

Проблемы при решении с помощью VM

● Накладные расходы на виртуализацию (CPU, память)● Каждый образ занимает много места, не относящегося к

приложению● Сложности при хранении конфигурации● Сложно готовить образ● Сложно управлять образами

Page 16: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

16 Базоваясистема

Dockerfile +

Базоваясистема

+ компонентыDockerfile +

Образ деплояприложения

Локальные файлы

+ образ

Постоянноехранилищев ФС хоста

Сеть

Процесс

1

Процесс

2

Процесс

3

ФС

Контейнер

NAT,Bridge,Overlay,

etc

Сетьхоста

Page 17: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

17

Демо

http://github.com/kekekeks/dotnext2016spb

Page 18: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

18

Проблемы при решении с помощью VM

● Накладные расходы на виртуализацию (CPU, память)● Каждый образ занимает много места, не относящегося к

приложению● Сложности при хранении конфигурации● Сложно готовить образ● Сложно управлять образами

Page 19: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

19

Docker Registry

Private Registry(registry.yourcompany.com)

Компьютерразработчика

Docker Hub(hub.docker.com)

Build Server

Server...Server4

Server3Server2

Server1

Page 20: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

20

Проблемы при решении с помощью VM

● Накладные расходы на виртуализацию (CPU, память)● Каждый образ занимает много места, не относящегося к

приложению● Сложности при хранении конфигурации● Сложно готовить образ● Сложно управлять образами

Page 21: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

21

Полезность разработчику

● Изолированное чистое выделенное и переносимое окружение для запуска приложения.

● Не надо думать о возможных проблемах совместимости с софтом, установленным на целевом сервере.

● Все серверы выглядят одинаково, т. к. находятся за пределами контейнера

Один раз собранный образ можно запускать где угодно:

Page 22: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

22

Полезность администратору

● Приложения больше не могут между собой конфликтовать

● Не надо думать о трёхстраничной инструкции по установке всех необходимых зависимостей

● Все приложения выглядят одинаково: контейнеру нужен только конфиг и связь с сервисами и другими контейнерами.

На однажды настроенном сервере можно запускать что угодно:

Page 23: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

23

Ехал докер через докер...

Docker

Управляет

Git

Собираетприложение

Build Container

Получаетисходники

Отправляет приложение и Dockerfile докеру

docker build .

Page 24: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

24

SQL

SignalR

Redis

Queue

Worker

Докер, докер, докер, докер

Page 25: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

25

Типы Windows-контейнеров

Приложение

Ядро

Приложение

Ядро гостяHyperV

Ядро хоста

Windows ServerContainer

Hyper-VContainer

● Windows Server Core

● Быстро запускается

● Требует меньше ресурсов

● Windows Server Nano

● Быстро запускается

● Требует меньше ресурсов

Docker

Registry Swarm ...

Page 26: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

26

Хранилища

Директория в ФС хоста

● удобен доступ на редактирование со стороны хоста

● При присоединении используется пусть в ФС

Volume container

● Volume доступен по имени, расположение данных контролируется Docker

● Файлы из контейнера автоматически копируются в volume, если та изначально пуста

Page 27: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

27

Docker Compose

version: '2'services: web: image: web ports: - "5000:5000" volumes: - .:c:\data depends_on: - redis redis: image: redis

Page 28: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

28

Docker Swarm

Host1(win)

Host2(win)

Host3(linux)

Host1(linux) ...

Swarm

Docker APIClient

Page 29: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

29

Сети

● NAT (по-умолчанию) — контейнеры находятся в отдельной от внешнего мира сети, хост является шлюзом

● Bridge — контейнеры подключены к сетевому мосту и видны из внешней сети

● Internal — приватная сеть для группы контейнеров● Overlay — приватная сеть для группы контейнеров на

разных хостах (пока не доступно для Windows)

Page 30: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

30

DiscoveryKey/value storage

(etcd/consul)

Известный IPили имя в DNS

SQL

Balancer

"sql1.connstring"

"www1"

"www2"

Page 31: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

31

Обновление софта в контейнерах

Решение:● Не использовать поддерживаемые «непонятно кем» базовые

образы, только образы базовых систем или доверенных издателей (например образы от Microsoft, Canonical, RedHat)

● Пересобирать свои образы с часто используемым набором компонент на регулярной основе

Проблема: софт и библиотеки в базовых контейнерах устаревают и их никто не обновляет.

Page 32: SQL - хардкорные встречи и ...public.jugru.org/dotnext/2016/spb/day_1/track_2/tcukanov.pdf · Базовая система C:\Windows C:\Program Files C:\Program

32

Демо, полезные ссылки, презентация:

https://github.com/kekekeks/dotnext2016spb