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

Автор книги является сооснователем kubernetes, поэтому его опыт в проектировании распределенных систем является довольно актуальным:) Книга мне показалось хорошей, но одновременно слишком простой. Но за счет этого она отлично подойдет новичкам вступающим на запутанную дорожку distributed systems:)

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

Все паттерны даются в контексте контейнеров и их оркестрации, книга содержит практические примеры, для реализации которых используется инсталляция kubernetes и его примитивы, такие как pods, deployments, services, etc. Ближе к концу книги вы попробуете использовать helm для разворачивания etcd, kafka и иже с ним.

В первой части рассматриваются паттерны:
- sidecar: для https, динамической конфигурации и метрик
- ambassador: для использования шардированного сервиса и для сплита трафика для тестирования разных версий
- adapters: мониторинг, журналирование

Во второй части рассматриваются:
- репликация: для stateless сервсиов, sticky sessions, кеширование, …
- шардирование: консистентный хеш, шардирование реплицированных сервисов, …
- scatter-gather: распределенный поиск по документам
- FaaS и events: преимущества и недостатки FaaS, реализация декораторов на функциях
- ownership election: локи для распределенных систем

В третьей части рассматриваются паттерны проектирования систем пакетных вычислений:
- системы на основе очередей задач
- событийно-ориентированная пакетная обработка
- координированная пакетная обработка

#DistributedSystems #Architecture #SoftwareArchitecture #SystemDesign #Software #SoftwareDevelopment
👍16🔥4
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions (Шаблоны интеграции корпоративных приложений. Проектирование, создание и развертывание решений)

Эта классическая книга по паттернам интеграции, которая была издана почти 20 лет назад. Сегодня я решил про нее вспомнить, так как начал читать свеженькую книгу одного из соавторов, а именно Gregor Hophe "The Software Architecture Elevator" и дальше вспомнил, что про паттерны интеграции я еще в этом канале не вспоминал:)

Несмотря на недавнее совершеннолетие данная книга все еще является достаточно актуальной, ну за исключением главы “Новые стандарты и перспективы интеграции корпоративных приложений”:) А если серьезно, то в самом начале книги (2 глава) дается отличный обзор разных стилей интеграции приложений:
- передача файла (file transfer)
- общая база данных (shared database)
- удаленный вызов процедуры (remote procedure invocation)
- обмен сообщениями (messaging)
Для каждого из вариантов обсуждаются плюсы и минусы:) Исходя из названия книги, можно понять, что авторы, оценив и взвесив все варианты, останавливаются на интеграции путем обмена сообщениями.

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

#SoftwareDevelopment #SoftwareArchitecture #Architecture #SystemEngineering #DistributedSystems #SystemDesign #Patterns
👍232🔥1
Центральная станция (Central station)

Эта книга Леви Тидхара понравилась мне своей атмосферой будущего. Какого-то одного героя в книге нет, если не считать Станцию, на которой развиваются события и проносится жизнь разных персонажей, совмещающих жизнь в реале и виртуальности. Читать определенно интересно и есть отсылки как к реальным технологиям, достигли нового уровня, например AI, AR/VR, генная инженерия и биотехнологии в общем, так и на другую популярную фантастику. В общем, книга мне показалась заслуживающей прочтения:)

#SciFi
👍16
Computing machinery and intelligence (Вычислительные машины и разум)

Это знаменитая статья Алана Тьюринга опубликованная в 1950 году в журнале Mind. В этой статье автор описал свой подход при поиске ответа на вопрос “Может ли машина мыслить”. Сейчас этот подход зачастую называют тестом Тьюринга, а сам автор назвал это игрой в имитацию. Знакомство с этим подходом сейчас как никогда актуально с учетом новой волны хайпа вокруг чатботов, которые умеют достаточно неплохо вести диалоги с пользователями.
Суть подхода Алана в том, что вопрос “может ли машина мыслить” слишком общий. Для того, чтобы на него ответить придется дать сначала определение того, что такое машина, потом что такое мыслить. Причем определение того, что мы понимаем под мышлением машины и мышлением человека может не совпасть. Поэтому Тьюринг предлагает сделать шаг в сторону и заменить изначальный вопрос на тот, что может быть относительно легко проверен, а именно сможет ли машина отвечать на вопросы человека так, чтобы он счел ее человеком. Если машина на это способна, то она проходит тест, который в наше время называется тестом Тьюринга. Забавно, что большую часть книги автор борется с возможными контраргументами относительно такого перехода и дальше относительно главного вопроса, причем борется успешно.

