В докладе описан опыт построения нагруженной отказоустойчивой системы, использующей jsonb для хранения данных. В частности рассказываются механизмы, которые заменили join, транзакции, в том числе распределенные, репликации обычных SQL баз данных.
Большие данные: как могут навредить и ка могут помочь?etyumentcev
Большие данные — модная и быстро распространяющаяся концепция, которая позволяет нам извлекать разные полезные факты из окружающей нас информации. На конкретных примерах покажу как можно большие данные использовать, а также к каким проблемам может привести неверная интерпретация полученных результатов.
Спецкурс Разработка серверов и серверных приложений лекция №1Eugeniy Tyumentcev
В 70-годах прошлого века в ИТ-отрасли сложилось стойкое убеждение, что будущее будет за многопроцессорными системами. Активно разрабатывались методы написания параллельных программ, в том числе и модель акторов Карла Хьюита. Однако все попытки создать многопроцессорную систему завершились провалом - полученные системы оказались дорогими и существенно не превосходили однопроцессорные системы. Самым известным провалом стал японский проект по разработке вычислительных машин 5-го поколения, на который было потрачено 500 млн. долларов. Причина заключается в законе Амдала, который устанавливает ограничения на увеличение производительности при распараллеливании программ. Кроме того, на рынке появилась компания Intel, которая сумела создать успешный однопоточный процессор и постепенно наращивать производительность своих процессоров. Это было время, когда программистам для ускорения своих программ не надо было делать ничего - достаточно дождаться более мощной версии процессора. Только спустя 30 лет, когда Intel уперлась в технологические проблемы наращивания производительности процессоров в лоб, интерес к параллельным технологиям опять возрос. Возникает резонный вопрос: этот интерес надолго или опять повторится история 70-х? В статье Герба Саттера 2005 года Бесплатного супа больше не будет: фундаментальный поворот к параллельности в программном обеспечении утверждается, что нет - больше не возврата к однопоточным программам, и программисты теперь будут вынуждены заботиться о параллельности...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
Большие данные: как могут навредить и ка могут помочь?etyumentcev
Большие данные — модная и быстро распространяющаяся концепция, которая позволяет нам извлекать разные полезные факты из окружающей нас информации. На конкретных примерах покажу как можно большие данные использовать, а также к каким проблемам может привести неверная интерпретация полученных результатов.
Спецкурс Разработка серверов и серверных приложений лекция №1Eugeniy Tyumentcev
В 70-годах прошлого века в ИТ-отрасли сложилось стойкое убеждение, что будущее будет за многопроцессорными системами. Активно разрабатывались методы написания параллельных программ, в том числе и модель акторов Карла Хьюита. Однако все попытки создать многопроцессорную систему завершились провалом - полученные системы оказались дорогими и существенно не превосходили однопроцессорные системы. Самым известным провалом стал японский проект по разработке вычислительных машин 5-го поколения, на который было потрачено 500 млн. долларов. Причина заключается в законе Амдала, который устанавливает ограничения на увеличение производительности при распараллеливании программ. Кроме того, на рынке появилась компания Intel, которая сумела создать успешный однопоточный процессор и постепенно наращивать производительность своих процессоров. Это было время, когда программистам для ускорения своих программ не надо было делать ничего - достаточно дождаться более мощной версии процессора. Только спустя 30 лет, когда Intel уперлась в технологические проблемы наращивания производительности процессоров в лоб, интерес к параллельным технологиям опять возрос. Возникает резонный вопрос: этот интерес надолго или опять повторится история 70-х? В статье Герба Саттера 2005 года Бесплатного супа больше не будет: фундаментальный поворот к параллельности в программном обеспечении утверждается, что нет - больше не возврата к однопоточным программам, и программисты теперь будут вынуждены заботиться о параллельности...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
Екатерина Войденко "Горизонтальное масштабирование MySQL"Yandex
Екатерина Войденко "Горизонтальное масштабирование MySQL"
Я.Субботник в Санкт-Петербурге
О докладе:
Мы попытаемся понять, что делать, если наша база стала слишком большой. Немного поговорим про архитектурные моменты. Рассмотрим некоторые схемы шардирования, обсудим партиционирование и для чего оно нужно, а также затронем балансировку нагрузки.
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
Проблема мониторинга целостности технологических процессов на индустриальных объектах связана с обработкой большого объема показаний различных датчиков (температура, давление, управляющие сигналы и т.д.). Каждый из таких сенсоров порождает временной ряд, который может быть использован как для потоковой обработки, так и для проведения исторического анализа и расследования инцидентов. Здесь возникает задача хранения показаний за некоторый период времени. При этом потоки данных могут достигать десятков тысяч показаний в секунду, а период хранения достигать нескольких месяцев или даже лет. При таких условиях необходимо предельно аккуратно выбирать СУБД для хранения временных рядов, которая правильно впишется в нефункциональные требования.
В качестве конкурсантов выступят: OpenTSDB, InfluxDB, MongoDB, PostgreSQL и еще несколько "чёрных лошадок".
В докладе будет рассмотрен многокритериальный подход к выбору с учетом таких показателей как:
* зависимость пропускной способности на запись от различных параметров;
* время исполнения запроса на чтение;
* степень сжатия данных;
* пропускная способность при нагрузочном тестировании.
В докладе предлагается не только привести получившиеся числа, но и обсудить почему они получились именно такими.
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследованияSECON
В докладе будет рассказано про горизонтальное масштабирование, варианты кластера вокруг Pg, над каким вариантом кластера работает Postgres Professional, архитектурные и технологические задачи и результаты первых тестов
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
Екатерина Войденко "Горизонтальное масштабирование MySQL"Yandex
Екатерина Войденко "Горизонтальное масштабирование MySQL"
Я.Субботник в Санкт-Петербурге
О докладе:
Мы попытаемся понять, что делать, если наша база стала слишком большой. Немного поговорим про архитектурные моменты. Рассмотрим некоторые схемы шардирования, обсудим партиционирование и для чего оно нужно, а также затронем балансировку нагрузки.
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
Проблема мониторинга целостности технологических процессов на индустриальных объектах связана с обработкой большого объема показаний различных датчиков (температура, давление, управляющие сигналы и т.д.). Каждый из таких сенсоров порождает временной ряд, который может быть использован как для потоковой обработки, так и для проведения исторического анализа и расследования инцидентов. Здесь возникает задача хранения показаний за некоторый период времени. При этом потоки данных могут достигать десятков тысяч показаний в секунду, а период хранения достигать нескольких месяцев или даже лет. При таких условиях необходимо предельно аккуратно выбирать СУБД для хранения временных рядов, которая правильно впишется в нефункциональные требования.
В качестве конкурсантов выступят: OpenTSDB, InfluxDB, MongoDB, PostgreSQL и еще несколько "чёрных лошадок".
В докладе будет рассмотрен многокритериальный подход к выбору с учетом таких показателей как:
* зависимость пропускной способности на запись от различных параметров;
* время исполнения запроса на чтение;
* степень сжатия данных;
* пропускная способность при нагрузочном тестировании.
В докладе предлагается не только привести получившиеся числа, но и обсудить почему они получились именно такими.
SECON'2016. Сигаев Федор, Pg в кластере. Скандалы, интриги, расследованияSECON
В докладе будет рассказано про горизонтальное масштабирование, варианты кластера вокруг Pg, над каким вариантом кластера работает Postgres Professional, архитектурные и технологические задачи и результаты первых тестов
SECON'2016. Бартунов Олег, Карьера в Open SourceSECON
Я расскажу про то, как устроен современный Open Source на примере проекта PostgreSQL и про те возможности, которые дает Open Source разработчику, в частности, в реализации себя как творческой личности и карьерного роста, а также достижения свободы и независимости. Open Source в условиях цифрового равенства позволяет разработчику жить и работать в привычных условиях без обязательного перемещения в неудобный для жизни мегаполис, и при этом быть членом большого международного сообщества, принимать участие в его жизни и влиять на развитие проекта.
Дается математическое обоснование S.O.L.I.D принципов с помощью логики Хоара, из которого следует, что S.O.L.I.D верны не только для ООП, но и для статического полиморфизма, но и для императивного программирования вообще.
В докладе описываются основные проблемы, которые возникают при разработке проектов, и демонстрируется, что эти проблемы можно предсказать и решать с помощью математической теории, лежащей в основе языков программирования.
разработка серверов и серверных приложений лекция №4etyumentcev
В данной лекции рассмотрена минимальная реализация акторной модели, включающая
- отправку сообщений,
- создание новых акторов и смену поведения для приема следующего сообщения.
Исходный код реализации выложен на https://github.com/hwdtech/HWdTech.DS. Код на C#.
При разработке использовались библиотеки: Autofac, NuUnit, Moq
Все о скорости сайтов. Мастер-класс на партнерской конференции 1С-Битрикс.rusonyx
Сокращенная версия презентации. Файл доступен для скачивания и содержит текстовые комментарии к слайдам. 1,5-часовой мастер-класс, посвященный скорости сайтов, прошел в рамках летней партнерской конференции 1С-Битрикс 20 июня 2013 г. В мастер-классе приняли участие представители 40 веб-студий. В материале раскрыты технические механизмы загрузки и отображения страниц сайта. Приведены правильные и неправильные примеры. Разобраны самые эффективные способы ускорения сайтов и инструменты для выявления узких мест.
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...Ontico
Как быстро развивается сейчас PostgreSQL — общеизвестно. За несколько дней до РИТ++ заканчивается главный мировой форум разработчиков этой СУБД — конференция PGCon в Канаде. Большая команда разработчиков Postgres Professional принимает участие в этой конференции и готова рассказать все последние новости прямо с PGCon.
Параллельное исполнение запросов, новые стораджи, неутихающая тема Postgres vs key-value storage, распределенный Postgres, высокая доступность, многочисленные улучшения производительности, планы и интриги разработчиков — вот основные темы этой конференции.
Я остановлюсь подробнее на нашем вкладе в ожидаемый релиз 9.6 и планах на, возможно, релиз 10.0.
Web Vitals - инициатива Google, призванная помочь владельцам сайтов улучшить пользовательский опыт путём упрощения процесса измерения производительности, скорости и удобства работы сайтов. Мы поговорим об основных метриках: Core Web Vitals и инструментарии для их измерения и улучшения.
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
Первый релиз-кандидат версии 9.6 вышел 1 сентября, а это значит, что совсем скоро будет полноценный релиз. Все вокруг уже успели обсудить новинки, и теперь уже стыдно ничего не знать о таких вещах, как параллелизация выполнения запросов, pushdown для FDW, мониторинг waitlocks, полнотекстовый поиск по фразам или магический \gexec в psql. Чтобы никому не приходилось краснеть, мы быстро пройдёмся по всем основным и интересным моментам версии 9.6.
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
РИТ++ 2017, Backend Conf
Зал Сан-Паулу, 6 июня, 14:00
Тезисы:
http://backendconf.ru/2017/abstracts/2778.html
Хотите научиться принимать решения на основе данных, но не знаете, с чего начать? Нужно записать миллионы событий, но не уверены, как делать это правильно? Вы не знаете, как быстро и дёшево строить аналитические отчеты или запутались в инструментах?
На примере DocDoc я расскажу о плюсах и минусах различных подходов: как выбрать систему хранения, почему мы остановились на Google BigQuery. Как правильно организовать данные, записать свой clickstream, отказаться от сэмплирования в GA, а также строить простые и понятные отчеты.
Описана методология построения бюджетного бекэнда для push-уведомлений своими руками. Как избежать трат на облачные системы, в чем преимущества собственных решений.
Докладчик:
Александр Кацко
Описание:
Как только речь заходит про создание API, особенно для веб или мобильных приложений, то многие, не задумываясь, выбирают принцип REST. Но всегда ли это правильный выбор?
В докладе рассмотрим случаи, для которых хорошо подходит JSON-RPC, посмотрим примеры реализации на Django.
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Yandex
С развитием веб-технологий сайты стали уже не просто информационными ресурсами, а полноценными приложениями. Такие приложения используют большое количество статических ресурсов, общий объем которых часто превышает 1 МБ. При условии частых обновлений встает вопрос: "Как наиболее эффективно загружать ресурсы при выходе новых версий?". В докладе будет рассказано про существующие техники обновления, которые позволяют загружать не целиком новые ресурсы, а только «разницу» между новой и старой версией.
Мы в Avito не так давно начали использовать Golang, но он уже успел занять важное место в различных частях проекта. В докладе мы расскажем о том, какие задачи нам помогает решать Go, почему выбор пал именно на этот язык, с какими подводными камнями мы столкнулись, и как их обходили. В частности поговорим про:
• Сервисы. Как мы начали использовать Go для разработки микросервисов, как это сказалось на их поддержке, а также отдельно расскажем про “шаблон сервиса”, который мы используем.
• Поиск. Как мы с помощью Go мы реализовали RtIndexer для обновления Sphinx Rt индексов в кластере из множества машин (поиск по активным объявлениям), который устойчиво работает с отставанием не более 10 секунд при нагрузке до 1000 rps.
• Автоматизацию тестирования. Как мы пишем тестовые сервисы и API на Go. Подробней остановимся на использовании общих моделей тел запросов и ответов для отправки и получения, использовании горутин как воркеров для обработки очереди.
разработка серверов и серверных приложений лекция №3etyumentcev
В третьей главе рассматриваются базовые свойства акторов, описанные в PhD диссертации Gul Agha: каждый актор имеет адрес, большой почтовый ящик, куда доставляются сообщения, адресованные актору и поведение. В ответ на входящее сообщение актор может отправить конечный набор сообщений другим акторам и/или создать конечное число новых акторов и/или поменять свое поведение для обработки следующего сообщения.
В рамках данного курса будет разработана библиотека для разработки параллельных приложений на платформе .NET, построенная по модели акторов.
Исходные коды библиотеки будут выкладываться на GitHub: https://github.com/hwdtech/HWdTech.DS
Код библиотеки будет разработан с использованием следующих принципов, приемов и методик:
S.O.L.I.D. - принципы
Unit-tests
Mock
IoC контейнеры
Для удобства слушателей курса краткий обзор данных практик приведен в Главе 4.
разработка серверов и серверных приложений лекция №2etyumentcev
Причины потерь процессорного времени при организации последовательности вычислений внутри потока: 1. Ожидание ответа на запрос (поток спит). 2. Выполнение дополнительных "лишних" действий. Как способ устранения этих потерь - паттерн Пул потоков. Анализ императивного и функционального подхода к борьбе с "жадными" операциями. Эволюция методов организации параллельных вычислений на основе пула потоков.
высокопроизводиетльные системы без доп затратetyumentcev
Нами был разработана библиотека HWdTech.DS для разработки многопоточных и распределенных приложений на платформе .Net. Эта библиотека использует модель акторов и позволяет существенно снизить требования к квалификации программистов при построении высоконагруженных приложений.
Приводится объяснение, почему для программистов не подходят системы тайм-менеджмента. Презентация шла как сопровождение к устному выступлению, поэтому сама по себе без записи доклада, возможно, будет непонятна.
Об опыте применения jsonb в реальных проектах. Выступление на PgConf.Russia 2016
1. Об опыте применения JSONB в
реальных проектах
Евгений Тюменцев
HWdTech, LLC
hwdtech.ru
PgConf.Russia 2016
3-5 ФЕВРАЛЯ, МОСКВА, Известия-Холл
2. Сайт бесплатных объявлений
PgConf.Russia 2016 02
За 5 лет полностью сменилось 3 команды
разработчиков, скорость важнее качества.
4,5 с – время отклика страницы
70 тыс. ошибок на 1 млн. страниц
30 с - время поиска по тексту объявления
БД более 200 таблиц
4. Что надо получить
PgConf.Russia 2016 04
Сделать редизайн сайта
Команда разработки 7 студентов +
девушка филолог в качестве аналитика
<1 с – время отклика страницы
< 1 ош. на 10 тыс. страниц
Полнотекстовый поиск должен стать
основным
5. Что делать?
Отказаться от
реляционной структуры в
пользу json
PgConf.Russia 2016 05
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress":
"Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
Все поля делятся на:
• Searchable
• Filterable
• Rangeable
10. Что получили?
• Всего 6 запросов
• Среднее время выполнения каждого запроса
известно
• Не надо репликаций для балансировки
нагрузки, формирования тяжелых отчетов
PgConf.Russia 2016 10
11. Что получили?
• Всего 6 запросов
• Среднее время выполнения каждого запроса
известно
• Не надо репликаций для балансировки
нагрузки, формирования тяжелых отчетов
• Не нужно миграций, можно одновременно
хранить данные разных версий
PgConf.Russia 2016 11
15. Методы обнаружения разладки
PgConf.Russia 2016 15
Карты Шухарта
Все процессы подвержены
вариабельности. Управляемое
явление - используя прошлый
опыт можно предсказать, каких
его вариаций можно ожидать в
будущем.
ГОСТ Р 50779.42-99 (ISO 8258-91)