Доклады

(21)

Крах компаний: и при чем тут кибербезопасность, спрашивается?

Алексей Новиков

Positive Technologies

За последние несколько лет с рынка исчезло некоторое количество компаний (ну, или они перестали быть активными). Например, SolarWinds — разработчик ПО для IT-подразделений. В ряде случае причиной исчезновения стало не что иное, как компьютерный инцидент. При этом мало кто понимает причины возникновения таких инцидентов, какова в них роль программистов и могли ли именно они в данном случае спаси свои компании.

Рассмотрим пять самых известных кейсов, выясним, в каком конкретно месте роль программиста оказалась роковой и как ему стоило организовать свою работу, чтоб не забивать мячи в свои ворота.

Доклад принят в программу конференции

Зачем МТС вкладывается в Open Source для Data Science

Из моего выступления вы узнаете о том, как и зачем МТС Digital участвует в Open Source. Я расскажу о нашем взаимодействии с сообществом, о ключевых проектах и разработках. Также я поделюсь, с какими сложностями мы сталкиваемся, когда выкладываем решения в открытый доступ.

Доклад принят в программу конференции

Как управлять изменениями при рефакторинге legacy-систем

Часто случается так, что мы вынуждены работать с продуктом или системой, устаревшей во всех возможных планах, но при этом имеющей серьезную ценность для внутренних или внешних потребителей.

В докладе пойдет речь о том, как решиться на такие изменения, нужны ли они вообще, и если да, с чем придется столкнуться на этом пути.

Доклад принят в программу конференции

FlowSchema и PriorityLevelConfiguration: как не "задушить" api-server K8s

Дмитрий Крапивин

СберМаркет

Техтолк о том, как API-сервер K8s ложится под запросами prometheus, который пытается собрать 40 миллионов метрик. И про опыт СберМаркета по этому поводу.

Доклад принят в программу конференции

Как адаптировать легаси-приложение в условиях кратного роста нагрузки

Андрей Иванов

СберМаркет

1. Что такое СберМаркет.
- Что делает приложение СберМаркета.
- Как повысилась нагрузка и её профиль.
2. Способы удержания нагрузки.
- Тюнинг базы.
- Адаптация базы с последующим разделением на слоевые реплики.
- Разделение базы на Master/Slave и адаптация приложения под такую архитектуру.
3. Планы на будущее.

Доклад принят в программу конференции

Большие данные в МТС: стратегия импортозамещения

Расскажу о том, что мы делаем в связи с уходом вендоров: как переносим и меняем процессы, в каких случаях разрабатываем свое.

Доклад принят в программу конференции

ДБО как основной инструмент взаимодействия пользователей с Банком

Роман Бадреев

РоссельхозБанк

1. Что такое ДБО?
2. Тюнинг системы и этапы ее развития.
3. Предоставление качественного сервиса.
4. Потенциальные проблемы блокировки приложения ДБО в зарубежных маркетах.

Доклад принят в программу конференции

“Тайные” практики для ускорения разработки от Мир Plat.Form

Артем Кротов

Мир Plat.Form

В рамках данного техтолка вы узнаете, какими “секретными практиками” пользуются команды в Мир Plat.Form, чтобы поддерживать качество и скорость разработки на высоком уровне.

Я расскажу, что делать, когда “инженерка” хромает, а скорость поставки оставляет желать лучшего. Речь пойдёт не только об общепринятых практиках CI/CD, виртуализации и управления конфигурациями, но и о практиках, которые каждая команда может попробовать уже завтра независимо от своего размера или стека.

Доклад принят в программу конференции

Почему классические продуктовые команды неэффективны в enterprise

Виктор Михайлов

Газпромбанк

Диалог о том, почему классические продуктовые команды неэффективны в enterprise. Основные причины в том, что в энтерпрайзе множество систем, большое количество данных и связей. И команда в одиночку не может учитывать все связи. Это приводит к необходимости выстраивания дополнительных контролирующих образований, которые определяют правила и рамки игры.

Исходя из неэффективности продуктовых команд, напрашивается вывод о том, что и классические архитекторы в энтерпрайзе становятся не нужны, т.к. команд много, подходы к разработке разные, технологий много — соответственно, подход к архитектуре прикладной идет от команды. Плюсом, архитектура пришла к сервисной/микросервисной — отвечать за все сразу и каждый компонент в отдельности архитектор не может физически.

Как с этим живем и эффективно справляемся в Газпромбанке — подробнее в техтолке.

Доклад принят в программу конференции

Работа в больших корпорациях. Особенности, вызовы, решения

Работа в компаниях уровня энтерпрайз имеет свои особенности. Газпромбанк — классический энтерпрайз, большой и очень сложный. Работа в подобного рода организациях имеет свою специфику. Специалисту в Газпромбанке нужно быть готовым к большим масштабам и организационной сложности корпорации, к работе по правилам. Давайте обсудим причины, особенности и преимущества такого подхода.

Доклад принят в программу конференции

Подводные камни в автоматизации тестирования

Антон Кадников

Газпромбанк

1. Зачем и когда автоматизировать?
2. Подводные камни:
* слишком ранняя автоматизация;
* несфокусированная автоматизация;
* поддержка и эксплуатация;
* недостаточная коммуникация;
* имитация ручного тестирования.

Доклад принят в программу конференции

Почему в IТ происходят аварии, и кто их устраняет, или Вы пробовали выключить и включить снова?

Павел Кузнецов

Газпромбанк

* Почему происходят аварии/проблемы.
* Что происходит во время аварии, как и что чувствует инженер.
* Почему люди идут в инженеры.
* Какие требуются компетенции для инженеров.
* Что стоит изучить (книги, инструменты).
* Рост специалиста от новичка до эксперта.

Доклад принят в программу конференции

DevOps-труба между подрядчиком и заказчиком для легаси-приложения

Денис Рылеев

РоссельхозБанк

Расскажу о том, как мы из полностью ручной процедуры передачи дистрибутива software в банк сделали процесс автоматизированным.

Поделюсь нашим процессом, как он выглядел в самом начале, а также решением, как мы ускорили его в несколько раз.

Доклад принят в программу конференции

Миграция в облачный "Modern Data Stack": выбирай, страдай, люби

#Архитектура данных, потоки данных, версионирование
#Проектирование информационных систем
#ETL

Data Lakehouse, Cloud Data Platform, Data Mesh, Data Fabric — громко звучащие слова, которые у всех на слуху и профессионально интересны каждому специалисту в области работы с данными. Но что, если желание "пощупать и внедрить", которое обычно разбивается о будни поддержки текущих решений, вдруг воплощается в рабочую реальность? Бойтесь своих желаний, ведь именно так произошло в toloka.ai — перед командой платформы данных была поставлена задача: "Azure. Modern Data Stack. Завтра".

В рамках нашего доклада мы пройдем все стадии нашей работы с Modern Data Stack — выбирай, страдай, люби — и затронем следующие вопросы:
* что такое современная платформа данных и на каких китах она держится?
* как не утонуть в мире Modern Data Stack-решений?
* какие подводные камни интеграции разных систем вас ожидают?
* какие инструменты (из тех, что мы попробовали) “must have”, а что можно пробовать заменить?
* как изменилась (и изменилась ли) работа аналитиков?
* что стоит, а что не стоит повторять, если вы пойдете по той же дорожке?

Доклад принят в программу конференции

От ​MVP ​к ​реальности. Проблемы перехода и лекарства для решения

#Архитектурные паттерны
#Отказоустойчивость
#Оптимизация производительности
#Рефакторинг
#Масштабирование с нуля
#Критерии выбора технологий для проекта
#Логирование и мониторинг
#Техдолг

Мир создания IТ-продуктов довольно динамичен и сложен. На этот мир можно посмотреть как на конструктивную борьбу между бизнесом, технологиями, маркетингом и другими участниками процесса. Запуская MVP, обычно мы жертвуем качеством ради быстрой проверки гипотезы. А что же дальше?

Как жить и что делать после успешного тестирования гипотезы? С какими техническими вызовами нам придется столкнуться и как их решать? А вдруг можно уже на этапе MVP построить архитектуру, которая нам облегчит жизнь в дальнейшем?

Этими вопросами мы и задались, поэтому хотим поделиться нашим опытом технического развития быстрорастущих продуктов:
* как сохранять баланс развития и техдолга при масштабировании в 10 раз? С какими проблемами мы столкнулись и как их решали;
* о чем можно было подумать в начале разработки, чтобы сделать переход от MVP к реальности проще.

Доклад принят в программу конференции

Octree, или Сказ о поиске пути в 3D

Поиск пути в трехмерном пространстве — настоящий вызов для приложения, особенно если к скорости вычисления предъявлены жесткие требования.

На примере игры "Пираты: штурм небес" мы покажем проблемы, возникающие при использовании традиционных алгоритмов. Одним из способов увеличения скорости поиска является использование октодерева, которое позволяет экономно хранить информацию о коллизиях в мире и грамотно выбирать гранулярность сетки. В рамках доклада мы пройдем путь от идеи использования до конечной реализации в "Пиратах", а на десерт нас ждет несколько оптимизаций, позволяющих еще сильнее ускорить поиск пути.

Доклад принят в программу конференции

Зачем и как мы написали MapReduce-движок над Clickhouse

Андрей Кузнецов

ВКонтакте, VK

Аналитика ВКонтакте очень активно использует ClickHouse. Не будет преувеличением сказать, что эта СУБД выступает в качестве ключевого компонента нашего DWH: бэкенд пишет риалтайм click stream, сотни дэшбордов читают данные, десятки аналитиков пишут запросы. Благодаря развитому сервисному слою, все это работает параллельно на одних и тех же серверах.

В докладе мы коснемся части этого слоя, а именно инструментов для работы с данными поверх ClickHouse. Проследим эволюцию этих инструментов от ETL-утилиты до MapReduce-фреймворка, доступного всем коллегам. С помощью этого фреймворка аналитики решают задачи, требующие batch-обработки больших объемов данных, без написания ТЗ на подготовку датасетов и без привлечения дата-инженеров. Это значительно уменьшает time-to-market в аналитике и в конечном счете упрощает DWH-инфраструктуру, что особенно актуально для быстрорастущих компаний среднего размера. Попутно коснемся устройства пайплайна АБ-экспериментов, способного работать с самыми тяжелыми логами в масштабах сотен одновременно запущенных экспериментов.

Доклад принят в программу конференции

Менеджер транзакций в GoLang

#Бэкенд / другое
#Организация доступа к базам данных, ORM, собственные драйвера
#GO

Я объясню, как обычно устроен менеджер транзакций и почему его нельзя скопировать "в лоб" в Go из других языков.

Покажу, как сохранить транзакционность при работе с вложенными сценариями и несколькими репозиториями, не привязываясь к конкретной СУБД и не передавая транзакции как аргумент.

Расскажу, как в реалиях GoLang реализовать "идеальный" паттерн-репозиторий из книжек посредством менеджера транзакций.

https://github.com/avito-tech/go-transaction-manager/

Доклад принят в программу конференции

Обрабатываем терабайты данных в кредитном скоринге

#Hadoop
#Machine Learning
Евгений Смирнов

Альфа-Банк

Кредитный скоринг — очень консервативная область, где традиционно используются самые стабильные и интерпретируемые методы. Сейчас в банке решение о выдаче кредита принимается нейронными сетями на терабайтах данных.

В докладе пойдет речь о том, как интегрировать обработку большого объема данных в онлайн- и офлайн-процессы кредитного конвейера.

Доклад принят в программу конференции

Сервис по оптимальному управлению складскими запасами на площадках ПАО НЛМК

1) Постановка задачи оптимального управления складскими запасами, вводные от заказчика.
2) Сбор, хранение и обработка данных.
3) Модель прогнозирования потребления.
4) Оценка точности прогнозов + бизнес-эффекты.
5) Архитектура решения в production.

Доклад принят в программу конференции

Как вынести расчет цен для 20 тысяч магазинов из SAP, чтобы сохранить 4 девятки

#Микросервисы, SOA
#Отказоустойчивость
#Распределенные системы
#Архитектура данных, потоки данных, версионирование
#Критерии выбора технологий для проекта
#Работа с облачными сервисами
#ClickHouse

Выносим сервис расчёта цен для 20 тысяч магазинов из SAP, чтобы:
* снять с SAP нагрузку (100% загрузки серверов с 21 до 3 часов) — мешает другим процессам, требует постоянной поддержки из-за частого достижения потолка ресурсов, работает на пределе возможностей SAP;
* вывести из зоны риска остановки mission critical процесс.

Доклад принят в программу конференции

Стриминг (3)

VK Звонки: все про звук, или Как добиться эталонного качества передачи голоса через интернет

Алексей Шпагин

ВКонтакте, VK

Почему, если кто-то участвует в “созвоне” из автомобиля, то его плохо слышно? В чем особенность использования динамиков вместо наушников, когда вы находитесь на звонке? Что происходит со звуком участника звонка, если у него плохой интернет? Можно ли измерить качество звука в цифрах?

На эти и другие вопросы я постараюсь ответить в своем докладе на примере нашего сервиса.

Через VK Звонки ежедневно общаются миллионы людей, одновременно идут десятки тысяч разговоров и рабочих совещаний. Расскажу, как нам удается обеспечить качество звука, способное конкурировать с мировыми лидерами рынка, с какими сложностями мы сталкиваемся и как оцениваем эффективность наших доработок и улучшений.

Доклад принят в программу конференции

Почему видеостриминг через 15 лет возвращается с TCP на UDP

#Синхронизация данных, параллельная обработка, CDN
Максим Лапшин

Эрливидео

Проникновение флеш-плеера вместе с H264 почти 15 лет назад, а потом и появление HLS привели к тому, что массовая доставка видео в интернете перешла на TCP-протоколы: RTMP, HLS, DASH (и даже HDS).

Последние годы мы видим обратную тенденцию с возвращением на UDP-протоколы: WebRTC, SRT и эксперименты с WebTransport over HTTP/3.

Почему это происходит, во что это выливается, как это конфликтует с другими трендами в индустрии интернет-разработки? Почему приходится переизобретать заново TCP-стек 40-летней давности?

Доклад принят в программу конференции

H264 жив

Видео — основная часть трафика в интернете, для Дзена важно уметь контролировать его рост, ограничивать сверху.

Я расскажу про механизмы экономии трафика, которые мы реализовали.
Для этого пришлось применять такие подходы:
* подобрать набор оптимальных пресетов для видео;
* уметь быстро категоризировать видео в один из пресетов;
* не ухудшить визуальное качество.

Доклад принят в программу конференции

DevOps в Enterprise (4)

RedHat OpenShift ушел. Что делать энтерпрайзу и не только ему?

Юрий Семенюков

Инфосистемы Джет

До событий основным инструментом создания платформ управления контейнерами являлся продукт Red Hat OpenShift Container Platfrom. Теперь продажи этого, как и любых других западных решений, невозможны, и стоит вопрос выбора замены либо альтернативы. В этом докладе мы поговорим, какие пути и возможности есть с т.з. компаний сегмента Enterprise, для которых характерны высокие требования к функциональности и стабильности продукта, а также надежности поддержки решения.

Основные тезисы доклада:
1. Для кого эта тема актуальна, кто и почему раньше выбирал OCP при наличии бесплатного kubernetes.
2. Какие возможны варианты замены OCP, в принципе. Два основных пути — OKD и ванильный kubernetes.
3. Что вас ждет в варианте OKD:
* чем отличается OKD от OCP не по слайдам вендора, а на практике;
* как правильно мигрировать с OCP на OKD, какие подводные камни ждут на пути.
Рассматриваем на примере проекта, раскрываем тезисы на примере практических проектных кейсов.
4. Зачем это нужно, если есть ванильный kubernetes?
На примере того же проекта поговорим, почему это было важно в нашем случае и что, возможно, следует учесть слушателям при таком кейсе:
* платформа контейнеризации и операционная система как одно целое (immutable CoreOs);
* наличие специфичных разработок для платформы (таких, как инфраструктура мониторинга STF), которые были важны Заказчику и которые существуют в адаптированном виде под OCP/OKD.
5. Поговорим на эту тему чуть шире — для enterprise в настоящий момент актуальна не только замена OCP, но также и замена подлежащей под ней платформы виртуализации. Если ранее 90% всех внедрений было поверх VMware, то теперь актуален переход на KVM-подобные гипервизоры. Здесь поговорим про наш опыт развертывания OKD на подобных решениях. Цель: дать информацию о том, что для компаний можно предоставить единый программный стек инфраструктуры, начиная от уровня гипервизора до уровня контейнерной оркестрации, на свободных opensource-технологиях, но при этом с достаточным уровнем надежности. Обсудим вопросы совместимости.
6. А что есть из отечественного, и что оно умеет по сравнению с OpenShift? Обзор решений, экспертное мнение.

Доклад принят в программу конференции

DevOps как инструмент QA

Дмитрий Малыхин

Независимый эксперт

Секрет промышленности:
Как можно добиться противоположного: скорости и качества.

В докладе я не дам готового рецепта счастья и не расскажу, как делать быстро и качественно.

Рассмотрим понятия QA в промышленной компании, где одновременно запускаются десятки проектов, и на инженера приходится от 7 до 10 проектов в месяц, и как рост требований к качеству, увеличивает производительность команды.

Основные вопросы:
* Что такое QA?
* Что такое качество?
* Как и зачем измерять качество?
* Как масштабировать качество и принципы работы на десятки и сотни проектов.
* Инструменты достижения качества.