Чуть больше подробностей про контраргументы можно прочиитать в моей статье на Medium.
Плюс можно посмотреть фильм про Алана Тьюринга "Игра́ в имита́цию" ("The Imitation Game"), в котором рассказывается о вкладе Алана во взлом немецкой Энигмы во время второй мировой войны.

#ComputerScience #AI #PopularScience #ML #Software #Engineering
👍121🔥1
Сегодня вечером в 18:00 по Мск будет шестой выпуск клуба "Code of Architecture" по книге "Распределенные системы" ван Стина и Таненбаума, в котором мы обсуждаем главу про именование. Предыдущие выпуски были посвящены общему обзору книги, обсуждению архитектуры, процессов, коммуникаций, координации, а теперь мы дошли до обсуждения следующих важных вопросов
 - Зачем нужны имена, идентификаторы и адреса
 - Что такое плоское именование (flat naming). Здесь в качестве примеров рассмотрим Distributed Hash Tables
 - Что такое структурированное именование (structured naming). Здесь в качестве примеров рассмотрим работу DNS и Unix FileSystems
 - Что такое основанное на атрибутах именование (attribute-based naming). Здесь вспомним про LDAP
 - Что такое named-data networking

Встречаемся на ютуб-канале IT's Tinkoff.

#SoftwareArchitecture #DistributedSystems #Architecture #SystemDesign #Software #CoA
👍9
Вчера Кирилл, мой двухлетний сын, добрался до "книжки с кабанчиком". Кажется, что он уже готовится проектировать что-то масштабное:)
🔥52👍16😁12🦄2
Chaos Engineering. Building Confidence in System Behavior through Experiments

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

Книга начинается с главы "Зачем заниматься инженерией хаоса" и ее достаточно для того, чтобы определиться стоит ли читать книгу дальше. В первом абзаце авторы рассказывают о том, что Chaos Engineering используется для эмпирического исслледования поведения систем при помощи экспериментов. Чем-то этот подход напоминает мне лабораторные работы по физике/химии в университетские времена:) Основная цель эксперииментов узнать о потенциальных слабостях системы заблоговременно, а не в момент, когда они приводят к реальным проблемам. Хаос иненерия кардинально отличается от тестирования системы, т.к. в тестировании есть специфичные условия и ожидается специфичное поведение, тесты обычно имеют бинарную природу. В итоге, тесты не дают нам новой информации о системе.

В свою очередь, хаос инженерия в свою очередь при помощи экспериментов поззволяет нам лучше понять систему и узнать об особенностях ее функционирования.
В этой же главе рассказывается о пререквизитах для Chaos Engineering: для определения степени готовности вашей организации к использованию Chaos Engineering вам требуется ответить на 1 вопрос:"Достаточно ли устойчива ваша система к событиям реального мира, например, отказам сервисов или пикам сетевых задержек (network latency)".
Если ответ "нет", то до вы знаете что вам стоит сделать до того, как изучать данную книгу:) Думаю, что большая часть читающих книгу отсеивается на данных пререквизитах:)
Но представим, что мы ответил "Да" - в этом случае вы попадаете в прекрасный мир chaos engineering, который помогает контролировать сложность систем и спать спокойно:)
Если тема вас заинтересовала, то предлагаю вам самим ознакомиться с этой книгой:)

#Chaos #Engineering #SystemEngineering #SystemDesign #SoftwareArchitecture #Software #SoftwareDevelopment
👍6🤔3🔥1
Agile Patterns

В свое время читал перечень этих паттернов в карточке с DZone, плюс есть сайт agilepatterns.org

