Книжный куб
11.1K subscribers
2.66K photos
6 videos
3 files
1.96K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Материалы к четвертому выпуску Code of Architecture по книге "Building Evolutionary Architectures"

Вчера у нас прошел четвертый стрим по книге и мы упоминали следующие книги и концепции:
- Книга "Рефакторинг баз данных: эволюционное проектирование (Refactoring Databases: Evolutionary Database Design)" - старая книга 2006 года, на основе которой авторы написали обсуждаемую главу. Pramod Sadalage - является соавтором как старой книги, так и новой. В этой книге обсуждалось то, как жилось раньше во времена, когда RDBMS были доминирующей силой и они предоставляли гарантии ACID
- Книга "NoSQL. Методология разработки нереляционных баз данных (NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence)" - старая книга 2012 про NoSQL базы, что пришли вслед за RDBMS. В этой книге Pramod Sadalage тоже является соавтором. Кстати, NoSQL решения уже не предоставляли гарантии ACID, а ограничивались BASE (Basically Available, Soft-state, Eventually-consistent)
- Концепция NewSQL, которая пришла вслед за стандартными RDBMS и NoSQL решениями. Основная особенность в том, что клиенты такой базы получают в ней одновременно и ACID гарантиии на транзакции и горизонтальное масштабирование как в NoSQL решениях. Но ничего не дается бесплатно, поэтому такие базы обычно сложно устроены внутри и нетривиальны с точки зрения operations
- Отдельно мы вспоминали про GDPR и штрафы за его несоблюдение, например, за бесконечное хранение данных пользователей.
- Плюс много историй было про Snowflake и есть вот такое крутое видео от Николая, где он про него рассказывает
- Кроме того, мы упоминали и другие базы данных из категории NewSQL
- - Google Spanner - один из первых представителей класса NewSQL решений. Подробнее рекомендую почитать в white paper. Есть в облаке Google в формате Google Cloud Spanner
- - CockroachDB - другая NewSQL база данных, которую написали выходцы из Google, вдохновляясь Google Spanner. Подробнее в white paper. В прошлом году ребята из Cockroach Labs анонсировали CockroachDB Serverless в GA (generally available)
- - YDB - другая NewSQL база данных, но уже от Yandex. Примечательно, что тут другой подход к транзакциям, а именно детерминированные транзакции Calvin, подробнее в white-paper. Она доступна в Yandex Cloud

#SoftwareArchitecture #Architect #CoA #Databases #Data #SoftwareDevelopment #SystemDesign #DistributedSystems
👍7🔥2
Бонусный выпуск Code of Architecture по white paper "Amazon Aurora: Design Considerations for High Troughput cloud-Native Relational Databases"

Завтра вечером в 18:00 по Москве у нас будет выпуск Code of Architecture про интересную база данных Amazon Aurora. Она интересна как с точки зрения маркетинга, так и технически:
- Этот технический продукт внутри AWS особо отмечал Джефф Безос в своих ежегодных письмах акционерам за 2014 и 2015 года
- Этот технический продукт - это реализация концепции "the log is a database"

Сам документ состоит из следующих частей
- Introduction - здесь авторы обсуждают проблему, которую можно охарактеризовать так "The I/O bottleneck faced by traditional database systems changes in cloud environment"
- Durability at cloud scale - подход к рассмотрению буковки D из знакомого всем акронима ACID, как размышлять про кворумы, кореллированные ошибки и сокращать MTTR (mean time to recovery) за счет разделения данных на сегменты
- The log is the database - как превратить redo лог в основной элемент базы данных и материализовывать остальные сущности асихронно
- The log marches forward - основная часть про логику работы log sequence number в нормально состоянии и в случае отказов
- Putting it all together - раздел с красивой картинкой, где показана общая архитектура, собирающая воедино мысли из предыдущих разделов
- Performance results - результаты бенчмарков, которые показывают ради чего затевался весь сыр-бор
- Lessons learned - рассказ почему Aurora хороша для SaaS приложений, про эволюцию схемы внутри бд и как патчить саму Aurora без downtime
- Related work - в этом разделе описываются связанные работы