Почему DevOps — это один из ИНСТРУМЕНТОВ QA?

Доклад принят в программу конференции

Service Mesh Big Survey

#Архитектурные паттерны

Итак, вы решили идти в ногу со временем и добавить в свой кластер Kubernetes первый Service Mesh. От друзей вы слышали, что Istio требует много памяти, прокси в Linkerd очень быстрые, но никто не проверял. А еще все почему-то говорят про Cillium, хотя это CNI-плагин. Настало время все это обсудить!

В докладе мы разберем:
1. что такое паттерн Service Mesh и зачем, в принципе, он может понадобиться;
2. все существующие архитектурные подходы к реализации Service Mesh;
3. самые популярные OpenSource-реализации Service Mesh: Istio, Linkerd, Cillium, NGINX Service Mesh и др. Проверим Control&Data planes, познакомимся с User API, узнаем все про возможности расширения и кастомизации;
4. опыт эксплуатации и типовые проблемы Service Mesh в большом и нагруженном продакшне.

Доклад принят в программу конференции

Внутренняя энтерпрайз-платформа для контейнерной разработки как технологическая основа для бизнеса

Александр Титов

Экспресс 42

Создание цифровых продуктов — это новая грань развития бизнеса. Новые продажи, другой пользовательский опыт, работа с различными целевыми аудиториями, смена производственных процессов по принципу “все в цифре” для кардинального повышения эффективности — это эффекты, которые можно получить при применении цифровых продуктов.

В текущей ситуации в нашей стране применение таких подходов — это один из возможных путей быстрой смены экономических связей и цепочек поставок.

Для построения цифровых продуктов компании необходимо обладать технологической компетенцией, которая дает качественные процессы разработки, тестирования, эксплуатации, работающие на базе принципов Cloud Native, API first, CI/CD, Infrastructure as Code.

Компетенции можно получить в компании через наем, а можно через построение своей внутренней платформы, которая задаст технологический стандарт контейнерной разработки цифровых продуктов.

В докладе я расскажу про то, какие компетенции нужны для контейнерной разработки продуктов, как эти компетенции реализовать через свою платформу разработки и поставки цифровых продуктов, какие решения, типы компаний, сервисы есть на российском рынке для переиспользования внутри компании и почему это поможет сэкономить на найме людей и ускорить время вывода продуктов на рынок.

Поговорим про:
* Kubernetes как основу автоматизированной оркестрации ресурсов и приложений;
* CI/CD-стандарты разработки, которые снимают сложности и барьеры с разработчиков, создают изолированные пространства разработки и позволяют быстро включать разработчиков разного уровня компетенции в процесс;
* ключевые стандарты и подходы, которые делают разработку качественной, быстрой и безопасной;
* как эти стандарты имплементируются на опыте Экспресс 42 и могут быть имплементированы у вас.

Доклад принят в программу конференции

Импортозамещение (3)

Axiom JDK Pro: новые вызовы российской Java-разработки

С начала этого года разработка в России столкнулась с рядом вызовов, на которые нужно ответить прямо сейчас. Например, у нас ушли прежние большие вендоры Java-серверов.

На чём мне запускать приложения, если WebLogic и WebSphere более недоступны? Если взять случайный образ с DockerHub, кто, вообще, гарантирует, что нас не сломает первый встречный? Что делать со стоимостью миграции на российские облака (вы видели чек?).

Это хорошие вопросы, на которые имеются хорошие ответы и проверенные решения. Мы поговорим о том, на чем именно запускать Java-приложения, кто это будет поддерживать, как строится процесс безопасной разработки (SDL). В конце обсудим всё про безопасность, включая животрепещущую тему "отмены" России в интернете.

Доклад принят в программу конференции

Как с помощью BPMS (jBPM) заместить продукты SAS

#Java
#PostgreSQL
#Oracle
#Архитектурные паттерны
#Масштабирование с нуля
#Инфраструктура как сервис (IaaS), платформы как сервис (PaaS)
#Enterprise-системы
#Логи, метрики, ошибки

В феврале 2022 года компания SAS покинула российский рынок. В итоге Сбер, как и многие другие компании, лишился поставщика основных компонентов для кампейнинга в x-sell-бизнесе, целью которого является формирование персонализированных предложений для клиентов.

Основные компоненты, которые мы использовали в legacy-системах — SAS RTDM, Viya, ID, MA, MO, EG. Каждый из перечисленных компонентов покрывает ту или иную потребность системы, например:
1. исполнение ML-моделей (MA);
2. ETL (DI, EG);
3. оптимизация x-sell-предложений (MO);
4. low-code-инструменты настройки бизнес-логики (RTDM, Viya, ID).

В докладе расскажу об импортозамещении компонентов RTDM, Viya, ID. На вышеперечисленных движках в промышленной эксплуатации работают highload-процессы под нагрузкой ~50 000 TPS и c доступностью 99,99% (53 минуты простоя в год). Максимально схожими движками по функционалу являются системы класса BPMS: Camunda, jBPM, Kogito и другие. Взяв за основу наши функциональные и нефункциональные требования, покажу, почему мы выбрали jBPM, погрузимся в архитектуру решения, а также разберем баги, с которыми мы столкнулись, и методы их исправления.

Доклад принят в программу конференции

Круглый стол СТО: Buy or build?

Вопрос импортозамещения технологий на повестке не первый год, но никогда ранее он не был таким массовым.

Обсудим главную дилемму российских СТО в 2022: искать замену решениям ушедших вендоров или разрабатывать самим? Какие успешные кейсы перехода на российском ПО уже получилось реализовать? Какие велосипеды удалось уже построить, а какие задачи до сих пор не решены?

Доклад принят в программу конференции

Финтех (4)

Клиентоцентричный подход к управлению данными

#Миграции данных
#Поисковые системы
#Архитектурные паттерны
#Архитектура данных, потоки данных, версионирование
#Архитектуры / другое
#Обслуживание клиентов, техническая поддержка, обратная связь
#Проектирование информационных систем

Управление клиентскими данными — сложная задача для любой большой компании. В масштабах Сбера — с сотнями различных процессов и автоматизированных систем, числом клиентов более 100 млн — эта задача многократно усложняется. Разным потребителям данных требуется получать актуальную информацию о клиенте в определенном разрезе и режиме с высоким уровнем сервиса и качества.

В докладе расскажу о клиентоцентричной архитектуре Сбера, как на ее основе развивается система по управлению профилем клиента и каким образом клиентоцентричный подход помогает минимизировать число проблем, связанных с рассинхроном клиентских данных. Бонусом подсветим текущий «джентльменский набор» функциональных АС, которые позволяют эффективно управлять клиентскими данными.

Также поговорим о:
* проблемах и потребностях, которые возникают на пути развития архитектуры по управлению клиентскими данными, и способах их решения;
* почему искать клиента в системах банка по ФИО-ДУЛ-ДР — неправильно, и как с этим бороться;
* какие паттерны обмена клиентскими данными между АС используют в Сбере и почему не всегда работает классический pub-sub;
* как побороть ошибки «исторического наследия» в управлении клиентскими данными за счет внедрения архитектурных стандартов.

Доклад принят в программу конференции

Как ML помогает предотвращать финансовые мошенничества в СБП

#Аналитика / другое
#Machine Learning

За время пандемии удаленные платежи стали неотъемлемой частью нашей повседневной жизни. Каждый из нас с вами хотя бы раз пользовался системой быстрых платежей.

Мы поговорим о том, как обеспечивается безопасность переводов в системе быстрых платежей, о том, какие угрозы не теряют актуальность со временем и как машинное обучение может помочь нам обеспечить безопасность наших денежных средств.

Доклад затронет вопросы недоступности чувствительных данных или какой-то их части для обучения и возможные решения, которые могут помочь преодолеть эти проблемы. Отдельно посмотрим, выгодно ли развивать такие решения для бизнеса.

Доклад принят в программу конференции

Распределённая обработка платежей с помощью Apache Ignite

#Платёжные системы, обработка платежей
#Java
#Python
#Базы данных / другое
#Организация системы кеширования
#Отказоустойчивость
#Распределенные системы
#Архитектура данных, потоки данных, версионирование
#Критерии выбора технологий для проекта
#Архитектуры / другое
#Логирование и мониторинг
#Технологии виртуализации и контейнеризации
#Технологии отказоустойчивости и катастрофоустойчивости, бэкапы
#Непрерывная интеграция
#Надёжность продакшена
#Слабо связанная архитектура
#Логи, метрики, ошибки
Николай Кувыркин

Райффайзен Банк

Архитектура системы распределённой обработки платежей.

Процесс ввода системы в промышленную эксплуатацию — как сделать это незаметным для пользователей, без остановок бизнес-процессов по обслуживанию запросов клиентов.

Неочевидные на старте проблемы, с которыми можно столкнуться при запуске своего проекта:
1. Множество платежей от одного клиента, фактически останавливающие обработку других транзакций — ситуация, с которой реально столкнуться на практике при разработке подобного рода систем.
2. Split-brain: как бороться с последствиями и как избежать подобных проблем в будущем.

Стандарты, стандарты, стандарты! О важности следования практикам, принятым в организации.

Доклад принят в программу конференции

С чего начинается биллинг облачных сервисов

Сейчас биллинг Yandex Cloud обрабатывает около 4,2 миллиарда метрик от сервисов в сутки, а задержка с момента, когда что-то случилось, до того, как это отразится в детализации, составляет единицы минут.

Расскажу, как мы проектировали биллинг, какие вопросы задавали сами себе, какие архитектурные решения выдержали проверку временем, а какие нет. В частности, рассмотрим:
* как строить объектную модель;
* масштабируемость: что будет, если пользователей, продуктов или данных станет больше в 100 раз (спойлер: так и вышло);
* механизмы доставки данных о потреблении: push, pull, message queue;
* OLTP для потоковой обработки и OLAP для тяжёлой аналитики.

Доклад принят в программу конференции

Базы данных в облаках (3)

Высокодоступный MySQL на конвейере

Проблемы эксплуатации MySQL в облаках.

* Что нужно автоматизировать в управляемой базе данных?
* Обзор существующих решений и их фатальные недостатки.
* Архитектура и возможности новой HA-утилиты mysync.
* Плюсы и минусы синхронной репликации.
* Как пользователи пытаются выстрелить себе (и нам) в ногу и что с этим делать?
* Направления развития проекта.

Доклад принят в программу конференции

SPQR: горизонтальное масштабирование PostgreSQL

#PostgreSQL
#Базы данных / другое
#GO

Мы расскажем, как уже давно пытаемся в Yandex Cloud начать горизонтально масштабировать PostgreSQL.
Stateless Postgres Query Router — новая система для горизонтального масштабирования PostgreSQL через шардирование — роутинг запросов по диапазонам. Система работает по протоколу Postgres, предполагает управление перемещением данных между шардами. Поддерживает работу как в сессионном, так и в транзакционном режиме пуллинга запросов.

Доклад принят в программу конференции

Как мы делали отказоустойчивый Redis в Yandex Cloud

#Базы данных / другое

