this->notes.
4.55K subscribers
29 photos
1 file
340 links
О разработке, архитектуре и C++.

Tags: #common, #cpp, #highload и другие можно найти поиском.
Задачки: #poll.
Мои публикации: #pub.
Автор и предложка: @vanyakhodor.
GitHub: dasfex.
Download Telegram
#books

Микросервисы. Паттерны разработки и рефакторинга. Крис Ричардсон. (2021г.)

Данная книга является в некотором роде библией про микросервисы. Если хотите погрузиться в тему, почти наверняка вам посоветуют именно её.

Микросервисы рассматриваются с самых разных сторон. Оглавление такое:
1. Побег из монолитного ада: как жить с монолитом, почему это удобно, pros and cons микросервисов и процессы вокруг. В общем база.
2. Стратегии декомпозиции: как разбить вашу систему на микросервисы в разных плоскостях. Что важно, это не про вынос микросервиса, а про проектирование с нуля.
3. Межпроцессное взаимодействие в микросервисной архитектуры: REST, gRPC, синхронные/асинхронные вызовы.
4. Управление транзакциями с помощью повествований.
5. Проектирование бизнес-логики в микросервисной архитектуре.
6. Разработка бизнес-логики с порождением событий (event driven like системы).
7. Реализация запросов в микросервисной архитектуре.
Про API, CQRS.
8. Шаблоны внешних API.
Про проблемы поддержания внешнего API и api-gateway.
9. Тестирование микросервисов 1.
Общие понятия. Модульные тесты.
10. Тестирование микросервисов 2.
Интеграционные, компонентные и «сквозные» тесты.
11. Разработка сервисов, готовых к промышленному использованию.
Безопасность, конфигурируемость, observability.
12. Развёртывание микросервисов.
Docker, kubernetes, serverless (AWS Lambda).
13. Процесс перехода на микросервисы.
Про то, как взять ваш монолит и распилить его на куски.

Каждая глава сдобрена практическими примерами. В рамках книги сквозной историей разбирается развитие абстрактного ecom приложения FTGO. Можно считать дефолтной доставкой чего-либо. И в каждой главе показывается применение описанных паттернов.

Есть несколько тем, которые мне подарила эта книга. Под «подарила» я понимаю раскрыть базовое понимание, хотя раньше я этого базового понимания насобирать не смог (хотя и не то чтобы пытался, но тут я тоже не пытался, а получилось):
- GraphQL. Выглядит очень прикольно. Прям ощущаю, насколько полезно это может быть в некоторых случаях. Может быть нам пригодилось бы.
- JWT, OAuth.
- Docker, kubernetes. Оказывается, в Яндексе я несколько лет пользовался внутренним аналогом последнего.
- serverless. Честно говоря, я не до конца осознал, но теперь я точно перестану скипать статьи про подобное и дам себе шанс разобраться глубже. Выглядит интересно.

Несколько минусов:
- текст местами без причины сложный.
Бывают предложения, которые можно упростить без потери смысла. Возможно это просто стиль письма у автора. Но материал и так сложный, а когда про него ещё и сложно пишут, становится тяжелее в квадрате. Не надо так.
- [относится к русскому изданию] книга чрезмерно локализована.
Endpoint назван «конечной точкой», а mock в теме тестирования «макетом». Сразу видно руку технического переводчика. REST, gRPC и CQRS не переведены, а вот эти термины да. Хотя имхо стоило бы их оставить как есть. Это мешает пониманию (мне, человеку с опытом, приходится прикладывать усилия для понимания простых предложений с этими терминами).

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

7/10.
125👍1913🔥5😁1
#highload

Принёс отдельные доклады с Яндекс Tech Tour (в прошлом году это был foodtech tour, на котором я выступал в Минске).

1️⃣ Как мы переосмыслили поиск лекарств в Яндекс Еде. Сергей Синягин.

Когда вы открываете Еду, ищутся все доступные вам заведения. И бывает, что вам доступны несколько заведений одного бренда. Тогда заведения дедуплицируются и остаётся какое-то одно. Проблема в том, что в этом заведении может не быть нужного вам товара (например конкретных таблеток в конкретной аптеке), а в отброшенным они были!
Серёжа рассказывает, как меняли архитектуру, чтобы уметь чаще удовлетворять пользовательские запросы.

2️⃣ Как мы пересобрали инфраструктуру Маркета и не сломали всё вокруг. Егор Быховцев.

Егор рассказывает про изменение концепции оркестрации в бэкенде Маркета.
Буквально недавно меня убедили, что такое крута. Я верю. После доклада Егора убедился ещё больше.
Внутри и снаружи решение называется apphost. Глядишь, выкатят в опенсорс скоро.

