Книжный куб
11.1K subscribers
2.65K photos
6 videos
3 files
1.95K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Не опаздывай, Медведь! (L'Ours contre la montre)

Вчера прочитал эту детскую книжку своему сыну, которому пока только 2.5 года. Ключевая идея этой книги - научить детей основам тайм-менеджмента:) В самом начале книги мы в стихах узнаем про медведя, который живет в обычной семье, ходит в школу и вообще напоминает скорее первоклашку, чем медведя:) Этот медведь в начале книги везде опаздывает: прийти вовремя в школу, попасть на нужный урок, попасть на обед и даже на автобус, чтобы уехать домой. Но дальше папа обучает медведя часам иминутам, а также тому как считывать время с часов со стрелками. Дальше они доходят до составления расписания на неделю по дням ... Потом медведь начинает везде и всюду успевать, но оказывается перегружен и в конце книги автор рассказывает как он выбирается из стадии выгорания:)

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

#ForKids #Time
18👍8😁3🔥1
I Made Everything Loosely Coupled. Does My App Fall Apart? (Рубрика #Architecture)

Это keynote выступление Gregor Hohpe было на goto конференции в рамках EDA Day (event-driven architecture). Сам Gregor Hohpe еще 20 лет назад написал книгу "Enterprise Integration Patterns"
В рамках этого выступления Gregor обсуждает много вопросов:
- Делает интро в EDA
- Обсуждает роль архитектора и говорит, что они не просто рисуют красивые картинки, а скорее думают в определенном формате и рассказывает как выглядит "thinking like an architect":
-- архитекторы делают скетчи, а не blueprints
-- архитекторы видят больше размерностей с разных точек зрения
-- архитекторы умеют менять масштаб рассмотрения абстракций (zoom in & zoom-out)
-- архитекторы избегают абсолютных утверждений и различают оттенки серого (понимают как работают компромиссы ака tradeoffs)
- Переходит к обсуждению рисования boxes & lines и показывает почему важны именно стрелки, которые связывают boxes. Суть в том, что именно стрелки определяют как компоненты связаны между собой. Дальше автор рассматривает какие реально технологии могут лежать в основе boxes и какой у нас есть контроль над ними. А кроме того, как эти кубики матчатся на команды.
- Делает zoom in в обсуждение того, как рисуются линии в архитектуре. Что означает линия под капотом: data or control flow, interaction model, sync/async, polling, pub/sub or point-to-point и так далее. А дальше он дает совет о разделении вашего подхода к архитектуре от выбора конкретных технологий и продуктов, которые вы будете использовать для ее реализации
- А дальше наступает время обсуждения connection & coupling. В самом начале он дает свое определение coupling - "coupling is a measure of independent variability between connected systems", дальше говорит о том, что decoupling имеет свою цену и что это понятие не черно-белое, а многомерное. Здесь автор обсуждает вопросы использования buzzwords и принятия решений - условно, что дает loose coupling:
-- limit change radius (at design time), что дает higher agility & velocity
-- limit error radius (at runtime), что дает reliable, tolerant operations
и дальше он рекламирует будущую книгу Влада Хононова "Balancing coupling in software design" и заключает, что "the appropriate level of (design-time) coupling depends on the level of control you have over the endpoints"
- Потом идете обсуждение messages & events. Тут автор вспоминает про свое определение messaging из упомянутой выше книги. А дальше переходит к тому, что events - это особый тип messages с определенной семантикой. Помимо events еще бывают commands и documents. Дальше автор вспоминает про семантику каналов, посредством которых происходит обмен сообщениями и событиями. Дальше обсуждается вопросы как матчится producers и cosumers, как организована логика в виде оркестрации или complex event processing
- Ну и в конце автор показывает как можно делать EDA системы в cloud стиле с использованием AWS CDK, где автор пишет не код приложения, а код интеграции и размышляет в тех терминах, что были описаны выше. И именно такое описание автор называет everything loosely coupled:)

#EDA #Conference #SoftwareArchitecture #Architecture #DistributedSystems #SystemDesign
👍134
Анонс спецвыпуска Code of Architecture про авторизацию по модели ReBAC (aka Google Zanzibar)