В общем, если обобщать, то этот white paper - отличный пример интересного дизайн-документа. Поэтому его будет интересно обсудить с нашими гостями:
- Игорь Маслов - руководитель управления базовых технологий и обработки данных Тинькофф
- Виталий Кондратов - архитектор в управлении базовых технологий

#Databases #CoA #Architecture #SoftwareArchitecture #SystemDesign #DistributedSystems #Cloud
🔥10👍32
Книжный клуб CoA — обсуждение Amazon Aurora

Вчера мы встретились книжным клубом Code of Architecture для обсуждения white paper "Amazon Aurora: Design Considerations for High Throughput cloud-Native Relational Databases". Общение прошло отлично и в итоге у нас появился набор артефактов:
- статья с кратким саммари самого white paper
- доска в Miro
- запись трансляции

#Databases #CoA #Architecture #SoftwareArchitecture #SystemDesign #DistributedSystems #Cloud
6👍4
Data Pipelines Pocket Reference

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

#Data #Databases #Engineering #SoftwareArchitecture #Software #SoftwareDevelopment #Management
👍8🔥42
Apache Kafka. Потоковая обработка и анализ данныз (Kafka: The Definitive Guide)

Все привыкли, что я читаю книги достаточно быстро, но вот с этой книгой получилось не так - пока я читал перевод первого издания вышло второе:) Первое издание вышло осенью 2017 году, а второе в конце 2021. Первое издание состоит из 11 глав

1. Meet Kafka - в этой главе мы встречаемся с главным героем и знакомимся с базовыми понятиями обмена сообщениями, дальше мы узнаем про основы Kafka: сообщения и пакеты, схемы сообщений, топики и партиции, producers и consumers, а также как выглядят сами брокеры и как они объединяются в кластера.
2. Installing Kafka - здесь авторы рассказывают про установку Kafka и на что обращать внимание при выборе железа (интересно, что во втором издании авторы делают больший акцент на переезде в облака)
3. Kafka Producers: Writing Messages to Kafka - здесь обсуждаются вопросы записи в Kafka (само название говорит о том, что эта система ориентирована на писателей:) ). Здесь говорится про конфигурацию producers, сериализацию и работу с партициями
4. Kafka Consumers: Reading Data from Kafka - здесь идет речь про то, как читать из Kafka и управлять оффсетом через разные варианты коммитов: автокоммит, асинхронный и синхронный коммит
5. Kafka Internals - эта часть интересна тем, кто любит заглядывать под копот. Тут идет речь про то, как работает сам кластер, как реализуется членство в кластере, что такое контроллер, как выглядит репликация, а дальше обработка запросов (на запись и на чтение), а дальше как работает физический уровень
6. Reliable Data Delivery - здесь обсуждаются гарантии доставки и как их обеспечить за счет совместной работы producer, Kafka и consumers. Здесь как раз можно почитать про семантику at least once и exactly once в Kafka
7. Building Data Pipelines - здесь кратко рассказывается про ETL пайплайны и работу с Kafka Connect (подробнее на эту тему рекомендую почитать Data Pipelines Pocket Reference)
8. Cross-Cluster Data Mirroring - про репликацию данных между кластерами и что лучше стягивать данные с удаленного кластера, чем их пушить в удаленный кластер (если есть такая возможность)
9. Administering Kafka - вопросы администрирования Kafka, здесь зарыто достаточно сложности, но эту часть определенно стоит почитать, если у вас Kafka в production:)
10. Monitoring Kafka - здесь обсуждаются вопросы мониторинга и они по большей части относятся к мониторингу java приложений и дальше использованию JMX для получения данных для мониторинга из процессов Kafka
11. Stream Processing - это интересный раздел про потоковую обработку, который подан очень сжато, но позволяет понять область применимости Kafka Streams API

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

#Data #Databases #Engineering #SoftwareArchitecture #Software #SoftwareDevelopment #Management #Queue
👍133🔥1
Вакансии в наши команды DBaaS (Database as a Service)