3️⃣ LLM Cache в поиске Лавки. Алексей Щекалев.

Лёша рассказывает тлдр про развитие поиска в Лавке.
Раз у нас ассортимент небольшой, то можно сделать кеш ответов на самые популярные запросы. Вот ребята это и сделали.
Имхо решение бомба. Наикрасивейше. Это не только про качество, но и про тайминги.
Ещё круто, что ребята затащили это в т.ч. в Еду. Круто, когда внутри экосистемы один сервис чуть ли не бесплатно помогает другому крутыми технологиями.

4️⃣ Event-Driven архитектура в Цикле Заказа Яндекс Лавки. Миша Горбушин.

Миша рассказывает про ЦЗ Лавки, зачем его делали event-driven, собсна как это делали. И про разные проблемы по пути.

5️⃣ Как разрабатывают и улучшают алгоритмы логистики в Яндекс Еде. Дима Ефимов.

Дима рассказывает про процесс улучшения алгоритмов доставки в Еде. В целом из чего доставка состоит. На какие метрики смотрят. Про разные уникальности доставки и местные АБ.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤮7🔥6🗿21👍1
#list

Т.к. впереди намечается солидное количество выходных, можно покайфовать под что-то интересное.

Контент будет нетехническим для разнообразия. Но в тему айтишечки и вот этого всего. Предлагаю вам ощутить напряжённейшую жизнь стартапов и их естественного развития. Иногда успешного. Иногда не очень.

Всё ниже так или иначе связано с крепкой политикой и подковёрными играми. Мне такое нравится (наблюдать, не участвовать).

👉 Сериал На взводе: Битва за Uber.

Отличнейший сериал про некоторые важные этапы развития Uber, когда компания ещё была молодой и токсичной под руководством Travis Kalanik. Так сказать, полутёмные времена компании (полу, потому что было тяжко, но они непомерно росли, так что может цель и оправдывает средства?).

Состоит из одного сезона в 7 серий примерно по часу.

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

Есть ещё книга, по которой сериал и был снят, если вы предпочитаете подобный формат.

👉 Книга Миллиард за мечту, или Как дерзость и непомерные амбиции Адама Неймана построить новое общество обернулись крахом империи WeWork. Ривз Видеман.

Adam Neumann придумал новый формат коворкингов, который превратился в честный стартап-единорог. Правда потом всё зафакапилось. Жаль братка.

👉 Книга Дурная кровь. Тайны и ложь одного стартапа Кремниевой долины. Джон Каррейру.

А эта книга про компанию Theranos и её основательницу Elizabeth Holmes, которая хотела изменить мир, дав людям возможность делать быстрые и качественные анализы в любой момент.
Амбиция крутая, а методы достижения цели не очень. Внутри солидное количество надувалова со стороны топ-менеджеров и непомерно токсичное руководство.
Штош!

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

Опять же, есть аналог, если не хочется читать фул книгу: Изобретатель: Жажда крови в Силиконовой долине, -- документалка про всё то же.

Если вы знаете что-то похожее, поделитесь!

А с меня останутся только итоги года : )
👍146👎5🔥2🐳11
# 2025

2024, 2023, 2022.

Посты:
- про хорошего разработчика;
- CRDT premier;
- первоапрельский пост про размеры;
- мои фавориты из шортлиста Технотекст 7;
- про балансировку трафика;
- микрогайд по type traits;
- пишем make_index_sequence;
- про стандартную библиотеку;
- speculative execution;
- проблемы с shared database подходом;
- про читаемость кода 2;
- опять ub моими руками;
- про найм;
- про бинарный поиск;
- про флаги оптимизаций (O);
- новости от РГ21++;
- контент на праздники;
- пачки ссылок: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25;

Люди и контент:
- Андрей Гейн и string matching premier;
- Лёша Быков и metastable failures;
- Саша Федькин и мысли про микросервисы;
- Паша Сухов и военный синус;

Сборники с конференций:
- Saint TeamLead Conf 2024;
- Saint Highload++ 2024;
- С++ Russia 2024;
- Яндекс Day&Night;
- C++ Zero Cost Conf 2025;
- Highload++ 2024 first, second;
- Яндекс Tech Tour 2025;

Книги:
- Искусство планирования мощностей. Джон Оллспоу;
- API. Сергей Константинов;
- Мама, я тимлид! Марина Перескокова;
- Вредные советы для C++ программистов. Андрей Карпов;
- System Design. Машинное обучение. Подготовка к сложному интервью. Алекс Сюй, Али Аминиан;
- Микросервисы. Паттерны разработки и рефакторинга. Крис Ричардсон;