Мы создали агент и назвали его rdsync по аналогии со своими другими решениями (pgsync — для PostgreSQL, mysync — для MySQL). Пропатчили Redis, чтобы можно было делать failover/switchover безопасно. Обложили это всё множеством функциональных и jepsen-тестов. Сделали отдельный демон, который может повторять протокол sentinel с точки зрения взаимодействия с клиентами (https://redis.io/docs/reference/sentinel-clients/).

В докладе подробнее расскажу, чем не устроил вариант «из коробки», как мы поддерживали обратную совместимость, как тестируем и проверяем, что решение не теряет данные.

Доклад принят в программу конференции

Алгоритмы (2)

Приемы повышения точности геолокации телефонов на сети мобильного оператора

#Теории и техники анализа
#Аналитика / другое

Данные о перемещении абонентских устройств с точностью до нескольких метров позволяют отслеживать перемещения транспортных потоков и искать места притяжения. Но что, если таких данных нет, а максимум точности, которую ты можешь получить — это квадрат 1х1 километр?

Мы восстанавливаем треки пользователей по вспышкам на БС (их координатам и свечениям) с целью планирования транспортной инфраструктуры, прогнозирования нагрузки, поиска трендов и спасения людей в случае беды. И в этом докладе мы расскажем как.

Доклад принят в программу конференции

Алгоритм сетевого планирования как способ повышения производительности сервисов

Игорь Чирков

Почтатех

У Почтатеха есть микросервисное приложение для бизнеса otpravka.pochta.ru, которое изначально не было спроектировано под высокую нагрузку. Со временем оно стало популярным и обросло дополнительными функциями. Это вызвало кратный рост нагрузки, особенно перед новогодними праздниками. Радикально изменить архитектуру приложения мы не готовы — опасаемся утратить стабильность. Поэтому занимаемся локальной оптимизацией.

В докладе я расскажу, как оптимизировать обработку сложных запросов с помощью алгоритма решения задачи сетевого планирования.

Доклад принят в программу конференции

Шины, очереди (3)

СМЭВ. Сильно проще, чем кажется. Полезные советы, как стартовать интеграцию через СМЭВ3 и СМЭВ4

Мы делаем СМЭВ. СМЭВ — это платформа, которая обеспечивает надежную передачу различных данных между примерно ~5к систем участников обмена по ~2к прикладных протоколов с интенсивностью 10к обменов в секунду. СМЭВ — это единственный способ взаимодействия систем государства для целей госуслуг и госфункций.

В докладе расскажем про то, сколько бывает СМЭВ-ов и чем они отличаются. Для каких обменов какой СМЭВ полезнее. Расскажем про базовые понятия, которые нужно знать, чтобы чувствовать себя увереннее в мире СМЭВ: виды сведений, витрины, рег. запросы и т.д.

Дадим описание других систем экосистемы СМЭВ. Личный кабинет участника СМЭВ — все околосмэвовское можно делать в нем. Боты телеграм. ЕСНСИ — облачная платформа для распространения условно постоянной информации. Клиентское ПО — Адаптеры СМЭВ, Витрина данных.

Расскажем про то, какие мы в СМЭВ все открытые и готовые помочь, подсказать. Про нашу базу знаний info.gosulugi.ru, про телеграм-канал. Про то, как призвать нас на помощь, если что-то непонятно.

Доклад принят в программу конференции

Кролик по-СДЭКовски: RabbitMQ как основной центр обмена данными в модульной среде с очередями больше 2000

В СДЭК вместе с Кроликом мы прошли тернистый путь от 1 ноды до крупного кластера. Мы поделимся нашим опытом использования инструмента и расскажем:
* как мы живем с хайлоад-кластером из 8 нод;
* почему мы отказались от HA-cluster;
* почему мы не используем Kafka?
* какие опасности вас могут ждать, если вы хотите делать распределенный кластер между ЦОД-ами;
* отказоустойчивость или скорость — а можно все вместе?
* почему в Exchange мы отказываемся от Topic и уходим на Fanout?
* история наших факапов, и как PHP сжег кролика;
* что нового появилось в RabbitMQ за последний год.

Доклад принят в программу конференции

YDB Topic Service: надёжная и масштабируемая очередь сообщений

В составе платформы YDB мы вывели в Open Source сервис очередей сообщений — Topic Service. Это решение поверх YDB, которое обладает надёжностью, масштабируемостью, даёт управляемые гарантии FIFO-порядка и семантики доставки.

В этом докладе я расскажу, как устроен YDB Topic Service, чем похож и чем отличается от других популярных продуктов, в частности Apache Kafka®. Также я расскажу про реальное применение этой технологии в инфраструктуре и сервисах Яндекса, на инсталляции масштаба тысячи хостов и десятков ГБ/с на запись.

Доклад принят в программу конференции

DevOps и эксплуатация (11)

Мониторинг черных ящиков и котов в мешке через eBPF

#Логирование и мониторинг
#Observability в enterprise

ПО сторонних производителей сложно мониторить из-за отсутствия удобного API, интерфейсов, а также из-за лицензионных ограничений. На помощь приходит eBPF — современная подсистема в ядре Linux, позволяющая вставлять ваши вызовы в любой пользовательский код и некоторые системные функции ядра. Теперь задачу мониторинга может решить даже менеджер, у которого лапки.

Доклад принят в программу конференции

VML — нет времени объяснять, создавай виртуалку!

#Технологии виртуализации и контейнеризации
#Тестирование новых продуктов
Алексей Шабалин

Базальт СПО

VML — это инструмент для простой и прозрачной работы с виртуальными машинами qemu. VML может инициализировать образы с помощью cloud-init. Виртуальные машины с ALT, Arch Linux, Centos, Debian, Fedora, openSUSE и Ubuntu можно создать всего одной командой.

Изначально VML разрабатывался для тестирования облачных образов, но потом оказался полезен и при решении других задач. Одна из основных фич — древовидность. Практически все команды можно запустить сразу на группу виртуалок. Запустить новую виртуальную машину почти так же просто, как сказать "Я люблю Linux" — нужно всего 3 слова...

Доклад принят в программу конференции

Bare metal K8s, или Туда и обратно. История Quadcode

#Управление конфигурацией
#DevOps на собственном (арендованном) оборудовании

Как и многие другие компании, 5 лет назад мы перешли от монолитной архитектуры к микросервисной. Наши нагрузки за это время существенно выросли, а вместе с ними выросла и потребность в быстрой и масштабируемой инфраструктуре. Наш Kubernetes прошёл путь от Kubespray к своим плейбукам, а от них — к подходам, похожим на подходы облачных провайдеров. От трёх статичных кластеров до сотни, поднимаемых за 3 минуты.

В докладе мы проследим эволюцию технических аспектов и процессов вокруг наших кластеров и предпосылки тех или иных решений. Слушатели узнают, к каким факапам привёл выбор Kubespray, почему мы сталкивались со сменой подхода к управлению инфраструктурой каждые два года и как решаем эту проблему. На цифрах посмотрим, сколько в разное время занимали процессы по раскатке кластера с нуля, добавлению нод, апгрейду версий кластера. И конечно, поговорим о планах развития, а также о плюсах и минусах разных подходов по сопровождению вашей инфраструктуры под K8s.

Доклад принят в программу конференции

API management и API gateway. Что это и нужно ли оно вам?

* API management — что это такое и с чем его едят.
* Зачем это, вообще, надо.
* Публичные API.
* Обзор решений для API management.
* Наш опыт с Gravitee GW — чего оно умеет, и какие проблемы помогло решить.

Доклад принят в программу конференции

Строим отказоустойчивую инфраструктуру приложения в Kubernetes. Принципы, паттерны, приёмы

Задача обеспечения стабильности и отказоустойчивости приложений остаётся актуальной во все времена. Задача эта комплексная и лежит в нескольких плоскостях:
* отказоустойчивой должна быть инфраструктура, в которой мы эксплуатируем приложение;
* архитектура приложения должна быть построена с учетом требований по отказоустойчивости.

С появлением Kubernetes у нас появилось гораздо больше возможностей создавать отказоустойчивые приложения, вынося и реализуя паттерны отказоустойчивости в плоскости инфраструктуры.

Давайте разберём эти возможности и рассмотрим паттерны создания отказоустойчивой инфраструктуры для приложений в Kubernetes.

Доклад принят в программу конференции

PaaS cookbook

#Devops / другое
#Автоматизация разработки, доставки, эксплуатации

Цель инфраструктурной команды — улучшить надежность и отказоустойчивость, уменьшить time to market, снизить когнитивную нагрузку. Для этого многие компании реализуют свою домашнюю платформу (PaaS).

В рамках доклада рассмотрим набор рецептов от более простых до сложных, которые можно применить у себя в компании для реализации собственной платформы (PaaS). С примерами и граблями из нашего опыта и опыта других компаний. Поговорим о цене своего решения и альтернативах.

Доклад принят в программу конференции

Root cause analysis monitoring

#Java
#Python
#PostgreSQL
#Технологии отказоустойчивости и катастрофоустойчивости, бэкапы
#GO
#Observability в enterprise
#Надёжность продакшена
#Логи, метрики, ошибки

Базы данных, очереди, приложения на Spring и много чего еще, и все это в тысячах экземпляров — чем сложнее инфраструктура, тем выше вероятность возникновения ошибок. Своевременно исправлять ошибки (а ещё лучше — предсказывать их возникновение и своевременно реагировать) — одна из главных задач провайдера облачных сервисов или владельца собственной крупной инфраструктуры.

Поделимся тем, как мы используем графы в задачах мониторинга и observability и как Root Cause Analysis в мониторинге помогает командам эксплуатации.

Как и многие другие вендоры ПО, 1С давно предлагает свои продукты в облачном варианте. Это, в первую очередь, наши облачные сервисы 1С:ГРМ (Готовое Рабочее Место) и 1cFresh. Предоставление облачных сервисов требует наличия соответствующей инфраструктуры — прежде всего серверов, на которых размещаются виртуальные машины с приложениями, и софта, управляющего физическими и виртуальными машинами.

Доклад принят в программу конференции

Решение проблемы ресурсов у команд-участников цикла разработки

#Непрерывное развертывание и деплой
#Автоматизация разработки, доставки, эксплуатации
Александр Крылов

Росгосстрах

Представим, что команда DevOps делает не только всё, что связанно с CI/CD, но и сильно выходит за эти рамки.

Представим, что коллеги из тестирования и разработки имеют ограниченные права везде и по любому чиху дёргают инженеров. А как быть с фокусом на развитие и внедрение новых технологий и систем, при этом успевая всё?

Сказ пойдёт о том, как решить проблему перераспределения ресурсов в командах-участниках цикла разработки. Казалось бы, зачем это делать? Для того чтобы высвободить ресурсы одних команд, повысить компетенции других команд со сменой фокуса на целевые активности.

Мы поделимся тем, с какими преградами столкнулись на пути внедрения и изменения процессов, какими доводами договаривались с противниками внедрения, какой профит получили на выходе.

Доклад принят в программу конференции

Экодиктант 2021: highload-проект с нуля за 2 месяца

#Логирование и мониторинг
#Непрерывное развертывание и деплой
#Технологии отказоустойчивости и катастрофоустойчивости, бэкапы
#Администрирование баз данных
#Devops / другое
#Время разработки и поставки задач
#Доверие команды внутри и снаружи
#Логи, метрики, ошибки
#Автоматизация разработки, доставки, эксплуатации

Как мы собрали сервис онлайн-тестирования за 2 месяца и провели "Экологический диктант" для 72 стран мира.

Доклад принят в программу конференции

Как устроена разработка Kubernetes-платформы Deckhouse

В 2021 году состоялся публичный OpenSource-релиз платформы для автоматизации обслуживания Kubernetes-кластеров — Deckhouse. До этого платформа более трех лет развивалась исключительно как внутренний DevOps-инструмент «Фланта». Deckhouse аккумулировала технологический опыт и лучшие практики, полученные нами в многочисленных и разнообразных highload-проектах. Сейчас Deckhouse — это платформа Enterprise-уровня, которая сертифицирована в CNCF и входит в единый реестр российского ПО.

В докладе расскажу, как устроен процесс разработки Deckhouse, основанный на сложившихся в OpenSource-сообществе и на ​​GitHub практиках, учитывающий потребности инженеров, бизнеса, специалистов информационной безопасности и других пользователей, которые так или иначе взаимодействуют с платформой.

Какие вопросы рассмотрим в ходе доклада:
* процессы разработки, тестирования и управления релизами Deckhouse;
* интеграция со сторонними решениями для мониторинга, работы сети, безопасности и с другими необходимыми компонентами;
* как мы приносим исправления и доработки в код сторонних решений вроде Cilium и KubeVirt;
* наш ​​вклад в развитие «ванильного» Kubernetes;
* как организована техническая поддержка;
* как мы сопровождаем пользователей — команды клиентов и внутренние DevOps-команды «Фланта»;
* планы по развитию платформы.

Доклад принят в программу конференции

Как научить On-Prem Sentry принимать 60 млн событий в сутки

#Логирование и мониторинг
#Observability в enterprise
#Логи, метрики, ошибки

В докладе расскажу про то, как мы в СберМаркете решали проблемы производительности on-prem Sentry — учили обрабатывать 60 миллионов событий в сутки, для чего пришлось провести оптимизацию почти каждого компонента.

Оптимизировали БД Postgres — научили Sentry работать не только с мастером, но и с репликами. Перенесли хранение событий в s3 и сэкономили 12 ТБ на БД (которые лежали в одной таблице!). Оптимизировали обработку событий из kafka — даже если у тебя есть буфер, не значит, что все будет стабильно. Научили работать с шардированным ClickHouse и максимально глубоко погрузились в архитектуру, чтобы достичь производительности, которую не позволяет даже Cloud Sentry.

О боли, муках и страданиях от несовершенства архитектурных решений, что из этого вытекло, над чем пришлось поработать и к чему приложить руку.

Доклад принят в программу конференции

Миграция / Хранимые процедуры (2)

Как мы переписывали бизнес-логику высоконагруженного приложения на PLPG/SQL

Не нужно рассказывать о том, насколько хороша СУБД Oracle и сколько задач решается с ее помощью. Однако, тема использования альтернативных СУБД сегодня становится все более актуальной.

Сотни хранимых процедур с кучей бизнес-логики, десятки терабайт данных, высокая связность с другими системами — разве могут быть варианты, кроме Oracle?

Да, конечно! Этот доклад — о проекте миграции систем промышленных масштабов с Oracle на отечественную СУБД PostgresPro.

Замена СУБД — непростая задача: нужно заменить фундамент, но так, чтобы не рухнули стены. В докладе расскажу о том, как мы переносили бизнес-логику из Oracle PL/SQL на PLPG/SQL на примере системы, которой пользуются граждане нашей страны.

Доклад принят в программу конференции

Ускоряем хранимые процедуры на Postgres pl/pgSQL по гистограммам, или Жизнь после импортозамещения

#Миграции данных
#PostgreSQL
#Базы данных / другое
#Оптимизация производительности
#Профилирование
#Рефакторинг
#Методы и техника разработки ПО
#Поддержка и развитие legacy систем

Доклад посвящен особенностям настройки БД и хранимых процедур после успешного перехода с Oracle PL/SQL на Postgres pl/pgSQL, о котором я рассказывал на прошлогодней конференции.

С тех пор накопился опыт лечения детских болезней в области производительности БД, плавно перетекающий в профилактику и лечение хронических заболеваний в этой же области.

В докладе с цифрами и фактами рассматривается опыт борьбы за производительность БД и рассказывается, как в случае использования хранимых процедур управлять производительностью. Кроме того, при переходе с Oracle на Postgres обнаружены новые типы лежащих на этом пути граблей отложенного действия, о которых тоже будет с удовольствием рассказано.

Доклад принят в программу конференции

Инфобезопасность (8)

Защита от вредоносной автоматизации сегодня. Сложно о простом

#API
#Логирование и мониторинг
#Аналитика / другое

Сейчас каждый третий стартап рассказывает о создании автоматизации %сервис_или_продукт%. Но некоторые все еще готовы бороться за право работать только с людьми, если боты наносят ущерб бизнесу. Мы — воины, которые следят, чтобы три закона робототехники не были нарушены. Ну, и EULA на сайте.

Ботов можно классифицировать по типу поведения, используемым средствам (скрипт или полноценный браузер). Одни вроде бы и не мешают вовсе, а другие выкачивают миллионы своим присутствием.

Как работают решения защиты от ботов, почему они выходят на поле битвы уже проигравшими, и какое нас ждет будущее.

Доклад принят в программу конференции

Поиск XSS через наложение парсеров

В этом докладе подробно описывается новая техника, эксплуатирующая логику парсеров, используемых для написания красивых сообщений в мессенджерах, блогах, форумах и т.д. Эта область тестирования приложений является зрелой, она развивалась в течение последних десяти лет и включает установленные стандарты безопасности. В результате трудно найти новые методы атаки.

Доклад принят в программу конференции

Как разобрать сетевой протокол и найти уязвимости в устройстве без использования прошивки — показываем на примере ПЛК Mitsubishi

Антон Дорфман

Positive Technologies

Миллионы умных устройств участвуют в нашей жизни: телефоны, компьютеры, принтеры, устройства IoT, промышленные ПЛК и др. Внутри каждого из них есть микросхемы и программный код в виде прошивок устройств, который может содержать уязвимости. Когда в руки исследователя безопасности попадает устройство с недокументированным сетевым протоколом, возникают следующие задачи: разобрать протокол и получить его описание, научиться общаться с устройством по сети, например, с помощью самописных скриптов, выявить уязвимости в устройстве.

Для исследования хорошо бы иметь прошивку. Но что делать, когда она зашифрована или ее невозможно достать из микросхем? Казалось бы, можно сложить руки и оставить устройство пылиться на полке. Но! Мы не отступили, когда такая ситуация встретилась нам в процессе исследования ПЛК FX5U от компании Mitsubishi. Мы прошли долгий путь, полный открытий, переоткрытий, использования передовых техник и в итоге получили описание протокола, набор скриптов для работы с ним и даже пачку CVE.

В докладе мы поделимся опытом, как по крупицам собрать информацию и восстановить протокол, используя документацию от других протоколов, утилиты от производителя, симулятор ПЛК, коды ошибок, полный перебор и другие методы. Покажем, как анализ протокола помог выявить целый набор уязвимостей: CVE-2022-25161, CVE-2022-25162, CVE-2022-25155 и др. Мы расскажем о них и покажем, как их вызвать, в многочисленных демонстрациях.

Доклад принят в программу конференции

Лицензии: взлом, защита и снова взлом

#Защита информации
#Application security
Артем Бачевский

Независимый исследователь

Мы сталкиваемся с лицензированием ПО постоянно, но не всегда погружаемся в то, как это работает.

В рамках доклада разберем с вами:
* какими способами лицензируется софт?
* какие плюсы и минусы у того или иного подхода?
* как ломают лицензии? [Основано на реальных событиях]
* и как, в конце концов, написать невзламываемую лицензию? И не "поломать" при этом пользователей...

Доклад принят в программу конференции

Актуальные угрозы ML-алгоритмов с точки зрения ИБ

Давайте в ходе доклада рассмотрим популярные применения ML в нашем мире и их уязвимости как с точки зрения реализуемости, так и с точки зрения импакта на ИБ. Обсудим последние и интересные инциденты. Попробуем поговорить о том, что стоит делать разработчикам таких систем, чтобы предусмотреть для себя такие риски. В докладе расскажем о примерах из собственной практики и мировой.

Доклад принят в программу конференции

Построение архитектуры с использованием формальных моделей безопасности

Как упростить жизнь программистам, DevOps и security-инженерам, не зная об этом?
А находить уязвимости в системе, ничего не зная о безопасности?
В конце концов, как уничтожить звезду смерти Netflix?

Все это мы узнаем на встрече, а также увидим Left от ShiftLeft, поговорим о построении архитектуры современного продукта с помощью нотации DFD, обсудим формальные модели безопасности и научимся их применять к нашему продукту.

Доклад принят в программу конференции

Безопасность ядра Linux: в теории и на практике

Александр Попов

Positive Technologies

Безопасность ядра Linux — очень сложная предметная область. Она включает большое количество взаимосвязанных понятий: классы уязвимостей, техники их эксплуатации для проведения атак, механизмы выявления ошибок, технологии защиты ядра.

Александр Попов разработал карту средств защиты ядра Linux, которая отражает взаимосвязи между этими понятиями. В докладе он даст обзор текущего состояния безопасности Linux, используя данную карту, и расскажет о своем инструменте kconfig-hardened-check, который помогает управлять ядерными опциями безопасности.

Доклад принят в программу конференции

Омерзительная восьмёрка: техники, тактики и процедуры (TTPs) группировок шифровальщиков

Никита Назаров

Лаборатория Касперского

Мы в «Лаборатории Касперского» провели анализ самых популярных тактик, техник и процедур (TTPs) восьми самых активных групп шифровальщиков: Conti/Ryuk, Pysa, Clop (TA 505), Hive, Lockbit 2.0, RagnarLocker, BlackByte и BlackCat. Эти группы ведут свою деятельность по всему миру, в том числе в США, Великобритании, Германии. За исследованный нами период — с марта 2021 по март 2022 года — операторы этих групп пытались атаковать более 500 организаций в разных отраслях, среди которых промышленность, разработка ПО, строительство. Оказалось, что различные семейства этого вида ПО совпадают более чем наполовину в своих TTPs на протяжении всех этапов цепочки атак.

Расскажу обо всех этапах атаки, излюбленных TTPs злоумышленников и преследуемых ими целях, чтобы помочь понять, как действуют данные группы и как защититься от целенаправленных атак вымогателей.

Доклад принят в программу конференции

Устройство систем хранения данных (4)

GeeseFS: ФС из S3, или Параллелизм гусей в природе

Никогда такого не было, и вот опять! Спустя 15 лет после появления S3 пользователям всё ещё нужны кластерные ФС под сценарии использования, близкие к тому, на что обычно рассчитано S3. А именно: большую/бесконечную ёмкость, низкую стоимость хранения, крупноблочный доступ, масштабируемость.

А можно ли сделать из S3 ФС? Обычный ответ: можно, но будет очень медленно. Казалось бы, файл — это «именованная последовательность байтов» и объект в S3 — тоже. Однако ФС плохо работает как S3, а S3 обычно плохо работает как ФС. Но почему?

Наш ответ в том, что если половина этой проблемы — действительно архитектурные вопросы различий между ФС и S3 (о которых мы, кстати, тоже поговорим, например, рассмотрим вопрос «а что, вообще, такое POSIX-совместимость ФС?»), то оставшаяся половина — исключительно вопросы реализации, которые оказалось не так уж сложно решить.

И решены они в GeeseFS https://github.com/yandex-cloud/geesefs. GeeseFS — это ещё одна утилита для монтирования S3 через FUSE в виде локальной ФС, но, в отличие от всех остальных реализаций, достаточно POSIX-совместимая и достаточно быстрая, чтобы её можно было использовать без слёз. 🙂

Понятное дело, все проблемы «S3 как ФС» без расширения протокола на стороне сервера не решишь, так что в наши дальнейшие планы входит именно расширение протокола. Конечная цель — оптимизация использования S3 в сценариях, где традиционно «рулят» ФС.

Что реализовано в части нашей S3-ФС уже сейчас, что запланировано на будущее, а также как другие решают ту же задачу (скрещивания ужа и ежа) — обо всём этом мы и поговорим в докладе.

Доклад принят в программу конференции

Балансировка нагрузки в мульти-эксабайтном сторадже

#Архитектурные паттерны
#Отказоустойчивость
#Распределенные системы

Сторадж — фундаментальный инфраструктурный сервис, хранящий и раздающий данные почти всех продуктовых сервисов Яндекса (Диск, Почта, Карты, Поиск, Маркет и т.д.), — критическая часть компании с высочайшими требованиями к надежности и доступности. Он обрабатывает миллион запросов в секунду, хранит эксабайты данных и раздает терабит трафика в пике. Под капотом он содержит сотни тысяч hdd в тысячах серверах, размещенных в нескольких ДЦ, и десятки тысяч фоновых процессов, нагружающих железо.

Чтобы все это эффективно работало, необходимо балансировать read- и write-нагрузку между серверами и дисками. Для этого нужно учитывать множество факторов: ломающееся железо (от отдельных дисков до ДЦ целиком), разную "горячесть" данных разных сервисов (от cold до hot), сторонние источники нагрузки в лице фоновых процессов, гетерогенность железа (от 1-гигабитных старых серверов до 50-гигабитных новых) и т.д.

В докладе расскажу, как устроена балансировка read- и write-нагрузки в системе хранения; какие подходы работают, а какие нет; какие трудности могут возникать в процессе эксплуатации и какие особенности есть в multitenancy-хранилищах.

Доклад принят в программу конференции

AP и CP: пытаемся усидеть на двух стульях и боремся с последствиями

#Tarantool
#Отказоустойчивость
#Распределенные системы

Многие системы, стараясь описать свое поведение в ненадежной сети, прибегают к терминам CAP-теоремы и описывают себя либо как AP, либо как CP.

Алгоритм Raft является классическим примером CP — обеспечивает линеаризуемость в случае разделения сети, но это в определенных случаях приводит к временной потере доступности и на запись, и на чтение до восстановления связности.

Да, на бумаге всё хорошо. Берём нечётное количество узлов и наслаждаемся работоспособностью кластера и консистентностью данных до тех пор, пока большая часть узлов работает. Однако, эта схема использования идёт вразрез с самой популярной схемой установки БД: равное число узлов в двух ЦОД-ах. Для Raft это значит, что потеря одного ЦОД-а сразу приведёт к недоступности кластера на запись.

Отсюда возникает необходимость переключения между надёжностью и доступностью: если пользователь видит, что один из двух ЦОД-ов неработоспособен, он может решить продолжить обслуживать запросы в живом ЦОД-е без участия второго ЦОД-а, то есть превратить CP-систему в AP. Мы дали пользователю такую возможность в реализации Raft в Tarantool и столкнулись с условиями потери консистентности данных, с которыми бы никогда не встретился канонический Raft.

Такой режим работы не дает гарантий Raft, поскольку человеческая ошибка может привести к тому, что этот режим будет включен в двух ЦОД-ах одновременно. Это уже приведет к возникновению двух противоречащих друг другу версий наборов данных. Значит, разрешая такое понижение надежности, мы должны научиться обнаруживать различия в наборах данных и предупреждать пользователя об этих различиях, не давая репликации соединить два противоречащих набора.

Нам удалось сделать это благодаря маркерам лидерства в журнале. Во время нормальной работы маркеры лидерства выстраиваются в согласованную цепочку, позволяя проследить историю смены лидеров до самого начала журнала.

Если же во время разделения сети человеческая ошибка приводит к возникновению двух независимых наборов данных, маркеры лидерства в двух наборах, начиная с какого-то общего предка, составляют две разделившиеся цепочки.

Если мы умеем находить расхождения в цепочках маркеров лидерства, мы умеем находить противоречащие участки журналов. Это позволяет отклонять репликацию конфликтующего набора данных и эскалировать проблему до пользователя.

В этом докладе поговорим о методах, которые мы применили, чтобы обнаруживать такие расхождения и обеспечивать консистентность данных после периода работы в разделенной сети.

Доклад принят в программу конференции

Хранилище для Почты

#Миграции данных
#Электронная почта
#Бэкенд / другое
#Базы данных / другое
#Отказоустойчивость
#Оптимизация производительности
#Распределенные системы
Виктор Могилин

Почта Mail.ru, VK

На докладе расскажу о технических сложностях, с которыми мы столкнулись при разработке своего хранилища.
Задачи, которые решали:
* эффективная утилизация больших HDD (меньше iops на терабайт хранилища);
* переезд на более cost-effective серверную платформу (сокращение количества занимаемых юнитов в ДЦ);
* обеспечение SLA 99.999% доступности данных в течение года;
* переживание отключения ДЦ (ряда/стойки/сервера) без ручного вмешательства;

Архитектура потребовала распила письма на несколько составляющих и 2 вида индексов, чтобы хранилище смогло утилизировать диски в 18 ТБ полностью. Индексы не помещаются в память, поэтому применяются разные приемы для ускорения их загрузки в кэш. Для обеспечения более линейной записи группы юзеров объединяются в шарды, внутри которых ведется один xlog на всех. Собственное BLOB-хранилище с кворумной записью.
И другие приемы.

Доклад принят в программу конференции

Устройство In-Memory СУБД (2)

Как работает MVCC в In-Memory-СУБД

#Tarantool
#Архитектура данных, потоки данных, версионирование

Один из ключевых механизмов любой СУБД — это возможность предоставить согласованное состояние данных в базе в виде "снимка" или "снапшота". Этот механизм используется в первую очередь для организации изоляции транзакций: каждая транзакция видит свою версию состояния базы данных. В сочетании с другими механизмами это порождает технологию MVCC, когда транзакции независимо и одновременно видят каждая свое собственное состояние БД и работают в нем. Помимо этого, снимок состояния базы данных (записанный в файл) можно использовать для восстановления после перезапуска, а также для инициализации реплики.

Изначально MVCC был придуман и реализован для дисковых БД, это хорошо известная и описанная технология. Последующее развитие баз данных в памяти привело к созданию специализированных подходов именно к базам данных в памяти.

В этом докладе я на примере In-Memory-СУБД Tarantool в памяти расскажу, как устроены снимки данных и MVCC, как и почему эволюционировали эти алгоритмы, во что обходится поддержание этих структур пользователю, как правильно использовать и что ожидать от этих механизмов.

Доклад принят в программу конференции

Архитектура надёжной In-Memory-СУБД на примере Tarantool

#Tarantool

База данных в оперативной памяти или in-memory-db — понятие не новое. На сегодняшний день сложилась довольно сильная ассоциация подобных решений со словами «кэш», «неперсистентный» и «ненадёжно».

Решения в оперативной памяти имеют гораздо более широкое применение, чем кэш. А уровень надёжности не хуже, чем у самых проверенных реляционных БД.

Я расскажу, какие архитектурные подходы позволяют базе данных в памяти быть надёжной, как швейцарские часы. Я рассмотрю устройство Tarantool от входящего запроса до работы синхронной репликации и транзакционного механизма на скорости в 1 000 000 RPS.

Цель моего доклада — показать, что in-memory-технологии уже достаточно зрелые и надёжные, чтобы быть основным хранилищем данных в вашем продукте.

Доклад принят в программу конференции

Архитектурные кейсы (12)

Как достать всё что угодно со всего интернета

#Поисковые системы
#Организация системы кеширования
#Machine Learning

Недавно Яндекс запустил поиск по товарам (https://yandex.ru/products), который позволяет находить актуальные предложения во всех интернет-магазинах. Он ищет товары и в крупных маркетплейсах (Ozon, Wildberries, Яндекс Маркет), и в маленьких с десятком-сотней товаров, которые невозможно найти без поиска.

Ключевая задача поиска по товарам — подготовить самую полную базу товаров всего интернета. Эта база формируется на основе данных партнёрских фидов и самостоятельного парсинга товаров в интернете, причём парсинг поставляет значительную часть товаров. Без парсинга поиск по товарам превратился бы в поиск по списку сайтов, а не по всему интернету. На практике решение этой технической задачи оказалось настолько интересным, что нам захотелось им поделиться.

В докладе опишу практический кейс запуска поиска по товарам, но все представленные идеи и подходы мы применяли и на других задачах по извлечению данных. В процессе расскажу, какие подходы к парсингу мы использовали, как оптимизировали код похостовым кэшированием, как поддерживаем актуальность цен, как устроено машинное обучение и с какими подзадачами мы справились недостаточно хорошо.

Доклад принят в программу конференции

Трансформация подхода к хранению и синхронизации писем

Компания МойОфис разрабатывает сразу несколько почтовых решений и хорошо знакома с особенностями российского рынка. Я отвечаю за внедрение продуктов компании и хочу поделиться опытом, накопленным за последние 5 лет.

На примере продуктов МойОфис я расскажу об эволюции почтовых решений в компании. В частности, проиллюстрирую, как менялись, развивались наши подходы к хранению и синхронизации данных. Путь от Dovecot dsync, OpenStack Swift до GlusterFS и DOS, собственного объектного хранилища. Также не оставим без внимания проблемы, с которыми мы сталкиваемся, и пути их решения.

Доклад принят в программу конференции

Highload и Lowcode — единство и борьба противоположностей

#Фреймворки
#Java
#C/C++
#PostgreSQL
#Методологии и процессы разработки ПО; Сроки и приоритеты
#Большие проекты/команды
#Выбор стратегии долгосрочного развития, KPI
#Инфраструктура как сервис (IaaS), платформы как сервис (PaaS)
#Технологии “быстрых решений”, “быстрого прототипирования”
#Мобильные решения для enterprise
#Импортозамещение
#Разработка CRM и ERP
#Big Data и Highload в Enterprise
#Интеграция web и enterprise-решений
#Поддержка и развитие legacy систем
#Управление разработкой
#Трансформационные изменения

Статьи в интернете описывают low-code- и no-code-технологии как инструменты для решения небольших локальных задач, прототипирования, привлечения citizen-разработчиков. Однако, есть и другое направление в low-code — платформы для создания серьёзных, масштабных, комплексных приложений.

Почему это интересно? В крупных компаниях часто возникает идея разработки собственного фреймворка, ORM, генератора отчётов и других инструментов унификации разработки. По сути, начинается внедрение элементов low-code.

Цели вполне понятны: ускорение разработки, облегчение сопровождения и уход от уникальных знаний, возможность передачи сопровождения между специалистами и командами.

На примере успешной low-code-платформы объясним:
• как выстраивать стратегию low-code;
• как использовать преимущества low-code-подхода при движении к highload;
• как не растерять преимущества low-code по пути к highload.

Доклад принят в программу конференции

Как перейти от batch к streaming на примере рекламной контент-системы

#Фреймворки
#C/C++
#Оптимизация производительности
#Распределенные системы

Ключевая задача рекламной контент-системы — собрать и подготовить все данные, необходимые для отбора и ранжирования баннеров на хите, в том числе про пользователя, баннер и площадку.

В своем докладе я расскажу про наш переход из batch в streaming. Предпосылками для перехода были следующие факты:
* Быстрый учет изменений и событий продуктово важен. В том числе виден на экспериментах в ключевых метриках (отдельные ускорения могут давать до нескольких процентов денег/конверсий).
* Дальнейшее ускорение требовало экспоненциального роста потребляемого CPU (десятки тысяч ядер), либо упиралось в ограничения MapReduce-модели.
* Сложность поддержки большого количества железных машин (~1000 хостов) и самописных систем синхронизации
Сегодня наша контент-система обрабатывает миллионы событий и изменений в секунду, а суммарный размер стейтов со всеми репликами занимает несколько петабайт.

В докладе я расскажу о получившейся архитектуре обработки и хранения данных, какие проблемы нам пришлось решить в процессе.

Доклад принят в программу конференции

Хитрости устройства офферной системы в многомиллионном игровом шутере

В этом докладе я расскажу, как устроить офферную систему в многомиллионном игровом проекте:
* как нам в этом мешает и помогает Cassandra;
* про домен, ивенты и как на них работает офферная система;
* простые трюки, которые мы используем для оптимизации офферов;
* как мы интегрировали офферы с платежами, и зачем мы постоянно прикапываем стейт.

Доклад принят в программу конференции

Архитектура ВКонтакте: там, где данные

Илья Щербак

ВКонтакте, VK

ВКонтакте ежедневно обслуживает десятки миллионов пользователей, позволяет обмениваться миллиардами сообщений и хранит десятки петабайт фотографий. Мы рассмотрим подходы и архитектуру решений, с помощью которых мы храним эти данные и предоставляем к ним эффективный доступ.

Расскажу, почему не используем сторонние базы данных, а сами пишем свои движки и как обеспечиваем доступность наших сервисов. Особое внимание уделю организации нашей mesh-архитектуры, устройству RPC и тому, как мы реализуем механизмы защиты от перегрузок и балансировку запросов без использования разделяемого стейта. В том числе подробно разберу технические детали реализации защитных механик.

Доклад будет полезен как с точки зрения опыта и идей построения больших систем, так и просто для того, чтобы узнать, как под капотом устроена крупнейшая социальная сеть СНГ.

Доклад принят в программу конференции

StatsHouse: метрики ВКонтакте

Григорий Петросян

ВКонтакте, VK

ВКонтакте живет метриками. Все запуски происходят с оглядкой на метрики — в реальном времени, во время запуска. Почти все продуктовые и технические решения ВКонтакте принимаются на основе метрик. ВКонтакте пишет 200 миллионов метрик каждую секунду. И все эти метрики ВКонтакте пишет в свою внутреннюю систему, StatsHouse.

Я расскажу про технические и архитектурные решения, которые принципиально отличают StatsHouse от существующих OpenSource-решений — в том числе его уникальную Бесконечную® Масштабируемость™. И еще — сделаю пока секретный анонс.

Доклад принят в программу конференции

Как организовать поиск в стартапе, который планирует вырасти до масштабов ВКонтакте

Богдан Гаркушин

ВКонтакте, VK

Когда проект, в котором есть поиск, растет и развивается, растут и требования к поиску. Его нужно менять вместе с усложнением задач.

В докладе мы вместе с вами попробуем спроектировать архитектуру поисковой системы. Начнем с самой простой, которая позволит быстрее запуститься, и по шагам будем растить проект и вместе с ним модифицировать архитектуру поиска. Ближе к концу доклада дорастем до размеров ВКонтакте и подробно рассмотрим нашу текущую архитектуру поиска, ежедневно выполняющую поисковые задачи 20 млн пользователей, задающих 250 млн поисковых запросов в день.

В заключение посмотрим на то, какие есть еще варианты построения архитектуры поиска для нужд крупных проектов, их плюсы и минусы.

Доклад принят в программу конференции

Дорогая, я форкнул NGINX

Мы — команда, которая долгое время принимала участие в разработке и поддержке NGINX. Сейчас мы делаем свой fork.

В докладе мы расскажем про drop-in replacement NGINX, веб-сервер Angie, фичах, необходимость которых давно назрела, но по ряду причин они не были занесены в сервер, и покажем, что уже сделали.

Будет интересно :)

Доклад принят в программу конференции

Техстратегия и архитектура highload-проекта на примере ВКонтакте

Александр Тоболь

ВКонтакте, VK

Архитектура не нужна, если нет стратегии. Техстратегия обосновывает затраты на архитектуру и помогает расти, запускать новые фичи, не отставать от конкурентов. Любому высоконагруженному и динамично меняющемуся проекту нужна стратегия технологического развития.

В докладе на примере ВКонтакте — проекта с 16-летней историей, 100 млн пользователей в месяц и 8 млн строк кода бизнес-логики — рассмотрим принципы построения техстратегии и методы принятия стратегических решений.

А также разберём, как техстратегия и архитектура влияют друг на друга и что у нас получается в результате:
* как строить техстратегию на несколько лет вперед;
* портерианский и ресурсный подходы к стратегированию;
* требования, которые мы предъявляем к архитектуре, и их связь с time2market;
* как обеспечиваем отказоустойчивость и балансируем нагрузку;
* как эксплуатируем систему с более чем 20 000 серверов;
* какие решения позволяют делать 3,5 тысячи деплоев в год с winrate 97,7%;
* как устроена система сборки, которая позволяет собрать 8 млн строк кода и раскатить на 10 000 серверов за 7 минут;
* и как, собственно, сейчас выглядят техстратегия и архитектура ВКонтакте.

Доклад принят в программу конференции

SSO-решение на 5 млн пользователей. Масштабирование от пилотного проекта до федерального уровня

#Java
#Защита информации
#Организация системы кеширования
#Отказоустойчивость
#Масштабирование с нуля
#Управление конфигурацией
#Непрерывное развертывание и деплой
#Технологии отказоустойчивости и катастрофоустойчивости, бэкапы
#Поддержка и развитие legacy систем
#Надёжность продакшена

У нас было порядка 20 клиентских мобильных и веб-приложений с локальной аутентификацией, написанных разными командами со своими процессами и уязвимостями. Переключаться между приложениями было сложно, пользователям это не нравилось. Это привело к созданию решения единого входа для клиентов (SSO).

За 2 месяца внедрили пилот на базе открытого KeyCloak и начали постепенно масштабировать его на всю страну. При 300000 сессиях получили даунтайм при обновлениях: пользователи не могли войти в систему около 15 минут. Мы снизили время простоя настройками кэширования и модификацией схемы базы данных до 3 минут, но дальше нас ждал первый миллион сессий…

Доклад принят в программу конференции

Пуш-уведомления в RuStore: как мы сделали свой транспорт на замену Google Firebase

#Базы данных / другое
#Микросервисы, SOA
#Отказоустойчивость
#Распределенные системы
#Разработка библиотек, включая open source библиотеки
#Архитектура платформы Google Android
#Технологии и языки для Android: Java, Kotlin
#Клиент-серверное приложение, REST API, protobuf
#GO
Кирилл Алексеев

Почта Mail.ru, VK

В докладе будет рассказано об архитектуре сервиса, который позволяет отправлять пуш-уведомления на мобильные устройства с минимальной задержкой, подобно Google Firebase. Расскажем, как сделали сервис надежным (горизонтально масштабируемым на базе Redis Cluster и Scylla, устойчивым к DDoS через публичные API), как можно держать в фоне открытый Web Socket на Android, пользуясь доступными возможностями ОС. Покажем, как пользоваться нашими публичными API и SDK, поделимся опытом интеграции в "Почту Mail.Ru" на Android и бэкенде.

Доклад принят в программу конференции

СУБД / DataLake / Хранимки (5)

GraphQL: простая schema провала, или Серебряная пуля для ваших ног

"GraphQL очень простая технология: бери и делай, что там сложного?", — такую фразу я слышал от большинства senior-разработчиков, с которыми обсуждали GraphQL. С точки зрения самой технологии это действительно так (ну да, бери и делай:), однако наш многолетний опыт работы показал, что с точки зрения управления командой это не совсем так.

"А стал бы ты использовать GraphQL ещё раз в новом проекте?", — это второй по популярности вопрос, на который раньше у меня не было четкого ответа. "И да и нет", — отвечал я... Но всё-таки: да или нет?

В этом докладе я постараюсь ответить на вопрос, когда действительно стоит рассмотреть внедрение GraphQL в свой проект, сколько ресурсов на это нужно, что вас будет ждать и как минимизировать риски, если вы всё-таки решитесь на это. Помните: Highload не всегда определяется большим RPS или объемом данных. Иногда большие нагрузки ложатся на менеджмент, архитекторов и разработку.

Доклад принят в программу конференции

Репликация между SQL- и NoSQL-базами данных: туда и обратно

#Tarantool
#Базы данных / другое

В последнее время в рабочих процессах очень часто сталкиваемся с проблемой переноса данных между базами разных типов: реляционными, NoSQL, документоориентированными, колоночными и др. Для этого существует несколько подходов. На основе некоторых из них разработаны решения.

Рассмотрим эти подходы, разработанные решения и какие решения используются у нас на примере Tarantool. Поговорим о том, как быстро и безболезненно перемещать достаточно большие объемы данных между разными базами данных.

Доклад принят в программу конференции

Асинхронный транспорт Cassandra

#Java
#Бэкенд / другое
#Базы данных / другое
#Организация доступа к базам данных, ORM, собственные драйвера
#Асинхронное программирование, реактивное программирование
#Оптимизация производительности
#Распределенные системы
#Архитектура данных, потоки данных, версионирование
Вадим Цесько

Одноклассники

Cassandra является основным хранилищем (мета)данных в Одноклассниках. У нас развёрнуты сотни высоконагруженных кластеров из сотен узлов и тысяч клиентов, распределённых по нескольким дата-центрам. Мы используем и активно развиваем собственный форк Cassandra 2.x. Помимо фиксов множества багов и многочисленных оптимизаций, мы реализовали глобальные индексы (которые работают), поддержали партиционированные транзакции (NewSQL), полностью автоматизировали эксплуатацию в production и многое другое. Но в этом докладе мы сконцентрируемся на подходе FatClient, который используется в наших системах повсеместно.

Подход FatClient переносит роль координатора запросов на клиента, который становится полноценным участником кластера Cassandra. Это позволяет устранить лишние сетевые задержки, разгрузить ноды Cassandra от сетевых задач координации и значительно повысить производительность и стабильность поведения всей системы. Но несмотря на все достоинства подхода, мы столкнулись с неэффективностью и ограничениями существующего транспорта Cassandra на масштабах кластеров, состоящих из тысяч участников: узлов, хранящих данные, и клиентов, работающих с этими данными.

В докладе мы подробно рассмотрим собственную реализацию асинхронного транспорта Cassandra, которая позволила нам существенно сэкономить ресурсы и упростить жизнь разработчиков. Новый транспорт основан исключительно на Java SDK и лаконичной, но эффективной реализации Actor Model. Помимо устройства нашего решения, поговорим про различные оптимизации, возникшие по пути проблемы, а также переключение на асинхронный транспорт нагруженных кластеров Cassandra в production.

Доклад принят в программу конференции

Укрощение мифического чудовища: реальный опыт промышленного использования ScyllaDB без прикрас

#Базы данных / другое
#Оптимизация производительности
#Архитектура данных, потоки данных, версионирование
#Администрирование баз данных

"Кассандра — прошлый век", — говорили они, — "Переходите на Сциллу". Написана на плюсах, быстрая, надежная, с шардированием из коробки. Как тут удержаться и не попробовать? Тем более в условиях, когда вендоры других популярных баз данных того и гляди закроют поддержку для российских пользователей. Всё-таки хочется иметь под рукой пару-тройку запасных вариантов.

Решились! Нашли время, ресурсы и провели исследование одноглазого монстрика в диких условиях кровавого энтерпрайза. Что из этого вышло — опыт, лайфхаки и выводы о целесообразности использования Сциллы — в моём докладе.

Спойлер: зверушка у нас прижилась :)