Я очень люблю распределенные системы, архитектуру, дизайн систем. А самое интересное в этом та часть, где хранится state или по простому базы данных. Причем базы данных бывают разные и сейчас у нас в компании активно разрабатывается продукты Database as a Service (пока Postgres и Cassandra). И если вы любите базы как я и еще умеете писать код на Python или Go, то вы можете присоединится к этой команды.

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

А вот какие планы по развитию этих продуктов
Сейчас мы предлагаем пользователям кластера PostgreSQL и Cassandra, однако планируем расширять список поддерживаемых БД. Запускаемые нагрузки активно растут, сейчас это сотни команд и тысячи кластеров, однако ожидаем десять+ тысяч кластеров. Одним словом - огромное количество возможностей для развития и прокачки скиллов в условиях решения нетривиальных задач, с которыми сталкиваются только крупнейшие компании. Сейчас большинство БД работает на виртуальных машинах в приватном облаке, однако в ближайшее время мы планируем запускать наши БД на Baremetal K8s для улучшения производительности.

Вот стек и конкретные задачи, которыми можно будет заняться прямо сейчас
Пишем на Python и Golang, c упором на надежность кода и полное покрытие тестами. Сейчас есть много продуктовых и технических целей как в части подключения Change Data Capturing в PostgreSQL, реализации Disaster Recovery Plan, так и в части управления конфигурациями, инфраструктуры, K8s и разработки Control Plane. Наша команда самостоятельно проектирует, декомпозирует, прототипирует и реализует такие задачи.

Немного про условия
Трудоустройство возможно как в РФ, так и в странах СНГ с Центрами Разработки Тинькофф.

Если вам хочется заниматься такими задачами, то напишите мне в личку (@apolomodov) и дальше я пообщаюсь с вами и познакомлю с коллегами.

#Vacancy #Databases #SoftwareDevelopment #Engineering #Architecture #Architect
6👍4🔥4
Материалы из Code of Architecture про базы данных и распределенные системы

В продолжении поста хочу поделиться материалами из клуба Code of Architecture
- Design Data-Intensive Applications (вот плейлист)
- Database Internals - (вот статьи с краткими саммари каждого выпуска: 1, 2, 3 и 4)
- Distributed Systems, 4th Edition (вот статья с ссылками на все выпуски и кратким саммари)
- Обсуждение white paper "Amazon Aurora" (статья с саммари)

Ради интереса я попросил модель Сбера "Кандинский 2.2" нарисовать картинку к посту по описанию "База данных как сервис с логотипами postgres и cassandra" в стиле kandinsky и получилось забавно:)

#Vacancy #Databases #SoftwareDevelopment #Engineering #Architecture #Architect
👍103🔥2
POSTGRES: The First Experience (POSTGRES: Первое знакомство)

Эта книга отлично подходит для начинающих знакомиться с популярной базой данных Postgres. Авторами книги являются Pavel Luzanov, Egor Rogov, Igor Levshin, причем Егор Рогов является еще и автором книги "PostgreSQL 15 изнутри", а про эту книгу я уже рассказывал. И хоть книга про внутрянку Postgres хороша, но она сложновата для старта, а сегодняшняя книга отлично для этого подходит. Она состоит всего из 175 страниц, что разделены на 12 глав, представленных ниже. Скачать книгу можно здесь: русская версия, английская версия