Если кратко, в первой половине статьи с DZone автор выделяет шаблоны, которые помогают организовывать разработку по agile. Про них все всегда рассказывают и поэтому я не буду их здесь перечислять. А вот на последних страницах автор рассказывает об антипаттернах, которые могут пох...рить всю нашу работу по выстраиванию процессов:)
Среди таких антипаттернов присутствуют
- Cherry Picking - выбор членами команды самых "вкусных" задач из беклога вместо самых приоритетных
- Death March - продолжение проекта, который уже не нужен, но на который потратили много сил и его жалко закрыть
- Disguised Project - проект, который заказчик пытается пропихнуть как рутинные задачи
- Micromanagement - ну тут все ясно:)
- Unbounded Timebox - неопределенные границы для завершения проекта
- Undefined Done - ху..к-х..к и в продакшен:) и куча техдолга на выходе
- Unlimited WIP - неограниченный объем задач в работе
- Unresolved Proxy - много заказчиков без одного ответственного за продукт
- Waterscrumfall - гибрид из waterfall и scrum, признан нежизнеспособным в открытой природе:)

В общем, хорошая статья и читается легко:)

#Management #Processes #Scrum #Kanban #Agile
👍17
От основ к созданию роботов

Лет 5 назад я купил эту книгу для обучения сына премудростям создания роботов. Я ее конечно прочитал, но воплотить план обучения в жизнь не получилось, но это не проблема книги, которая отлично написана и оформлена иллюстрациями. Её приятно даже просто пролистать.Если переходить к сути книги, то авторам удалось весело и с простыми практическими занятиями раскрыть заявленную в названии тему:)
В первых главах были описаны разнообразные роботы и дана качественная характеристика, отличающая робота от радиоуправляемой игрушки:)
Дальше авторы рассказали о:
- программировании алгоритма работы робота
- булевой логике
- датчиках как органах чувств роботов
- беспроводной связи
- adruino и управления моторами при помощи ШМИ
В общем, книга действительно интересная и подходит для практических занятий робототехникой с сыном:)

#Robotics #ForKids #SoftwareDevelopment #Engineering
👍112
Software Engineering для Финтех Школы

Мы в компании уделяем достаточно много сил и времени обучению. Мы учим как сотрудинков внутри, так и будущих сотрудников, начиная со школьной скамьи и продолжая в университете. В этом году мне надо было записать для Финтех Школы лекцию про облачные вычисления и я решил посмотреть как мои коллеги рассказывали о Software Engineering в предыдущих циклах обучения. Так я наткнулся на доклад Игоря Маслова, директора базовых технологий, который он читал для студентов в 21 году. Доклад мне понравился тем, как Игорь разбирает эволюцию подходов в разработке софта и демонстрирует, что это очень динамичная сфера, в которой подходы постоянно развиваются и то, что было нормой еще 10 лет назад может к текущему моменту безвозвратно устареть. Ну и из этого обзора видно, что наша молодая дисциплина идет от ремесленного к инженерному подходу, обрастая практиками, которые позволяют обеспечить повторяемый результат хорошего качества.

P.S.
Подробнее про наши образовательные программы можно прочитать на сайте https://fintech.tinkoff.ru/

#SoftwareDevelopment #Software #Engineering #SystemEngineering #Processes
👍17😁2
Кинофантастика. Наука выносит вердикт (La Science Fait Son Cinema)

В этой интересной книге ученые, Ролан Леук и Жан-Себастьян Стейер, разбирают популярные научно-фантастические фильмы и рассказывают насколько они реальны и какие реальные научные дисциплины стоят за сюжетом. Авторы проходятся бегом по астрономии, физике, биологии, лингвистике, бактериологии и вирусологии, причем это неполный список. Сама книга состоит из четырех частей:
1. Посрамить физику - авторы разбирают фильмы "Человек-муравей", "Гравитация", "Интерстеллар"
2. Новые горизонты - авторы разбирают фильмы про космические станции в виде колец для создания искусственной гравитации, далше обсуждают жизнь на Марсе на примере фильма "Марсианин", продолжают рассмотрением жизни на ледяных планетах, а потом вспоминают про фильм "Прометей" про Чужого
3. Эти удивительные инопланетяне - тут обсуждение начинается с происхождения внеземных видов, продолжается эволюцией видов в научной фантастике, а напоследок разбираются проблемы экзо-лингвистике на примере фильма "Прибытие"
4. Осторожно опасно для жизни - в этой части авторы обсуждают невидимые опасности в виде радиации, микробов и бактерий. Дальше разбирают фильмы "Нечто", "Годзилла" и "Тихоокеанский рубеж"