Доклад принят в программу конференции

Построение современных lakehouse-архитектур с помощью Presto

#Распределенные системы
#Архитектура данных, потоки данных, версионирование

Lakehouse — это современная архитектура построения аналитических платформ компаний, которая совмещает лучшие качества data warehouse и data lake. Одним из популярных продуктов для построения lakehouse-систем является Presto — массивно-параллельный распределенный SQL-движок для выполнения федеративных запросов.

В данном докладе мы обсудим основные сценарии использования и построения lakehouse-архитектур, после чего посмотрим, как техническая реализация Presto помогает создавать масштабируемые корпоративные аналитические платформы:
* дезагрегация storage и compute, которая позволяет масштабировать вычислительные ресурсы без перемещения данных;
* коннекторы к большому количеству целевых систем с возможностью гибких pushdown-вычислений;
* продвинутая работа с сырыми данными с использованием современных технологий Apache Iceberg и Delta Lake;
* кэширование сырых данных на воркерах для уменьшения latency и стоимости работы с object storages;
* высокопроизводительный массивно-параллельный компилируемый SQL-движок.

Доклад принят в программу конференции

Сети (2)

Полная изоляция клиентов в облаке для сервисов без изоляции на примере DNS

#Распределенные системы
#Методы и техника разработки ПО
#Масштабирование с нуля
#Критерии выбора технологий для проекта
#Архитектуры / другое
#Управление конфигурацией
#Работа с облачными сервисами
#Инфраструктура как сервис (IaaS), платформы как сервис (PaaS)