В последней серии с обсуждением книги по распределенным системам (Distributed Systems) мы говорили про вопросы безопасности и кратко обсудили тему авторизации. Нам показалось, что авторы книги пропустили достаточно важную модель называемую ReBAC (Relationship-Based Access Control). Популярность к этой модели пришла после того, как Google в 2019 году опубликовал white paper "Zanzibar: Google’s Consistent, Global Authorization System". В этом документе авторы рассказали о том, как конфигурировать авторизационную модель, как выражать взаимосвязи в виде триплетов и как собственно проверять наличие или отсутствие прав. Отдельно стоит отметить, что с 2019 года несколько компаний сделали коммерческие и open source реализации этой модели, например, SpiceDB, что позволяет желающим использовать этот подход в своих проектах. В итоге, в этом выпуске мы поговорим про проблематику авторизации более глубоко и дальше обсудим модель ReBAC, погрузившись в white paper про Zanzibar и немного в open source реализацию на примере SpiceDB.

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

Подключайтесь в понедельник 20 марта в 18:00 по Москве к трансляции на ютуб-каналe IT's Tinkoff.

#CoA #SystemDesign #DistributedSystems #Authz #WhitePaper
🔥134👍3
Обзор книги “The Manager’s Path” — Part IV (Senior Leader)

Этой статьей я заканчиваю обзор книги “Путь менеджера” и в ней пойдет речь про роль топ-менеджеров. Кстати, в прошлых выпусках мы обсуждали как инженеры растут до менеджеров, а также как они исполняют роли engineering managers и engineering directors. В финальной статье рассматриваются главы
- The Big Leagues - как выглядит роль technical senior managers, какие названия бывают у должностей и в чем состоит работа VP of Engineering и CTO
- Bootstrapping Culture - как влияет культура и структура на организацию, когда стоит начинать работать над ними и что именно стоит делать
- Conclusion - здесь автор делиться своими мыслями о том, как стать хорошим менеджером

#Leadership #Management #Software #SoftwareDevelopment #Teamlead
👍15
Кубики Гутенберга

Мама четырех детей, Елена Литвяк, написала интересную книгу для родителей по теме детского чтения. Когда в доме столько детей, то очень сложно придумать чем их всех занять, особенно учитывая их разный возраст и интересы. Но в доме Елены полно книг, которые для начала она читала детям вслух, а потом они по мере взросления становились самостоятельными читателями. Но общие сессии чтения вслух никуда не исчезали и объединяли вместе читателей разных поколений. Сама Елена помимо написания книг является еще и обозревателем детской литературы, на которые она пишет рецензии, поэтому эта книга выглядит как калейдоскоп историй и отсылок на крутую литературу, которая поможет развлечь или просветить детей, а также научит их справляться с собственными проблемами и строить отношения с окружающими.

P.S.
Отдельно отмечу, что книга мне очень понравилась тем, что автор раскладывает свои советы для детей разных возрастов и описывает те темы, что было бы интересно обсудить в этом возрасте.
А сейчас на сайте Лабиринта можно эту книгу купить со значительной скидкой.

#ForKids
11👍9
Найти Идею. Введение в ТРИЗ - теорию решения изобретательских задач

Недавно в комментариях к посту о докладе Gregor Hohpe про архитектуру разгорелось обсуждение про компромиссы и почему в ИТ архитектуре их часто ищут, хотя при помощи компромиссов в реальной жизни люди часто приходят не к лучшему, а только r приемлемому решению. Там я привел в пример ТРИЗ как способ решения инженерно-производственных задач без фокуса на компромиссе и сегодня решил вспомнить книгу от автора концепции, Генриха Альтшуллера, "Найти Идею. Введение в ТРИЗ".

Для меня это не первая книга по ТРИЗ, но кажется лучшая:) Автору отлично удалось рассказать о том, как сложен, долог и дорог процесс решения изобретательских задач методом проб и ошибок. Дальше автор рассмотрел варианты активизации перебора такие как морфологический метод, метод мозгового штурма и синктекику, показывая, что качественного прорыва они не дают. Но его дает ТРИЗ по мнению автора. Остальная часть книги посвящена обучению основам этого метода. В приложениях книги представлены 40 основных приемов устранения технических противоречий, алгоритм решения изобретательских задач АРЗИ-85-В и т.д.

Книга однозначно интересная, причем не только изобретателям технических систем, а абсолютно всем, т.к. в ней отлично описан алгоритм перехода от невнятно описанной задачи к технической. Введено понятие ИКР (идеального конечного результата), описано как интенсифицировать конфликт, чтобы получить качественное решение вместо компромисса.
Правда, чтобы не чувствовать себя беспомощно при решении задач, приведенных в книге в качестве примеров, хорошо бы знать основные физические и химические эффекты, т.к. часто решение основано на их использовании:)

P.S.
Книга впервые была опубликована в 1986 году и с тех пор несколько раз переиздавалась.

#SystemDesign #SystemThinking #TRIZ #Architecture
🔥15👍74🥴1
Математический беспредел. От элементарной математике к возвышенным абстракциям (Beyond Infinity: An expedition to the outer limits of the mathematical universe)

