![{ между скобок }](/img/default-banner.jpg)
- 145
- 404 181
{ между скобок }
Cyprus
เข้าร่วมเมื่อ 8 พ.ค. 2022
Книжный клуб { между скобок }
Накопилась гора книг? Одному сложно заставить себя читать? Нужен систематический подход? Тогда добро пожаловать в книжный клуб! Обсуждаем, делимся впечатлениями и ревьюим друг друга.
Накопилась гора книг? Одному сложно заставить себя читать? Нужен систематический подход? Тогда добро пожаловать в книжный клуб! Обсуждаем, делимся впечатлениями и ревьюим друг друга.
Архитектурная Ката / Максим Чернухин , Глеб Гончаров
#softwareengineer #systemdesign #softwarearchitecture #kata
Что это такое? "Архитектурная ката" - это практика, которая поможет нам улучшить наши навыки и процессы в разработке программного обеспечения. Мы в командах решали реальные архитектурные задачи, изучали новые методы и подходы, а также совершенствовали наши навыки в командной работе.
Канал с анонсами t.me/megdu_skobok
Ламповый чат t.me/backend_megdu_skobkah
Boosty boosty.to/megdu_skobok
Полезные ссылки
- ИТ-сообщество игр «Архитектурные ката» architecturalkatas.ru
- Event Storming www.eventstorming.com
- Migrate from Nginx to Envoy dropbox.tech/infrastructure/how-we-migrated-dropbox-from-nginx-to-envoy
- How to implement a distributed and auto-scalable WebSocket server architecture on Kubernetes medium.com/lumen-engineering-blog/how-to-implement-a-distributed-and-auto-scalable-websocket-server-architecture-on-kubernetes-4cc32e1dfa45
Таймкоды
00:00 Введение в архитектурную кату
26:18 Сохраняем динамику для Event Storming
28:42 Рекомендации по завершению каты
29:50 Разница между архитектурной катой и system design
30:36 Идеи по улучшению каты
37:40 Начало презентации решений
39:32 Аутентификация
54:55 Хранение перс данных
01:05:52 Поиск
01:17:09 Мэтчинг
01:29:33 Чат
Что это такое? "Архитектурная ката" - это практика, которая поможет нам улучшить наши навыки и процессы в разработке программного обеспечения. Мы в командах решали реальные архитектурные задачи, изучали новые методы и подходы, а также совершенствовали наши навыки в командной работе.
Канал с анонсами t.me/megdu_skobok
Ламповый чат t.me/backend_megdu_skobkah
Boosty boosty.to/megdu_skobok
Полезные ссылки
- ИТ-сообщество игр «Архитектурные ката» architecturalkatas.ru
- Event Storming www.eventstorming.com
- Migrate from Nginx to Envoy dropbox.tech/infrastructure/how-we-migrated-dropbox-from-nginx-to-envoy
- How to implement a distributed and auto-scalable WebSocket server architecture on Kubernetes medium.com/lumen-engineering-blog/how-to-implement-a-distributed-and-auto-scalable-websocket-server-architecture-on-kubernetes-4cc32e1dfa45
Таймкоды
00:00 Введение в архитектурную кату
26:18 Сохраняем динамику для Event Storming
28:42 Рекомендации по завершению каты
29:50 Разница между архитектурной катой и system design
30:36 Идеи по улучшению каты
37:40 Начало презентации решений
39:32 Аутентификация
54:55 Хранение перс данных
01:05:52 Поиск
01:17:09 Мэтчинг
01:29:33 Чат
มุมมอง: 2 234
วีดีโอ
Ян Чикнизов: Чем занимается ваш Engineering Manager
มุมมอง 8862 หลายเดือนก่อน
#softwareengineer #management #agile #architecture Взял интервью у Engeenering Manager - чтобы понять, кто такой EM и за что он отвечает. Мы обсудили ключевые качества и навыки, которые необходимы для этой роли, а также выяснили, что EM - это не только про работу с людьми, но и про технологии. Ян рассказал, что его привлекает в этой работе и когда компании принимают решение, что им нужен Engeen...
Поздравляем с наступающим Новым Годом 2024!
มุมมอง 6237 หลายเดือนก่อน
Поздравляем с наступающим Новым Годом 2024!
Игорь Пересунько: работа в Startup vs Faang, какой путь выбрать
มุมมอง 1.4K7 หลายเดือนก่อน
Игорь Пересунько: работа в Startup vs Faang, какой путь выбрать
Distributed Systems Глава 9 Безопасность в распределенных системах | Михаил Курзин Александр Пахомов
มุมมอง 6718 หลายเดือนก่อน
Distributed Systems Глава 9 Безопасность в распределенных системах | Михаил Курзин Александр Пахомов
Maarten van Steen: interview with the author of Distributed Systems
มุมมอง 1.7K8 หลายเดือนก่อน
Maarten van Steen: interview with the author of Distributed Systems
Distributed Systems Глава 8 Отказоустойчивость | Илья Казначеев, Валерий Жила
มุมมอง 9599 หลายเดือนก่อน
Distributed Systems Глава 8 Отказоустойчивость | Илья Казначеев, Валерий Жила
Блокчейн как распределенная система | Игорь Корсаков, Сергей Тихомиров
มุมมอง 4509 หลายเดือนก่อน
Блокчейн как распределенная система | Игорь Корсаков, Сергей Тихомиров
Distributed Systems Глава 7 Согласованность и репликация данных | Антон Жуков, Николай Ижиков
มุมมอง 7169 หลายเดือนก่อน
Distributed Systems Глава 7 Согласованность и репликация данных | Антон Жуков, Николай Ижиков
Distributed Systems Глава 5 Координация распределенного приложения | S0ER, Дмитрий Константинов
มุมมอง 7609 หลายเดือนก่อน
Distributed Systems Глава 5 Координация распределенного приложения | S0ER, Дмитрий Константинов
Виталий Лихачев, Наталья Саушкина: Публичное собеседование Senior Golang Engineer
มุมมอง 10K9 หลายเดือนก่อน
Виталий Лихачев, Наталья Саушкина: Публичное собеседование Senior Golang Engineer
Distributed Systems Глава 4 Межсервисное взаимодействие | Виктор Гамов, Андрей Ребров
มุมมอง 98610 หลายเดือนก่อน
Distributed Systems Глава 4 Межсервисное взаимодействие | Виктор Гамов, Андрей Ребров
Distributed Systems Глава 3 Процессы и Виртуализация | Евгений Козлов, Вячеслав Горюнов
มุมมอง 63210 หลายเดือนก่อน
Distributed Systems Глава 3 Процессы и Виртуализация | Евгений Козлов, Вячеслав Горюнов
Максим Суркиз: Как успешно запустить свой Startup
มุมมอง 88210 หลายเดือนก่อน
Максим Суркиз: Как успешно запустить свой Startup
Гриша Скобелев, Саша Бармин: Публичное собеседование Senior Software Engineer
มุมมอง 17K10 หลายเดือนก่อน
Гриша Скобелев, Саша Бармин: Публичное собеседование Senior Software Engineer
Distributed Systems Глава 2 Архитектура распределенных систем | Фрол Крючков, Иван Богатырёв
มุมมอง 1.1K11 หลายเดือนก่อน
Distributed Systems Глава 2 Архитектура распределенных систем | Фрол Крючков, Иван Богатырёв
Distributed Systems Глава 1 Введение в распределенные системы | Юрий Бабак, Алексей Гончарук
มุมมอง 2.7K11 หลายเดือนก่อน
Distributed Systems Глава 1 Введение в распределенные системы | Юрий Бабак, Алексей Гончарук
Владимир Абазов, Александр Сальников: АБ-тесты, ограничения и альтернативы
มุมมอง 83511 หลายเดือนก่อน
Владимир Абазов, Александр Сальников: АБ-тесты, ограничения и альтернативы
Ярик Астафьев, Аксель Ткачев: публичное собеседование тимлида
มุมมอง 2.9Kปีที่แล้ว
Ярик Астафьев, Аксель Ткачев: публичное собеседование тимлида
Валерий Бабушкин, Арсений Кравченко: Интервью с авторами Machine Learning System Design
มุมมอง 3.1Kปีที่แล้ว
Валерий Бабушкин, Арсений Кравченко: Интервью с авторами Machine Learning System Design
Ольга Елисеева: Как стать лучшим teamlead-ом
มุมมอง 1.5Kปีที่แล้ว
Ольга Елисеева: Как стать лучшим teamlead-ом
Валерий Бабушкин: Почему Data Scientist-oв не существует
มุมมอง 13Kปีที่แล้ว
Валерий Бабушкин: Почему Data Scientist-oв не существует
ChatGPT в помощь архитектору / Николай Голов, Иван Шумов
มุมมอง 2.6Kปีที่แล้ว
ChatGPT в помощь архитектору / Николай Голов, Иван Шумов
Саша Пшеборовская - Успех через менторство
มุมมอง 1.5Kปีที่แล้ว
Саша Пшеборовская - Успех через менторство
Основы архитектуры ПО. Глава 18 Выбор подходящего стиля архитектуры / Сергей Баранов
มุมมอง 1.3Kปีที่แล้ว
Основы архитектуры ПО. Глава 18 Выбор подходящего стиля архитектуры / Сергей Баранов
Основы архитектуры ПО. Глава 17 Микросервисная архитектура / Филипп Дельгядо, Кирилл Ветчинкин
มุมมอง 2.8Kปีที่แล้ว
Основы архитектуры ПО. Глава 17 Микросервисная архитектура / Филипп Дельгядо, Кирилл Ветчинкин
Николай Голов, Николай Марков, Филлип Уваров: Big Data is Dead
มุมมอง 1.6Kปีที่แล้ว
Николай Голов, Николай Марков, Филлип Уваров: Big Data is Dead
Основы архитектуры ПО. Глава 16 Orchestration-Driven Service-Oriented архитектура / Иван Шумов
มุมมอง 1Kปีที่แล้ว
Основы архитектуры ПО. Глава 16 Orchestration-Driven Service-Oriented архитектура / Иван Шумов
Тагир Валеев: интервью с автором 100 Java Mistakes and How to Avoid Them
มุมมอง 3.3Kปีที่แล้ว
Тагир Валеев: интервью с автором 100 Java Mistakes and How to Avoid Them
Основы архитектуры ПО. Глава 15 Space-based архитектура / Евгений Кузовлев
มุมมอง 1.2Kปีที่แล้ว
Основы архитектуры ПО. Глава 15 Space-based архитектура / Евгений Кузовлев
Выпуск просто бомба! 💣💥
Tempóral же )) UPD не дослушал до конца первой минуты, спасибо Антону за правильное ударение )))
Очень интересно
Time-коды было бы хорошо добавить
тяжело смотреть, каждый о своём, сплошной поток сознания не по теме
Несколько лет работал с аналогичным устройством внутренней архитектуры сервиса, хорошо знаю плюсы и минусы подхода. У рассказанного подхода есть большие проблемы с оптимизацией. Например, сохранение агрегата целиком грузит базу на порядок больше, чем обновление отдельных полей. А это блокировки таблиц, полей, IOPS, обновление кешей в базе. Кроме того, в указанном примере для query текст запроса отправляется по сети каждый раз, вызывая сначала свою сериализацию, потом десиарилизацию и синтаксический парсинг. Если нужна призводительность, уйти от хранимых процедур не получится. Подход можно докрутить, но придется отказаться от агрегатов и ряда других идей. На небольших приложениях работает хорошо, но в нагруженных системах, увы, не применимо. Кроме того, использование этой архитектуры в микросервисах маленького размера накладывает огромный оверхед на затраты времени на разработку и сильно усложняет сопровождение. Но единобразие архитектуры действительно полезная штука. Резюмируя свой опыт - внутренняя архитектура сервиса должна быть. Выбирайте наиболее удобную для себя и делайте просто. Единообразно где это возможно. Большая часть книжек презентует красивые концепции, которые сыплются при реализации. Пишут такие книжки для того, чтобы продать Вам идею. Не забывайте об этом. KISS и YAGNI самые важные аббревиатуры.
Григорий, спасибо за интересное обсуждение! Не мог бы ты поделиться списком литературы, источников информации про моделирование? Может быть гости могут поделиться своими? Интересная тема!
@mezhdu_skobok не смог найти в плейлисте встречи по главам 6 и 7, они существуют?
и кстати промокод не работает
хороший выпуск! где-то на гитхабе код валяется?
Мне кажется собес был ненужным. Сразу было понятно, что он готов к такой работе.
Если со временем правила для value object поменялись, и некоторые значения в базе стали невалидными, то как их выгружать из базы? Если из 3-й системы, на которую ты никак не можешь повлиять, летит невалидная фигня, останавливать работу всех сервисов?
прошло 30 минут видео - на обсуждение темы главы давно забили
Интересный формат, спасибо за видео
Почему-то Георгий всегда намного тише, чем остальные. Звук нельзя выровнять?
Спасибо за обратную связь, сделаю микрофон громче
Было бы здорово если Геннадий поделился примерами статей с глубоким разбором кейсов по DDD
1. Кандидат слишком многословен. 2. Кандидат оцениватся как "выше синьора", но спрашивают у него базу по Java Core. Сусдизайн в "РиК" не творят? А если творят - кто эти монстры? И как вы тогда собесите джунов/мидлов?
О какой книге идет речь на 44 минуте?
Про какой ты конкретно тайм код. Например, так можно указать отметку времени 46:30
Этот DDD не нужОн ваш
Не так уж и плохо. Хорошо, что не похоже на популярные сейчас шаблоны аля Алекс Ксю. Но, кажется, было бы лучше, если бы интервьюер активнее контролировал и направлял отвечающего. Очень много говорильни, но мало чего зафиксировано на схемах. Надо выступающему посмотреть Курс молодого бойца от Олега Онтико(hightload++).
большой минус кандидату - он вообще никаких вопросов не задал про задачу. например, можно было бы узнать как будет использоваться система - больше записи или чтения, профиль нагрузки, объем данных, кол-во нод в системе и тд. а тут сразу начал реализовывать, а на 9.43 интервьювер сказал про инмемори БД...
Я так понимаю что описание workspace на языках Java, .Net, etc дает возможность определять архитектурные правила и праверять их соблюдение модульными тестами. Или есть еще какое-нибудь интересное использование описаний архитектуры на Java?
Объясните пожалуйста, как это работает? MAU 20m, значит в день 670к???? Чоооо? У винды 365м пользователей, значит в день 1 Мио? Серьёзно?!?
32:00 Если нет consistency, зачем делать систему, где есть лидер..? Просто взяли и не выбрали ничего из "CAP"...
22:21 Плохой вариант. Для leader election нужен специальный алгоритм, наивный не сработает
21:35 Ещё можно про Viewstamped Replication и про Zookeeper Atomic Broadcast почитать
21:20 Multi Paxos, а не Paxos
21:00 В etcd Raft, реплики тоже общаются по протоколу Raft... (Зачем..?)
Это не проектирование базы данных. 10 минут про то, что это просто хэш-таблица и ссылки на файлик и дальше 50 минут стрелочки мастер->слэйв. Может надо было что-то про атомарность, какие-нибудь способы обработки отказов системы, больше про физическое представление данных. А база у нас однопоточная или нет?А какие данные храним? Только строки? Может спроектировать хранение сложных структур?
Если у тебя есть protobuf, всё есть строка (aka если есть молоток, всё гвозди) Вообще так-то байты нужно хранить...
Спасибо
Постгрес сжимает данные по умолчанию? Это точная инфа? Таплы это не про сжатие если что.
Оговорился постгрес не сжимает, а использует таплы.
@@mezhdu_skobokоговорился только в этом моменте или ещё были какие-то недочеты?
Наверное, TOAST имели в виду.
В задаче описана функция получения данных по строке - зачем сюда стели лепить бинарное дерево? key-value сторадж аля Redis слишком просто использовать?
Человек просто не знает LSM
Зачем джуна волка на собес позвал? Кандидату 18 лет и у него меньше года коммерческого опыта, в чем тут он нам поможет разобраться? Как делать точно не стоит?
вообще-то он старший разработчик в Озон) Хотя это уже не показатель, берут с рынка всех подряд)
Тот случай когда ни интервюер ни интервьюируемый не знаю о чем говорят, не знают как проектировать бд но при этом делают вид что все круто и все работает)
@@danil4095 Тот самый двадцатилетний сеньор-помидор-архитектор
Какая то ерунда )
Почему ?
Прикольно, как неограниченный бюджет превратился k8s в k9s. При увеличении количества денег все увеличивается.
😂 ну видимо k9s часто пользуется, вот и глаз замылился. k9s это tui для k8s
Спасибо за интервью. Можно ссылку на код который ревьюели.
Девушка молодец
Такой классный гость, интересные рассуждения, очень интересный опыт, и Николай его, даже не знаю, какое лучше слово подобрать, "прессует" что ли своими вопросами. Притом и гость в целом и без того в канве поставленного вопроса отвечает. Это же не экзамен в университете...
Вы говорите, про новые языки программирования. Вопрос Олегу: вы хоть один язык программирования выпустили для широкой публики?
Почему на 55:12 показана неэффективная реализация метода? А какая будет эффективная?
Чего не спросили чтото за сети?
вместо броадкастера и мапы с каналами, который Виталий предложил, можно же было использовать один канал и закрытие канала в качестве сигнала. Потом из кэш-мапы забирать данные
Смотреть надо - оч правильное замечание..интервью окончено. Код+что он выведет = зло. Человек живет в парадигме ТДД, где он тест сначала пишет ваще))))
Игра в реальную жизнь: стартуем, а не стартует и дискуссия на час.
Двухфазовый коммит это strong/acid consistency, а EDA это eventual consistency. Здесь в кучу все смешали. Смысл как раз в том, что мы говорим, что система в конечном счете будет в согласованном состоянии, но не сейчас, а в будущем, когда долетят необходимые события. За это мы получаем производительность системы, так как у нас нет раздутых транзакций где лочится куча данных, которые также нужны другим параллельно выполняющимся транзакциям и все дружно сидят друг друга ждут, но за это мы расплачиваемся тем, что пользователь в разные моменты времени будет видеть устаревшее или странное состояние системы и может считать это багом и с этим нужно как-то жить. Простейший пример eventual consistency это перевод денег со счета в одном банке на счет в другом банке. В моменте мы как пользователь можем видеть, что деньги с нашего счета уже списали, но на счету в другом банке они еще не появились. Мы к этому привыкли, мы не ждем здесь strong consistency, то есть мгновенного зачисления и не считаем это багом, но конечно есть множество других юзкейсов, где eventual consistency будет выглядеть странно для конечного пользователя. Соответственно strong/acid consistency ведет к снижению производительности системы, а eventual consistency ведет к несогласованным данным в различные промежутки времени.
Cмотрeл постановку задачи, меня только одного смутило что попугайчики могут регистрироваться в мобильном приложении имеют емайл и профиль в соц сетях и на них распространяется законодательство регионов распространения приложения? это сотка по паподанию в мем Да что ты черт побери такое несешь? Не представляют что это были за требования которые породили такую постановку задачи. Надеюсь требования были не соевые Вы сделали мой день ❤❤❤❤❤
Я не понимаю, почему у этого классного интервью так мало просмотров и лайков. Очень круто! Вы - большие молодцы!
21:13 ровно 1000, а не 1024
nowait если перехватывать - полезная вещь. Например одновременно списывается сумма по счету на покупку билета. Сумма билета 1500 руб. Баланс 1500. Если в 2 транзакциях происходит списание, то мы можем отловить изменение в 1 транзакции и уведомить, что сумма уже списана, for key update nowait. А если очередность реализовать параллельную, то через skip locked, к примеру мы по 1000 записей через cte обновляем, нам важно пропускать то, что уже заблокировано и брать в работу следующую пачку из 1000 записей 😊 на своем проекте такое реализовывал
Спасибо, круто видеть каты онлайн, хотелось бы видеть чаще)
Еще круче в них участвовать) В телеграмм канале будет анонс скоро следующей каты