Кажется, что добавить изоляцию пользователей в сервис легко: запускать по копии на каждого клиента. Но цена — это ресурсы, которые большую часть времени будут простаивать.

А насколько легко добавить изоляцию в такой базовый и давно сформировавшийся сервис, как DNS? Как быть с идентичными зонами?

Расскажем о нашем опыте создания multi-tenant private DNS для использования его в SDN собственной разработки без вендорных решений, без дополнительных мощностей, без большого штата разработки. Подытожим рабочие подходы к быстрому созданию полностью изолированных мультитенантных систем для облачных решений.

Доклад принят в программу конференции

Побег из Шоушенка в мире сетей

#Распределенные системы
#Инфраструктура как сервис (IaaS), платформы как сервис (PaaS)

На сегодняшний день облака — объективная реальность. Кто-то их использует как потребитель, а кто-то разрабатывает их. Но и тем и другим будет полезным погружение в их устройство.

* Как достучаться до API, если сетевого доступа нет?
* Как работают изолированные виртуальные сети в облаках, и чем они отличаются от железных?
* Как можно нарушить эту изоляцию и не сделать огромную дыру в безопасности?

Расскажем о том, как вывести трафик из изолированных сетей, построенных на базе Neutron Openstack, без большого штата разработки, без заливания железом, без нагоняев от службы ИБ.

Доклад принят в программу конференции

Агротех (4)

Облачная платформа "Виртуальный Агроном" для управления всеми процессами на вертикальных фермах

#Управление / другое

Рынок высокотехнологичного сельского хозяйства переходит в стадию зрелости. Это выражается в разделении на операционные и технологические компании. Операционные компании нацелены на производство и реализацию сельскохозяйственной продукции. Им в первую очередь интересно, сколько продукции они смогут производить и какие будут затраты на ее производство, включая затраты на персонал требуемой квалификации. Технологические компании сфокусированы на устойчивом R&D и предоставляют непрерывно совершенствующиеся технологии операционным компаниям.

На рынке существует много решений для автоматизации сельского хозяйства. В основном они решают локальные задачи: управление светом, питанием растений и различными аспектами климата. Операционным компаниям сложно интегрировать множество разнородных решений в единую работающую систему. К примеру, синхронизировать расписание работы существующих климатических систем, расписание подачи питательного раствора, управление светом и фазы роста растений.

В докладе я расскажу об архитектуре успешно применяемой облачной платформы "Виртуальный Агроном". Вертикальные фермы, подключенные к платформе, обеспечивают полностью контролируемую среду выращивания с контролем действий персонала и возможностью дальнейшего перехода к роботизированным фермам.

Синергия данных с множества ферм, подключенных к единой облачной платформе, и экспертных знаний, полученных в результате многолетних исследований, позволяет контролировать и оптимизировать процессы на фермах в реальном времени.

Модульность архитектуры позволяет собирать фермы с разной проектной производительностью для различных сельскохозяйственных культур из стандартных блоков.

Формализация процессов на фермах обеспечивает высокую точность прогнозирования продуктивности, что не может себе позволить традиционное сельское хозяйство. Также это дает возможность автоматически проектировать фермы с заданными показателями.

Доклад принят в программу конференции

Программирование дронов — современная цифровая агрономия

Антон Агеев

РоссельхозБанк

Сельское хозяйство стало отраслью с интенсивным потоком данных. Информация формируется из потоков от различных устройств, работающих в полях, теплицах, от датчиков инженерных систем, агротехники, метеорологических станций, дронов, спутников, внешних систем, партнерских платформ, поставщиков. Обработанные данные от различных участников производственной цепочки, собранные в одном месте, позволяют получать информацию нового качества, находить закономерности, создавать добавочную стоимость для всех вовлеченных участников, применять современные научные методы обработки (data science) и на их основе принимать оптимальные решения, минимизирующие риски, улучшающие бизнес производителей и клиентский опыт.

Использование дронов в агрономии уже стало неотъемлемой частью работы сельскохозяйственных предприятий. Понимая устройство сельскохозяйственных дронов и общие принципы их работы, можно лучше понять существующий уровень цифровизации отрасли. Рассмотрим виды дронов, принципы их работы и управления.

Рассмотрим фреймворки для создания программного обеспечения дронов и системы имитационного моделирования. Познакомимся с автопилотами и применяемыми датчиками дронов.

Доклад принят в программу конференции

Агротех: долго, дорого и очень сложно. Как создавать продукты для агроотрасли

Агротех — одно из самых перспективных направлений в РФ и мире.
Создавать продукты для агротеха долго и сложно.
Поделимся нашим опытом создания прорывного решения с CV и беспилотниками для агротеха.

Доклад принят в программу конференции

Самый большой в РФ проект в области птицеводства по сбору информации с датчиков интернета вещей и другие интересные кейсы для сельского хозяйства

* Краткий обзор беспроводных технологий передачи информации, их место и задачи в мире IoT;
* особенности технологий LPWAN беспроводной передачи данных;
* почему так сложно сделать умные вещи и подключить их к интернету;
* зачем мы написали свою платформу интернета вещей и чем нам не угодили готовые платформы;
* как профили устройств упрощают сопровождение;
* как мы внедряли IoT в 52 регионах России для мониторинга птичников;
* зачем мониторить показатели температуры и влажности воздуха в птичниках и на складах;
* использование датчиков сухих контактов для мониторинга работы автоматики;
* датчики температуры и влажности почвы — почему их так мало применяют?
* как датчики интернета вещей позволяют снизить себестоимость продукции и сэкономить на поддержке.

Доклад принят в программу конференции

Оптимизация баз данных (2)

Аномальные случаи высокой нагрузки в PostgreSQL, и как мы с ними справились

Михаил Жилин

Postgres Professional

Время выполнения SQL-запросов зависит от наличия индексов, актуальной статистики и т.п. Большинство проблем с производительностью СУБД решаются оптимизацией самых медленных запросов. Но, увы, бывают ситуации, когда классическая оптимизация запросов не приносит желаемого успеха, система продолжает себя вести неадекватно.

Мы хотим рассказать про свой опыт в решении проблем и попробуем ответить на вопросы:
* почему index scan / index only scan могут тормозить при адекватном плане запроса?
* что за странные ожидания LWLock'а SubtransControlLock или ClientRead видны в pg_stat_activity?
* высокая system-time-утилизация CPU в системе процессами PostgreSQL. Кто виноват?

Доклад принят в программу конференции

Эффективное обновление состояний в БД

В рекламе Яндекса мы работаем со многими сложными сущностями, которые храним в базах данных.

Возьмем, например, рекламный баннер. Если взять всю полезную для показа информацию о баннере, то получится сложная развесистая структура, включающая в себя много простых полей вроде тайтла и картинки, а так же сложных — вроде посчитанных эмбеддингов.

Данные баннера нужно постоянно обновлять — они включаются, выключаются, обновляют какие-то свои данные, по ним пересчитываются эмбеддинги. Так что у нас потоковая обработка данных с результатом в виде актуального состояния данных баннеров в таблице (в YT).

Вроде все просто, какие тут могут быть проблемы? На самом деле проблемы ожидаемые, у нас же Highload, и, если работать с нашей таблицей с баннерами наивным способом, то будем создавать слишком большую нагрузку.

Наивный способ — это когда мы данные одного баннера храним в таблице в одной бинарной строке в сериализованном виде. А проблема с нагрузкой в том, что мы на каждое, даже очень маленькое изменение (допустим, изменилось 20 байт в состоянии), загружаем и пишем обратно все состояние (десятки килобайт).

В своем докладе я изложу минимум 5 независимых и взаимно совместимых идей, позволивших нам многократно снизить нагрузку на запись, и значительно — на чтение, а также несколько новых подходов, которые мы пробуем сейчас или хотим попробовать в будущем.

Приходите, чтобы узнать новое, обсудить известное и поделиться своими идеями про работу с состояниями.

Доклад принят в программу конференции

BigData / Нейронные сети (4)

Как собрать огромный датасет и не потратить годовой бюджет маленькой страны

#Machine Learning

Летом мы опубликовали самый большой жестовый набор данных HaGRID и сегодня расскажем, как собирать и размечать огромные датасеты.

В нашем докладе мы:
* поговорим про основные лайфхаки при работе с краудсорсинг-платформами,
* расскажем о том, как существенно снизить стоимость проекта и повысить качество разметки,
* научим работать с непослушными разметчиками, от которых зависит будущее датасета,
* пройдем полный путь от идеи до создания автоматизированного пайплайна, с помощью которого можно одной кнопкой собрать много данных.

Датасет, код обучения моделей и сами модели доступны в OpenSource! 💪

Доклад принят в программу конференции

Высокопроизводительный промышленный сервис для компьютерного зрения на Python

#C/C++
#Python
#Бэкенд / другое

Хорошо известны проблемы применения Python в промышленных сервисах, особенно, если подразумевается высокая нагрузка и определены высокие требования к задержке. Ещё сложнее всё обстоит в задачах компьютерного зрения, где добавляется специфическая работа с GPU, огромные объемы входных данных и тяжёлые алгоритмы, такие как кодирование/декодирование изображений, их обработка или инференс нейросетей.

Мы расскажем о том, как мы решали такие проблемы, почему выбрали самописное решение и как удалось добиться хороших результатов.

* Основные проблемы в Python с точки зрения промышленного сервиса с компьютерным зрением.
* Обзор существующих решений: DALI & Triton, Cython, Julia, С++, Numba, etc.
* Батчинг.
* Разрешение критических боттлнеков в проде и случайное ускорение тренировок.
* Результаты.

Доклад принят в программу конференции

Нужно прокачать NER-модель, но как?

#Machine Learning

Расскажу о том, как прокачали основную NER-модель виртуального ассистента Салют и получили значительный прирост метрик. Весь путь от исправления простых проблем с датасетом, до разработки специального инструмента анализа ошибок модели. Раскрою тему организации процесса разметки и контроля качества. Покажу, как и где модель NER используется в Салюте.

Доклад принят в программу конференции

Сколько стоит разработать собственную сборку Hadoop: история и техника, как получилось в Сбере

#Миграции данных
#Hadoop

1. Сколько стоит входной билет в создание собственной сборки.
2. Какие потребовались перфоманс-доработки, когда у тебя несколько тысяч серверов под Hadoop.
3. Тележка сложностей, с которыми столкнулись по дороге к проду.

Доклад принят в программу конференции

Кластеры СУБД (4)

Наша Машина Баз Данных (это как Oracle Exadata, только для PostgreSQL) и система управления к ней

#PostgreSQL
#Oracle
#Импортозамещение

Скала^р — это производитель ПАК-ов, которые мы называем Машинами

Одна из наших Машин — МБД.П — это как Oracle Exadata, только про PostgreSQL.
Мы расскажем, как устроена наша Скала МБД.П, как мы пришли к такой конфигурации, каких показателей производительности и надежности удалось добиться.