1. PostgreSQL — what is it all about? - рассказ про возникновение и развитие проекта postgres
2. What’s new in PostgreSQL 15 - changelog изменений в версии 15 по сравнению с 14 версией
3. Installation on Linux and Windows - простенькая инструкция про установку postgres, чтобы с ней можно было поиграться
4. Connecting to a server, writing SQL queries, and using transactions - пример работы с postgres через командную строку с выполнением DDL (Data Definition Language), DML (Data Manipulation Language), DCL (Data Control Language), TCL (Transaction Control Language) или по простому: create table, alter table, drop table, select, insert, delete, update, grant, revoke, begin/commit, rollback
5. Learning the SQL language on a demo database - демо на примере букинга отелей, покупки билетов, аэропортов и так далее. Эту демо-базу можно скачать и поиграть с запросами посложнее, включая функции агрегации, оконные функции, работу с массивами, рекурсивные запросы, а также работу с расширениями.
6. Using PostgreSQL with your application - глава с рассказом о том, как заводить пользователей для отдельных приложений. Дальше удаленными подключениями из программного кода (php, perl, python, java). Дальше идет рассказ о том как делать бекапы.
7. Minimal server setup - глава про настройки postgres и как они влияют на работу системы. Здесь на сцене появляются настройки: буфферов (shared_buffers), размера кеша (effective_cache_size), рабочей памяти (work_mem), настройки autovacuum, настройки костов для планировщика запросов (random_page_cost и seq_page_cost). Интересно, что в книге приводит настройка 1C.
8. About a useful pgAdmin application - глава про использование UI для конфигурирование postgres
9. Advanced features: full-text search, JSON format, foreign data wrappers - рассказ про дополнительные фичи, доступные в postgres, среди которых есть полнотекстовый поиск, который не сравнится с условным elastic, sphinx, но для части вещей подойдет. Другая крутая фича jsonb, которая позволяет использовать postgres как документо-ориентированную базу данных (залезая на террирторию MongoDB), причем мы можем индексировать поля внутри jsonb. Ну и финальная фича - это внешние интеграции через foreign-data wrapper.
10. Education and certification opportunities - здесь идет речь про обучение и сертификации, которые есть у компании Postgres Professionals и какие области они покрывают.
11. Keeping up with all updates - описание источников для получения дополнительной информации: mailing list, конференции
12. About the Postgres Professional company - описание компании Postgres Pro, вендора Postgres из России, в которой работают авторы этой книги

#Databases #DistributedSystems #Architecture #SoftwareArchitecture #Software
👍142🔥1
Designing A Data-Intensive Future: Expert Talk • Martin Kleppmann & Jesse Anderson • GOTO 2023

Это крутое интервью от топовых специалистов
- Мартина многие знают как автора классической книги с кабанчиком ("Designing Data-Intensive Applications"), сейчас он больше исследователь и занимается так называемым "Local-First Collaboration Software" (automerge) - подробнее можно посмотреть в выступлении Мартина, которое я разбирал месяц назад
- Jesse я узнал в качестве автора книги "Data Teams", а также автора интересного выступления "Why Most Data Projects Fail and How to Avoid It", про который я рассказывал 2 месяца назад
Оба участника превосходно шарят в теме разговора и их интересно слушать. Вот тут доступна расшифровка.

Ниже тезисно расскажу основные мысли
Мартин рассказывает про свою книгу "DDIA", котороя про основы работы с данными и широкий ландшафт технологических решений (на момент 10 лет назад, когда Мартин начинал писать книгу)
Мартин планирует написать второе издание книги, в котором он рассмотрим вопросы
- Рост популярности cloud-native приложений и разработку распределенных приложений слоями, когда одна распределенная система опирается на нижележащую распределенную систему и так далее - рекомендую про это подробнее прочитать в whitepaper от ребят из Google "Deployment Archetypes for Cloud Applications", про которую я рассказывал раньше
- Закат Map-Reduce, чью поляну забрали cloud DWH с точки зрения аналитики и стриминговые системы с точки зрения приложений с кастомной логикой
Мне нравится, что Мартин продолжить и во второй книге использовать подход
So I'm not telling people what to do, I'm telling people what questions to ask.

Правда, написание новой книги идет не быстро, поэтому ждать ее скоро не стоит.
Потом Martin и Jesse обсуждают концепцию единого инструмента для всех задач, связанных с данными, и приходят к выводу, что если бы такой инструмент был, то он бы делал все эти задачи плохо. Поэтому Martin говорит о том, что надо использовать правильные инструменты для конкретных задач, например, удобно начинать с реляционной базы данных, которая достаточно гибкая и производительная. Круто использовать streaming systems для того, чтобы иметь потом возможность переключиться на более удобное решение
For example, you could run both consumers side by side for an amount of time, check the consistency across the two systems, and then eventually decide to switch over from the old one to the new one. Streaming systems allow that so much better than, for example, systems based on, like, doing calls to individual services. So I feel like, as you said, the streaming can help with making change easier there.

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

