Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...Ontico
2-3 года назад у нас был на 100% MS стек (Винда, Hyper-V, MSSQL, IIS, C#, WCF, Azure), и было не очень понятно, как продукт дальше развивать: C#, конечно, неплохой язык, но оставаться в рамках MS - слишком большие ограничения по выбору продуктов: чего-то на винде до сих пор нет (например, Докера), а для многих серверных продуктов рынок винды вторичен.
Получалось, что все понимают тупиковость ситуации, но продолжают тащить этот чемодан без ручки, потому что делать-то что-то надо. Переписать весь проект с нуля под новые технологии - это год работы вхолостую для бизнеса, и ни один инвестор в мире на такое не согласился бы.
Так вот, могу рассказать, как нам удалось постепенно выйти из этого тупика без остановки бизнес-девелопмента и переобучения всей команды на другой язык/платформу.
Сейчас у нас диверсифицированная система:
- виртуалки на винде и убунте. HA организуется силами Hyper-V и Rancher;
- несколько разных стораджей: Cassandra, Redis, MS SQL, PostgreSQL и Spark, который из всего этого зоопарка делает общую аналитику (нет, мы не ставили все подряд, они все нужны, зачем - расскажу);
- сервисы на C# и питоне, которые прекрасно общаются по общей шине и мы спокойно можем ждать выхода полноценного .net core еще пару лет.
И, предваряя вопрос - нет, на Mono или текущий .NET core без серьезного переписывания перейти зачастую нельзя. Мы - как раз тот случай.
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
* Следующее поколение моделей проектирования и эксплуатации серверных приложений в публичных облаках и на классических серверах.
* Сравнение методов эксплуатации: "традиционных" Chef/Salt/Ansible, immutage images/virtual appliances/Docker, и автономных рабочих окружений Jetware/Snappy/Nix/Habitat.
* Самоконфигурация, самоадминистрирование и самовосстановление серверов.
** Управление большими системами Mesos, Kubernetes, Docker Swarm.
** Управление внутри микросервисов.
* Независимость рабочего окружения приложений от операционной системы и ядра, just enough OS.
* Приложение - это не только исходный код, но и операционное окружение. Разработка, тестирование и версионирование всего полностью.
* Сервер как программа - компонентный подход.
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС2ГИС Технологии
Если наш проект это не коробочный продукт, а, например, веб-сервис, на который постоянно ходят пользователи, их много и они сразу видят изменения, то в жизненном цикле разработки у нас возникает еще одна задача — задача деплоя готово кода в боевое окружение. В самом начале, когда наш проект маленький и простой на эту задачу никто может и не обращать внимание, так как все происходит быстро и просто. Процесс деплоя состоит из 2-3 общеизвестных шагов - git pull, yii migrate, etc...которые легко запомнить и в которых сложно ошибиться.
С развитием проекта его сложность возрастает — он уже крутится на нескольких серверах, появляются новые компоненты (утилититы, библиотеки и т.д.), новые сущности (балансеры, кешы, и т.д.). Держать всю инфраструктуру в голове становится невозможным, ведение документации привносит больше проблем чем решений, люди ошибаются чаще и т.д.
В докладе:
— Рассмотрим подробно вышеуказанные проблемы, с которыми неизбежно сталкиваются проекты.
— Обсудим какие решения существуют в индустрии (chef, ansible, etc), чем они отличаются, в чем их задача и какое решение выбрать;
— Поговорим про административные вопросы, которые с этим связаны.
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)Ontico
Строим CI/CD в Bamboo, используя Chef
-----
Мы покажем эволюционный путь нашего CI/CD-процесса от маленького скрипта на python, до фреймворка на ruby:
+ рассмотрим типичные трудности, возникающие при построении CI/CD процесса с помощью CI-движка и Configuration management tools.
+ покажем реализованные решения на примере связки Chef + Bamboo:
o унификация деплоймент-процесса компании;
o деплойменты на гетерогенные environment'ы, включая Linux/Windows системы;
o инструментарий для построения CD-процесса в Bamboo.
Управление билд-фермой Bamboo с помощью Chef
-----
Для поддержки SDLC-процесса компании мы эксплуатируем большую географически распределенную гетерогенную билд-ферму агентов (80+ агентов на базе Windows, Linux и MacOS). С ростом количества билд-конфигураций и агентов мы столкнулись с задачей управления конфигурациями билд-агентов, с которой успешно справляемся с помощью решения на базе Chef.
Примеры решаемых задач:
+ настройка Bamboo-агентов с нуля;
+ сapability management при помощи ohai;
+ повышение эффективности использования билд-фермы.
Microsoft и Linux на одном проекте: как получить лучшее из обоих миров и не р...Ontico
2-3 года назад у нас был на 100% MS стек (Винда, Hyper-V, MSSQL, IIS, C#, WCF, Azure), и было не очень понятно, как продукт дальше развивать: C#, конечно, неплохой язык, но оставаться в рамках MS - слишком большие ограничения по выбору продуктов: чего-то на винде до сих пор нет (например, Докера), а для многих серверных продуктов рынок винды вторичен.
Получалось, что все понимают тупиковость ситуации, но продолжают тащить этот чемодан без ручки, потому что делать-то что-то надо. Переписать весь проект с нуля под новые технологии - это год работы вхолостую для бизнеса, и ни один инвестор в мире на такое не согласился бы.
Так вот, могу рассказать, как нам удалось постепенно выйти из этого тупика без остановки бизнес-девелопмента и переобучения всей команды на другой язык/платформу.
Сейчас у нас диверсифицированная система:
- виртуалки на винде и убунте. HA организуется силами Hyper-V и Rancher;
- несколько разных стораджей: Cassandra, Redis, MS SQL, PostgreSQL и Spark, который из всего этого зоопарка делает общую аналитику (нет, мы не ставили все подряд, они все нужны, зачем - расскажу);
- сервисы на C# и питоне, которые прекрасно общаются по общей шине и мы спокойно можем ждать выхода полноценного .net core еще пару лет.
И, предваряя вопрос - нет, на Mono или текущий .NET core без серьезного переписывания перейти зачастую нельзя. Мы - как раз тот случай.
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
* Следующее поколение моделей проектирования и эксплуатации серверных приложений в публичных облаках и на классических серверах.
* Сравнение методов эксплуатации: "традиционных" Chef/Salt/Ansible, immutage images/virtual appliances/Docker, и автономных рабочих окружений Jetware/Snappy/Nix/Habitat.
* Самоконфигурация, самоадминистрирование и самовосстановление серверов.
** Управление большими системами Mesos, Kubernetes, Docker Swarm.
** Управление внутри микросервисов.
* Независимость рабочего окружения приложений от операционной системы и ядра, just enough OS.
* Приложение - это не только исходный код, но и операционное окружение. Разработка, тестирование и версионирование всего полностью.
* Сервер как программа - компонентный подход.
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС2ГИС Технологии
Если наш проект это не коробочный продукт, а, например, веб-сервис, на который постоянно ходят пользователи, их много и они сразу видят изменения, то в жизненном цикле разработки у нас возникает еще одна задача — задача деплоя готово кода в боевое окружение. В самом начале, когда наш проект маленький и простой на эту задачу никто может и не обращать внимание, так как все происходит быстро и просто. Процесс деплоя состоит из 2-3 общеизвестных шагов - git pull, yii migrate, etc...которые легко запомнить и в которых сложно ошибиться.
С развитием проекта его сложность возрастает — он уже крутится на нескольких серверах, появляются новые компоненты (утилититы, библиотеки и т.д.), новые сущности (балансеры, кешы, и т.д.). Держать всю инфраструктуру в голове становится невозможным, ведение документации привносит больше проблем чем решений, люди ошибаются чаще и т.д.
В докладе:
— Рассмотрим подробно вышеуказанные проблемы, с которыми неизбежно сталкиваются проекты.
— Обсудим какие решения существуют в индустрии (chef, ansible, etc), чем они отличаются, в чем их задача и какое решение выбрать;
— Поговорим про административные вопросы, которые с этим связаны.
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)Ontico
Строим CI/CD в Bamboo, используя Chef
-----
Мы покажем эволюционный путь нашего CI/CD-процесса от маленького скрипта на python, до фреймворка на ruby:
+ рассмотрим типичные трудности, возникающие при построении CI/CD процесса с помощью CI-движка и Configuration management tools.
+ покажем реализованные решения на примере связки Chef + Bamboo:
o унификация деплоймент-процесса компании;
o деплойменты на гетерогенные environment'ы, включая Linux/Windows системы;
o инструментарий для построения CD-процесса в Bamboo.
Управление билд-фермой Bamboo с помощью Chef
-----
Для поддержки SDLC-процесса компании мы эксплуатируем большую географически распределенную гетерогенную билд-ферму агентов (80+ агентов на базе Windows, Linux и MacOS). С ростом количества билд-конфигураций и агентов мы столкнулись с задачей управления конфигурациями билд-агентов, с которой успешно справляемся с помощью решения на базе Chef.
Примеры решаемых задач:
+ настройка Bamboo-агентов с нуля;
+ сapability management при помощи ohai;
+ повышение эффективности использования билд-фермы.
Слайды с моего выступления на HDConf в Минске 17 октября 2015 года. Я рассказывал из чего состоит PaaS, как запускать контейнеры в облаке и чем отличаются Mesos, Cloud Foundry и Kubernetes.
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Ontico
Почти год назад мы завершили проект по универсальному мониторингу и в процессе приобрели кучу секретных знаний и умений, которыми хотим поделиться:
* как сделать мониторинг простым, отказоустойчивым и горизонтально масштабируемым;
* как понять, что важно, что не важно, а что важно, но чуть-чуть;
* полезные логи: конвертация логов в метрики и обратно;
* как диагностировать реальные проблемы и отличить их от ложной тревоги (на примере связки js-фронтенд + балансеры + java-бэкенд);
* и, конечно же, как внедрить практики DevOps посредством мониторинга (и подготовить разработчиков к тому, что они ответственны за алерты).
Стек мониторинга: sensu, graphite, cassandra, logstash, heka, influxdb, elsticsearch, chef, statsd, nginx.
Стек поддержки: js, java, erlang, lisp, python, ruby, nginx, mysql, haproxy
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Tanya Denisyuk
В нашей компании есть система для запуска PHP-скриптов по расписанию, которая позволяет распределять нагрузку на множество узлов и обеспечивать отказоустойвость. И в этой системе необходимо уметь собирать логи скриптов с сотен (и даже тысяч) машин, желательно в режиме реального времени. У нас раньше была система сбора логов, собранная «на коленке», и выдающая относительно невысокую производительность. Производительности стало не хватать, и мы переписали систему на Go. Новая система не использует scribe и обладает некоторыми уникальными фичами, например «вытесняющей многозадачностью» при доставке - если один из скриптов пишет столько логов, что мы не успеваем их всех доставить, логи всех остальных скриптов продолжают доставляться, с небольшой фиксированной задержкой. Система легко забивает гигабитную сетевую карту на нашем сервере-приемнике логов и не слишком «тормозит» доставку в случае, когда пропускной способности всё же не хваетает. В докладе я расскажу о том, как мы делали эту систему и про то, как она работает изнутри. Исходные тексты доступны на github: https://github.com/badoo/thunder
Использование haproxy/iptables+etcd+confd для автоматического service discove...Ontico
* Сервис-ориентированная архитектура - что это такое и зачем это нужно?
* Поиск сервисов: стандартные пути:
1) Хардкод endpoint'ов (IP:port).
+ работает
+ просто и топорно
- при росте числа сервисов начинается ад
- появляется документация, странички в вики, которые неактуальны, ночью изменения не внесешь
- при миграции серверов часто меняются эндпоинты, много лишней сопутствующей работы
далее см. - http://rootconf.ru/2015/abstracts/1779
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Ontico
В этом году мы перевели наш портал на HTTPS. Это оказалось непростой задачей. Основными проблемами явились рост нагрузки, увеличение Round Trip Times (RTT) и Mixed Content. Мы опробовали различные известные механизмы, призванные нивелировать эти проблемы, но, как оказалось на практике, все они скрывают в себе особенности. Эти особенности стоило знать заранее, но их не удалось почерпнуть из открытых источников.
В этом докладе мы хотим поделиться сложностями, с которыми мы столкнулись, а также тем, к каким выводам в итоге пришли. Надеемся, что набитые нами шишки будут полезны тем проектам, которые только планируют переход на HTTPS.
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Ontico
В процессе рефакторинга архитектуры мы начали переделывать часть системы на микросервисы, и вышло настолько клево, что мы просто обязаны этим поделиться.
Микросервисы.
Зачем они вообще:
- В простых сервисах легче разбираться и локализовывать проблемы.
- В микросервисной архитектуре проще добиваться отказоустойчивости.
- Хотим выбирать лучший инструмент для каждой задачи. Получаем зоопарк технологий, которые в монолитные сервисы интегрировать сложнее.
- Независимое обновление компонентов.
- Тестирование частей системы.
Как:
- Docker-образы как основа.
- Rancher как система деплоя и оркестрации Docker-контейнеров. High availability.
- Простота сервиса - ключевой момент.
== Критерий: Разработчик должен иметь возможность быстро понять и переписать сервис при необходимости.
== Забавное следствие: такие сервисы пишутся не на века, а под текущие требования. Получается быстро и agile-но, ведь изменения легко сможет внести любой разработчик.
== PEP8.
- HTTP API и поддержка Swagger. Резко упрощают тестирование.
- RabbitMQ pipelines как отказоустойчивая система взаимодействий между сервисами:
== DLX помогает разбираться со врЕменными проблемами.
== HTTP RPC.
- Метрики, метрики и ещё раз метрики.
== service status API.
== Graphite, Zabbix. Может, к ноябрю еще OKmeter успеем попробовать.
- Структурированые логи: JSON stdout => Fluentd => ELK => счастье. Локализация багов и пр. Об этом подробнее в отдельной презентации.
- В любой непонятной ситуации...
== Сервис должен падать, а не зависать.
== Healthchecks.
- Стабильность архитектуры.
== Осознанная деградация! Любой сервис должен быть готов к падению другого. При этом в первом должно быть явно описано, как будет при этом ограничиваться его функциональность. Это ведет к отсутствию эффекта домино, когда один малозначащий сервис, упав, утягивает за собой всю систему.
- Документация.
== Степень критичности каждого сервиса.
== Краткий обзор функциональности (вспоминаем: сервисы _простые_).
== Конфиги.
== drawback: описание архитектуры обязано быть актуальным и полным, иначе беда.
Трудности: Допишу через пару дней.
Компания «Моё дело» прошла путь от маленького стартапа до лидера рынка в своем сегменте. Вместе с ростом компании росла и ее it структура. Инфраструктура эволюционировала космическими темпами, кол-во проектов стремительно росло. Естественно, всем этим необходимо уметь грамотно оркестрировать. Как это делаем мы и во что это превращается мы и хотим вам рассказать.
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
С того момента, как было принято решение использовать язык Lua в качестве языка описания бизнес-логики в нашей платформе, прошло уже больше восьми лет. Проекты росли, данных становилось больше, возрастала нагрузка на сервера приложений. Со временем у нас накопился солидный багаж знаний о том, как устроен LuaJIT, с какими проблемами можно столкнуться при его использовании и как эти проблемы можно решать.
Я расскажу про то...
* Почему при миграции с x86 на x64 доступной памяти в LuaJIT становится меньше, и как мы с этим боролись.
* Как загрузить в LuaJIT несколько миллионов объектов и не умереть в тормозах от сборщика мусора.
* Насколько ужасна встроенная функция хеширования строк и почему иногда надо жертвовать производительностью в пользу качества.
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
Это реальный рассказ об архитектуре Единой Фронтальной Системы (ЕФС) - системы, которая будет обслуживать абсолютно всех клиентов Сбербанка во всех каналах (отделения, интернет-банки, мобильные приложения, АТМ и т.д.). Это означает: десятки миллионов активных клиентов, 24х7, и еще пара NFR'ов, от которых порой вздрагиваешь по ночам :)
С одной стороны мы должны гарантировать 99.99% доступность, с другой стороны мы должны сокращать time-to-market для новых продуктов и быть готовыми обновлять ЕФС очень часто и по кусочкам – и это малая часть вызовов, с которыми нам приходиться сталкиваться.
В моем докладе я расскажу:
· Как мы гарантируем 99.99% доступности для всего ЕФС, включая хранилище (и особенно включая хранилище).
· Как мы масштабируемся на миллионы пользователей, оставаясь внешнее единой системой.
· Как мы реализуем zero downtime deployment, чтобы оставаться в 99.99% в условиях частых обновлений.
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Tanya Denisyuk
"Если все возможности кеширования и индексирования исчерпаны, а производительности все равно недостаточно.
Если еженочно просыпаясь в холодном поту, вы спрашиваете себя снова и снова:
- Как организовать данные так, чтобы всё нужное всегда было под рукой
- Как сделать так, чтобы приложение не тупило даже на медленном интернете
- Как моментально обеспечивать клиента самыми свежими данными
Тогда мой доклад может оказаться полезным.Мы в Todoist, кажется, нашли простой способ решить большинство из этих проблем. Всё, что мы сделали, это дополнили наш API функциями для синхронизации данных, позволяющими
писать ""толстые клиенты"" (кстати,то же самое для решения тех же задач рекомендуют и Google, и Evernote). В докладе я расскажу как это реализовать с минимальными усилиями одним лишь MySQL и Redis, с какими проблемами мы столкнулись, и как мы героически эти проблемы побеждали."
Как devops исчерпывает себя и что будет дальшеKirill Vechera
Эволюция управления информационными системами
Какие сейчас есть средства и какие появляются
Как этому способствует Jetware
Почему Devops становится ненужным
Слайды с моего выступления на HDConf в Минске 17 октября 2015 года. Я рассказывал из чего состоит PaaS, как запускать контейнеры в облаке и чем отличаются Mesos, Cloud Foundry и Kubernetes.
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Ontico
Почти год назад мы завершили проект по универсальному мониторингу и в процессе приобрели кучу секретных знаний и умений, которыми хотим поделиться:
* как сделать мониторинг простым, отказоустойчивым и горизонтально масштабируемым;
* как понять, что важно, что не важно, а что важно, но чуть-чуть;
* полезные логи: конвертация логов в метрики и обратно;
* как диагностировать реальные проблемы и отличить их от ложной тревоги (на примере связки js-фронтенд + балансеры + java-бэкенд);
* и, конечно же, как внедрить практики DevOps посредством мониторинга (и подготовить разработчиков к тому, что они ответственны за алерты).
Стек мониторинга: sensu, graphite, cassandra, logstash, heka, influxdb, elsticsearch, chef, statsd, nginx.
Стек поддержки: js, java, erlang, lisp, python, ruby, nginx, mysql, haproxy
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Tanya Denisyuk
В нашей компании есть система для запуска PHP-скриптов по расписанию, которая позволяет распределять нагрузку на множество узлов и обеспечивать отказоустойвость. И в этой системе необходимо уметь собирать логи скриптов с сотен (и даже тысяч) машин, желательно в режиме реального времени. У нас раньше была система сбора логов, собранная «на коленке», и выдающая относительно невысокую производительность. Производительности стало не хватать, и мы переписали систему на Go. Новая система не использует scribe и обладает некоторыми уникальными фичами, например «вытесняющей многозадачностью» при доставке - если один из скриптов пишет столько логов, что мы не успеваем их всех доставить, логи всех остальных скриптов продолжают доставляться, с небольшой фиксированной задержкой. Система легко забивает гигабитную сетевую карту на нашем сервере-приемнике логов и не слишком «тормозит» доставку в случае, когда пропускной способности всё же не хваетает. В докладе я расскажу о том, как мы делали эту систему и про то, как она работает изнутри. Исходные тексты доступны на github: https://github.com/badoo/thunder
Использование haproxy/iptables+etcd+confd для автоматического service discove...Ontico
* Сервис-ориентированная архитектура - что это такое и зачем это нужно?
* Поиск сервисов: стандартные пути:
1) Хардкод endpoint'ов (IP:port).
+ работает
+ просто и топорно
- при росте числа сервисов начинается ад
- появляется документация, странички в вики, которые неактуальны, ночью изменения не внесешь
- при миграции серверов часто меняются эндпоинты, много лишней сопутствующей работы
далее см. - http://rootconf.ru/2015/abstracts/1779
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Ontico
В этом году мы перевели наш портал на HTTPS. Это оказалось непростой задачей. Основными проблемами явились рост нагрузки, увеличение Round Trip Times (RTT) и Mixed Content. Мы опробовали различные известные механизмы, призванные нивелировать эти проблемы, но, как оказалось на практике, все они скрывают в себе особенности. Эти особенности стоило знать заранее, но их не удалось почерпнуть из открытых источников.
В этом докладе мы хотим поделиться сложностями, с которыми мы столкнулись, а также тем, к каким выводам в итоге пришли. Надеемся, что набитые нами шишки будут полезны тем проектам, которые только планируют переход на HTTPS.
Мастер-класс "Микросервисы: удобно, надежно, серебрянопульно" / Евгений Павло...Ontico
В процессе рефакторинга архитектуры мы начали переделывать часть системы на микросервисы, и вышло настолько клево, что мы просто обязаны этим поделиться.
Микросервисы.
Зачем они вообще:
- В простых сервисах легче разбираться и локализовывать проблемы.
- В микросервисной архитектуре проще добиваться отказоустойчивости.
- Хотим выбирать лучший инструмент для каждой задачи. Получаем зоопарк технологий, которые в монолитные сервисы интегрировать сложнее.
- Независимое обновление компонентов.
- Тестирование частей системы.
Как:
- Docker-образы как основа.
- Rancher как система деплоя и оркестрации Docker-контейнеров. High availability.
- Простота сервиса - ключевой момент.
== Критерий: Разработчик должен иметь возможность быстро понять и переписать сервис при необходимости.
== Забавное следствие: такие сервисы пишутся не на века, а под текущие требования. Получается быстро и agile-но, ведь изменения легко сможет внести любой разработчик.
== PEP8.
- HTTP API и поддержка Swagger. Резко упрощают тестирование.
- RabbitMQ pipelines как отказоустойчивая система взаимодействий между сервисами:
== DLX помогает разбираться со врЕменными проблемами.
== HTTP RPC.
- Метрики, метрики и ещё раз метрики.
== service status API.
== Graphite, Zabbix. Может, к ноябрю еще OKmeter успеем попробовать.
- Структурированые логи: JSON stdout => Fluentd => ELK => счастье. Локализация багов и пр. Об этом подробнее в отдельной презентации.
- В любой непонятной ситуации...
== Сервис должен падать, а не зависать.
== Healthchecks.
- Стабильность архитектуры.
== Осознанная деградация! Любой сервис должен быть готов к падению другого. При этом в первом должно быть явно описано, как будет при этом ограничиваться его функциональность. Это ведет к отсутствию эффекта домино, когда один малозначащий сервис, упав, утягивает за собой всю систему.
- Документация.
== Степень критичности каждого сервиса.
== Краткий обзор функциональности (вспоминаем: сервисы _простые_).
== Конфиги.
== drawback: описание архитектуры обязано быть актуальным и полным, иначе беда.
Трудности: Допишу через пару дней.
Компания «Моё дело» прошла путь от маленького стартапа до лидера рынка в своем сегменте. Вместе с ростом компании росла и ее it структура. Инфраструктура эволюционировала космическими темпами, кол-во проектов стремительно росло. Естественно, всем этим необходимо уметь грамотно оркестрировать. Как это делаем мы и во что это превращается мы и хотим вам рассказать.
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
С того момента, как было принято решение использовать язык Lua в качестве языка описания бизнес-логики в нашей платформе, прошло уже больше восьми лет. Проекты росли, данных становилось больше, возрастала нагрузка на сервера приложений. Со временем у нас накопился солидный багаж знаний о том, как устроен LuaJIT, с какими проблемами можно столкнуться при его использовании и как эти проблемы можно решать.
Я расскажу про то...
* Почему при миграции с x86 на x64 доступной памяти в LuaJIT становится меньше, и как мы с этим боролись.
* Как загрузить в LuaJIT несколько миллионов объектов и не умереть в тормозах от сборщика мусора.
* Насколько ужасна встроенная функция хеширования строк и почему иногда надо жертвовать производительностью в пользу качества.
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
Это реальный рассказ об архитектуре Единой Фронтальной Системы (ЕФС) - системы, которая будет обслуживать абсолютно всех клиентов Сбербанка во всех каналах (отделения, интернет-банки, мобильные приложения, АТМ и т.д.). Это означает: десятки миллионов активных клиентов, 24х7, и еще пара NFR'ов, от которых порой вздрагиваешь по ночам :)
С одной стороны мы должны гарантировать 99.99% доступность, с другой стороны мы должны сокращать time-to-market для новых продуктов и быть готовыми обновлять ЕФС очень часто и по кусочкам – и это малая часть вызовов, с которыми нам приходиться сталкиваться.
В моем докладе я расскажу:
· Как мы гарантируем 99.99% доступности для всего ЕФС, включая хранилище (и особенно включая хранилище).
· Как мы масштабируемся на миллионы пользователей, оставаясь внешнее единой системой.
· Как мы реализуем zero downtime deployment, чтобы оставаться в 99.99% в условиях частых обновлений.
Роман Иманкулов-«Быстрые и масштабируемые приложения с Sync API»Tanya Denisyuk
"Если все возможности кеширования и индексирования исчерпаны, а производительности все равно недостаточно.
Если еженочно просыпаясь в холодном поту, вы спрашиваете себя снова и снова:
- Как организовать данные так, чтобы всё нужное всегда было под рукой
- Как сделать так, чтобы приложение не тупило даже на медленном интернете
- Как моментально обеспечивать клиента самыми свежими данными
Тогда мой доклад может оказаться полезным.Мы в Todoist, кажется, нашли простой способ решить большинство из этих проблем. Всё, что мы сделали, это дополнили наш API функциями для синхронизации данных, позволяющими
писать ""толстые клиенты"" (кстати,то же самое для решения тех же задач рекомендуют и Google, и Evernote). В докладе я расскажу как это реализовать с минимальными усилиями одним лишь MySQL и Redis, с какими проблемами мы столкнулись, и как мы героически эти проблемы побеждали."
Как devops исчерпывает себя и что будет дальшеKirill Vechera
Эволюция управления информационными системами
Какие сейчас есть средства и какие появляются
Как этому способствует Jetware
Почему Devops становится ненужным
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Чему мы научились разрабатывая микросервисы?Vadim Madison
Доклад с конференции Backend Conf 2016
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Ontico
Мы создаем nodejs приложения, используя различные современные технологии, такие как Docker, Consul, pm2. Современный спектр решений настолько обширен, что сложно не заблудиться. Как же выбрать нужные вашему проекту технологии, чтобы успешно его запустить и поддерживать? Будут рассказаны истории и, конечно же, даны вредные советы :)
Как на nodejs пройти путь от Hello world приложения до распределённого решения, состоящего из микросервисов?
Мы пройдём жизненный цикл продукта, начав с простого приложения на nodejs. Научимся его правильно запускать и будем постепенно добавлять элементы, убирая при этом ненужные. Так к нашему приложению присоединится гипервизор, а само оно будет разделено на части, где каждая сущность будет управлять своей частью приложения.
Построив таким образом архитектуру на чистом nodejs, мы займёмся развитием приложения, добавим современные технологии и применим новые подходы к организации инфраструктуры. Запакуем приложение в Docker, попутно обсудим, зачем он нужен и что может дать. И, наконец, решим проблему поиска запущенных сервисов и отслеживания их статусов, используя Consul.
Сегодня очень часто можно услышать множество модный словечек, но даже среди них девопс и микросервисы будоражат умы людей как то по особенному.
Для обычного инженера DevOps и Микросервисы – это всего лишь маркетинговая профанация. Куда важнее “держать DevOps в своих руках” и уметь им пользоваться. Хочется понять где заканчиваются наши и чужие фантазии, где начинаются реально полезные практики, какие инструменты нам помогут и какие фундаментальные принципы помогут увеличить профит от используемых практик и инструментов.
Доклад в первую очередь про внедрение различных технологий, инструментов и методологий в большой организации. Поделюсь проблемами с которыми мы столкнулись при внедрении различных принципов и технологий, расскажу о решениях и выработанных принципах масштабирования процессов/инструментов.
Сегодня наш лозунг будет “DevOps в руках а не в головах”. Но то что в головах всё же важно, хоть это и совсем другая история.
Evolution of web-project requires scalable architecture and scalable development process. In my presentation (in Russian): different techniques, how to achieve this if talking about Perl-based web project.
Осуществим вводный экскурс в Node.JS. Действительно это что-то новое и гениальное? Что оно может, а что нет? Кому будет полезен? В каких случаях применять, а в каких нет? На все эти вопросы я постараюсь ответить в своём докладе.
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureDmitry Lazarenko
Гибридное облако PaaS на базе Jelastic и Microsoft Azure. Jelastic позволяет создать гибридное облако с возможностью живой миграции приложений между частным облаком и Microsoft Azure, AWS, SoftLayer
8. Придумать как приложения
будут между собой
общаться
• У каждого приложения может быть свой REST
API. Приложения будут посылать друг другу
запросы, получать ответы.
• Организовать очередь сообщений (Message
Queue)
• Реализовать удаленный вызов процедур (RPC)
• еще что-то…
12. Docker
• Изоляция окружения
• Версионирование пакетов продумано за вас
• Собрал приложение в одной среде, перенес
легко на другую
• Устраняем вариации, которые вредят
13. Средства доставки и оркестрации
Докер контейнерами
• Docker Swarm
• Kubernetes
• Bash скрипты
14. Service Discovery
• etcd
• Consul
• сами в конфигах каждого модуля задаете руками
адреса соседних модулей
16. Мониторинг приложения
• В случае монолитного приложения можно было
ограничиться NewRelic
• В случае с микросервисом не все так просто.
Есть открытая инициатива opentracing.io по
распределенной трассировке.
Я — Миша. Старший разработчик в финтех проекте tengriwallet. В промышленной разработке уже 8 лет. Почему мне можно верить? Больше года мы строим микросервисное приложение.
Вот вы решили переехать с монолитного приложения на микросервисное. Вы столкнетесь с вещами, о которых просто не думали до этого: интеграционная шина, service discovery, eventual consistency.
Уже нельзя запустить приложение одной командой в консоли или нажав F5 в IDE. За одну функциональность будет отвечать несколько модулей, поэтому придется переключаться между ними распутывая поведение приложения. Тестировать придется не только отдельные сервисы, но и их интеграцию. Запуск тестового окружения так же станет сложнее. Поставить на сервер оно приложение гораздо проще, чем сотню.
Автоматизация — самый главный инструмент в вашем арсенале. Если вы не привыкли автоматизировать все свои рутинные действия, то придется привыкнуть. Рутинные задачи растут геометрически с добавлением каждого нового модуля. Нужно наращивать DevOps экспертизу в команде разработчиков.
Байка про то, как на поддержку попало приложение из 17-ти модулей. Просто пройти и сделать git pull стало в 17 раз сложнее.
Самые популярные методы взаимодействия я перечислил, но все ограничивается только фантазией разработчика.
Очереди делятся на очереди с брокером и очереди без брокера. Самая быстрая очередь 0MQ, но она без брокера. С брокерам самая быстрая по нынешним бенчмаркам NATS
Упомянуть про prtobuffs когда рассказывать про GRPC
Рассказать какие предпосылки были сделать свое решение.
Ок, мы сделали Докер контейнеры со своими приложениями. Теперь их надо доставить на сервера, зупустить, остановить, перезапустить по надобности.
Докер — хорошее развивающееся сообщество, которое предлагает хорошие инструменты вокруг контейнеризации. Swarm — это утилита для управления группами контейнеров.
Kubernetes — мощная платформа для этих задач, которую применяют в гугле.
Когда кол-во сервисов растет, встает проблема обнаружения сервисов внутри инфраструктуры. До какого-то момента можно просто прописывать в конфигах ближайших адресатов модулей. Потом нужно применять специальные тулзы. Как правило это обычный key-value storage в котором регистрируется приложение и его тип. И из этого общего реестра все понимают что теперь этому приложению можно направлять определенные запросы.
Когда приложений много, то становится неудобным и трудозатратным просматривать логи каждого из модулей по отдельности. Гораздо эффективнее организовать сбор, просмотр и фильтрацию в одном месте. Более того, на этих логах по определенным выборкам можно построить мониторинг.
В своем проекте мы только только подходим к задаче распределенной трассировки. Будем решать ее на уровне БСМ, а может и внедрим opentracing.
Если будете внедрять все инструменты сразу, то скорее всего потерпите крах. Каждый сдай этой презентации достоин того, чтобы посвятить ему отдельную лекцию, а время на уверенное освоение можем занять до месяца. Больше года уйдет просто чтобы организовать грамотную инфраструктуру и процесс при том, что бизнес задач будет решено ничтожно мало. Как я уже сказал, задачи по мониторингу мы только только начинаем делать, и вещей, которые надо бы внедрить еще куча.