А ещё Скалой надо управлять не только инженерам высочайшей квалификации, но и пользователям, и мы придумали систему управления для нее — Спектр (не спрашивайте, почему так;-)
Сначала мы хотели делать его как <s>Oracle Enterprise Manager только без глюков и с комьюнити-версией</s>, но потом поняли что архитектура решения не всегда получается с первого раза и без ошибок.

В целом, у нас получилось довольно симптатично, на наш взгляд, на докладе и после него постараемся это показать.

В завершение немного расскажем про наш опыт импортозамещения и постараемся заглянуть в будущее.

Доклад принят в программу конференции

Повышаем живучесть Raft в реальных условиях

#Tarantool
#Отказоустойчивость
#Распределенные системы

Алгоритм Raft стал весьма популярен в последние годы. Описание алгоритма достаточно ясно, имплементации появляются во все большем количестве проектов. Однако все выглядит хорошо на бумаге — будь то математика или рекламные статьи, а при практическом применении все оказывается сложнее.

В этом докладе мы расскажем о поддержке работоспособности кластера Tarantool в условиях частичной связности с реальным примером того, как чистый Raft не справился с задачей. В таких же условиях в какой-то момент в кластере может оказаться два лидера, от чего, казалось бы, прямо обещана защита в Raft.

Итак, на практике мы ожидали от Raft следующего.

Во-первых, кластер должен оставаться доступным и на запись и на чтение при частичной потере связности в сети. Канонический Raft не даёт таких гарантий, и это привело к инциденту в Cloudflare в 2020, когда одна из реплик не видела лидера и на протяжении 6,5 часов постоянно устраивала новые выборы, не давая лидеру поработать хоть сколько-нибудь.

Решение проблемы с доступностью кластера при частичной потере связности создает еще одну: при определенных условиях кластер будет неспособен выбрать нового лидера даже при наличии достаточного количества живых и соединенных между собой узлов, в то время, как предыдущий лидер уже не имеет достаточного количества живых соединений и более неспособен произвести запись. Чтобы это исправить, необходимо, чтобы лидер “слагал полномочия” в случае потери кворума живых соединений. Кроме этого, добровольное снятие полномочий позволяет обеспечить уникальность лидера в кластере: к моменту, когда будет выбран новый лидер, старый лидер уже сложит полномочия.

В конце концов, хочется, чтобы после смерти старого лидера кластер стал снова доступен на запись (выбрав нового лидера) максимально быстро (через 10-15 секунд).

Доклад принят в программу конференции

Просто о сложном: как работает драйвер распределенной базы данных YDB

Клиент-серверное взаимодействие высоконагруженных приложений и распределенных баз данных имеет ряд особенностей. Так, необходимо оперативно выяснять и отслеживать изменения топологии кластера базы данных, балансировать запросы по узлам (нодам) этого кластера, корректно обрабатывать возникающие ошибки.
Драйвер распределенной базы данных существенно отличается от драйверов традиционных (нераспределенных) баз данных. Главная отличительная особенность распределенных баз данных - необходимость работать со множеством нод СУБД. Для равномерной нагрузки на ноды БД в YDB используется как клиентская, так и серверная балансировка. Для баз данных, работающих в режиме 24/7 и допускающих различные сценарии отказа, драйвер должен быть готов к ошибкам разного рода. Это влияет на то, каков должен быть драйвер распределенной базы данных. В докладе мы расскажем про наш опыт разработки драйверов для распределеной БД на разных языках, про проблемы, с которыми сталкивались и решали или митигировали, а также про вынесенные уроки и принятые решения.

Доклад принят в программу конференции

Accord — алгоритм управления распределёнными транзакциями

#Базы данных / другое

В последние годы алгоритмы распределённых транзакций значительно эволюционировали — Spanner, Calvin, Ceasar, Tempo. В докладе я расскажу про ограничения, которые пытаются преодолеть авторы протоколов, и остановлюсь на протоколе Accord, который недавно был предложен в экосистеме Cassandra. Протокол работает без выделенного лидера и позволяет избежать большого числа конфликтов при обновлении "горячих" данных, что делает его пригодным для наиболее высоконагруженных сценариев.

Доклад принят в программу конференции

AI в реальном секторе (3)

AI в AR для завода: как не улететь в космос и решить задачу

#Управление разработкой
Вадим Щемелинин

СИБУР Диджитал

Постараюсь сломать стереотип о том, что для разработки работающих AI-систем нужна большая команда и много-много времени. Поделюсь нашим опытом разработки системы с Computer Vision-алгоритмами вместе с AR-очками, решающей проблемы на заводах по контролю за выполнением действий электрика.

Забегая вперёд, мы смогли собрать работающий прототип и опробовать его на заводе командой менее пяти человек без долгих исследований и опыта в задаче распознавания действий.

Обсудим, всегда ли так можно, какие ограничения есть у подобных решений, и как внедрять AI-системы без космических бюджетов.

Доклад принят в программу конференции

Глубокое обучение в продуктовом ритейле: сложности, риски, допущения

Прогнозирование спроса — одно из направлений в предсказательной аналитике, критически важное для процессов планирования и пополнения в ритейле. В магазинах сети «Магнит» ежедневно совершают миллионы покупок, а спрос по структуре настолько разнородный, насколько обширны география, форматы и ассортимент в компании. Очередной подход и логичный шаг к решению данной задачи — методы DL.

Поделимся собственным опытом и встречающимися трудностями:
* сложности применения нейронных сетей в прогнозировании спроса, или Как мы подружили нейросети с временными рядами;
* как мы выстроили пайплайн в условиях ограниченных ресурсов;
* ожидаемый и реальный эффект: стоит ли бежать за gpu.

Доклад принят в программу конференции

ML в металлургии — простые вещи в сложных условиях

#API
#Python
#Архитектура данных, потоки данных, версионирование
#Проектирование информационных систем
#Поддержка и развитие legacy систем

Как и в любой промышленной сфере, в металлургии имеет место ML — оно помогает лучше понимать процессы, добиваться качества, производительности и безопасности. Однако условия внедрения ML сложно назвать простыми по причине наличия запутанных пайплайнов доставки данных и кода, экстремальных условий в продакшне и особого отношения к цифровым сервисам.

Я расскажу о нетривиальных производственных задачах, в которых ML позволил получить реальную пользу, и о трудностях, с которыми мы столкнулись и успешно преодолели.

Доклад принят в программу конференции

Безопасность в Kubernetes (3)

K8s Security на разных уровнях абстракции

* Рассмотрим подходы к выстраиванию безопасности K8s с использованием OpenSource в высоконагруженных кластерах.
* Поговорим про обеспечение безопасности K8s в облачных средах.
* Расскажу, как безопасно развернуть платежную инфраструктуру в кластере.
* Коснемся вопросов 0-trust внутри K8s.
* Погрузимся в IaaC и GitOps с точки зрения обеспечения безопасности K8s.
* Оценим 0-touch prod с позитивных и негативных сторон.
* Разберем применение OpenSource Runtime Security.

Доклад принят в программу конференции

Сочетание несочетаемого в Kubernetes: удобство, производительность, безопасность

В данном докладе хочется развенчать миф, что из 3-х качеств (удобство, производительность, безопасность) одновременно можно выбрать только 2. И все это благодаря новым решениям, подходам, инструментам, которые дружно уживаются и дополняют друг друга в Kubernetes!

Поговорим об immutable infrastructure, специализированных Container-Optimized OS, минималистичных образах для микросервисов и многом другом!

Доклад принят в программу конференции

Хакнуть K8s: разбор пэйлоадов и способов защиты

#Технологии виртуализации и контейнеризации

В современном быстро меняющемся мире главной ценностью является информация. С развитием и усложнением программных продуктов, а также переходом на микросервисную архитектуру зачастую вопросы безопасности инфраструктуры отходят на второй план. А между тем, ошибки, допускаемые при проектировании информационной системы и некачественной настройке ее компонентов, могут привести к фатальным проблемам: захвату серверов, майнингу на ваших мощностях, краже конфиденциальной информации. При этом огромное количество DevOps-специалистов зачастую относятся к требованиям сотрудников кибербезопасности как к мешающим их работе и закрывают замечания иногда либо только на бумаге, либо подгоняя под различные тест-кейсы.

Особую роль в построении современной высоконагруженной системы играет Kubernetes, позволяя вам легко управлять тысячами контейнеров при помощи конфигурационных файлов. Но высокий уровень абстракции притупляет наше внимание, а ведь под красивым названием оркестратора скрываются Linux, сети, Go и containerd. При этом кажется, что K8s из коробки обеспечивает приемлемый уровень безопасности для вашего приложения. Но это утверждение верно лишь отчасти.

В докладе будут рассмотрены следующие темы:
* Reverse-shell, или Как заставить сервер подключиться к вашему ПК и предоставить вам оболочку.
* Docker Escape на практике: опасность привилегированных контейнеров и практическая демонстрация побега при помощи добавления самописного модуля в ядро.
* RBAC, права в K8s и к чему приводит выдача слишком широких полномочий Pod'ам.
* Практический захват кластера из Pod'а и запуск криптомайнеров.
* Основные ошибки при написании манифестов для сервисов.

Доклад будет интересен как DevOps- и DevSecOps-специалистам, так и всем увлекающимся пентестами и машинками на HackTheBox, бывшим и действующим игрокам в CTF.

Доклад принят в программу конференции

Экспертная зона (22)

Обеспечение безопасности высоконагруженных сервисов банка

Александр Маркелов

Райффайзен Банк

Алексей Гуськов

Райффайзен Банк

Евгений Хренов

Райффайзен Банк

Григорий Кученченко

Райффайзен Банк

Мы поделимся опытом обеспечения безопасности высоконагруженных сервисов в банке и построения процессов информационной безопасности в Agile организации. Обсудим с вами вопросы создания безопасных систем через стадии жизненного цикла продукта, расскажем об инструментах и лучших практиках их применения. Ждем у нашего стенда всех, перед кем стоят проблемы создания безопасных высокопроизводительных систем: архитекторов, аналитиков, разработчиков и инженеров.

Вопросы:
- каким образом можно оценить будущую нагрузку до начала разработки
- как избежать ошибок в архитектуре и в использовании фреймворков
- как конфигурировать кластера K8s с точки зрения безопасности
- как настроить run-time мониторинг кластеров K8s
- как обеспечить требования стандарта PCI DSS в кластерах K8s
- какие угрозы информационной безопасности являются наиболее актуальными
- какие инструменты и практики безопасной разработки мы используем

Доклад принят в программу конференции

DevOps и эксплуатация / Системное администрирование

Системное администрирование на максималках. Грозный энтерпрайз облачного провайдера проверяет на прочность команду системных администраторов, которые вместо горения испытывают экстаз.
* Превращаем теорию в практику.
* Избавляемся от легаси.
* Пробуем новые инструменты и решения.
Без СМС и регистрации, просто приходите к нам на стенд.

Доклад принят в программу конференции

Машинное обучение для высоконагруженных задач

В экспертной зоне Cloud в формате Q&A можно будет получить ответы на вопросы о машинном обучении для решения высоконагруженных Data Science-задач. Ведущие эксперты поделятся опытом внедрения ML на базе любой инфраструктуры — в облаке и on-premises, а также расскажут, как механизм очередей и правильная организация совместной работы DS-команд помогают сократить time-to-market сложных AI-сервисов.

Доклад принят в программу конференции

Data platform: databases, storage and pipelines

В Yandex Cloud полноценно с нуля разработано более пяти десятков сервисов, созданных для закрытия потребностей в полном цикле разработки и поддержания интернет-сервисов с высокой нагрузкой. Наши специалисты глубоко понимают задачи, с которыми может столкнуться инженер, реализующий отказоустойчивые сервисы в облаке.

Мы проконсультируем по вопросам разработки отказоустойчивых высоконагруженных сервисов, реализованных с использованием контейнерного стека и serverless-технологий. Поможем разработать гибридные архитектуры для размещения в облаках.

Приглашаем разработчиков интернет-сервисов, планирующих получить большую нагрузку в ближайшее время. Инженеров, думающих об адаптации своих архитектур в облаках. DevOps-инженеров — для получения консультаций об особенностях работы с контейнерным стеком в облаках.

Доклад принят в программу конференции

Sec и Ops под нагрузкой. Делаем, чтобы работало

Юрий Семенюков

Инфосистемы Джет

Иван Колесников

Инфосистемы Джет

Антон Гаврилов

Инфосистемы Джет

Павел Яньков

Инфосистемы Джет

Евгений Анненков

Инфосистемы Джет

«Инфосистемы Джет» — команда, которая делает проекты в энтерпрайзе. Более половины из 100 крупнейших компаний России — наши клиенты. Мы расскажем, как сделать так, чтобы все работало (Ops) и было защищено (Sec). Например, как спроектировать отказоустойчивую инфраструктуру для крупного банка на 3 распределенных ЦОД-а, накатить на нее контейнеризацию, сделать магию доступности, защитить данные, настроить интегрированный мониторинг. Как встроить безопасность в DevOps. Все это — на опыте десятков проектов.

Доклад принят в программу конференции

Распределенные высоконагруженные системы хранения и обработки данных. YDB

Мы занимаемся системами передачи, хранения и обработки данных. Разработали с нуля и запустили YDB — платформу с открытым исходным кодом. Наши специалисты — эксперты в том, что касается архитектуры и внутреннего устройства отказоустойчивых, масштабируемых, высоконагруженных баз данных, платформ и сервисов.

Готовы проконсультировать:
* по разработке и эксплуатации отказоустойчивых высоконагруженных сервисов, реализованных с использованием платформы YDB;
* по распределенным высоконагруженным системам хранения и обработки данных.

Наибольшая экспертиза:
* Распределенные высоконагруженные системы хранения и обработки данных.
* Yandex Database.

Кому стоит посетить экспертную зону? Разработчикам интернет-сервисов, которые:
* планируют рост нагрузок;
* испытывают проблемы с отказоустойчивостью сервисов;
* предпочитают перенести решение этих проблем на сторону БД.

Доклад принят в программу конференции

Строим высоконагруженную платформу из любви к «тонкому» клиенту

Обмен опытом по реализации решений в работе с профилем клиента и адаптивному управлению структурой экранов через server-side.
Q&A-сессия со спикерами.

Доклад принят в программу конференции

Автоматизация со скоростью Звука или как запустить автотесты на всех платформах за 3 месяца

Тестирование в Звуке в цифрах:
- Ноль питона
- много алгоритмов
- 30 дней на запуск автоматизации с нуля
- 1.5 года от джуна до лида.

Как мы это делаем? Не берем на работу тестировщиков без опыта программирования и учим их со скоростью Звука по авторской программе. А еще мы забанили питон в тестировании. Все это позволило нам развернуть с нуля систему автотестов для всех платформ меньше, чем за квартал. Приходите пообщаться с нашими экспертами Сашей Петровым, Сашей Качиной и Димой Лапенко, они поделятся лайфхаками, планами и подводными камнями на этом пути самурая.

Доклад принят в программу конференции

Платформа In-Memory-вычислений: ускоряем легаси, строим отказоустойчивые сервисы

Участники конференции могут узнать от наших экспертов, как ускорить устаревшие core-системы и построить отказоустойчивые сервисы, которые выдерживают высокие нагрузки в миллионы пользователей, как построить умный кэш, витрины данных, золотой профиль клиента и при этом экономить серверные мощности.

Доклад принят в программу конференции

DevOps и эксплуатация / Архитектуры, масштабируемость

Поделимся нашим многолетним опытом эксплуатации высоконагруженных проектов. Расскажем о ключевых этапах миграции в Kubernetes — от проектирования инфраструктуры до выстраивания CI/CD и комфортной среды разработки. Объясним, как подготовить архитектуру приложений к эксплуатации в Kubernetes с учетом 12+7 факторов. В контексте Ops-задач особое внимание уделим мониторингу и управлению инцидентами, а также выбору правильных стратегий VPA и HPA.

Доклад принят в программу конференции

Импортозамещение аналитических платформ данных

Коллеги из Axenix поделятся опытом миграции с Teradata, Oracle Exadata, SAP BW на доступные продукты, основанные на Open Source-технологиях (Greenplum, Clickhouse, Postgres, S3 и другие). На примере высоконагруженных хранилищ данных расскажут о подходах к миграции, особенностях различных программных продуктов, потенциальных подводных камнях, с которыми вы можете столкнуться.

Доклад принят в программу конференции

Построение ML-инфраструктуры (MLOps)

ML в продакшне уже не роскошь, а необходимость. Поэтому инструменты MLOps так важны для бизнеса.

Поговорим про:
* подготовку широких датасетов на потоке из миллиардов примеров;
* continual learning в рекомендательных системах;
* построение model storage и feature store;
* применение CatBoost в рантайме, тюнинг качества бустинга и использование GPU для его обучения.

Доклад принят в программу конференции

Как построить IT-бренд не IT-компаниям: комплексный подход

Зона консультаций по IT-бренд для не it компаний. Ответим на вопросы как создать it бренд банкам, гос компаниям, промышленным компаниям. Поделимся кейсами
Расскажем, как вовлекать разработчиков в IT-бренд, мотивировать писать статьи на Хабр.

Последние три года мы проводим Всероссийское исследование по IT-бренду работодателя, исследуя факторы привлекательности и барьеры it специалистов. Приглашаем на нашу зону эйчаров, деврелом, технических директоров, перед которыми стоят задачи привлечения и удержания IT-специалистов.