Эту книгу Юджинии Ченг я прочитал четыре года назад и она мне показалось интересной тем, как автор буквально на пальцах рассказывает о концепции бесконечности, причем она проделывает это очаравательно и с хорошим юмором:) В качестве буквально первого примера разбирается бесконечный отель Гильберта и заселение в полный отель еще одного жильца. Дальше появляются двух, трех и бесконечноэтажные отели, которые надо выселить в одноэтажное бунгало Гильберта:) Дальше Юджиния ведет нас к математическому понятию бесконечности. На этом пути рабзираются натуральные, целые, рациональные и иррациональные числа. Но полноценно определить концепцию бесконечности получается после перехода к теории множеств, а дальше уже получается определить бесконечности разного размера:) Интересно разбирается разница между кардинальными и порядковыми числами. А вот бесконечно малые числа показались скучноватыми, т.к. излагались базовые вещи из матанализа, которые в свое время рассказывались в старших классах школы и подробнее на первых курсах технических вузов.

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

#PopularScience #Math
👍191🔥1
Список white papers от Will Larson, автора книг "An Elegant Puzzle" и "Staff Engineer"

Я тут недавно дочитал книгу "An Elegant Puzzle: Systems of Engineering Management" за авторством Will Larson, про которую рассказывал раньше.
В последней части этой книги приводился крутой список white papers, которые автору показались полезными. Этот список документов с краткими рецензиями мне показался действительно стоящим, а часть из этих white papers входит в мой short lists на чтение или я их уже читал. Интересно, что если грубо обобщить, то суммарно эти документы тянут на 600 страниц текста, но этот текст такой насыщенности, что мозги начинают перегреваться от одной статьи, поэтому читать их как книги у меня не получается:)