#PopularScience #Physics #Cinema
👍12
В этот понедельник мы провели шестой стрим клуба Code of Architecture по книге “Distributed Systems”, в котором мы обсудили вопросы именования. А точнее мы поговорили про
- адреса, идентификаторы и имена
- плоское именование, влючая распределенные хеш таблицы и consistent hashing
- структурное именование, включая unix filesystem и DNS
- attribute-based naming, включая триплеты RDF из семантического веба и LDAP как комбинацию структурного и attribute-based подхода
- name-data networking, экспериментальный подход, который хочет занять место протокола IP в современном интернете

Гостем стрима был
- Алексей Квак, руководитель разработки из Тинькофф

Артефакты с этого стрима доступны по ссылкам
- Статья с кратким обзором
- Запись стрима
- Miro доска с презентацией

#SoftwareArchitecture #DistributedSystems #Architecture #SystemDesign #Software #CoA
👍12
Writing an engineering strategy

Интересная статья про инженерную стратегию от Will Larson, автора книг An Elegant Puzzle (про engineering management, я про нее как-то рассказывал) и Staff Engineer (про высокоуровневых SDE, у меня есть обзор этой книги в двух частях: 1, 2).
В этой статье автор рассказывает про то, как писать engineering strategy, являясь engineering executive, используя структуру которую предложил Richard Rumelt в книге "Good Strategy, Bad Strategy". В этой структуре 3 составляющих:
1. Diagnosis - объяснение в чем вызов и корневая проблема, которую мы решаем
2. Guiding policies - подходы, которым стоит следовать для решения вызовов. Эти руководящие policies могут быть как явными, так и неявными компромиссами (tradeoffs) между вариантами действий.
3. Coherent actions - набор действий, которые направляются принципами для решения challenge. Эта самая важная часть стратегии.

Дальше автор рассказывает про
- Процесс написания
- Когда ее стоит писать
- Что делать с отсутствующими бизнесовой и продуктовой стратегией, которые должны учитываться в инженерной стратегии
- Как структурировать руководящие принципы
- Как поддерживать нужный уровень руководящих принципов
- Как сформировать перечень конкретных действий
- Почему стратегия - это про top-down approach
- И как начать писать стратегию

#Strategy #Engineering #Management #Leadership #Process #SystemEngineering
👍12
Руководитель разработки медиапроектов Тинькофф

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

Интересно, что само направление медиа для меня не чужое, так как еще до Tinkoff я успел принять участие в разработке медиа-проектов, будучи руководителем команд разработки в Woman.ru и Banki.ru. А в первый день выхода на работу в Тинькофф я познакомился с первым программистом Тинькофф Журнала (Т—Ж), так как мы одновременно устраивались на работу. Дальше я никогда напрямую не отвечал за Т—Ж, но часто помогал с консультациями и выделением времени инженеров из моих команд. Но теперь настало время платформизировать Т—Ж и сделать его основой всех наших медиа.

В итоге, я ищу опытного руководителя, который возьмёт на себя роль технического директора медиапроектов Тинькофф: он возглавит команду отдел из 40 инженеровспециалистов, запустит новые направления и выстроит процессы. Сейчас в разработку медиапроектов входит три больших продукта:
- Журнал
- Помощь
- Бизнес-секреты
- Помимо этого есть и другие продукты поменьше: образовательные Учебник и Школа бизнеса, блоги продуктов, платформа для медиа. Продукты представлены в вебе и мобильных приложениях. Всё это поддерживают и развивают семь продуктовых команд и две сервисные. Продуктовые команды кросс-функциональные, в их состав кроме технарей входят продакты, дизайнеры, редакторы и другие специалисты. Сервисные команды — тестирование и инфраструктура.