Готовы поделиться экспертизой по коммуникации на IT-аудиторию:

* Что такое IT-бренд и почему это важно сейчас
* О конкуренции за IT-специалистов
* Конкуренция за IT-специалистов усилилась, что делать, где искать
* Полярность мнений у крупной компании
* Как работать с негативом, хейтерами
* Как масштабировать работу с поклонниками
* Как наладить работу с авторами внутри компании
* Как строить бренд в IT банку
* Как строить бренд в IT гос. компании
* Как строить IT-бренд промышленным компаниям
* Как подобрать деврела и стартовать работу команды IT-бренда
* Зачем нужна контент-стратегия
* Ошибки рекламных кампаний

И про то как их оценить:

* Как замерить свой бренд работодателя
* Какими метриками эффективности управлять брендом работодателя
* Как определить своих конкурентов
* Как сформировать EVP

Доклад принят в программу конференции

Битва за качество в условиях разработки высоконагруженных систем.

На примере высоконагруженной системы обмена данных между ведомствами (примерно ~5к систем участников обмена по ~2к прикладных протоколов с интенсивностью 10к обменов в секунду) эксперты команды Госуслуг поделятся опытом в организации производства уже эксплуатируемой и развивающейся многопользовательской платформы взаимодействия и обмена данными между информационными системами.
Поговорим о:
- разработке при высоких требованиях к промышленной платформе - федеральной государственной системе на всю страну;
- автотестировании в условиях высоконагруженной системы;
- внедрении сервисов, если пользователи - другие информационные системы.

Доклад принят в программу конференции

Инженерная инфраструктура ЦОД и серверных. Построение бесперебойной инфраструктуры ЦОД/серверных

* Импортозамещение инженерного оборудования (ИБП, батареи, кондиционеры, АВР и пр.);
* схемы построения инженерной инфраструктуры серверных/ЦОД с учетом требования по бесперебойной работе;
* этапы строительства и проектирования ЦОД;
* подбор помещений/участков для строительства серверных/ЦОД;
* основные ошибки при проектировании и строительстве серверных/ЦОД, на которые стоит обратить внимание;
* виды дата-центров: модульные/классические, отличия и преимущества.

Доклад принят в программу конференции

Безопасность приложений: Позитивные практики

Максим Залысин

Positive Technologies

Алексей Астахов

Positive Technologies

Дмитрий Секретов

Positive Technologies

Алексей Андреев

Positive Technologies

Владимир Кочетков

Positive Technologies

Positive-эксперты обсудят практики обеспечения безопасности на каждом из этапов жизненного цикла разработки ПО: от проектирования архитектуры продукта и написания кода до эксплуатации под высокой нагрузкой. SSDLC, DevSecOps, SOC: всё, что мы с вами любим.

Доклад принят в программу конференции

Singularity: one framework to rule them all

Pixonic регулярно запускает в разработку новые проекты. Так как специфика нашей студии — это многопользовательские игры, всем проектам требуется серверная инфраструктура, позволяющая оперировать профилями, авторизацией, социальными фичами и т.п.

Функциональные требования у всех игр довольно схожи, и для ускорения производства лучше иметь единую настраиваемую платформу, которая будет решать технические задачи, позволяя разработчикам полностью погрузиться в процесс разработки игры.

Существуют готовые решения, вроде GameSparks или PlayFab, но они являются облачными, закрытыми и не реализуют всю необходимую нам функциональность. Нам критична возможность оперативной доработки, так как новые проекты часто экспериментируют.

Кроме того, настолько универсальные решения сами по себе нуждаются в предварительной кастомизации, а требовалось минимизировать количество инфраструктурных задач, которые нужно решать в процессе разработки. Поэтому мы выбрали средний вариант и начали делать свой фреймворк.

Расскажем, как он устроен, какие функции реализует "из коробки", а что остается дорабатывать каждому проекту.

Взглянем на платформу со стороны клиента, обсудим сложности, вытекающие из универсальности решения.

Будет полезно тем, кто интересуется как устройством серверов высоконагруженных игр, так и клиент-серверным взаимодействием в таких играх.

Доклад принят в программу конференции

Потоковая обработка данных: разбираем архитектуры и предлагаем реализации

Наши команды создают инфру для потоковой обработки данных и с помощью этих систем решают продуктовые задачи в Яндексе. Поток, с которым они работают — гигабайты в секунду, размер стейта — петабайты данных.

Наши эксперты расскажут:
* почему стриминг-подготовка данных — ключевое направление развития процессинга в ближайшие годы;
* чем может помочь стриминг-парадигма;
* как перейти в парадигму стриминга из MapReduce;
* как спроектировать архитектуру стриминга.

Доклад принят в программу конференции

Архитектура облачных решений

На стенде наши эксперты ответят на вопросы по построению архитектур для высоконагруженных систем, облачной инфраструктуре, построению Cloud-Native приложений, работе Kubernetes, а также построению приложений для полного цикла работы с данными.

Доклад принят в программу конференции

Высоконагруженные микросервисы на фреймворке userver

Мы пишем серверные приложения, очень много серверных приложений. Они интенсивно работают с вводом-выводом, многие из них активно используют CPU, могут требовать много памяти и должны быть высокодоступными.

К сожалению, существующие решения не отвечали нашим потребностям, поэтому мы сделали собственный фреймворк с сопрограммами и динамическими конфигами — 🐙 userver. На нём ежедневно работают сотни сервисов Яндекса, а теперь стали появляться и внешние пользователи.

Расскажем и покажем, как совместить C++ и простоту использования, высокую скорость разработки, эффективность и безопасность.

Доклад принят в программу конференции

Автоматизируем enterprise-разработку: общие библиотеки, особенности core-разработки

Поговорим о том, как облегчить рутину enterprise-разработчика. Расскажем, как мы у себя запустили процесс стандартизации общего поведения систем. Сейчас все разработчики получают описание процесса разработки, структуру приложений, набор базовых зависимостей и набор базового поведения (логи, конфиги, метрики) и на выходе создают работающую бизнес-логику.

Используем Swagger-контракты для связи кода и аналитики, Spring, Gradle, k8s, Docker, Java, Kotlin, Groovy.
Полезно будет большим командам и зрелому бизнесу, которые хотят повысить уровень автоматизации и производительности при создании своих продуктов.

Как заняться выделением общих решений? Кто будет этим владеть и отвечать за процесс реализации, выпуска и поддержки? Какие есть варианты и особенности в организации такого процесса? Есть ли, вообще, в этом необходимость?

Приходите, обсудим, поделимся своим опытом и набитыми шишками :)

Доклад принят в программу конференции

Devops: предиктивный мониторинг, отказоустойчивый мониторинг

Илья Кочнев

СберМаркет

Сергей Реусин

СберМаркет

Андрей Иванов

СберМаркет

На стенде наши эксперты ответят на все ваши вопросы про предиктивный мониторинг и отказоустойчивый мониторинг.
Как это работает в СберМаркете: у нас есть ML-сервис, который мы заопенсорсили, где настраиваются метрики, по которым требуется предиктивная оценка, ML-сервис на Python. Сервис работает на основе метрик Prometheus, учитывает сезонность, выходные и т.д., а под капотом библиотека prophet.

О чем расскажем:
- Предсказание того, что будет: нагрузка, кол-во заказов
- Как в условиях нестатических нагрузок мониторить атаки
- Как мониторить не причины, а следствия
- Как принимать 50 млн рядов и не умереть
- Как сделать, чтобы 50 млн рядов не разлетелись
- Как можно обезопасить себя от бесконтрольного разрастания метрик

Доклад принят в программу конференции

Lighting talk (2)

Импортозамещение BI своими руками

#AngularJS, Backbone.js и другие JavaScript-фреймворки
#Фреймворки
#Java

Рынок систем отчётности и BI огромен. Часто даже в рамках одной компании одновременно эксплуатируется несколько таких систем, и «Магнит» — не исключение. Но рано или поздно появляется потребность в единой платформе отчётности, которая охватит львиную долю ваших задач и пользователей. Специфика компании диктует свои правила: появляются нестандартные запросы, ограничения и краеугольные камни. Это может быть эффективная работа с несколькими базами данных, информационная безопасность, управляемость, скорость разработки, обработка больших объёмов данных, ориентированность на конкретные пользовательские сценарии. Часто компании заходят в тупик — готового решения, в точности соответствующего критически важным требованиям, не существует.

Можно ли в этом случае построить свою систему отчётности, внедрить её в очень крупной компании и при этом не изобретать тысяча первый велосипед? У нас есть ответ, и мы готовы поделиться своей историей.

Доклад принят в программу конференции

Как "добиться" времени записи 200 мс на NVMe-дисках

#Архитектурные паттерны
#Оптимизация производительности
#Технологии виртуализации и контейнеризации
#Аппаратное обеспечение

Короткий блиц-антидоклад о том, как правильными и дозволенными действиями добиться "потрясающей производительности" на хорошем железе.

Т.е. рассказ будет о том, как делать не надо.

Доклад принят в программу конференции

CTO-трек (5)

СберБанк Онлайн: масштабная трансформация legacy

#Методологии и процессы разработки ПО; Сроки и приоритеты
#Большие проекты/команды
#Модели руководства
#Антикризисный менеджмент
#Управление / другое
#Enterprise-системы

3 года назад перед нами встала задача перехода на микросервисную платформу.
Мы мигрировали сервис за сервисом, ускорялся ТТМ. Но нагрузка на legacy не падала.
 
Расскажу, как не оказаться в ситуации, когда 60% проекта завершено, а нагрузка на legacy продолжает расти, какие метрики для проекта выбрать на старте и с какими сложностями мы столкнулись в проекте.

Доклад принят в программу конференции

Объединение DevOps, SRE, Dev, QA в единый DevOps-процесс в банке

Существует мнение, что DevOps работает только в формате небольшой компании и масштабировать очень сложно и, вообще, это неприменимо к крупным энтерпрайз-организациям или необходимо сразу создавать DevOps-отдел.

В ходе данного доклада хочется раскрыть данную тему и поделиться положительным опытом на темы:
* как мы выстроили работу DevOps, SRE, дежурной application-службы без создания DevOps-отдела;
* как в эту схему вписали Dev и QА, какую роль они играют;
* как масштабировать данную систему при количестве инженеров 50+ и 150+ команд;
* как быстро можно расти в данной схеме и не стать винтиком системы;
* как проводить онбординг, стажировку;
* как учитывать пожелания инженеров и облегчить наем.

Доклад принят в программу конференции

Круглый стол СТО: Инженерная культура

С 2018 года, когда множество компаний стартовали цифровую трансформацию и начали активно заниматься собственной разработкой, словосочетание «инженерная культура» стало таким же популярным, как и сама цифровая трансформация.

Насколько российским компаниям сегодня удалось сформировать эффективную инженерную культуру, и что в целом под ней понимается? Как оценивать, строить, находить единомышленников и справляться с препятствиями на пути ее формирования — поговорим на круглом столе.

Доклад принят в программу конференции

IT-инфраструктура после февраля 2022

#Импортозамещение
#Enterprise-системы

"ХХХ вышел из чата" — какие вендоры ушли, какие остались, как с этим дальше жить.
Дата-центры, серверное и сетевое оборудование, офисное IT-оборудование, программное обеспечение. Изменения в IT-инфраструктуре после февраля 2022.

Доклад принят в программу конференции

Продвинутые подходы построения AppSec

В докладе рассмотрим набор техник, про которые редко говорят на конференциях. Мы не будем заострять внимание на SAST, DAST, DevSecOps, а обсудим другие вопросы: security-амбассадоров, бюджет ошибок безопасности, построение адекватного процесса взаимодействия ИТ и ИБ, постоянную оценку рисков.

В рамках встречи поделюсь готовыми практическими наработками для улучшения процессов ревью архитектуры ИБ и оценки угроз. Обсудим, как сделать эту скучную работу модно и эффективно

Доклад принят в программу конференции

Тестирование (1)

О чём я говорю, когда говорю о тестировании корректности работы компилятора

#C/C++
#Tarantool
#Отказоустойчивость
#Методы и техника разработки ПО
#Функциональное тестирование
#Автоматизация тестирования
#Lua

Любая программа, запущенная на компьютере, была создана компилятором и, так как компиляторы являются важной частью инфраструктуры для создания программного обеспечения, их корректность имеет первостепенное значение. Чтобы проверить и повысить правильность поведения компиляторов, значительные усилия во время разработки направлены на тестирование компиляторов.

В Tarantool за поддержку языка Lua отвечает LuaJIT, который включает в себя как среду исполнения языка, так и трассирующий JIT-компилятор. Мы решили использовать фаззинг-тестирование для LuaJIT, потому что стандартное тестирование не позволяет выявить все проблемы во время разработки. Несмотря на популярность рандомизированного тестирования и множество доступных инструментов для фаззинга, нам пришлось изучить методы, показавшие эффективность при тестировании других компиляторов, и разработать собственные инструменты. Мы попробовали фаззинг без грамматики, фаззинг с грамматикой на основе LibFuzzer и LibProtobufMutator, собственный мутатор для Lua-программ и проверку оптимизаций с помощью SMT-решателя.

В докладе я расскажу про различные аспекты проблемы тестирования корректности компилятора, в том числе то, как генерировать случайные программы, какие тестовые оракулы использовать для определения того, правильно ли ведет себя компилятор, как эффективно выполнять тесты компилятора и эффективных методах тестированиях компиляторов на основе нашего опыта тестирования LuaJIT.

Доклад принят в программу конференции

PHP, Тестирование и обеспечение качества (7)

Внедряем скоростное мутационное тестирование

#PHP
#QA / другое

Мутационное тестирование — это метод тестирования программного обеспечения, основанный на всевозможных изменениях исходного кода и проверке реакции на эти изменения набора автоматических тестов.
Оно помогает команде убедиться в том, что автотесты действительно проверяют бизнес-логику, а не просто покрывают код.

В этом докладе я расскажу о том, как мы у себя в команде внедрили мутационное тестирование и как оно помогает нам с нашими тестами. Расскажу про наш опыт, плюсы и минусы инструмента, который мы используем для мутационного тестирования.

Доклад принят в программу конференции

Тестирование на бэкенде. Рекомендации по написанию, виды тестов, пирамида на бэке

Все мы знаем, насколько важны тесты. Также все мы хоть раз в какой-нибудь статье, презентации или книжке видели пирамиду тестирования, где в качестве уровней выступают различные виды тестов, такие как функциональные, интеграционные и unit-тесты. Везде описаны бенефиты, которые можно получить, правильно выстроив пирамиду тестирования. Однако на практике зачастую трудно разобраться, чем отличается один вид тестов от другого, в каком случае стоит написать unit, а в каком интеграционный или, может, вообще функциональный? А сколько тестов стоит написать на одну фичу? В этом всем еще предстоит разобраться…

В ходе доклада рассмотрим следующее:
* обсудим важность тестов;
* рассмотрим на примере, на основе чего формировать тест-кейсы;
* виды тестов: функциональные, интеграционные, юнит;
* в каком случае какой вид теста использовать, как правильно их разложить по пирамиде;
* что нужно мокать в тестах, а что нет;
* как можно переиспользовать моки.

Доклад принят в программу конференции

Секреты тестирования версий Web API с помощью Behat

#API
#PHP

В своем докладе «Версионирование API, или Единая кодовая база для всех версий» на предыдущей конференции PHP Russia'21 я коротко рассказал о том, как благодаря нашему подходу к версионированию API мы добились существенного сокращения времени прохождения тестов. Я обещал, что вернусь и расскажу о том, как же именно мы тестируем версии нашего API.

В докладе я расскажу о популярном для PHP фреймворке для функционального тестирования Behat и языкe Gherkin. О том, как с их помощью мы тестируем поведение эндпоинтов нашего API, и как мы расширили функционал фреймворка для тестирования поведения разных версий API. Как боролись с ростом времени прохождения тестов, обусловленным ростом числа поддерживаемых версий, и как победили этот рост.

Доклад принят в программу конференции

Как ментально полюбить и начать писать тесты на примере Yii 2 и Codeception

Если вы уже давно разрабатываете или только начинаете, но не писали тесты, либо был неудачный опыт, предлагаю узнать про мой. Я начал писать тесты, понял их пользу, но писал неправильно и выгорел, понял ошибки и снова к ним вернулся, сообразив, что не с той позиции на них смотрел.

Ниже список тезисов:
1. Как понять, в какой момент использовать тот или иной тип тестов.
2. Как писать тесты до кода.
3. Как тесты помогают продумывать дизайн кода.
4. Ошибки, которые были допущены при написании тестов: стаб-базы, очереди, использование только одного типа тестов и т.д.
5. Как можно поменять поведение внешних http-запросов.
6. Подготовка данных для тестов: 
когда фикстуры становятся неудобными, 
почему не всегда стоит генерировать данные через поведение системы, когда неудобно использовать дамп базы перед запуском тестов.
7. Запускаем тесты на codeception. Особенности функциональных тестов, тестирования очередей.
8. Особенности codeception.

Доклад принят в программу конференции

Честные модули внутри монолита, или Когда Composer не подходит

#PHP
#Архитектурные паттерны
Александр Кирсанов

ВКонтакте, VK

