Serverless продаётся как технология без серверов с автоматическим масштабированием и полной экономичностью. Но реальность сложнее.
Антон Черноусов в своём докладе на DevOps конференции 2023 года развенчивает основные мифы о serverless и рассказывает, как на самом деле работает эта технология.
Основные темы доклада
- Как устроен serverless изнутри
- Мифы об автомасштабировании
- Экономическая эффективность
- Культура разработки
- Контейнеры и миграция
Доклад будет полезен всем, кто думает о переходе на serverless или уже использует эту технологию и хочет понять её ограничения и лучшие практики.
Переход к микросервисам даёт гибкость, но разрушает привычную целостность данных: в разных сервисах — свои БД, и провести единую ACID-транзакцию почти невозможно.
Saga и Two‑Phase Commit (2PC) — два основных подхода.
Saga разбивает операцию на шаги + компенсирующие действия при ошибке, давая eventual-consistency и масштабируемость.
2PC пытается сохранить атомарность через координацию участников, но требует блокировок, тяжело масштабируется и ощущается как “распределённый монолит”.
Детальный разбор и сравнение подходов
Разбор шести недооценённых возможностей PostgreSQL, которые способны заметно упростить разработку и улучшить читаемость SQL.
В статье показано, как использовать identity-колонки без боли, эффективно работать с NULL через COALESCE и NULLIF, строить сложную аналитику с GROUPING SETS, ROLLUP и CUBE, применять CTE для структурирования запросов, создавать безопасные домены и писать более чистые JOIN’ы через USING.
Кратко, практично и с примерами, которые можно внедрить сразу
Читать статью
История масштабирования Uber: от MVP на LAMP стеке в 2009м через монолитный Postgres в 2014м и до полноценной микросервисной архитектуры на Go и Java с 2020го.
Погружение в детали работы EXPLAIN в PostgreSQL: как читать планы запросов, когда появляется и как работает каждый из узлов, какую информацию можно получить из атрибутных строк.
Пишу юнит-тесты почти 5 лет и основные сражения, которые я видел по их поводу, заключались только в том - писать по TDD или нет.
Но сегодня наткнулся на то, что оказывается есть два способа тестирования - классический из Детройта и мокистский из Лондона.
Основная разница только в том, какая часть является юнитом и какие зависимости нужно заменять заглушками с ожидаемым поведением. В классической школе - юнитом является поведение и заглушками заменяются только те зависимости, которые могут повлиять на другие тесты или являются внешними - БД, файловая система, http-запросы. А при лондонском подходе - почти все зависимости заменяются на заглушки и тестируется только отдельный класс и его методы. Это делает тесты по-настоящему изолированными.
Читая очередную статью про распределенные системы, наткнулся на интересный факт: New York Times использует Kafka в качестве основной базы данных для всех своих статей.
“Всех” означает что каждая статья, каждая ее правка, каждый заголовок с пометкой “молния” - хранится в брокере сообщений и никогда не будет удален. А это более чем 170 лет истории.
Нашел статью, в которой описан сам подход к log-based архитектуре, а также то, как конкретно это реализовано у New York Times.
Павел Агалецкий, ведущий инженер в Авито, расскажет, как в компании построили надежную во всех смыслах шину данных для обмена событиями между сервисами на основе Apache Kafka.
Как эволюционировала шина, как гарантируется соблюдение контрактов публикуемых событий и какие есть способы переживать даже отказ дата-центра.
Смотреть видео
Для тех кто выдержал пять часов про динамическое программирование - сегодня я принес восемь часов про структуры данных.
Видео представляет из себя компиляцию нескольких последовательных уроков, которые охватывают как классические структуры, так и менее популярные - например Union Find.
Для каждой структуры данных есть разбор сложности базовых операций, а также ее имплементация.
В целом - даже если вы знаете на зубок все что представлено в уроках - они станут отличным способом упорядочения информации в голове.
Пятичасовое видео с примерами решения типовых алгоритмических задач из категории динамического программирования.
Автор показывает два подхода к решению одной и той же задачи - при помощи мемоизации и табуляции, а также во всех случаях объясняет сложности по времени и памяти.
Смотреть видео
В 2020м году сервис Notion получил увеличение нагрузки на их монолитную базу и стало понятно, что использование продукта превышает возможности, которые может позволить себе Postgres в виде базы без шардов.
Сегодня я принес вам статью, в которой инженеры Notion делятся своим опытом по шардированию базы Postgres.
Читать статью
Статья про интересный подход к написанию чистого кода.
Не только с точки зрения архитектурных подходов, но и со стороны нашей долгосрочной и краткосрочной памяти, а также того как она работает во время чтения кода.
Читать статью