Ниже я привел ссылки на этот набор white papers с небольшими комментариями:
- первая половина списка
- вторая половина списка
👍12
1. Dynamo: Amazon’s Highly Available Key-Value Store - классическая статья про высокодоступную key-value базу от Amazon
2. Hints for Computer System Design - статья за авторством Butler Lampson, который был награжден ACM Turing Award. В этой статье он суммировал свои мысли по дизайну систем
3. Big Ball of Mud - статья с набором паттернов/антипаттернов о проектировании систем: big ball of mud, throwaway code, piecemeal growth, keep it working, sweeping it under the rug, reconstruction. Статью интересно читать и узнавать реальные системы, с которыми часто сталкиваются инженеры в реальности
4. The Google File System - классическая статья про распределенную файловую систему Google, на смену которой пришел Google Colossus, про который тоже можно почитать по ссылке. А сам GFS (Google File System) послужил прообразом HDSF (Hadoop Distributed File System)
5. On Designing and Deploying Internet-Scale Services - статья от Microsoft с чеклистом о том, как дизайнить и оценивать масштабные системы (напоминает подход с чеклистом от 12 factor apps)
6. CAP Twelve Years Later: How the ‘Rules’ Have Changed - Eric Brewer, автор CAP-теоремы, рассказывает о том, что поменялось за 12 лет и говорит про расширение модели
7. Harvest, Yield, and Scalable Tolerant Systems - Eric Brewer разворачивает мысли из предыдущей статьи и рассказывает про подход с harvest и yeild
8. MapReduce: Simplified Data Processing on Large Clusters - классическая статья от Google про подход к Map Reduce, из которой появился Hadoop
9. Dapper, a Large-Scale Distributed Systems Tracing Infrastructure - подход к трассировке запросов от Google, на базе которого появились Zipkin, OpenTracing, OpenTelemetry
10. Kafka: a Distributed Messaging System for Log Processing - white paper по Kafka, которая стала незаменимой системой для обработки сообщений. Отдельно Will отмечает следующий момент “In particular, Kafka’s partitions do a phenomenal job of forcing application designers to make explicit decisions about trading off performance for predictable message ordering”
11. Wormhole: Reliable Pub-Sub to Support Geo-Replicated Internet Services - статья от крупнейшей социальной сети про аналог Kafka но со своей особенностью: “in particular, note the approach to supporting lagging consumers without sacrificing overall system throughput.”
12. Borg, Omega, and Kubernetes - крутой обзор от Google по трем их системам для окрестрации рабочих нагрузок
13. Large-Scale Cluster Management at Google with Borg - рассказ про первый и очень успешный оркестратор рабочих нагрузок в Google
14. Omega: Flexible, Scalable Schedulers for Large Compute Clusters - рассказ про второй оркестратор, который должен был прийти на смену Borg, но пал жертвой синдрома второй системы
15. Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center - статья про Apache Mesos, который был успешным окрестратором рабочих нагрузок с двойным уровнем планирования
16. Design Patterns for Container-Based Distributed Systems - статья с набором паттернов для дизайна систем, который сейчас принято называть cloud native
17. Raft: In Search of an Understandable Consensus Algorithm - статья с расском про алгоритм консенсуса, который должен восприниматься проще чем Paxos
18. Paxos Made Simple - статья Лампорта про алгоритм консенсуса Paxos, рассказанная так, чтобы быть проще для понимания (но он все равно оказался сложным и потом появился Raft)
19. SWIM: Scalable Weakly-Consistent Infection-Style Process Group Membership Protocol - статья про “weakly-consistent knowledge of process group membership information at all participating processes”, что отличает этот подход от того, что обычно практикуется для алгоритмов консенсуса на случай partition. Этот подход используется в софте HashiCorp и в Uber’s Ringpop
20. The Byzantine Generals Problem - опять Лэмпорт, но в этот раз про консенсус с произвольными (византийскими) отказами
🔥13👍42
21. Out of the Tar Pit - интересная статья про то, что функциональное программирование и улучшения в моделировании данных помогают уменьшить привнесенную сложность (авторы говорят о том, что она идет от state).
22. The Chubby Lock Service for Loosely-Coupled Distributed Systems - еще одна статья от Google на этот раз про их сервис блокировок, который позволяет не реализовывать в системах алгоритмы консенсуса, а использовать внешний lock сервис. В мире open source похожим на Chubby образом использовался Zookeeper в таких проектах как Kafka и Mesos
23. Bigtable: A Distributed Storage System for Structured Data - еще одна статья от Google на тему их NoSQL базы данных, которая была построена поверх Chubby. В мире open source на основе идей из Bigtable и Dynamo появилась такая база как Cassandra
24. Spanner: Google’s Globally-Distributed Database - еще одна статья от Google про их newSQL базу данных, которая умеет масштабироваться как NoSQL базы, но дает гарантии ACID, а также использует под капотом атомные часы и сервис TrueTime для обеспечения беспрецедентной точности получения и проставления таймштемпов. В общем, очень крутая статья, для чтения которой надо прочитать пачку предыдущих статей от Google
25. Security Keys: Practical Cryptographic Second Factors for the Modern Web - еще одна статья от Google на тему безопасности и многофакторной аутентификации
26. BeyondCorp: Design to Deployment at Google - еще одна мощная статья от Google на тему безопасности
27. Availability in Globally Distributed Storage Systems - еще одна статья от Google на тему доступности в реплицированных распределенных системах, где собрана статистика по использованию storage layer ребят из Google и есть фокус на correlated failures
28. Still All on One Server: Perforce at Scale - рассказ про то, как в больших компаниях сложно масштабировать системы для работы с кодом на примере Perforce, который когда-то был у Google. Из этого рассказа становится понятно, почему большие компании начинают делать свой тулинг под монорепы
29. Large-Scale Automated Refactoring Using ClangMR - статья от Google про то, как они уменьшали нагрузку на поддержку кода в монорепозитории за счет авторефакторинга кодовой базы
30. Source Code Rejuvenation is not Refactoring - а в этой статье рассказывается о концепте, когда автомиграция кода на новую фичи языка называется rejuvenation, а не рефакторинг. И эти идеи напоминают то, что делали в Google
31. Searching for Build Debt: Experiences Managing Technical Debt at Google - эта история про то, как в Google подходили к управлению техдолгом в большой кодовой базе: automating, making it easy to do the right thing, and making it hard to do the wrong thing
32. No Silver Bullet—Essence and Accident in Software Engineering - статья от Фредерика Брукса, который в ней рассказывает про отсутствие серебрянной пули как универсального средства решения проблем
33. The UNIX Time-Sharing System - статья из 1974 про основы UNIX и можно посмотреть как принципы, заложенные при проектировании дожили до сегодняшних дней

#SoftwareArchitecture #Software #SystemDesign #SystemEngineering #WhitePaper #DistributedSystems #Architecture #SoftwareDevelopment
👍155
Выбираем новую книгу для чтения и обсуждения в книжном клубе Code of Architecture.
Все книги от проверенных авторов и с хорошим содержанием, так что голосуйте за ту, что вам больше по вкусу:)
👍4
Monolith to Microservices (От монолита к микросервисам)

