Cocaine — YaC 2013: A Closer Look

31

description

Слайды к докладу на Yet Another Conference 2013 в Москве — http://tech.yandex.ru/events/yac/2013. Информация о самом докладе доступна вот здесь: http://tech.yandex.ru/events/yac/2013/talks/1087.

Transcript of Cocaine — YaC 2013: A Closer Look

Page 1: Cocaine — YaC 2013: A Closer Look
Page 2: Cocaine — YaC 2013: A Closer Look

2758.933194

2-8-15-2

Сибирёв Андрей

1734,45

2-8-7

Co caine CloudsA Cl oser Look

Page 3: Cocaine — YaC 2013: A Closer Look

Мы делаем инфраструктуру.

3

Page 4: Cocaine — YaC 2013: A Closer Look

Как и десять лет назад, обычно инфраструктура представляет из себя бардак.

При этом, инфраструктура является основой любого современного бизнеса.

Кажется, что-то здесь не так.

Немного истории

4

© S

impl

eDes

ktop

s.co

m

Page 5: Cocaine — YaC 2013: A Closer Look

Компании начинают с небольшого количества серверов.

Постепенно парк серверов растёт, вместе с ростом пользовательской базы и, следовательно, нагрузки.

В начале был сервер

5

© S

impl

eDes

ktop

s.co

m

Page 6: Cocaine — YaC 2013: A Closer Look

Рано или поздно, компания обнаруживает у себя кучу разнородного железа.

И если его использование документировано и учтено, то всё хорошо.

Но такое встречается редко.

В начале был сервер

6

© S

impl

eDes

ktop

s.co

m

Page 7: Cocaine — YaC 2013: A Closer Look

Разнообразие — это великое зло.

7

Page 8: Cocaine — YaC 2013: A Closer Look

В программах есть ошибки.

Ошибки чинят и выпускают новые версии программ, на радость пользователям.

Правда, эти новые версии сначала нужно пользователям доставить.

И на сервере был софт

8

© S

impl

eDes

ktop

s.co

m

Page 9: Cocaine — YaC 2013: A Closer Look

Очевидно, чтобы выкатить новую версию программы, нужна интеллектуальная система деплоймента приложений.

Например, пять тысяч строк на Perl и Rsync!

На самом деле, нет.

И на сервере был софт

9

© S

impl

eDes

ktop

s.co

m

Page 10: Cocaine — YaC 2013: A Closer Look

Rsync — не инструмент деплоймента.

10

Page 11: Cocaine — YaC 2013: A Closer Look

Программы, в которых есть ошибки, ломаются в самое неподходящее время.

После работы пяти тысяч строк на Perl понять где и что именно сломалось невозможно.

Бардак только что стал в два раза больше.

И софт был не очень

11

© S

impl

eDes

ktop

s.co

m

Page 12: Cocaine — YaC 2013: A Closer Look

Человечество изобрело мониторинг и метрики, чтобы такого никогда не было.

Только об этом надо было думать в самом начале.

Потому что невозможно управлять хаосом.

И софт был не очень

12

© S

impl

eDes

ktop

s.co

m

Page 13: Cocaine — YaC 2013: A Closer Look

Мониторинг — это контроль.

13

Page 14: Cocaine — YaC 2013: A Closer Look

Иногда программисты пишут быстрые программы.

Звучит, вроде бы, хорошо, но, на самом деле, это не всегда так.

Обогревать датацентры серверами — не самая хорошая экономическая модель.

Утилизация ресурсов

14

© S

impl

eDes

ktop

s.co

m

Page 15: Cocaine — YaC 2013: A Closer Look

Ваше приложение попало на главную страницу Хабра.

И тысяча пользователей превратилась в пятьдесят тысяч. Вот это да, стартап окупился за одну ночь!

То есть, я хотел сказать «503 Service Temporarily Unavailable».

Пики нагрузки

15

© S

impl

eDes

ktop

s.co

m

Page 16: Cocaine — YaC 2013: A Closer Look

Единообразие — это гибкость.

16

Page 17: Cocaine — YaC 2013: A Closer Look

© Volkswagen AG

Page 18: Cocaine — YaC 2013: A Closer Look

Модульная архитектура, унифицированные вычислительные ресурсы: слоты, слайсы, юниты.