Светился:
- в гостях у ребят из Выше Вилки;
- был с лайтнингом на C++ Russia 2025, рассказывал как мы в Лавке упрощали разработку. Записи нет, материалов не будет;
- C++ Zero Cost Conf 2025: i, j, k и шаблоны: вспоминаем линейную алгебру. Записи нет.

Самый зашареный пост: Микросервисы. Паттерны разработки и рефакторинга. Крис Ричардсон (>110 шеров).

Вас стало в 2 раза больше (на 2400 примерно).

Звали выступать на конфу, но я не ходил.

Суммарно 2 месяца из 12 провёл вне страны проживания.

7 раз приходили за рекламой.

Не понял, лишился четверти мудрости (удалил восьмёрку) или стал мудрее (на год).

Уже 10 месяцев чист от никотина. Планирую так ещё лет 50-70.

С любимой женщиной взяли собаку.

Любимая женщина стала любимой женой.

Уволился из Яндекса. Устроился в Bloomberg.

Семьёй из троих сменили Минск на Лондон.

Не умер, что особенно приятно.

Буду безмерно счастлив, если расскажете про канал друзьям/коллегам/в тематических чатах.
40172🔥44❤‍🔥15👍9
К сожалению, я был немного неосторожен и невнимателен.

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

Что важного хочется подчеркнуть:
- как оно в этом Лондоне я ещё сам хз. Мы тут всего пару дней. Напишу через год.
- same про новое место.

Расписал инфу про год вот тут: https://github.com/dasfex/articles/blob/trunk/2025.md
(фотки большие, поправлю попозже!)

Пожелание на следующий год через пару дней.

Напомню, что есть ещё @memesfromhole, @dzikart и @khdocs.

С Наступающим Вас!
👍1912🔥72
#list

0. [2026]

Начинается очередной год. Здравствуйте.

В конце прошлого года я много думал о направлении в жизни. Туда-сюда и решил, чего хочется.

Хочется делать сложные вещи.

Под сложными я в основном понимаю не только сложные, но и долгие. Когда результат будет получен через год-два. Хочется прочитать мало больших книг, а не много маленьких. Написать мало больших постов. Завести пару привычек и разгрести огромные залежи информации.

Хочется уходить от чувства ложной продуктивности и ложного счастья. Быстрый результат, дающий быстрое удовольствие, хочется исключить. Рилсы тоже в идеале не смотреть.

Такой план на год. Как получится, расскажу в декабре.

Успехов и вам.

1. [talk] Implement the C++ Standard Library: Design, Optimisations, Testing while Implementing Libc++.

Hui Xie рассказывает про точечные оптимизации и связанные с ними проблемы в libc++.
Например, как экономят память в std::expected, почему for_each работает быстрее цикла для std::deque, как правильно входить в хату вставлять в std::flat_map и всякое другое.
А в конце рассказывается про тестирование стд либы. Как оно всё там непросто у ребят.

2. [article] Logging sucks.

Какой-то чувак сделал сайт про то, как правильно логировать в ваших сервисах, чтобы логи начали быстро и честно приносить пользу.
В конце предлагает консультации за бабосики. Но может вы и сами разберётесь.

3. [article] Simplify hashing in C++.

Автор справедливо замечает, что пользоваться std::hash не очень приятно и что это надо поправить. Немудрыми улучшениями он решает эту проблему.
Опустим момент, что выбрать хороший hash_combine сложно.

4. [article] The Math of Why You Can't Focus at Work.

Статья про мат модель вашего фокуса в задачах, проблемы в этом непростом деле быть продуктивным и потенциальные их решения.
Всё конечно логично, но никогда не вредно.

=============================

Буду рад вашим предложениям, вопросам и вбросам в личных сообщениях, сообщениях в канал или в форме.
126👍13😱1
#cpp

System Level Meetup 2025

🌼 Первым докладом был «Корутинные оптимизации в компиляторах» от глыбы Константина Владимирова и коллеги глыбы Юлия Тарасова.

Доклад про корутины концептуально, их реализацию и разные оптимизации по теме (в частности в LLVM). Сложно блин! И поэтому круто. Правда придётся потом пересмотреть ещё пару раз.

🌼 Далее Сергей Чеботарёв рассказывал «Модули С++20 в существующий проект: лёгкая прогулка или прыжок в бездну?».

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

🌼 «LRU-кеш: от решения с собеседования до production-уровня» Ильи Шишкова.
Кеш у Ильи не базовый бэкендерский. Он хранит какие-то артефакты в шареной между различными процессами памяти.
Имхо крутая история про полезность правильного трейдофа. На самом деле иногда нам достаточно приблизительное решение, что позволяет упрощать/экономить. Надо учиться такое подмечать и вовремя использовать.
Код конечно у ребят глаз не радует. Может я привередливый.

