Разработчик (и) | Андрей Сибирёв и команда Яндекс |
---|---|
Первый выпуск | 20 марта 2011 г.; 9 лет назад (2011-03-20) |
Написано на | C ++ |
Тип | Веб-разработка |
Веб-сайт | github.com / cocaine |
Кокаин (Интегрированный сетевой движок настраиваемых всевозможных пользовательских приложений) - это система с открытым исходным кодом PaaS для создания пользовательских приложений облачного хостинга, похожих на Bluemix, Google App Engine или Heroku. Таким образом, уже реализовано несколько служб, в том числе служба определения региона или языка пользователя, служба доступа к хранилищу MongoDB и сборщик URL.
Андрей Сибирьёв, оригинальный разработчик Cocaine, позаимствовал идею у Heroku, еще одна облачная платформа как услуга. В то время Heroku поддерживала только приложения, разработанные на Ruby. Используя Heroku, разработчик мог создать приложение Ruby и отправить его в облако, в то время как Heroku решал проблемы с инфраструктурой и балансировкой нагрузки. Однако Сибирьёва не устроила документация для Heroku, поэтому он решил создать собственное решение PaaS.
Изначально «Кокаин» был личным проектом Сибирёва. Однако это изменилось, когда Яндекс обнаружил внутреннюю потребность в масштабируемой платформе, которая могла бы справляться с миллионами запросов в секунду (RPS). Этим целям служил кокаин. Теперь Cocaine используется в инфраструктуре Yandex.
Облако состоит из одной или нескольких независимых машин, на которых установлен сервер Cocaine (Cocained). Пользователи ничего не знают о местоположении служб, к которым они обращаются - им доступны только адрес балансировщика нагрузки и имя приложения. Запросы пользователей отправляются на балансировщик нагрузки, который передает их в облако. В облаке для каждого запроса выбирается оптимальная машина, а затем запрос выполняется. Детали инфраструктуры и настройки среды приложения также скрыты от разработчика. Разработчику нужно только отправить код в облако и написать специальный манифест для выполнения кода. Нет необходимости настраивать что-либо еще, например базы данных, хранилища значений ключей или HTTP-клиентов. Для этого существуют службы, которые с точки зрения программиста являются собственными модулями для языка программирования, на котором написан код. Например, служба Storage позволяет пользователям получить доступ к хранилищу Elliptics, а служба Uatraits использует данные о пользовательском агенте клиента и его заголовках HTTP для определения характеристик устройства, отправившего запрос.
В облаке приложения могут быть написаны на различных языках программирования (C, C ++, Go, JavaScript, Python, Ruby и другие) и фреймворки (Node.js ). Кокаин, связанный с веб-сервером, обеспечивает автоматически масштабируемую среду развертывания для веб-приложений. Облако обрабатывает большие объемы информации благодаря интерфейсу потокового обмена данными. Cocaine реализует отказоустойчивую и высокопроизводительную передачу сообщений и событий по шине. Используя балансировщик нагрузки, пользователь может создавать системы, реагирующие на действия пользователя. Приложения в облаке запускаются независимо друг от друга. Это позволяет поддерживать несколько версий одного и того же приложения и настраивать «мягкую миграцию» для перехода пользователей к обновленным версиям продуктов. Приложения могут быть протестированы в облаке в изолированной среде. Таким образом, программные ошибки не повлияют на физическую систему или другие приложения.