В планы медиапроектов на 5 лет входит
— Создать большое сообщество, где пользователям будет легко создавать и загружать контент в разных форматах: видео, изображения, длинные и короткие статьи, а модераторам — проверять его
— Прокачать админку, чтобы редакторы сами выпускали статьи и публиковали другой контент без участия специально обученных верстальщиков.
Помимо этого надо будет
— Разработать собственную CMS на основе текущих наработок Т—Ж, чтобы запустить новые контентные проекты и пересадить на неё существующие.
— Запустить и поддержать 10 новых контент-проектов. Сделать всё так, чтобы каждый проект не был ограничен возможностями платформы, а мог по необходимости расширяться собственной функциональностью.

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

В моих глазах идеальный кандидат:
— Несколько лет руководил отделом или командой разработки больше 30 человек.
— Работал в крупной продуктовой компании. В идеале, ещё и успел поработать в медиа.
— Умеет оптимизировать процессы: ускорять релизы, повышать пропускную способность команды.
— Имеет широкий технический и архитектурный кругозор. Знаком с концепцией микрофронтендов, эволюционного дизайна, монолитов, сервисов, микросервисов, чистых функций и вот этого всего. В идеале, уже однажды спроектировал и воплотил переход технического решения из продуктового в платформенное.
— Знаком с большей частью стэка команды: React, React Native, FastAPI, Postgres, Redis, Docker, Kubernetes.
— Умеет планировать на разные горизонты: от спринта до нескольких лет. Способен синхронизировать эти планы между бизнесом и технарями. Различает роадмапы и бэклоги, CJM и user story.

P.S.
Если вы считаете, что подходите на эту позицию, то пишите мне в личку.

#Vacancy #Engineering #Management #Leadership
🔥9👍6
HBR's 10 Must Reads on Strategy (Стратегия от Harvard Business Review)

Лет пять назад я прочитал эту книгу 2009 года от HBR по стратегии, в которой было собрано 10 классических статей на эту тему. Сама книга была разделена на две части: создание стратегии и ее воплощение в реальность. Часть про создание стратегии начиналось с Майкла Портера, классика в этом вопросе, а заканчивалась стратегией голубого океана. В части про исполнение стратегии мелькала история про систему сбалансированных показателей, которую я помню еще по своей магистратуре:) А вообще тема стратегии и тактики мне знакома еще лет с 6, когда я начал заниматься шахматами и занимался ими лет до 14:) Так вот у Савелия Тартаковера, знаменитого шахматиста, была такая фраза "Тактика - это знание того, что делать, когда есть, что делать. Стратегия - это знание того, что делать, когда делать нечего" и эта фраза отлично описывает отличие:)

Для тех, кто заинтересовался книгой, вот перечень статей, которые вошли в нее

Strategy Development
1. What Is Strategy? by Michael E. Porter
2. The Five Competitive Forces That Shape Strategy by Michael E. Porter
3. Building Your Company’s Vision by James C. Collins and Jerry I. Porras
4. Reinventing Your Business Model by Mark W. Johnson, Clayton M. Christensen, and Henning Kagermann
5. Blue Ocean Strategy by W. Chan Kim and Renée Mauborgne

Strategy Execution
6. The Secrets to Successful Strategy Execution by Gary L. Neilson, Karla L. Martin, and Elizabeth Powers
7. Using the Balanced Scorecard as a Strategic Management System by Robert S. Kaplan and David P. Norton
8. Transforming Corner-Office Strategy into Frontline Action by Orit Gadiesh and James L. Gilbert
9. Turning Great Strategy into Great Performance by Michael C. Mankins and Richard Steele
10. Who Has the D?: How Clear Decision Roles Enhance Organizational Performance by Paul Rogers and Marcia Blenko

P.S.
Плюс бонусная статья от HBR про стратегию от 2014 года The Big Lie of Strategic Planning by Roger L. Martin

#Strategy #Management #Chess #Leadership
👍13🔥5