cocaine: погружение в облака — Евгений Сафронов

24
1

Upload: yandex

Post on 15-Jan-2015

2.140 views

Category:

Technology


3 download

DESCRIPTION

Всё больше и больше разговоров в последнее время занимают облака и технологии, с ними связанные. Многие программисты мечтают о том, чтобы писать масштабируемые и отказоустойчивые приложения было легко и просто. Многим администраторам хочется работать не с разношёрстным зоопарком программ, а в унифицированной и легко управляемой инфраструктуре. Наконец, серверам (наверняка) хочется использовать свои ресурсы на полезные дела, а не на обогрев воздуха. В Яндексе мы решаем все эти проблемы с помощью собственной opensource технологии под названием Cocaine, которую может использовать любой желающий. Что такое Cocaine, какие именно инфраструктурные проблемы он решает, какие возможности предоставляет — обо всем этом и пойдёт речь в докладе.

TRANSCRIPT

Page 1: Cocaine: погружение в облака — Евгений Сафронов

1

Page 2: Cocaine: погружение в облака — Евгений Сафронов

2

Cocaine. Будущее сегодня

Евгений Сафронов, разработчик

Я.Субботник в Минске 30.08.2014

Page 3: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 3

OverviewOS вашей инфраструктуры.

Kernel & Userspace.

Управление ресурсами.

Сервисы.

Приложения.

Изоляция.

Page 4: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 4

СервисыАбстрактные фронтенды к различным

функциям вашей инфраструктуры.

Пишешь один раз (на C++) - используешь на

любом языке.

Готовые решения! Locator, Storage, Logging,

Node, UrlFetching, Elasticsearch …

Page 5: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 5

Сервисы: LocatorРаздает информацию о сервисах.

Все, что нужно знать - имя сервиса.

Информация: адрес, версия протокола, API.

Мы не используем IDL - вся информация о сервисах

передается в рантайме.

Page 6: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 6

Сервисы: StorageВряд ли какая облачная платформа

обойдется без облачного хранилища.

Нужна возможность писать, читать и

искать данные.

В нашем случае - это Elliptics.

Page 7: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 7

Сервисы: NodeКонтролирует работу приложений.

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

Запускает, останавливает.

Собирает информацию и метрики.

Использует контейнеры для изоляции

приложений!

Page 8: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 8

Сервисы: ApplicationПриложение - любой пользовательский код.

Используется собственный RPC протокол

(мультиплексирование, каналы).

Event-driven.

Пишем легко с фреймворками.

C++, Java, NodeJs, Go, Python, Ruby, Perl.

Page 9: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 9

Сервисы: LoggingЕдиная точка входа для логов со всех

приложений.

Структуризация логов.

Индексация, полнотекстовый поиск, Elasticsearch.

Page 10: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 10

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

Per-application. Автоматическая балансировка

нагрузки для каждого приложения.

IPVS. Динамические веса, мгновенная реакция на

изменения в кластере.

Routing Groups. Расщепление трафика между API-

совместимыми приложениями.

Page 11: Cocaine: погружение в облака — Евгений Сафронов

11

Что ждет нас впереди?

Page 12: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 12

Features: Dual-streaming RPCДвухсторонний канал между приложением/сервисом и

пользователем.

Page 13: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 13

Features: Dispatch graphГибкий протокол в виде дерева

переходов.

Можно реализовывать свои

собственные протоколы.

Page 14: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 14

Features: RaftАлгоритм достижения консенсуса в распределенной системе.

Более подробно: http://raftconsensus.github.io

Page 15: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 15

Features: Raft.UnicornРаспределенный согласованный сервис

хранения конфигураций с возможностью

оповещения подписчиков об изменениях.

Ближайший аналог - etcd.

Page 16: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 16

Structured loggingТеперь Logging Service умеет работать со

структурированными логами.

Приложение само определяет степень

структуризации логов.

Filter

level >= info

{ level: info message: «very important», id: 42, errno: 0, url: «ya.ru» }

Map

Page 17: Cocaine: погружение в облака — Евгений Сафронов

17

Взгляд в будущее

Page 18: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 18

Features: AAAАвторизация, приложения знали свои права.

Аутентификация, чтобы сервисы были уверены

в подлинности клиентов.

Аккаунтинг, чтобы можно было считать

деньги.

Page 19: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 19

Features: Debugging Удаленная отладка приложений в облаке.

Подключение прямо к работающему

приложению

Профилирование.

Определение bottleneck’ов.

Page 20: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 20

Improvements: SchedulerУправление ресурсами.

Распределение нагрузки.

Возможность контролировать ресурсы снизу.

Service Level Agreement.

Page 21: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 21

Features: HTTPНекоторым пользователям не нужен наш

протокол. Они хотят просто залить HTTP

приложение без изменений, и чтобы оно

получило все преимущества облака.

Почему бы не дать такую возможность?

Page 22: Cocaine: погружение в облака — Евгений Сафронов

https://github.com/cocaine 22

Features: Distributed tracingУникальный id на каждый запрос.

Все логи включают в себя этот id.

Построение дерева вызовов и определение

полного пути запроса.

Профилирование bottleneck’ов.

Page 23: Cocaine: погружение в облака — Евгений Сафронов

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

23

Page 24: Cocaine: погружение в облака — Евгений Сафронов

24

Github.com/cocaine

Tech.yandex.ru/cocaine

[email protected]