Когда у вас очень много кода, его связность неуклонно растёт. Всё переплетено, и нельзя взять и переместить какую-то часть в отдельный пакет — каждая часть сотнями щупалец склеена с остальным монолитом. Нет-нет да и вставят разработчики новые зависимости, срезая углы, "потому что надо было ещё вчера", и шансы распутать клубок с течением времени стремятся к нулю.

В докладе я покажу новый инструмент, который мы создали внутри ВКонтакте, чтобы ограничить разрастание энтропии внутри нашего монолита — и, традиционно, он будет открыт и может быть использован вне ВК тоже.

Доклад принят в программу конференции

Тестирование REST API

* С чего начать писать тесты.
* Особенности API-тестов.
* Какие инструменты использовать.
* Метрики и отчеты.
* Как не стоит делать.

Доклад принят в программу конференции

Апгрейд и рефакторинг PHP-проектов — теперь это просто

#PHP
#Поддерживаемый код
#Практики программирования

Мы часто слышим: «PHP — крутой язык».

Он обзавелся модным синтаксисом, есть типизация, улучшена производительность. Но прошлое дает о себе знать.

Многие проекты используют старые версии PHP и фреймворков, пакетов и бандлов, так как обновление и рефакторинг равно время и трудности. Мейнтейнерам пакетов приходится больше тратить времени на поддержку обратной совместимости вместо создания новых фич. Все это мешает развиваться как проектам, так и самим разработчикам.

Расскажу, как обуздать это легаси и автоматизировать обновление проектов и пакетов, чтобы процесс проходил эффективнее и меньшей кровью.

А ещё обсудим:
* как писать свои правила для автоматического рефакторинга под новые версии пакетов;
* как провести рефакторинг архитектуры активно развивающегося проекта и не стопать фич-релизы;
* как справиться с перечисленными проблемами поможет инструмент Rector.

Доклад принят в программу конференции

PHP, Архитектура (5)

Модульный Laravel, или Как собрать фичу в кучу

#Фреймворки
#PHP
#Разработка библиотек, включая open source библиотеки

1. Структура файлов, генерируемая при создании Laravel-проекта, проблематична для проектов сложнее набора CRUD'ов. Файлы складываются по типам, и при работе с одной фичей приходится перелопатить несколько папок. Необходимость частичного выделения функционала в отдельный сервис превращается в головную боль.
2. Предлагается новый feature-based-подход, основывающийся на группировке кода и шаблонов по фичам.
3. Для реализации этого подхода докладчиком создана библиотека, о которой речь также пойдёт в выступлении.
4. Приведя в порядок структуру файлов, можно пойти дальше и реализовать на базе той же библиотеки полноценную функциональную модульность — такую возможность она тоже даёт.

Доклад принят в программу конференции

Автоматное программирование. Как построить чат-бота и не погрязнуть в ветвлениях

В процессе поиска работы соискатели тратят время на общение с рекрутерами, которое — давайте будем откровенны — далеко не всегда приводит к желаемому результату. А что, если автоматизировать эту рутину? Мы задались этим вопросом и решили создать HR-бота, который поможет соискателям и рекрутерам упростить взаимодействие, не отвлекаться на звонки и решить все вопросы в мессенджере.

В докладе на примере нашего сервиса расскажу, что такое автоматное программирование, о плюсах и минусах парадигмы, а также как она поможет в решении проблем роста сложности и постоянного изменения сценариев бота, с которыми мы столкнулись во время разработки.

Также расскажу о подводных камнях, о которых мы узнали во время реализации, о том, как мы их обходили, и о пользе, которую нам принес выбранный подход.

Доклад принят в программу конференции

Фича — это объект! Сокращаем диффы, снижаем каплинг, продлеваем жизнь

Иван Лещёв

ВКонтакте

Мы долго учились, много работали, покупали хорошие книги и общались в чатах. Но почему нам приходится иметь дело с плохим кодом? Его же писали не менее подготовленные коллеги?!

Для меня это философский вопрос, что делает код плохим, как этого не делать, как начать писать хороший код. Что мы понимаем неверно, а что — не до конца? В чём основная проблема программирования? Почему даже маленькое изменение вызывает водопад правок?

Я постараюсь логически доказать, почему определённые подходы подходят лучше других, сделаю несколько очевидных выводов и удивлю неожиданными. Расскажу, как уменьшить количество кода, избавиться от бессмысленных тестов, сделать правки конкретнее, инкапсуляцию изолированней, а жизнь легче и приятнее.

Доклад принят в программу конференции

Круглый стол "Domain Driven Design и PHP: идеальная пара или натягивание совы на глобус?"

В мире PHP Domain Driven Design — популярный подход. Его стратегическая часть DDD (единый язык и ограниченные контексты) мало зависит от конкретного языка разработки. А вот тактическая — очень даже, ведь она как раз и направлена на реализацию стратегической части в коде.

На круглом столе обсудим:
* почему PHP-разработчики любят DDD;
* какие возможности языка помогают реализации DDD, а какие — мешают;
* в чем отличие реализаций на других языках.

Доклад принят в программу конференции

Аспектно-ориентированное программирование в PHP: раскладываем сквозную функциональность по полочкам

#Фреймворки
#PHP
#Архитектуры / другое

Аспектно-ориентированное программирование для многих из нас — это что-то абстрактно-академическое. Между тем оно уже давно широко применяется в практической PHP-разработке, чаще всего в виде аннотаций к методам и классам. Им можно пользоваться, не зная ничего о его теоретических основах, однако знание его базовых концепций и возможных способов реализации может помочь, например, элегантно внедрить в код нужную во всей программе функциональность или даже написать свою библиотеку, реализующую aспектно-ориентированное программирование.

Обсудим:
* откуда появилось аспектно-ориентированное программирование;
* зачем нужно АОП;
* как устроено классическое АОП от Xerox PARC;
* способы реализации АОП;
* что есть в PHP для АОП;
* опыт использования АОП.

Доклад принят в программу конференции

PHP, Наем (2)

Что происходит на рынке труда?

#Митапы

Никогда такого не было, и вот опять рынок труда изменился. Что сейчас происходит? Какую з/п просить? Действительно ли случился «рынок работодателя», можно ли уже оценивать последствия изменений, и какие з/п сейчас актуальны.

На нашем митапе мы хотим обсудить тему трендов, которые присутствуют на рынке труда. Как мы с вами влияем на этот рынок и как адаптироваться к его изменениям.

Доклад принят в программу конференции

Ревью резюме

Вам кажется, что ваше резюме неидеально? И правильно кажется!

Вам не у кого спросить совета, карьерные консультанты не разбираются в разработке, а диванные эксперты — в HR? Спросите тех, кто разбирается.

HR и техлиды, которые на подборе собаку съели, соберутся вместе, чтобы честно разобрать ваши резюме и рассказать, как их улучшить. Фидбэк, который обычно не получить.

Чтобы поучаствовать, присылайте ваши анонимные резюме на почту review.php@yandex.ru.
Нам не нужны ваши ФИО, контакты или названия компаний!

Доклад принят в программу конференции

PHP, Безопасность (2)

Почему PHP такой дырявый?

#PHP

А вы знаете, почему многие считают PHP небезопасным языком?
А как сделать так, чтобы он стал безопаснее?
Каким атакам больше всего подвержен PHP и его фреймворки в современном мире?

Расскажу о том, как сделать PHP безопасным.

Доклад принят в программу конференции

Разминируем свой код: чем искать уязвимости и дефекты безопасности

#Безопасность программного кода, SQL и прочие инъекции
#Application security
#Безопасность от планирования до эксплуатации
#Автоматизация разработки, доставки, эксплуатации
Илья Поляков

Angara Security

Тема безопасности веб-приложений со временем становится только актуальнее.

* Разберёмся, уязвимостям какого типа, по статистике, наиболее подвержены PHP-проекты.
* Рассмотрим различные типы статических анализаторов кода по качеству выявления таких уязвимостей.
* Узнаем, какие ещё инструменты позволяют "разминировать" свой код.

Доклад принят в программу конференции

PHP (5)

Анализ и приоритизация задач в тикетной системе

#PHP
#Бэкенд / другое
#Архитектуры / другое

Одна из фишек проекта Customer Support — приоритизация тикетов. Команде прилетают 100-200 задач в минуту: ученик пропустил урок или его нужно разбудить, опоздал учитель, возникла другая проблема или задача. А дальше этот поток тасков нужно упорядочить по важности, пропустив горящие вперед. Тикетная система у нас выстроена круто, операторы редко приходят с жалобами. При этом часто добавляются новые команды, количество задач растет.

Расскажу про процесс приоритизации со стороны разработки и бизнеса:
* какие коэффициенты и подходы взяли, чтобы рассчитывать веса, и почему;
* теория игр — как быть, если у задачи целый набор обстоятельств. Порой неочевидных;
* заезжает новая группа, нужна стратегия. Мы сделали процесс добавления стратегий универсальным;
* ручные задачи, автоматические и отложенные. Как уживаются между собой;
* как SLA влияет на вес задачи.

Доклад принят в программу конференции

Работа с Photoshop-файлами на PHP

#PHP
#Бэкенд / другое

* Библиотеки для работы с Photoshop-файлами на PHP.
* Устройство Photoshop-файлов, а также ошибки документации.
* Решение проблемы чтения Photoshop-файлов в других языках и особенности переноса кода на PHP.
* Как получить основную информацию о файле, направляющих и борьба с legacy-данными в файле.

Доклад принят в программу конференции

Интеграция PHP-проекта с 1С

#PHP
#Прочие языки

Знали ли вы, что в платформе 1С есть встроенное REST API по стандарту OData? А оно есть!

Без единой строчки кода на 1С можно:
* читать или записывать практически любые данные в 1С,
* создавать документы из PHP-приложения (например, выставлять счета клиенту).

Добавив немного кода на 1С, получаем:
* 1С как headless-систему с готовой бизнес-логикой,
* 1С как сервис для формирования PDF- и Excel-документов по заранее заданным шаблонам,
* 1С как сервис по отправке юридически значимых электронных документов (в итоге проще, чем писать это с нуля на PHP).

Как вы поняли, мы пишем документооборот на PHP (Laravel) в компании, где активно используется 1С. Я с радостью поделюсь нашим опытом интеграции 1C в PHP-приложение.

Доклад принят в программу конференции

PHP generics

#PHP
#Разработка библиотек, включая open source библиотеки

Пару лет назад мне стало интересно, почему в PHP до сих пор нет дженериков, хотя RFC по их добавлению был создан еще в 2016 году. Пока я это выяснял, у меня получилось покопаться во внутренностях движка и написать библиотеку на PHP для поддержки базового синтаксиса.

В докладе я подробно расскажу, как можно внедрить дженерики в PHP.

Также вы узнаете:
* зачем нужны дженерики в слаботипизированном PHP;
* о подходах и проблемах реализаций дженериков в движке PHP;
* о системе типов PHP;
* чем может помочь типизация PHP разработчику.

Доклад принят в программу конференции

Как мы приготовили массу блюд с помощью одного ингредиента: GraphQL

В нашем виртуальном "ресторане" НЛМК существует единый корпоративный портал, которым пользуются больше 50 000 сотрудников Группы НЛМК в России, в Европе, в Индии и США. Когда-то он был только гостем, то есть потребителем данных, но, развиваясь, встал на кухню и начал поставлять данные.

В докладе вы узнаете, как соотносятся потребитель и поставщик информации, как перейти из гостей в повара: секретный ингредиент GraphQL на базе PHP, а также советы от бывалых о том, как внедрить GraphQL в ваш рацион, где он может вызвать несварение, а где будет максимально полезен.

Доклад принят в программу конференции

PHP, Долгоиграющие приложения (3)

RoadRunner: ускоряем PHP без фреймворка

Наталья Воронина

Национальный каталог

* Постараемся разобраться с возможностями RoadRunner.
* Рассмотрим альтернативные решения.
* Посмотрим на возможность перехода с php-fpm на RoadRunner.
* Ответим на вопрос, возможно ли его использование без фреймворка.
* Рассмотрим метрики реального перехода и профит от него.
* Взвесим плюсы и минусы перехода.

Доклад принят в программу конференции

Долгоиграющие приложения в PHP

#PHP
#Бэкенд / другое

Хоть PHP и был рождён, чтобы умирать, мы часто сталкиваемся с задачами, которые требуют работы нашего кода в течение более долгого промежутка времени, чем длится простой HTTP-запрос. Это могут быть как выгрузки данных для интеграции с партнерами, так и просто приложения, которые должны реагировать на события в системе в момент их появления. Конечно же, можно предложить использовать другие языки программирования, но это увеличит стек и усложнит систему.

Достаточно давно сформировался стереотип о том, что у PHP при долгой работе "течёт" память, да и, вообще, это не его пул задач. Но он уже неактуален, а нам стоит разобраться с тем, как же можно организовать работу приложений на PHP, которые работают существенно дольше, чем несколько секунд:
* какие классы задач могут решать такие приложения;
* какими средствами можно решать такие задачи;
* какие инструменты предоставляют сам язык и его сообщество;
* когда все-таки стоит двигаться в сторону расширения стека.

Доклад принят в программу конференции

PHP в асинхронном мире

Подготавливая доклад на реальных примерах, объясняющих асинхронную обработку с нуля, я понял, что примеров слишком много и выделить самый актуальный затруднительно. Серьезно, вы можете себе представить процесс в природе, который следует определенной последовательности или организованной очереди? И асинхронный не означает хаотичный.

Доклад принят в программу конференции

PHP, Хранение и импорт (4)

Безболезненная подгрузка миллионов товаров с сотен интернет-магазинов на PHP

#Поисковые системы
#Базы данных / другое

* Как эффективно выкачивать данные из тысяч xml-фидов, добавленных не доверенными пользователями.
* Набор жизненных кейсов — что может пойти не так в процессе загрузки и парсинга.
* Безопасные подходы к парсингу и оптимизации.
* Эффективная вставка данных в ElasticSearch (OpenSearch).

Доклад принят в программу конференции

ID-баттл: UUID vs автоинкремент

#PHP
#Базы данных / другое
#Архитектурные паттерны
#Алгоритмы и их сравнение

Почти восемь лет, занимаясь разработкой веб-приложений, я использовал для идентификации исключительно автоинкременты. И только 3,5 года назад я попробовал UUID в одном пет-проекте. С тех пор я и моя команда в Happy Inc. почти всегда выбираем UUID для идентификации чего бы то ни было. Мы научились коррелировать сущности разных модулей по идентификатору, пользоваться преимуществами разных типов UUID, одними из первых внедрили UUID v6. Автоинкременты мы тоже не списывали со счетов, они по-прежнему хороши в определённых случаях.

В рамках этого доклада я обобщу опыт моей команды и разложу по полочкам все “за” и “против” использования UUID и автоинкрементов в PHP-приложении. Мы обсудим актуальные способы генерации и хранения идентификаторов, изучим бенчмарки для разных сценариев и баз данных и подведём новую черту с пометкой "2022" под этим старым добрым холиваром.

Доклад принят в программу конференции

Эффективная работа с PostgreSQL в нагруженном PHP-проекте

Мало какой веб-проект обходится без базы данных. При росте проекта и росте нагрузки зачастую первые проблемы возникают не в PHP, а в СУБД и во взаимодействии приложения с СУБД.

В нашем проекте нагрузка на базы данных составляет ~100 000 tps, поэтому взаимодействие с СУБД всегда было в фокусе нашего внимания.

В докладе хотел бы всесторонне затронуть разные аспекты данной темы:
* эффективное подключение к БД;
* управление схемой данных;
* внедрение изменений схемы данных и миграции;
* создание эффективно работающих индексов и управление индексами;
* оптимизация запросов.

Темы буду раскрывать в контексте PHP-приложений, а именно на примере связки Symfony + Doctrine.

Доклад принят в программу конференции

Хождение по граблям PDO

О том, что скрывают за собой современные PHP ORM.

Как оказалось, PDO далеко неидеален. В нём несчётное количество "весёлых" нюансов и граблей, вылезающих при абстрагировании слоя для работы с базами данных.

Опыт разработчика Yii3 из первых рук.

Доклад принят в программу конференции

PHP, Инфраструктура (2)

Виртуализируй меня... полностью!

#PHP
#Автоматизация разработки и тестирования
#Enterprise-системы

Современная реальность требует современных решений. Именно поэтому все сложнее удивить кого-то словами Docker, контейнер или Kubernetes. Они являются неотъемлемой частью современной разработки приложений в компаниях.

В докладе рассмотрим вопросы запуска современных PHP-приложений внутри контейнеров, их особенности и нюансы. Также разберем типовые схемы работы с контейнерами PHP на уровне CI/CD-процессов в компании.

Доклад принят в программу конференции

PHP в облаках

#PHP
#Логи, метрики, ошибки

С ростом проекта и количеством серверов, классический подход к деплою PHP-приложений обычно сменяется на “докеризацию” приложений и релиз в kubernetes. И, помимо новых возможностей, этот переход имеет свои особенности, которые нужно учесть.

В докладе я расскажу вам про некоторые из таких особенностей и предложу варианты решения. Например:
* как изменится ваше приложение с переходом в k8s;
* как аккуратно работать с секретами при сборке;
* какие ещё контейнеры, кроме PHP-FPM стоит запускать в каждой реплике;
* как мониторить PHP-приложение в k8s и зачем это может быть нужно;
* как изменится ваш CI/CD.

После доклада вы будете более подготовленными к переходу в облако или сможете улучшить вашу текущую архитектуру.

Доклад принят в программу конференции