Детерминированная система деплоймента приложений.

Тесты, метрики и мониторинг. Мониторинг, метрики и тесты.

Cloud

18

© S

impl

eDes

ktop

s.co

m

Page 19: Cocaine — YaC 2013: A Closer Look

Kernel

DriversResource ManagersAPI

Userland

Apps

Like an OS

19

© S

impl

eDes

ktop

s.co

m

Page 20: Cocaine — YaC 2013: A Closer Look

Аналогичны модулям ядра в Linux.

Logging, Storage, Search & Indexing, URL Fetching, Geolocation, ...

Теперь все приложения — тоже сервисы.

Сервисы

20

© S

impl

eDes

ktop

s.co

m

Page 21: Cocaine — YaC 2013: A Closer Look

Discovery & Arbitration. Для обращения к сервису нужно знать только его имя.

Мы отказались от IDL, все метаданные о сервисе приложение получает в рантайме.

HTTP/2.0-like RPC. Непрозрачные бинарные потоки, мультиплексирование, расширяемость, распространённость.

Локатор

21

© S

impl

eDes

ktop

s.co

m

Page 22: Cocaine — YaC 2013: A Closer Look

Сервисы — это абстрактные фронтэнды к разнообразным функциям инфраструктуры.

Logging Service может быть реализован как через Syslog, так и через Logstash.

Смена реализации делается через изменение конфига. Код приложений остаётся неизменным.

Плагины

22

© S

impl

eDes

ktop

s.co

m

Page 23: Cocaine — YaC 2013: A Closer Look

Система хранения — это фундамент для любой облачной платформы.

Самое главное, такая система должна быть надёжной, включая защиту от котиков и безумных экскаваторщиков.

Мы используем Elliptics.

Storage Service

23

© S

impl

eDes

ktop

s.co

m

Page 24: Cocaine — YaC 2013: A Closer Look

Надёжнее, чем молитва.

Вторичные индексы, стриминг, кэш, server-side processing и все остальные ключевые слова из других систем хранения данных.

И, главное, защита от атомной войны!

Elliptics

24

© S

impl

eDes

ktop

s.co

m

Page 25: Cocaine — YaC 2013: A Closer Look

Контролирует работу приложений — доставка на ноды, конфигурация, управление жизненным циклом.

Собирает и хранит метрики и статистику о работе приложений для балансировщика.

Поддерживаются процессы или контейнеры.

Node Service

25

© S

impl

eDes

ktop

s.co

m

Page 26: Cocaine — YaC 2013: A Closer Look

Контейнеры — это легковесная виртуализация. Нет гипервизора, все контейнеры делят одно ядро.

Процессы работают в изолированных неймспейсах: pid, uid, ipc, network, filesystem, mounts, ...

Запуск контейнера происходит в сотни раз быстрее, чем запуск виртуальной машины.

Контейнеры

26

© S

impl

eDes

ktop

s.co

m

Page 27: Cocaine — YaC 2013: A Closer Look

Стандарт распространения приложений на базе Linux Containers.

Поддерживается Red Hat, Rackspace, Cloudflare, Ebay, Mozilla, OpenStack, Chef, Puppet, ...

Единый контейнер, который будет работать как на ноутбуке разработчика, так и на кластере из сотен машин.

Docker

27

Page 28: Cocaine — YaC 2013: A Closer Look

Layer 3. Это значит не только HTTP — какие угодно данные в любом формате.

Балансировка в ядре: IPVS, IPv6, динамические веса, мгновенная реакция на изменения в кластере.

Routing Groups. Расщепление траффика между несколькими интерфейсно-совместимыми приложениями.

Балансировка

28© SimpleDesktops.com

Page 29: Cocaine — YaC 2013: A Closer Look

Доступ к сервисам по токенам, аудит и, следовательно, биллинг.

Поддержка Ruby, Racket и Java.

HTTP-only режим.

Планы на будущее

29

© S

impl

eDes

ktop

s.co

m

Page 30: Cocaine — YaC 2013: A Closer Look

Спасибо за внимание

Page 31: Cocaine — YaC 2013: A Closer Look

31

Андрей СибирёвРуководитель службы разработки облачных технологий

[email protected]

@kobolog

kobolog

github.com/cocaine