Круто #1: в итоге получается не жоское решение, которое разваливает всё-всё, а чуть медленее на большинстве запросов, зато гораздо быстрее на тяжёлом хвосте. Уменьшать дисперсию тоже очень полезно. Это предсказуемость, которой иногда сильно не хватает.

Круто #2: Илья несколько раз говорит, что к чему-то не дошёл в процессе решения задачи.
Важно уметь вовремя остановиться. Мы можем улучшать что-то бесконечно, но если вы начинаете тратить больше, чем в итоге получаете, скажите себе хватит. Это про взрослое отношение к задачам.

🌼 «Когда действительно нужны алгоритмы: опыт оптимизации kd-tree» Саши Голубева.

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

С Сашей мы год вместе занимались С++ community в Яндексе. Вот такой мужик👍

Ещё на C++ Russia 2024 я Сашу вином облил. Не специально.


🌼 Анастасия Черникова рассказывала «Анатомия чекеров в clang-tidy».
Доклад буквально про то, как он называется.
Анастасия рассказывает про разные способы проверять качество кода. Глубже уходит в статический анализ. Рассказывает про AST, разные классы чекеров и сами чекеры из LLVM инфраструктуры.
А дальше рассказывает, как она дорабатывала один из чекеров и как это вообще делается.

🌼 Заканчивал C++ трек доклад «Строки, строки, строки и initializer_list» Антона Полухина.
Антон рассказывал про разные проблемы со строками, их лайфтаймом, std::string_view, кастомную поделку для литералов (чтобы быть уверенными в их времени жизни), а ещё, конечно же, про то, как избегать лишних аллокаций там, где мы можем случайно их словить.

Мне понравилось.
🔥29👍143👏2
#list

0. [talk] Could C++ Developers Handle an ABI Break Today?

Доклад про потенциальные последствия слома ABI. Не про мнение докладчика или нужно ли нам это делать в С++, а просто что будет, если уже случилось. Показывает как теоретически, так и на примерах уже произошедших сломах ABI.
Может и правда не надо его ломать. Непонятно!

Но, думаю, никто не был бы против более быстрых unordered контейнеров из-за перехода на открытую адресацию. Или возможности работать с int128_t.

1. [article] How to contribute to Abseil with a visible performance gain.

Danila Kutenin рассказывал, как он оптимизировал флаги в abseil.
Красиво блин.

2. [article] Как построить прогноз спроса и не потерять голову.

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

3. [article] Why speed matters.

Паша @cpp_durka Сухóв подкинул важную базу.

4. [fact] MFA fatigue.

Multi factor authentication fatigue атака -- это когда злодеи-анонимусы узнали ваши логин и пароль и пытаются взять вас на лоха, задудосив попытками войти в аккаунт. Вам придёт много-много уведомлений (ведь у вас как минимум 2fa), будете отвлекаться и тыкнете «Разрешить», чтобы не мешало. Ну или случайно кликните и дадите доступ.
Вот, например, Uber так на самом деле взламывали.

Это конечно надо глубоко понимать людей, чтобы впервые такое придумать. Восхищён.

=============================

Буду рад вашим предложениям, вопросам и вбросам в личных сообщениях, сообщениях в канал или в форме.
7👍3🤓2
this->notes. pinned «# 2025 2024, 2023, 2022. Посты: - про хорошего разработчика; - CRDT premier; - первоапрельский пост про размеры; - мои фавориты из шортлиста Технотекст 7; - про балансировку трафика; - микрогайд по type traits; - пишем make_index_sequence; - про стандартную…»
#list

0. [talk] Unlocking Modern CPU Power - Next-Gen C++ Optimization Techniques.

Fedor G Pikus рассказывает про скорость работы процессоров, их устройство и оптимизации, в которые они умеют. Довольно сложно и непонятно.

1. [talk] Руководство по поимке и обезвреживанию проблемных запросов.

TLDR про то, как же искать проблемы с перфом в ваших запросах в pg.
Вообще конечно этот огромный неизведанный мир расширений pg это что-то интересное.

2. [article] Binary Search Vs. Prolly Search.

Автор рассказывают про модификацию бинарного поиска для случая, когда данные у нас примерно равномерно распределены.

3. [article] How to Hash Objects Without Repetition: std::hash can be DRY.

Вот неудобно людям стандартной библиотекой пользоваться. Языком там. Они такие статьи пишут..

4. [article] Когда-то писал про интересную комбинаторную задачу.

=============================

Буду рад вашим предложениям, вопросам и вбросам в личных сообщениях, сообщениях в канал или в форме.
👍122