Эта книга "Monolith to Microservices" написана Сэмом Ньюманом, который поспособствовал росту популярности микросервисов, написав книгу "Building Microservices". Эта книга определенно хороша, но она является не продолжением книги про создание микросервисов, а скорее приквелом для выпущенной изначально книги. Об этом говорит автор во вступлении, посыпая голову пеплом относительно того, что он открыл ящик Пандоры с микросервисами, что привело к массовому adoption их всеми подряд без глубокого понимания границ применимости этого подхода:)
В новой книге автор рассматривает такие темы как:
- что такое микросервис и какого размера он может быть - по bounded context'у
- какой логикой пользоваться для декомпозиции вашего монолита на микросервисы - внезапно тут активно упоминается очередной трехбуквенный акроним DDD
- всегда ли вам нужны микросервисы - логично, что нет:)
- как не обложаться с миграцией с монолита на микросервисы
- как распиливать монолитный код
- как быть с источниками данных - аля пилим базу данных
- какие боли у вас возникнут когда вместо одного монолита у вас появится коллекция микросервисов, в которой сложность эксплуатации возрастает на порядки, если использовать те же подходы, что для эксплуатации монолита

Мне нравятся заключительные слова автора о двух идеях, которыми он хотел поделяться в своей книге:
"First, give yourself enough space and gather the right information to make rational decisions. Don’t just copy others; think instead about your problem and your context, assess the options, and move forward, while being open to change if you need to later. Second, remember that incremental adoption of microservices, and many of the associated technologies and practices, is key"
Очень логичные и понятные мысли, которые заставляют трезво смотреть на любые подходы к решению задач. И да, на микросервисы тоже:)

#SystemDesign #DistributedSystems #SoftwareArchitecture #Architecture #Software #SoftwareDevelopment
👍23🔥32
45 татуировок менеджера

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

Правда я заметил 3 момента, которые раздражают меня в этой книге:
1) название, в котором упоминаются маргинальные татуировки и упоминание этого слова почти на каждой странице книги хотя бы по разу, а то и сериями
2) категоричность автора - такое ощущение, что в изложении принципов автор следует подходу, что в мире есть черное и белое, правильное и неправильное, причем читающим сразу становится ясно чья позиция является доминантной
3) примеры исключитально из области продаж - в этой области легко ввести KPI и многие простые и понятные схемы мотивации легко и рационально внедряются, т.к. снимаемые метрики не сильно отстают от показателей процесса, которые они описывают.

Если же закрыть глаза на эти особенности, то книгу читать легко и интересно ... а если вы новичок в менеджменте, то и полезно:)

#Management #Leadership
👍11🔥2
Встреча CPO & CTO Club

Вчера и сегодня участвую в прикольной встрече CTO и CPO, которое организовали ребята из Avito и Product Camp. Все началось вчера с того, что ближе к вечеру мы собрались, познакомились и поиграли в игру с придумыванием идей в командах и дальше мы их питчили друг другу. Потом мы пошли на ужин, где большая часть гостей делилась историями на тему "решения, которые изменили мою жизнь", которые под конец напоминали калейдоскоп:) Ну и закончился вечер relax time, где было коктейльное казино, много общения и кальяны:)

Сегодняшний день должен был начаться с йоги, но я решил поспать и добрался только на зактрак. Потом началась бизнес-игра "Черный квадрат", в которой мы играли в командах и принимали решения в условиях ограниченного времени и разрозненной информации. Мне повезло, что в моей команде "Яркие краски Лондона" были классные ребята и мы отлично выстроили совместную работу и тюнили свою тактику под постоянно меняющиеся правила. В итоге, наша команда была единственной, которая ни разу не ошиблась за четрые раунда и обогнала вторую команду на 10% по количеству баллов. Мне эта игра показалась действительно интересной, динамичной и развивающей когнитивную гибкость.
Потом у нас будет лекция Вячеслава Дубынина на тему мозга (я недавно слушал его лекцию про мозг и креативность в рамках нашей программы MBA и рассказывал про это). После выступления Вячеслава мы сможем пообщаться с ним и позадавать вопросы, а потом будет ужин и рефлексия, после чего мы разъедемся по домам:)

В общем, если говорить про само мероприятие, то оно получилось насыщенным и интересным. Удалось пообщаться с кучей людей, обсудить интересные темы, прокачать когнитивную гибкость и узнать что-то новое про мозг. Спасибо Avito и Product Camp за организацию такого крутого мероприятия!

P.S.
На фото участники моей команды с первого дня, где мой коллега, Саша Краснов, CTO Тинькофф Страхования, питчил от нашей команды историю про франшизу глэмпингов, которая через 10 лет станет единорогом ... может быть:)

#Leadership #Management
👍17🔥102