Улетаю в Новосибирск через час
В прошлый раз я был в Новосибирске на конференции CodeFest в 2019 году, где рассказывал про "Культура разработки глазами тимлида: переход от монопродукта к экосистеме". В этот раз лечу туда пообщаться с коллегами, поучаствовать в выезде к Обскому морю, а также рассказать за час внутренние новости по моему юниту, а также про наши движения по архитектуре и процессам разработки - я теперь редко куда летаю без того, чтобы там выступить:) За последние полтора года я настолько привык к полетам, что воспринимаю это почти как поездку на такси. Но поездка длинная, поэтому я скачал себе пару книг, несколько whitepapers и взял с собой три бумажные книги - точно не заскучаю в аэропорту:)
В прошлый раз я был в Новосибирске на конференции CodeFest в 2019 году, где рассказывал про "Культура разработки глазами тимлида: переход от монопродукта к экосистеме". В этот раз лечу туда пообщаться с коллегами, поучаствовать в выезде к Обскому морю, а также рассказать за час внутренние новости по моему юниту, а также про наши движения по архитектуре и процессам разработки - я теперь редко куда летаю без того, чтобы там выступить:) За последние полтора года я настолько привык к полетам, что воспринимаю это почти как поездку на такси. Но поездка длинная, поэтому я скачал себе пару книг, несколько whitepapers и взял с собой три бумажные книги - точно не заскучаю в аэропорту:)
👍9❤7🔥5
ArchDays MeetUp - Проектирование БД: От NF к денормализации данных
1 августа в 19:00 по Москве пройдет митап от ArchDays, на котором Антон Цитульский из Тинькофф расскажет доклад про проектирование баз данных. Он начнет с того, как при старте проекта обычно стартуют с нормализованного представления, которое позволяет поддерживать данные в консистентном состоянии. В таком формате проще развивать решение, усложнять модель данных и писать запросы, которые можно делать не боясь joins, так как нагрузка небольшая. Но потом проходит некоторое время, данных становится больше, запросы к данным становятся сложнее в плане объединения таблиц, но предсказуемее, так как основные фичи в продукте уже есть. И в какой-то момент становится полезным подумать над денормализацией данных, а возможно и над разделением того, как и куда данные пишутся и откуда читаются (это уже про read-write paths, о которых подробно говорил Клеппман в своей книге).
В общем, про все это и расскажет Антон, а я немного потизерил его доклад, так как я выступал в качестве ревьювера от программного комитета конфы:)
Регистрируйтесь на этот бесплатный митап и приходите послушать в онлайне.
#Architecture #Software #SoftwareArchitecture #Meetup
1 августа в 19:00 по Москве пройдет митап от ArchDays, на котором Антон Цитульский из Тинькофф расскажет доклад про проектирование баз данных. Он начнет с того, как при старте проекта обычно стартуют с нормализованного представления, которое позволяет поддерживать данные в консистентном состоянии. В таком формате проще развивать решение, усложнять модель данных и писать запросы, которые можно делать не боясь joins, так как нагрузка небольшая. Но потом проходит некоторое время, данных становится больше, запросы к данным становятся сложнее в плане объединения таблиц, но предсказуемее, так как основные фичи в продукте уже есть. И в какой-то момент становится полезным подумать над денормализацией данных, а возможно и над разделением того, как и куда данные пишутся и откуда читаются (это уже про read-write paths, о которых подробно говорил Клеппман в своей книге).
В общем, про все это и расскажет Антон, а я немного потизерил его доклад, так как я выступал в качестве ревьювера от программного комитета конфы:)
Регистрируйтесь на этот бесплатный митап и приходите послушать в онлайне.
#Architecture #Software #SoftwareArchitecture #Meetup
🔥12❤10👍4
Machine Learning: The New AI
Прочитал вчера в самолете эту простую книгу Ethem Alpaydin из серии MIT Press Essential Knowledge series, которая была издана в 2016 году. Читать было достаточно интересно, но стоит отметить, что эта книга для начинающих вкатываться в эту тему - автор очень просто объясняет все концепции без использования сложной математики, но с использованием большого количества примеров. Прочитав эту книгу, вы не научитесь делать ML, но хотя бы поймете что это такое и как его можно применять в реальной жизни.
Подробнее в моей статье.
P.S.
Раньше я уже рассказывал про "Data Science" - другую книгу из этой же серии.
#DataScience #ML #ExternalReview #AI #Software #PopularScience
Прочитал вчера в самолете эту простую книгу Ethem Alpaydin из серии MIT Press Essential Knowledge series, которая была издана в 2016 году. Читать было достаточно интересно, но стоит отметить, что эта книга для начинающих вкатываться в эту тему - автор очень просто объясняет все концепции без использования сложной математики, но с использованием большого количества примеров. Прочитав эту книгу, вы не научитесь делать ML, но хотя бы поймете что это такое и как его можно применять в реальной жизни.
Подробнее в моей статье.
P.S.
Раньше я уже рассказывал про "Data Science" - другую книгу из этой же серии.
#DataScience #ML #ExternalReview #AI #Software #PopularScience
Medium
Обзор книги "Machine Learning: The New AI"
Прочитал вчера в самолете эту простую книгу Ethem Alpaydin из серии MIT Press Essential Knowledge series, которая была издана в 2016 году…
👍7🔥5❤2
Паттерны объектно-ориентированного проектирования (Design Patterns: Elements of Reusable Object-Oriented Software)
Почти 30 лет назад вышла классическая книга "Design Patterns" от Банды Четырех (Гамма Э., Влиссидес Дж., Джонсон Р. , Хелм Р.). Я прочитал ее в первый раз еще в 2006 году и перечитывал несколько раз с того времени. Помню как мне понравилась структура самого паттерна, как повторяемой архитектурной конструкции в, предлагающая решение проблемы проектирования в рамках некоторого часто возникающего контекста. Плюс интересна была таксономия паттернов по категориям
- Creational patterns - порождающие паттерны, как удобно и безопасно создавать объекты, группы объектов. Примеры шаблонов: абстрактная фабрика, фабричный метод, прототип, singleton, ...
- Structural patterns - структурные паттерны, как строить удобные в поддержке структуры классов. Примеры шаблонов: адаптер, bridge, декоратор, прокси, фасад, ...
- Behavioral patterns - поведенческие паттерны, как организовывать эффективное взаимодействие между объектами. Примеры шаблонов: команда, стратегия, шаблонный метод, visitor, iterator, observer, состояние, ...
По-факту, этот набор шаблонов стал некоторым ubiquitous language для разработчиков при размышлении про проектирование приложений.
Сейчас эта книга является актуальной с точки зрения концепции, но вот примеры с кодом на Smalltalk явно сильно устарели:) Но я ее все равно рекомендую почитать:)
P.S.
Если сделать лирическое отступление, то сам подход родился в 1970х года, когда Кристофер Александер написал книгу про архитектурные шаблоны «Язык шаблонов. Города. Здания. Строительство». Ну а в IT все полетело после того, как Банда Четырех написала книгу, которую мы вспоминаем сейчас:)
#Patterns #Software #SoftwareArchitecture #SoftwareDevelopment #Architecture #SystemDesign
Почти 30 лет назад вышла классическая книга "Design Patterns" от Банды Четырех (Гамма Э., Влиссидес Дж., Джонсон Р. , Хелм Р.). Я прочитал ее в первый раз еще в 2006 году и перечитывал несколько раз с того времени. Помню как мне понравилась структура самого паттерна, как повторяемой архитектурной конструкции в, предлагающая решение проблемы проектирования в рамках некоторого часто возникающего контекста. Плюс интересна была таксономия паттернов по категориям
- Creational patterns - порождающие паттерны, как удобно и безопасно создавать объекты, группы объектов. Примеры шаблонов: абстрактная фабрика, фабричный метод, прототип, singleton, ...
- Structural patterns - структурные паттерны, как строить удобные в поддержке структуры классов. Примеры шаблонов: адаптер, bridge, декоратор, прокси, фасад, ...
- Behavioral patterns - поведенческие паттерны, как организовывать эффективное взаимодействие между объектами. Примеры шаблонов: команда, стратегия, шаблонный метод, visitor, iterator, observer, состояние, ...
По-факту, этот набор шаблонов стал некоторым ubiquitous language для разработчиков при размышлении про проектирование приложений.
Сейчас эта книга является актуальной с точки зрения концепции, но вот примеры с кодом на Smalltalk явно сильно устарели:) Но я ее все равно рекомендую почитать:)
P.S.
Если сделать лирическое отступление, то сам подход родился в 1970х года, когда Кристофер Александер написал книгу про архитектурные шаблоны «Язык шаблонов. Города. Здания. Строительство». Ну а в IT все полетело после того, как Банда Четырех написала книгу, которую мы вспоминаем сейчас:)
#Patterns #Software #SoftwareArchitecture #SoftwareDevelopment #Architecture #SystemDesign
👍16❤5🔥4
Как позаботиться о клиенте с выгодой для продукта — Петр Савостин, Тинькофф
Это полезное выступление моего коллеги, Петра Савостина, которое продолжает темы первого свидания с клиентом, а потом и дальнейшего вовлечения клиента в экосистему.
В самом начале доклада Петр рассказывает о том, что забота - это залог длительных отношений
1. Заинтересовать и удержать
2. Слышать и слушать друг друга
3. Удивлять и предугадывать желания
4. Смотреть на отношения шире
5. Уметь правильно сгладить углы
Дальше Петр переходит к историям и начинает с того, что первое впечатление нельзя произвести дважды. И самые первые моменты в отношениях - самые важные. Тут важно, чтобы
- Чтобы все прошло как можно более гладко и бесшовно
- Сформировать привычку пользоваться продуктом
- Сделать так, чтобы мы стали неотъемлемой частью жизни клиента
Дальше Петр приводит пример Wargaming и первого впечатления. И переходит к рассказу про силу привычки и Aha-момент.
Следующая большая тема - такая метрика клиентского опыта, как ообращаемость. Петр показывает как обращаемость меняется в зависимости от разных этапов жизни клиента в рамках нашего продукта. Дальше пример банка-конкурента, что обещал доставить карту за день, а не доставил за неделю и с ними пришлось общаться чуть ли не каждый день:) После этого примера Петр говорит, что лучший CX - это когда не нужна поддержка (все идет настолько плавно, что не надо обращаться в нее). Но если обращения все-таки случаются, то их надо анализировать. Для этого можно использовать семантическую карту обращений и дальше смотреть на топ категорий и реверс-инжинирить процесс так, чтобы понять причину того, почему пользователям надо обращаться в поддержку. А дальше у вас с большой вероятностью появятся инсайты о том, что можно улучшить. Плюс этот же подход поможет вам отприоритизировать ошибки и баги в ваших приложениях.
Дальше Петр переходит к тому, как удивлять клиента качеством сервиса и здесь он рекомендует
- Действовать проактивно - решать проблему как можно скорее, идеально еще до ее возникновения
- Персонализировать продукт - приложение должно подстраиваться под пользователя
- Делать по-максимуму за клиента без дополнительных вопросов - так называемый contactless service
- Предоставлять self service - сделать так, чтобы клиент мог сделать свои действия сам без обращений в поддержку, а еще желательнее, если это сделает автоматизация под капотом
Дальше Петр приводит примеры из своей практики в Тинькофф: проактивное изменение номера, восстановление карты, проактивные переводы, проактивный бот
Дальше Петр предлагает смотреть шире, чтобы улучшать клиентский опыт за пределами наших продуктов, а скорее от потребностей пользователей. Тут тоже приводятся примеры: калькулятор в переводах, умная камера, поддержка клиентов даже если косяк на другой стороне. Дальше Петр рассказывает про JTBD (Jobs To Be Done) аналитику, которую требуется собирать, чтобы уметь так улучшать опыт.
#ProductManagement #Software #SoftwareDevelopment
Это полезное выступление моего коллеги, Петра Савостина, которое продолжает темы первого свидания с клиентом, а потом и дальнейшего вовлечения клиента в экосистему.
В самом начале доклада Петр рассказывает о том, что забота - это залог длительных отношений
1. Заинтересовать и удержать
2. Слышать и слушать друг друга
3. Удивлять и предугадывать желания
4. Смотреть на отношения шире
5. Уметь правильно сгладить углы
Дальше Петр переходит к историям и начинает с того, что первое впечатление нельзя произвести дважды. И самые первые моменты в отношениях - самые важные. Тут важно, чтобы
- Чтобы все прошло как можно более гладко и бесшовно
- Сформировать привычку пользоваться продуктом
- Сделать так, чтобы мы стали неотъемлемой частью жизни клиента
Дальше Петр приводит пример Wargaming и первого впечатления. И переходит к рассказу про силу привычки и Aha-момент.
Следующая большая тема - такая метрика клиентского опыта, как ообращаемость. Петр показывает как обращаемость меняется в зависимости от разных этапов жизни клиента в рамках нашего продукта. Дальше пример банка-конкурента, что обещал доставить карту за день, а не доставил за неделю и с ними пришлось общаться чуть ли не каждый день:) После этого примера Петр говорит, что лучший CX - это когда не нужна поддержка (все идет настолько плавно, что не надо обращаться в нее). Но если обращения все-таки случаются, то их надо анализировать. Для этого можно использовать семантическую карту обращений и дальше смотреть на топ категорий и реверс-инжинирить процесс так, чтобы понять причину того, почему пользователям надо обращаться в поддержку. А дальше у вас с большой вероятностью появятся инсайты о том, что можно улучшить. Плюс этот же подход поможет вам отприоритизировать ошибки и баги в ваших приложениях.
Дальше Петр переходит к тому, как удивлять клиента качеством сервиса и здесь он рекомендует
- Действовать проактивно - решать проблему как можно скорее, идеально еще до ее возникновения
- Персонализировать продукт - приложение должно подстраиваться под пользователя
- Делать по-максимуму за клиента без дополнительных вопросов - так называемый contactless service
- Предоставлять self service - сделать так, чтобы клиент мог сделать свои действия сам без обращений в поддержку, а еще желательнее, если это сделает автоматизация под капотом
Дальше Петр приводит примеры из своей практики в Тинькофф: проактивное изменение номера, восстановление карты, проактивные переводы, проактивный бот
Дальше Петр предлагает смотреть шире, чтобы улучшать клиентский опыт за пределами наших продуктов, а скорее от потребностей пользователей. Тут тоже приводятся примеры: калькулятор в переводах, умная камера, поддержка клиентов даже если косяк на другой стороне. Дальше Петр рассказывает про JTBD (Jobs To Be Done) аналитику, которую требуется собирать, чтобы уметь так улучшать опыт.
#ProductManagement #Software #SoftwareDevelopment
YouTube
Как позаботиться о клиенте с выгодой для продукта — Петр Савостин, Тинькофф
Клиент, который чувствует, что о нем заботятся, с большей вероятностью останется с продуктом надолго.
На лекции поговорили о том, как проявлять заботу, разбрали лайфхаки и data-driven-инструменты аналитики клиентского опыта, а также узнали, когда и как у…
На лекции поговорили о том, как проявлять заботу, разбрали лайфхаки и data-driven-инструменты аналитики клиентского опыта, а также узнали, когда и как у…
👍5👏3🔥2
Книжный клуб "Сибирь на страницах"
Кто о чем, а я о книгах. Гулял сегодня по центру Новосибирска и наткнулся напротив здания оперы на трамвай. Этот трамвай стоял на приколе и служил пристанищем для книжного клуба, в котором были представлены книги про Сибирь от местных издательств. Место было уютным и я не смог уйти без покупок - со мной из трамвая ушло 3 книги
1. Книга с биографиями советских фантастов
2. Графический роман про путешествия в иркутске 19 века
3. Книга про архитектора и дизайнера из Новосибирска, которого сравнили с Леонардо да Винчи
Кто о чем, а я о книгах. Гулял сегодня по центру Новосибирска и наткнулся напротив здания оперы на трамвай. Этот трамвай стоял на приколе и служил пристанищем для книжного клуба, в котором были представлены книги про Сибирь от местных издательств. Место было уютным и я не смог уйти без покупок - со мной из трамвая ушло 3 книги
1. Книга с биографиями советских фантастов
2. Графический роман про путешествия в иркутске 19 века
3. Книга про архитектора и дизайнера из Новосибирска, которого сравнили с Леонардо да Винчи
👍15❤11🔥10
Patterns of Enterprise Application Architecture (Шаблоны корпоративных приложений)
Классическая книга начала века (2002 год) от Мартина Фаулера, которую есть смысл почитать и в наши дни:) Она появилась через 8 лет после книги "Design Patterns" и обобщила подход к паттернам на уровень архитектуры целых приложений. Сама книга про паттерны корпоративных приложений состоит из двух частей: the narratives и the patterns.
1. The Narratives - здесь рассматриваются общие темы
- Layering - здесь авторы рассказывают про разделение на уровнни для борьбы со сложностью программного обеспечения. Основная суть в том, чтобы каждый уровень предоставлял определенную абстракцию посредством интерфейса и уровни взаимодействовали друг с другом через эти интерфейсы. Тут как обычно идет отсылка к сетевой модели OSI и TCP/IP. Здесь же автор рассказывает про 3 принципиальных уровня в корпоративных приложениях: data source, domain, presentation.
- Organizing Domain Logic - здесь автор рассказывает про организацию доменной логики и спойлерит 3 паттерна из второй части: transaction script, domain model, table module. Дальше он их сравнивает между собой и показывает границы применимости. Дальше он рассказывает про service layer, который часто размещают поверх domain model или table module. Дальше уровень представления взаимодействует с доменным уровнем через этот service layer
- Mapping to Relational Databases - здесь речь идет про то, как быть с данными. И на сцену выходят паттерны навроде table data gateway, active record и data mapper. Здесь же обсуждаются вопросы как маппить структуры из реляционных баз данных на модель классов и объектов внутри приложения и как быть конкретно с наследованием
- Web Presentation - здесь автор рассказывает про паттерн MVC (model-view-controller), который был когда-то популярен. Сейчас эта глава выглядит как раритет:)
- Concurrency - краткий рассказ про проблемы конкурентности, execution context, изоляцию и иммутабельность, оптимистичные и пессимистичные блокировки, дедлоки, а также транзакции (и конечно же ACID).
- Session State - здесь речь идет про хранение сессионного состояния на сервере
- Distribution Strategies - про распределенные объекты (distributed object system), которые почили в бозе вместе с CORBA:) Но тут есть актуальные мысли про DTO (data transfer objects) и lazy load.
- Putting It All Together - авторы рассказывают как использовать все описанное выше: стартовать с domain layer, переходить к data source layer и дальше двигаться в сторону presentation layer. Дальше они говорят про конкретные технологии, навроде, J2EE и это звучит приветом из прошлого.
Продолжение в следующем посте.
Классическая книга начала века (2002 год) от Мартина Фаулера, которую есть смысл почитать и в наши дни:) Она появилась через 8 лет после книги "Design Patterns" и обобщила подход к паттернам на уровень архитектуры целых приложений. Сама книга про паттерны корпоративных приложений состоит из двух частей: the narratives и the patterns.
1. The Narratives - здесь рассматриваются общие темы
- Layering - здесь авторы рассказывают про разделение на уровнни для борьбы со сложностью программного обеспечения. Основная суть в том, чтобы каждый уровень предоставлял определенную абстракцию посредством интерфейса и уровни взаимодействовали друг с другом через эти интерфейсы. Тут как обычно идет отсылка к сетевой модели OSI и TCP/IP. Здесь же автор рассказывает про 3 принципиальных уровня в корпоративных приложениях: data source, domain, presentation.
- Organizing Domain Logic - здесь автор рассказывает про организацию доменной логики и спойлерит 3 паттерна из второй части: transaction script, domain model, table module. Дальше он их сравнивает между собой и показывает границы применимости. Дальше он рассказывает про service layer, который часто размещают поверх domain model или table module. Дальше уровень представления взаимодействует с доменным уровнем через этот service layer
- Mapping to Relational Databases - здесь речь идет про то, как быть с данными. И на сцену выходят паттерны навроде table data gateway, active record и data mapper. Здесь же обсуждаются вопросы как маппить структуры из реляционных баз данных на модель классов и объектов внутри приложения и как быть конкретно с наследованием
- Web Presentation - здесь автор рассказывает про паттерн MVC (model-view-controller), который был когда-то популярен. Сейчас эта глава выглядит как раритет:)
- Concurrency - краткий рассказ про проблемы конкурентности, execution context, изоляцию и иммутабельность, оптимистичные и пессимистичные блокировки, дедлоки, а также транзакции (и конечно же ACID).
- Session State - здесь речь идет про хранение сессионного состояния на сервере
- Distribution Strategies - про распределенные объекты (distributed object system), которые почили в бозе вместе с CORBA:) Но тут есть актуальные мысли про DTO (data transfer objects) и lazy load.
- Putting It All Together - авторы рассказывают как использовать все описанное выше: стартовать с domain layer, переходить к data source layer и дальше двигаться в сторону presentation layer. Дальше они говорят про конкретные технологии, навроде, J2EE и это звучит приветом из прошлого.
Продолжение в следующем посте.
❤10👍6🔥1
2. The Patterns - а здесь приводятся паттерны для решения стандартных проблем из областей, разобранных в первой части
- Domain Logic Patterns - здесь речь идет про transaction script (для простой бизнес-логики), domain model, table module, service layer, которые мы обсуждали чуть выше
- Data Source Architectural Patterns - здесь разбираются такие паттерны как: table data gateway, row data gateway, active record,
data mapper
- Object-Relational Behavioral Patterns - здесь приводятся поведенческие паттерны вида: unit of work, identity map, lazy load
- Object-Relational Structural Patterns - здесь разбирается очень много структурных паттернов, многие из которых завязаны на работу с данными, identity field, foreign key mapping, association table mapping, dependent mapping, embedded value, serialized LOB. А также целый набор паттернов для решения проблемы хранения информации о иерархиях наследования в реляционной базе: single table inheritance, class table inheritance, concrete table inheritance, inheritance mappers
- Object-Relational Metadata Mapping Patterns - паттерны для хранения метадаты о связи классов и сущностей в базе: metadata mapping, query object, repository
- Web Presentation Patterns - куча паттернов про представление, но из практики, что была актуальна 20 лет назад: model view controller, page controller, front controller, template view, transform view, two step view, application controller. Если и читать это, то ради исторического экскурса:)
- Distribution Patterns - всего два паттерна для решениия вопроса распределенных объектов: remote facade, DTO (data transfer object)
- Offline Concurrency Patterns - паттерны для работы с конкурентностью: optimistic offline lock, pessimistic offline lock, coarse-grained lock, implicit lock
- Session State Patterns - паттерны относительного хранения состояния сессии клиента: client session state, server session state, database session state
- Base Patterns - базовые паттерны, что не влезли в другие категории: gateway, mapper, layer supertype, separated interface, registry, value object, money, special case, plugin, service stub, record set. Эти паттерны являются достаточно простыми и часто применяются в разных сценариях.
В общем, книга для 2002 года была просто огонь - она рассказывала про подходы к проектированию и решение типовых проблем. Также в рамках серии книг Martin Fowler Signature были выпущены и другие книги, которые развивали эту тему. Например, книга "Enterprise Integration Patterns (Шаблоны интеграции корпоративных приложений)", про которую я рассказывал раньше. Ну а сейчас книга скорее является базой, которую многие изучают по другим книгам, которые вышли позже и рассказывают про актуальные паттерны в контексте конкретной платформы (Java, Kotlin, .Net, Python, ...) и делают это супердоступно.
#Patterns #Software #SoftwareArchitecture #SoftwareDevelopment #Architecture #SystemDesign
- Domain Logic Patterns - здесь речь идет про transaction script (для простой бизнес-логики), domain model, table module, service layer, которые мы обсуждали чуть выше
- Data Source Architectural Patterns - здесь разбираются такие паттерны как: table data gateway, row data gateway, active record,
data mapper
- Object-Relational Behavioral Patterns - здесь приводятся поведенческие паттерны вида: unit of work, identity map, lazy load
- Object-Relational Structural Patterns - здесь разбирается очень много структурных паттернов, многие из которых завязаны на работу с данными, identity field, foreign key mapping, association table mapping, dependent mapping, embedded value, serialized LOB. А также целый набор паттернов для решения проблемы хранения информации о иерархиях наследования в реляционной базе: single table inheritance, class table inheritance, concrete table inheritance, inheritance mappers
- Object-Relational Metadata Mapping Patterns - паттерны для хранения метадаты о связи классов и сущностей в базе: metadata mapping, query object, repository
- Web Presentation Patterns - куча паттернов про представление, но из практики, что была актуальна 20 лет назад: model view controller, page controller, front controller, template view, transform view, two step view, application controller. Если и читать это, то ради исторического экскурса:)
- Distribution Patterns - всего два паттерна для решениия вопроса распределенных объектов: remote facade, DTO (data transfer object)
- Offline Concurrency Patterns - паттерны для работы с конкурентностью: optimistic offline lock, pessimistic offline lock, coarse-grained lock, implicit lock
- Session State Patterns - паттерны относительного хранения состояния сессии клиента: client session state, server session state, database session state
- Base Patterns - базовые паттерны, что не влезли в другие категории: gateway, mapper, layer supertype, separated interface, registry, value object, money, special case, plugin, service stub, record set. Эти паттерны являются достаточно простыми и часто применяются в разных сценариях.
В общем, книга для 2002 года была просто огонь - она рассказывала про подходы к проектированию и решение типовых проблем. Также в рамках серии книг Martin Fowler Signature были выпущены и другие книги, которые развивали эту тему. Например, книга "Enterprise Integration Patterns (Шаблоны интеграции корпоративных приложений)", про которую я рассказывал раньше. Ну а сейчас книга скорее является базой, которую многие изучают по другим книгам, которые вышли позже и рассказывают про актуальные паттерны в контексте конкретной платформы (Java, Kotlin, .Net, Python, ...) и делают это супердоступно.
#Patterns #Software #SoftwareArchitecture #SoftwareDevelopment #Architecture #SystemDesign
🔥11👍6❤4
Data Pipelines Pocket Reference
Прочитал по дороге из Новосибирска в Москву простую книгу про построение конвейеров данных для дата инженеров. Я высоко оценил краткость и практичность книги, а также то, что James Densmore, автор книги, имеет большой практический опыт построения дата инфраструктуры, что и делал в HubSpot. В итоге, я написал краткий обзор этой книги в своем блоге.
#Data #Databases #Engineering #SoftwareArchitecture #Software #SoftwareDevelopment #Management
Прочитал по дороге из Новосибирска в Москву простую книгу про построение конвейеров данных для дата инженеров. Я высоко оценил краткость и практичность книги, а также то, что James Densmore, автор книги, имеет большой практический опыт построения дата инфраструктуры, что и делал в HubSpot. В итоге, я написал краткий обзор этой книги в своем блоге.
#Data #Databases #Engineering #SoftwareArchitecture #Software #SoftwareDevelopment #Management
👍8🔥4❤2
Третий выпуск Code of Architecture по книге "Kubernetes Patterns (2 edition)"
Сегодня в 18:00 по Москве мы продолжим обсуждать книгу про паттерны и сфокусируемся на структурных паттернах и паттренах конфигурации.
Мы поговорим про организацию контейнеров внутри Pods, а также обсудим, стоит ли смешивать конфигурации системы с ее исходным кодом, и какие подходы для работы с конфигурациями предоставляет k8s. Детальнее разберем
— какой жизненный цикл для задач инициализации предоставляет k8s;
— как можно расширить функциональность существующего контейнера, никак его не изменяя;
— как организовать доступ к внешним сервисам;
— когда нужно использовать переменные окружения, ConfigMaps и Secrets для конфигурационной информации;
— можно ли создавать свои шаблоны конфигураций.
Гости выпуска
— Максим Снежков, тимлид команды Runtime Compute Tinkoff. Максим автоматизирует поставку k8s и интеграцию с инфраструктурой.
— Михаил Кабищев из Ozon, он руководит разработкой платформы, которая делает жизнь dev-команды легче и проще.
P.S.
Если вам интересны эти выпуски, то подписывайтесь на канал Code of Architecture в Youtube и канал Code of Architecture в telegram.
#Kubernetes #Architecture #Software #SoftwareArchitecture #SystemDesign #DistributedSystems
Сегодня в 18:00 по Москве мы продолжим обсуждать книгу про паттерны и сфокусируемся на структурных паттернах и паттренах конфигурации.
Мы поговорим про организацию контейнеров внутри Pods, а также обсудим, стоит ли смешивать конфигурации системы с ее исходным кодом, и какие подходы для работы с конфигурациями предоставляет k8s. Детальнее разберем
— какой жизненный цикл для задач инициализации предоставляет k8s;
— как можно расширить функциональность существующего контейнера, никак его не изменяя;
— как организовать доступ к внешним сервисам;
— когда нужно использовать переменные окружения, ConfigMaps и Secrets для конфигурационной информации;
— можно ли создавать свои шаблоны конфигураций.
Гости выпуска
— Максим Снежков, тимлид команды Runtime Compute Tinkoff. Максим автоматизирует поставку k8s и интеграцию с инфраструктурой.
— Михаил Кабищев из Ozon, он руководит разработкой платформы, которая делает жизнь dev-команды легче и проще.
P.S.
Если вам интересны эти выпуски, то подписывайтесь на канал Code of Architecture в Youtube и канал Code of Architecture в telegram.
#Kubernetes #Architecture #Software #SoftwareArchitecture #SystemDesign #DistributedSystems
YouTube
Kubernetes Patterns — Structural patterns & Configuration patterns. Episode 3.
Продолжаем погружаться в Kubernetes Patterns (2-е издание)
В третьем выпуске сосредоточимся над Структурными и Конфигурационными паттернами. Нырнем глубже в организацию контейнеров внутри Pods, а также обсудим, стоит ли смешивать конфигурации системы с…
В третьем выпуске сосредоточимся над Структурными и Конфигурационными паттернами. Нырнем глубже в организацию контейнеров внутри Pods, а также обсудим, стоит ли смешивать конфигурации системы с…
❤6🔥2👍1
503 Подкаст - System Design в разрезе надежности
Несколько месяцев назад я поучаствовал в подкасте Андрея Дмитриева из JUG Ru Group, в котором мы говорили об отказоустойчивости и надежности в разрезе проектирования программного обеспечения. Общались мы порядка часа и обсудили можно ли до написания кода системы понять, что она недостаточно надежная? Чтобы ответить на этот вопрос, нужно понять, что из хорошего «дизайна» является сутью надежности. Вот это мы и обсуждали на этом подкасте:)
В рамках обсуждения я рекомендовал следующие дополнительные источники информации
- Книга "Building Secure and Reliable System от Google"
- Обзор книга "Building Secure and Reliable System от Google"
- Книга "Philosophy of Software Design"
- Мой обзор книги "Philosophy of Software Design"
- Доклад "Паттерны отказоустойчивой архитектуры"
- Книга "Distributed Systems"
- Обзор книги "Distributed Systems"
- Книга "Clean Architecture"
- Обзор книги "Clean Architecture"
- Книга "Elegant Puzzle. Systems Engineering Management"
- Обзор книги "Elegant Puzzle. Systems Engineering Management"
- Книга "Building Evolutionary Architectures: Support Constant Change"
- Обзор книги "Building Evolutionary Architectures: Support Constant Change"
#SRE #SoftwareArchitecture #Software #Engineering #Management #Leadership #Processes #SystemDesign #SystemThinking #SystemEngineering
Несколько месяцев назад я поучаствовал в подкасте Андрея Дмитриева из JUG Ru Group, в котором мы говорили об отказоустойчивости и надежности в разрезе проектирования программного обеспечения. Общались мы порядка часа и обсудили можно ли до написания кода системы понять, что она недостаточно надежная? Чтобы ответить на этот вопрос, нужно понять, что из хорошего «дизайна» является сутью надежности. Вот это мы и обсуждали на этом подкасте:)
В рамках обсуждения я рекомендовал следующие дополнительные источники информации
- Книга "Building Secure and Reliable System от Google"
- Обзор книга "Building Secure and Reliable System от Google"
- Книга "Philosophy of Software Design"
- Мой обзор книги "Philosophy of Software Design"
- Доклад "Паттерны отказоустойчивой архитектуры"
- Книга "Distributed Systems"
- Обзор книги "Distributed Systems"
- Книга "Clean Architecture"
- Обзор книги "Clean Architecture"
- Книга "Elegant Puzzle. Systems Engineering Management"
- Обзор книги "Elegant Puzzle. Systems Engineering Management"
- Книга "Building Evolutionary Architectures: Support Constant Change"
- Обзор книги "Building Evolutionary Architectures: Support Constant Change"
#SRE #SoftwareArchitecture #Software #Engineering #Management #Leadership #Processes #SystemDesign #SystemThinking #SystemEngineering
Яндекс Музыка
System Design в разрезе надежности
👍11🔥5
Хуликомикс #1
Это первая Хулиновелла от Алексея Маркова, на блог "Хулиномика" которого я подписан достаточно давно.
Я прочитал этот комикс вчера по дороге домой и ни один раз улыбнулся за время чтения - комикс оказался действительно забавным, а местами и достаточно глубоким:)
В комиксе в основном идет речь про старт карьеры, а заканчивается он какой-то мистикой. Ударное сочетание, которое приводит к необходимости продолжить чтение следующих серий этих комиксов:) Кстати в упомянутом выше блоге Алексея каждую неделю появляется еще один слайд из комикса и их можно найти по тегу Хуликомикс, вот например слайд с прошлых выходных.
#Comics #Economics #SelfDevelopment
Это первая Хулиновелла от Алексея Маркова, на блог "Хулиномика" которого я подписан достаточно давно.
Я прочитал этот комикс вчера по дороге домой и ни один раз улыбнулся за время чтения - комикс оказался действительно забавным, а местами и достаточно глубоким:)
В комиксе в основном идет речь про старт карьеры, а заканчивается он какой-то мистикой. Ударное сочетание, которое приводит к необходимости продолжить чтение следующих серий этих комиксов:) Кстати в упомянутом выше блоге Алексея каждую неделю появляется еще один слайд из комикса и их можно найти по тегу Хуликомикс, вот например слайд с прошлых выходных.
#Comics #Economics #SelfDevelopment
🔥10👍5❤🔥2☃2
Публичное System Design Interview на конференции C++ Russia 2023
В мае на конференции C++ Russia 2023 я проводил публичное собеседование по system design, запись доступна здесь.
Я уже проводил такой тип интервью на
- C++ Russia 2022 - мы проектировали ленту в сервисе видео
- ArchDays 2022 - мы проектировали букинг номеров в отелях
а в этот раз мы с Пашей Филоновым проектировали умные парковки с возможностью бронирования и оплаты места в мобильном приложении
Если вам интересна тема system design, то можно почитать и другие мои материалы
- в общем про system design в Tinkoff
- больше про то, как мы оцениваем прохождение собеседования
- как подготовиться к собеседованию
#SystemDesign #SoftwareArchitecture #Software #Interview #SystemDesignInterview #Conference #ExternalReview #Video
В мае на конференции C++ Russia 2023 я проводил публичное собеседование по system design, запись доступна здесь.
Я уже проводил такой тип интервью на
- C++ Russia 2022 - мы проектировали ленту в сервисе видео
- ArchDays 2022 - мы проектировали букинг номеров в отелях
а в этот раз мы с Пашей Филоновым проектировали умные парковки с возможностью бронирования и оплаты места в мобильном приложении
Если вам интересна тема system design, то можно почитать и другие мои материалы
- в общем про system design в Tinkoff
- больше про то, как мы оцениваем прохождение собеседования
- как подготовиться к собеседованию
#SystemDesign #SoftwareArchitecture #Software #Interview #SystemDesignInterview #Conference #ExternalReview #Video
YouTube
Техническое интервью: Архитектурная секция
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd
— —
Техническое интервью — сложная штука сама по себе, и не все представляют, как оно проходит. А когда интервью имеет узкую направленность, то тем более.
Архитектурное собеседование — одно из самых…
— —
Техническое интервью — сложная штука сама по себе, и не все представляют, как оно проходит. А когда интервью имеет узкую направленность, то тем более.
Архитектурное собеседование — одно из самых…
🔥9👍6❤1