5 апреля 2018

Базы данных и микросервисы на Backend Conf и другие новости

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

Оптимизация SQL-запроса на базе возможностей PostgreSQL с версии 9.4

Оптимизация SQL — дело тонкое, особенно когда необходимо объединить две таблицы, где в одной 30 миллионов записей, а в другой — 60. И даже при наличии хорошего индекса один запрос выполняется за 3.716 ms, а другой 185914.487 ms. В такие моменты приходится применять «магию», которая появилась в PostgreSQL с версии 9.4.

Если вы хотите узнать, как ускорить выполнение запроса в хорошем случае в три раза, а в ужасном в 200000 раз. Если вы еще не слышали о WITH RECURSIVE, UNNEST WITH ORDINALITY, JOIN LATERAL, приходите на доклад Павла Сарабеева (МИА Россия Сегодня) и узнаете, как, казалось бы, простой SQL-запрос превращается в 8 килобайт, но при этом работает значительно эффективнее.

Система онлайн-репликации данных между континентами: Amazon S3 — облако Mail.ru

Александр Сербул из 1С-Битрикс в своем докладе обещает рассказать об особенностях lambda-архитектур, платформе микросервисов Amazon Lambda, а также подводных камнях и победах с Node.JS и многопоточной Java. Поделиться опытом организации промежуточного дифференциального хранилища и рассказать о непростом выборе между LMDB, LevelDB, Apache Derby и Berkeley DB. В докладе Александр уделит особое внимание тонкостям использования инфраструктуры очередей на базе Amazon SQS, NoSQL в DynamoDB и мониторингу системы для предотвращения потерь данных клиентов и минимизации рисков последствий отказов и аварий дата-центров.

Eventual consistency при производстве пиццы

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

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

Микросервисная архитектура, подходы и технологии

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

Ближайшее повышение цен 8 апреля!

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

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

Сравнение открытых OLAP-систем Big Data: ClickHouse, Druid и Pinot

ClickHouse, Druid и Pinot — три открытых хранилища данных, которые позволяют выполнять аналитические запросы на больших объемах данных с интерактивными задержками. Роман Левентов, получив информацию из первых рук, представил свое спорное видение ситуации.

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

ClickHouseDruid или Pinot
В организации есть эксперты по C++ В организации есть эксперты по Java
Малый кластер Большой кластер
Немного таблиц Много таблиц
Один набор данных Несколько несвязанных наборов данных
Таблицы и данные находятся в кластере перманентно Таблицы и наборы данных периодически появляются в кластере и удаляются из него
Размер таблиц (и интенсивность запросов к ним) остается стабильным во времени Таблицы значительно растут и сжимаются
Однородные запросы (их тип, размер, распределение по времени суток и т.д.) Разнородные запросы
В данных есть измерение, по которому оно может быть сегментировано, и почти не выполняется запросов, которые затрагивают данные, расположенные в нескольких сегментах Подобного измерения нет, и запросы часто затрагивают данные, расположенные во всем кластере
Облако не используется, кластер должен быть развернут на специфическую конфигурацию физических серверов Кластер развернут в облаке
Нет существующих кластеров Hadoop или Spark Кластеры Hadoop или Spark уже существуют и могут быть использованы

А подробный рассказ о том, как Роман пришел к таким выводам в статье.

SOA: послать запрос на сервер? Что может быть проще?!

Если про разработку в Booking.com вы слышали только то, что архитектура у них монолитная, хотим вас разубедить — Booking.com меняется, меняется стек, постепенно внедряется Java, и термин сервис-ориентированная архитектура (SOA) слышится все чаще и чаще. Рассказ Ивана Круглова об этих изменениях с точки зрения взаимодействия внутренних компонентов, о западне циклически зависимых воркеров и о том, какими средствами можно все это исправить.

Плюсы сервис-ориентированной архитектуры, заключающиеся, в частности, в слабой связанности, независимом деплое и независимой разработке, общепонятны, так же, как и минусы — снижение гибкости в перераспределении человеческих ресурсов, сложная инфраструктура, сложность внесения атомарных изменений. Статья фокусируется на еще одном минусе — Remote Procedure Call. Он проистекает из того, что, если в монолитной архитектуре для того, чтобы сделать какую-то операцию, достаточно вызвать нужную функцию, то в SOA придется делать удаленный вызов. Сначала на опыте Booking.com посмотрим, что же может пойти не так, а потом узнаем, какие компоненты нужны, и что нужно делать, если вы хотите построить предсказуемую систему RPC — фреймворк с предсказуемым поведением системы в граничных условиях. Иван расскажет о том, какие возможны подходы, без привязки к конкретному сервису.

C++ Russia в Санкт-Петербурге

И последнее, меньше чем через три недели, 19 апреля, стартует трёхдневная конференция C++ Russia в Санкт-Петербурге. Конференция о C++ и всём, что вокруг: новый стандарт, сборка и отладка C++ проектов, функциональный подход, модель памяти, конкурентность и параллелизм и многое другое. На конференции выступят Jon Kalb, Andrei Alexandrescu, Ivan Čukić, Антон Полухин, Михаил Матросов и другие докладчики.

Первый день конференции посвящен мастер-классам: можно прокачаться в функциональном программировании на C++, многопоточности, построении своего Continuous integration или узнать о том, как можно ускорить ваши программы с применением самых последних новинок стандарта.

Подробнее почитать про доклады и мастер-классы, а также купить билеты вы можете на сайте конференции: http://cppconf.ru/

До скорого!