Дальше Мартин вспоминает про automerge, что я упоминал в начале и потом переходит на тему работы ученым и почему он переключился после 10 лет пребывания в стартапах на стезю ученого и как это позволяет ему лучше продумывать сложные идеи в области distributed systems. А также почему так мало PhD диссертаций превращаются в рабочие системы (значимое исключение Apache Flink).

Ну и напоследок участники дают советы
- Мартин: "I guess my recommendation would be to learn just enough about the internals of the systems that you're using so that you have a reasonably accurate mental model of what's going on there."
- Jesse: "There are a lot of paths out there. Pit's to look out the various paths, look at what you want to do and what your skills are and see if one of those applies to you", где приведены карьерные варианты: разработка, менеджмент, наука, консалтинг, devrel. И в зависимости от сильных сторон и предпочтений, стоит выбрать свой путь.

#Management #Data #Databases #SystemEngineering #DistributedSystems #Software #Architecture
👍21🔥54
How Data & Software Eng. Teams Collaborate to Ensure Smooth Data Integrations • Sam Bail • GOTO 2023

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

Сетап проблемы выглядит так
Product manager: We’re launching this awesome new feature next month! And we need analytics from day 1! Let’s GOOO!
Data team: HOLD ON! Lemme talk to the software engineering team first and see what their data architecture looks like…


А дальше доклад посвящен следующим темам и выстроен в виде важных вопросов, которые обычно задает Sam в очередном проекте
1. Logistics - нужны доки, нужны встречи и понятная зона ответственности, понятные коммуникации, ответы на вопросы: что мы планируем измерять и когда (уже в первый день, неделю, месяц, ...). Как сделать так, что команда разработки была в синке с аналитикой.
2. Infrastructure - где хостятся данные, какой там тип хранилища, могут наши ETL инструменты с этим справиться, нужен ли SSH туннель. Есть ли prod и dev инстансы, мы используем реплики для получения данных? Нужен ли нам доступ на запись? Что мы делаем с credentials (личные они или общие, как мы их шарим). Когда удастся получить доступ к данным? На dev или prod?
3. Data model - как выглядит схема данных, есть ли документация, кто поддерживает изменения в схеме и кто и как их коммуницирует? Как будет выглядеть data constraints enforcing (foreign key relationship, NULL values, default values, JSON schemas)? Как обрабатываются таймзоны в датах, валюты? Действительно ли мы сохраняем все, что хотим измерять?
4. Application and data flow - как и когда записи создаются и поля заполняются значениями? Какие действия вызывают модификации значений? Как события модификаций данных логируются (поле updated_at или отдельная таблица с событиями логирования)? Как будут обработаны удаления (hard или soft удаления)? Архивируются ли "старые" данные? Нужна ли миграция данных из старого приложения? Будут ли реалистичные тестовые данные, на которых можно будет разрабатывать? Будут ли тестовые данные в production среде?
5. Data contracts - как будут документированы договоренности из пунктов 1-4? И как мы будем обеспечивать их соблюдение в будущем не требуя слишком большого человеческого участия? Что из этого можно вынести в CI/CD и проверять на стороне производителе данных (а не как обычно на стороне потребителя)? Как нужно будет коммуницировать об изменениях и кого надо будет информировать об этом? Что делать, если что-то сломается? Как надо будет репортить о проблемах, а также какое SLA будет на фиксы?

Автор обобщает весь доклад тремя пунктами
- Integrating data from a new source into your data warehouse isn’t just “plug n play”
- There are an infinite number of questions to consider. You will probably miss something.
- The key is connection and context between teams.


А дальше, если все сделать правильно, то проблема из самого начала превращается в
Product manager: Look at this awesome new feature! And the dashboard to track all these cool metrics!
Data team: Well it’s not everything you asked and it was a bit bumpy getting there, but it works! Go team!


#Data #Software #SoftwareDevelopment #Engineering #Management #Leadership #Databases
🔥5👍43