Posts

Демистификация Serverless: мифы и реальность разработки

Serverless продаётся как технология без серверов с автоматическим масштабированием и полной экономичностью. Но реальность сложнее.

Антон Черноусов в своём докладе на DevOps конференции 2023 года развенчивает основные мифы о serverless и рассказывает, как на самом деле работает эта технология.

Основные темы доклада

  • Как устроен serverless изнутри
  • Мифы об автомасштабировании
  • Экономическая эффективность
  • Культура разработки
  • Контейнеры и миграция

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

Распределённые транзакции в микросервисах

Переход к микросервисам даёт гибкость, но разрушает привычную целостность данных: в разных сервисах — свои БД, и провести единую ACID-транзакцию почти невозможно.

Saga и Two‑Phase Commit (2PC) — два основных подхода.

Saga разбивает операцию на шаги + компенсирующие действия при ошибке, давая eventual-consistency и масштабируемость.

2PC пытается сохранить атомарность через координацию участ­ников, но требует блокировок, тяжело масштабируется и ощущается как “распределённый монолит”.

Детальный разбор и сравнение подходов

Недооценные возможности Postgres

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

В статье показано, как использовать identity-колонки без боли, эффективно работать с NULL через COALESCE и NULLIF, строить сложную аналитику с GROUPING SETS, ROLLUP и CUBE, применять CTE для структурирования запросов, создавать безопасные домены и писать более чистые JOIN’ы через USING.

Кратко, практично и с примерами, которые можно внедрить сразу

Читать статью

Погружение в PostgreSQL EXPLAIN

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

Школы юнит-тестирования: Detroit vs London

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

Но сегодня наткнулся на то, что оказывается есть два способа тестирования - классический из Детройта и мокистский из Лондона.

Основная разница только в том, какая часть является юнитом и какие зависимости нужно заменять заглушками с ожидаемым поведением. В классической школе - юнитом является поведение и заглушками заменяются только те зависимости, которые могут повлиять на другие тесты или являются внешними - БД, файловая система, http-запросы. А при лондонском подходе - почти все зависимости заменяются на заглушки и тестируется только отдельный класс и его методы. Это делает тесты по-настоящему изолированными.

New York Times использует Kafka как основную БД

Читая очередную статью про распределенные системы, наткнулся на интересный факт: New York Times использует Kafka в качестве основной базы данных для всех своих статей.

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

Нашел статью, в которой описан сам подход к log-based архитектуре, а также то, как конкретно это реализовано у New York Times.

Kafka в Avito: надёжная шина данных

Павел Агалецкий, ведущий инженер в Авито, расскажет, как в компании построили надежную во всех смыслах шину данных для обмена событиями между сервисами на основе Apache Kafka.

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

Смотреть видео

8 часов про структуры данных

Для тех кто выдержал пять часов про динамическое программирование - сегодня я принес восемь часов про структуры данных.

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

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

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

Курс по динамическому программированию

Пятичасовое видео с примерами решения типовых алгоритмических задач из категории динамического программирования.

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

Смотреть видео

Как Notion шардировал PostgreSQL

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

Сегодня я принес вам статью, в которой инженеры Notion делятся своим опытом по шардированию базы Postgres.

Читать статью

Правило шести: чистый код и когнитивная наука

Статья про интересный подход к написанию чистого кода.

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

Читать статью