cocaine: погружение в облака — Евгений Сафронов
DESCRIPTION
Всё больше и больше разговоров в последнее время занимают облака и технологии, с ними связанные. Многие программисты мечтают о том, чтобы писать масштабируемые и отказоустойчивые приложения было легко и просто. Многим администраторам хочется работать не с разношёрстным зоопарком программ, а в унифицированной и легко управляемой инфраструктуре. Наконец, серверам (наверняка) хочется использовать свои ресурсы на полезные дела, а не на обогрев воздуха. В Яндексе мы решаем все эти проблемы с помощью собственной opensource технологии под названием Cocaine, которую может использовать любой желающий. Что такое Cocaine, какие именно инфраструктурные проблемы он решает, какие возможности предоставляет — обо всем этом и пойдёт речь в докладе.TRANSCRIPT
![Page 1: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/1.jpg)
1
![Page 2: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/2.jpg)
2
Cocaine. Будущее сегодня
Евгений Сафронов, разработчик
Я.Субботник в Минске 30.08.2014
![Page 3: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/3.jpg)
https://github.com/cocaine 3
OverviewOS вашей инфраструктуры.
Kernel & Userspace.
Управление ресурсами.
Сервисы.
Приложения.
Изоляция.
![Page 4: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/4.jpg)
https://github.com/cocaine 4
СервисыАбстрактные фронтенды к различным
функциям вашей инфраструктуры.
Пишешь один раз (на C++) - используешь на
любом языке.
Готовые решения! Locator, Storage, Logging,
Node, UrlFetching, Elasticsearch …
![Page 5: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/5.jpg)
https://github.com/cocaine 5
Сервисы: LocatorРаздает информацию о сервисах.
Все, что нужно знать - имя сервиса.
Информация: адрес, версия протокола, API.
Мы не используем IDL - вся информация о сервисах
передается в рантайме.
![Page 6: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/6.jpg)
https://github.com/cocaine 6
Сервисы: StorageВряд ли какая облачная платформа
обойдется без облачного хранилища.
Нужна возможность писать, читать и
искать данные.
В нашем случае - это Elliptics.
![Page 7: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/7.jpg)
https://github.com/cocaine 7
Сервисы: NodeКонтролирует работу приложений.
Доставляет приложения на ноду.
Запускает, останавливает.
Собирает информацию и метрики.
Использует контейнеры для изоляции
приложений!
![Page 8: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/8.jpg)
https://github.com/cocaine 8
Сервисы: ApplicationПриложение - любой пользовательский код.
Используется собственный RPC протокол
(мультиплексирование, каналы).
Event-driven.
Пишем легко с фреймворками.
C++, Java, NodeJs, Go, Python, Ruby, Perl.
![Page 9: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/9.jpg)
https://github.com/cocaine 9
Сервисы: LoggingЕдиная точка входа для логов со всех
приложений.
Структуризация логов.
Индексация, полнотекстовый поиск, Elasticsearch.
![Page 10: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/10.jpg)
https://github.com/cocaine 10
Балансировка
Per-application. Автоматическая балансировка
нагрузки для каждого приложения.
IPVS. Динамические веса, мгновенная реакция на
изменения в кластере.
Routing Groups. Расщепление трафика между API-
совместимыми приложениями.
![Page 11: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/11.jpg)
11
Что ждет нас впереди?
![Page 12: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/12.jpg)
https://github.com/cocaine 12
Features: Dual-streaming RPCДвухсторонний канал между приложением/сервисом и
пользователем.
![Page 13: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/13.jpg)
https://github.com/cocaine 13
Features: Dispatch graphГибкий протокол в виде дерева
переходов.
Можно реализовывать свои
собственные протоколы.
![Page 14: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/14.jpg)
https://github.com/cocaine 14
Features: RaftАлгоритм достижения консенсуса в распределенной системе.
Более подробно: http://raftconsensus.github.io
![Page 15: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/15.jpg)
https://github.com/cocaine 15
Features: Raft.UnicornРаспределенный согласованный сервис
хранения конфигураций с возможностью
оповещения подписчиков об изменениях.
Ближайший аналог - etcd.
![Page 16: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/16.jpg)
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: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/17.jpg)
17
Взгляд в будущее
![Page 18: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/18.jpg)
https://github.com/cocaine 18
Features: AAAАвторизация, приложения знали свои права.
Аутентификация, чтобы сервисы были уверены
в подлинности клиентов.
Аккаунтинг, чтобы можно было считать
деньги.
![Page 19: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/19.jpg)
https://github.com/cocaine 19
Features: Debugging Удаленная отладка приложений в облаке.
Подключение прямо к работающему
приложению
Профилирование.
Определение bottleneck’ов.
![Page 20: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/20.jpg)
https://github.com/cocaine 20
Improvements: SchedulerУправление ресурсами.
Распределение нагрузки.
Возможность контролировать ресурсы снизу.
Service Level Agreement.
![Page 21: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/21.jpg)
https://github.com/cocaine 21
Features: HTTPНекоторым пользователям не нужен наш
протокол. Они хотят просто залить HTTP
приложение без изменений, и чтобы оно
получило все преимущества облака.
Почему бы не дать такую возможность?
![Page 22: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/22.jpg)
https://github.com/cocaine 22
Features: Distributed tracingУникальный id на каждый запрос.
Все логи включают в себя этот id.
Построение дерева вызовов и определение
полного пути запроса.
Профилирование bottleneck’ов.
![Page 23: Cocaine: погружение в облака — Евгений Сафронов](https://reader034.vdocuments.site/reader034/viewer/2022052214/54b6fcda4a7959b42a8b45f8/html5/thumbnails/23.jpg)
Спасибо за внимание!
23