System Design World @system_design_world Channel on Telegram

System Design World

@system_design_world


Улучшаем навыки проектирования систем вместе! Готовимся к System Design Interview.

System Design World (Russian)

Добро пожаловать в мир проектирования систем - мир, где мы совершенствуем наши навыки вместе! Telegram-канал '@system_design_world' создан специально для тех, кто хочет подготовиться к System Design Interview и стать профессионалом в области проектирования сложных систем. Здесь вы найдете информацию, советы, и ресурсы, которые помогут вам развить свои навыки и стать экспертом в этой области. Мы предлагаем уникальные материалы, интересные кейсы, и возможность общаться со специалистами в области системного проектирования. Присоединяйтесь к нашему сообществу и станьте частью мира, где проектирование систем - это искусство, которое можно освоить и улучшить. Давайте развиваться вместе и достичь новых высот в мире System Design!

System Design World

30 Dec, 09:45


🫶 С Наилучшими пожеланиями в Новый Год!

🏄‍♂️ Свершений, приятных открытий и душевного тепла!

🚀 2024 год промчался стремительно и насыщенно!
Делюсь основными активностями.

System Design
1) Провёл стрим на дружественном канале, посвященный шардированию. Судя по лайкам зрителям зашло 😊
2) Сделали серию мок интервью по System Design youtube, dropbox. Если собираешься собеседоваться - вот тебе готовые пособия 🥳
3) Встретились офлайн с подписчиками, отпраздновали рост канала. И в целом хорошо провели время :)
4) Создали несколько архитектурных кат. В организации первой здорово помогли Игорь и Евгения! На 2ой декабрьской сошлись 42 team, Za Gotbit, X team. Решения получились классные! Ребята молодцы! Отзывы о кате положительные! #ArchitecturalKata
5) Участвовал в хакатонах. Описал на канале часть. Несколько раз становился призёром в составе различных команд. Крутое последнее достижение - 2ое место на хакатоне от ВТБ. Хакатон - отличное место для проверки своих сил на реальной нужной компании задаче! #Hackathon
6) На ProIT Fest приехал с System Design задачей. Участники в дружеской атмосфере задавали интересные вопросы. Все вместе продуктивно провели встречу 👌
Спасибо Антону за решение!
7) Организовал дискуссию System Design Интервью: Казнить нельзя помиловать на HighLoad++ 2024 Moscow.
Теперь я понимаю сколько нужно подготовки и почему это не так просто 😏 Особенно, когда выступаешь не один. Когда нужно сводить всё в единую согласованную точку. У нас получилось! Для интересующихся такими собеседованиями как со стороны кандидата, так и со стороны компании скоро выложу ссылку. Мне как спикеру она доступна для шаринга.
8) Освятил чёткий фреймворк для прохождения System Design собеседований в БигТех компании.

🙋 Общение со студентами
Рассказывал студентам МГУ, МИРЭА современные реалии IT :)

👥 Новые авторы
На канале появились 2 новых автора:
Нина Пакшина рассказывала про эволюцию http #HTTP
Лариса Соловьева про реальный кейс с имплеменатцией Change Data Capture

🔅 Изюминка года
Ею стала беседа под NDA с одним из первопроходцев HFT. Потрясающая встреча! Я был в изумление от глубины понимания домена, технологий и навыков собеседника. Тот пример, когда 1 человек может реально многое.

💯 Самый популярный...
Приятной неожиданностью стал мой перевод статьи Как Notion обрабатывает 200 миллиардов объектов данных.
На хабре он вызвал положительную реакцию с 7.6 тыс просмотров, и короткий пост-ревью в телеграме с 14.2 тыс просмотров.
Был комментарий, что хотелось бы больше таких ревью. Взял на заметку ✍️

🥇 Эталон решения System Design задачи
Ближе к концу года мы встретились с Евгением - тимлидом Авито - для решения System Design задачи - проектирование LeetCode. Евгений последовательно расписал решение, ответил на множество моих вопросов и оставил после себя законченную схему. Для прокачки welcome :)

Менторство как хобби
Стал преподавателем Отуса, активно делился знаниями как ментор.
Менти проходили успешно технические собеседования в BigTech - 🔠 Kaspersky, 🔠 VK, 🔠 Yandex.
Рад, что оказался полезным на их пути. Старался прорабатывать совместно саму специфику прохождения, плюс нужные знания.

🔑 Также посетил тематические конференций - ArchDays, Podlodka TechLead, Стачка, HighLoad++(habr), ...
Стараюсь делиться знаниями, инсайтами для обогащения как архитектурного опыта, так и в целом полезным материалом.

На протяжение всего года я как автор канала создавал разнообразный контент на тему System Design и Архитектуры. Это были описанные встречи, текстовой и анимационный материал для тебя, для удобного восприятия.

4️⃣ Рост канала ~4x
С 500 -> 1900 за год! Без рекламы! Только качественный разнообразный контент и заинтересованные подписчики!

🔜 Дальше -> больше :)

💫 Рад, что дочитали до конца! :) Желаю всего самого хорошего! Cвершений и здоровья в Новом Году!



🎄 Спасибо тебе, 2024! Да здравствует 2025!
Ставь:
❤️ - если год для тебя прошёл супер)
💯 - выдался хорошим с приятными событиями
👍 - в среднем год как год, что-то получилось из задуманного
🤷 - сложно ответить было ли положительного больше

System Design World

19 Dec, 16:46


First Law of Distributed Object Design: Don't distribute your objects.

Первый закон дизайна распределенных объектов: Не распределяйте ваши объекты.
(с) Мартин Фаулер

System Design World

19 Dec, 16:46


🕋🕋 Делаем бэкапы заранее! И не делаем лишних зависимостей у компонентов!

👉 На HighLoad++ зашёл на увлекательный доклад СДЕКа о восстановление IT инфраструктуры после атаки шифровальщиком.

🙄 Один из поинтов был в том, что все, конечно, знают, что не надо плодить лишних связей) Но, всё-равно, создают)
Из-за этого сложно восстановить базовый компонент, который стал связанным со второстепенным, от которого стал зависеть и без которого его нельзя поднять o_O
А если бэкапа для второстепенного нет, то и основной восстановить не получается 😭

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

💸 Похоже, мы все пришли к вызовам современности - теперь нужны периодические бэкапы не только потому что "хотелось бы, если что...", а потому что "когда нас взломают, нужно как можно быстрее и качественней восстановиться". Растут требования и базовые затраты на IT инфраструктуру 🥹

🧐 Как считаешь, насколько часто нужно делать бэкапы, ограничивать доступ к базам и создавать тайные уголки с самими бэкапами лишь для маленькой группы супер доверенных админов?

System Design World

12 Dec, 15:39


🔥 Архитектурная Ката 2.0 на низком старте!

Открываю подробности самой каты. Заходи в System Design Чат для регистрации. Ещё можно успеть!

🕗 Желаю всем хорошего вечера.
Если не получилось сегодня быть с нами, обязательно ждём в следующий раз! 😊

#ArchitecturalKata

System Design World

10 Dec, 19:33


🏃‍➡️ Это кто к нам пришёл? Ката! Погнали!

Собираемся в четверг вечером 12.12.2024 в 20:00!
😔 К сожалению, интеграция нашего канала в этом году не состоится. Будем смотреть на следующий.

📆 Поскольку, я уверен, многие из вас уже забили это время под активность архитектурной каты - мы её всё-равно проведём!

😏 Подготовил интересное задание) После его презентации отвечаю на ваши вопросы. И go по командам проектировать!
За 45 минут. Жёстко? Зато интересно)

Прокачивайте командное взаимодействие, применение архитектурных паттернов. И просто получайте удовольствие от совместного вечернего времяпрепровождения😀

😊 Жду всех в наше чате - System Design Chat.
Ссылку на встречу размещу там ближе к времени старта.

Предложения и пожелания можно писать в чат или сюда в комментариях.

#ArchitecturalKata

System Design World

05 Dec, 06:07


🏵 VTB API hackathon 2024. Мы призёры!

💪 О самом хакатоне можно сказать одним словом - мощно!
Проведения хакатона, задачи, судейство, организация финала получили высокие оценки от участников!
Везде чувствовалась вовлеченность организаторов. И ответная активность команд.

Финальный питч офлайн - то ещё испытание 😅 И его получилось пройти!

🎥 Сделал ёмкое видео, чтобы передать атмосферу финала. enjoy :)

Полная версия - apihack.vtb.ru.
Мой питч - 5:55:15 (надо же)

▶️ Принимаешь участние в хакатонах? Если да, то почему? Если нет, то почему? :)

#Hackathon

System Design World

23 Nov, 10:27


VTB API hackathon 2024. Наш финал!

▶️ Дошли до финала! Сегодня питчу оффлайн.

3 трека:
1) Open API
2) gRPC
3) Единая платформа аутентификации API
Выбрали 3ий.

Финал открытый в отличие от летнего архитектурного хакатона от ВТБ. На котором тоже получилось дойти до финала.
✍️ Можете посмотреть созданные решения, намотать на ус интересные приёмы.

🎦 Наша защита в 16:45.
Подключайтесь!

https://apihack.vtb.ru/
Старт выступления: 5:55:15

System Design World

18 Nov, 11:05


❄️🔥 Горячая дискуссия в первые дни зимы!

Зима близко! Осталось всего две недели до старта дискуссии System Design Interview: Казнить нельзя помиловать.

Начнём с вводной по этому популярному этапу интервью. Далее разберём по полочкам основные тезисы. А ещё приготовили небольшой интерактив для участников!

Стартуем 2 декабря в 17:00 в зале Найроби+Касабланка.
Приходи онлайн, оффлайн. Будет горячо! :)

System Design World

18 Nov, 11:05


System Design Interview вездесущ. Раньше старшим специалистам достаточно было показать свои навыки в доменной области, чтобы успешно устроиться на свою новую работу мечты. Сейчас же необходимо придумать и построить целую систему всего за 45 минут! Насколько такой навык нужен в реальной работе? Что проверяет такое собеседование?

На HighLoad++ 2024 в рамках дискуссии «System Design Interview: казнить нельзя помиловать» профессионалы взвесят все «за» и «против» — скучно не будет.

Посетить эту дискуссию стоит и менеджерам, планирующим или практикующим system design interview, и сотрудникам.

До скорой встречи, друзья 🙌

System Design World

01 Nov, 13:53


🌪Архитектурный дзен

Стартовала ежегодная архитектурная конференция ArchDays.

Интересные доклады, общение. До мерча пока не дошёл😅

Отличие от HighLoad++ в большей абстракции. Больше разговоров на тему архитектуры, подходов, сути и специфики роли архитектора.

Позже напишу интересные тезисы с различных докладов.

А какая конференция нравится тебе больше всего? И почему?

System Design World

26 Oct, 17:20


⭐️ System Design LeetCode / TeamLead Avito

✔️ Смонтировал для тебя состоявшийся стрим с Евгением - тимлидом из Авито. Вышло ёмкое учебное пособие по прохождению интервью за 1 час :)

➡️Канал Евгения - https://t.me/afonasev_blog (питон, конференции, развитие языка, жизнь IT).

👍Gо прокачиваться:
youtube
rutube

Какой дизайн хочешь увидеть следующим?

System Design World

26 Oct, 07:53


🏃 В погоне за BIG TECH!

Расширяем контекст подготовки к прохождению собеседований в BIG TECH компании новым каналом "Укусанный литкодом".

Знаю автора очень хорошо. Можно сказать, он мой давний друг 😊
Сейчас активно готовится в 🔤🔤🔤🔤🔤🔤. Пройдёт ли в этот раз? :) Достаточно ли 100 намеченных решенных задач для этого?

👀 Можно посмотреть как разработчик пропускает через себя алгоритмическую подготовку. С какими трудностями сталкивается. И как осознаёт происходящее и сами задачи.

https://t.me/leetcode_bytes_you/3

System Design World

24 Oct, 07:45


⭐️ Новый сезон активностей! Сплошная прокачка в System Design!

1. От Redis к SQLite
⚡️ Изучим как и почему разработчики фаервола избавились от хайпового Редиса в пользу локальной быстрой БД.

2. System Design Interview

👨‍💻 Посмотрим как тимлид Авито создал leetcode за ограниченное время интервью. Это оформленная запись недавнего стрима. Как и обещал, была запись. Смонтировал, оформил. Думаю, такой хорошей подачи материала ты ещё не встречал)

3. Online про System Design

😊 Обещанная встреча. Заходим, знакомимся, общаемся про базу System Design в форме квиза в дружеской атмосфере. Далее смотрим на алгоритмы балансировки трафика. Далее узнаём как эффективно прокачаться в прохождение собеседований за 1 месяц(да-да, время пришло :) )

4. Архитектурная ката от Яндекс 360

Чудесный HighLoad++ дарит не только лишь доклады, общение и мерч. Ещё и возможности на хорошей волне продолжить знакомства в виде совместной активности.
Благодаря конференции познакомился с коллегами из Яндекс 360. Вместе катим кату в середине декабря - 12.12.24 20:00.
Хочешь участвовать? Вперёд!
👉 Заходи в System Design Chat. Отвечай боту про себя и желание участвовать.

Ставь лайк, если с нетерпением ждёшь озвученных активностей 😊
Какую первую из них хочешь увидеть на канале?

System Design World

12 Oct, 07:12


👥 Мультитенантность + CDC

📗 Как втащить Change Data Capture в мультитенантный сервис в короткий срок без программистов?

Лариса - крутой архитектор нашей команды "Могём в 23:59" с архитектурной каты МТС, на которой мы заняли призовое 2ое место - специально для канала разобрала реальный рабочий кейс.

I. Что есть:
Данные записываются и обновляются в PostgreSQL.
Требование заказчика: "Хотим удобный поиск! Вот тебе аж 2 недели! И загруженная команда разработчиков!"

II. Какой архитектурный паттерн нам поможет?
Change Data Capture(CDC) - захват изменяющихся данных!

III. Что делаем:
Настраиваем логическую репликацию в PostgreSQL.
С помощью CDC перекладываем данные в OpenSearch.
Для его реализации раскатываем и настраиваем pgSync.
Описываем в json маппинг нужных данных из таблиц PostgreSQL в индекс OpenSearch.
Катим на прод.

‣ Вуаля! Теперь удобно ищем данные в OpenSearch! Profit!

🎓 Подробности в статье:
https://buildin.ai/share/fe1c7a34-e179-4152-917a-d981ec352e62?code=7PU5ET

▶️ Внедрял новую технологию на свой проект за 2 недели?

System Design World

06 Oct, 09:53


😲 WOW эффект для жюри хакатона!

Участвую в очередном хакатоне.
ТЗ: разработать сервис для удобного добавления и тестирование страховых продуктов.
Прилагается отчётность, БД.
Команда дополнила решение фичами AI для тестирование гипотез в процессе добавления.

☝️ В ТЗ отдельным пунктом есть требование к масштабированию архитектуры.
Решил для финального питча показать его с элементами анимации для WOW эффекта 😊
Ведь в ограниченное время нужно продемонстрировать основной функционал и сделать это красиво)
🙂 Посмотрим, как в итоге зайдёт такое решение)

▶️ Как считаете, на питче нужно защищать решение спокойно, убедительно и сухо? Или с эмоциями, вау эффектами, явно демонстрируя исключительную крутость созданного сервиса?

P.S. Подробный отчёт выложу после подведения итогов👌

System Design World

03 Oct, 12:13


🌟 Спонтанное интервью-стрим!

🕡 18:00 Teamlead Avito.
Ссылка ближе к этому времени в комментариях.

Сам в шоке 😀

#Stream #Interview

System Design World

01 Oct, 18:39


🪚💚System Design Interview. Казнить нельзя помиловать!

🆒 Все привыкли к классному формату HighLoad++:
1) Крутые доклады
2) Мастер-классы
3) Доброжелательное сообщество
4) Интересные компании, квесты, мерч
5) Кулуарное общение о том, как оно работает на самом деле :)

А что если прокачать эту мощнейшую конференцию ещё?!
Есть идеи как? 💡

Не так давно я познакомился с топовыми спикерами IT сообщества:
Александр Поломодов - СТО Т-банка - пост, видео, книжный клуб
Филипп Дельгядо - архитектор lekton - видео, выступления

📗 Кто интересуется темой IT не раз сталкивался с их докладами в теме управления, технологий.
У каждого своё мнение на обязательность System Design Интервью при устройстве на работу. Которое они готовы отстаивать топя аргументами противоположную сторону.

А что если... Мы их посадим друг напротив друга? Зададим эту тему. И посмотрим, что будет 🍿

✈️ Окрыленный описанной идеей предложил им такой батл. Оба с энтузиазмом ответили "Да!".

▶️ В итоге необычная идея, заявка прошла входной конкурс на зимний HighLoad++ 2024 😊

Я буду модерировать дискуссию, вовлекать участников, подкидывать в топку новые тезисы 😏
Кто будет офлайн - отмечайте её в форме "собираюсь пойти", чтобы организаторы угадали с размером зала.
Для онлайна - увидимся на экранах :)

📝 Обсудим эту тему на нашей скорой встречи.
А пока... Как считаешь - казнить или помиловать? И почему? :)

https://highload.ru/moscow/2024/abstracts/12699

System Design World

19 Sep, 07:17


⚙️ От Postgres к Data Lake

Интересная статья с верхнеуровневым описанием эволюции внутренностей сервиса.

Notion - крутой органайзер с разнообразным функционалом.
Текстовые заметки, картинки, страницы, ... - представлены в виде "блока" в Postgres.

📶 До 2021 - все блоки хранились в 1 инстансе Postgres.
В 2021 стало 20 млн блоков.
Сейчас их 200 млрд. Как они хранятся?

🔡 Данные разбиты на 480 логических шардов, распределенных на 96 инстанцев Postgres.
БД обслуживала разнообразные запросы:
1) пользовательский траффик онлайн
2) оффлайн аналитику
3) машинное обучение

Было решено вынести от Postgres нагрузку 2), 3).

🔀 Воспользовались ETL:
Postgres -> connector -> Debezium -> Kafka -> S3 <- ...аналитика

⏺️ Проффит:
1) Сэкономленный бюджет
2) Быстрая обработка
3) Новые возможности. Решение помогло быстрее внедрять AI функционал.

Подробности в статье:
https://blog.det.life/how-does-notion-handle-200-billion-data-entities-919b238c2846

Мой перевод на хабре:
https://habr.com/ru/articles/845446/

▶️ А у Вас есть проект с ETL? Какие видите в нём преимущества?

System Design World

18 Sep, 11:11


Разговор под NDA. Тихо про HFT

😎 Нет, он не хакер.

👨‍💻 Просто делал крутейшие разработки в сверх секретной сфере High Frequency Trading(HFT).
В которой твои подходы и алгоритмы приносят миллиарды валюты в наносекунды.
Об этом никто не говорит. Не говорил. До сегодняшнего дня.

🎤 Предлагаю твоему вниманию интервью с не названным специалистом в финансовой сфере.
Осветили:
1) Подходы к заработку на бирже до финансового кризиса 2008 года
2) Появление HFT +- во время кризиса.
3) Хаки к крупным криптобиржам
4) Создание собственной биржи

😊 Приятного чтения!
vk - NDA talks

🤫 Есть что шепнуть в нашy новую рубрику NDA talks? Пиши. Гарантирую твою анонимность.

System Design World

25 Aug, 07:33


⚡️ Блажен, кто посетил сей мир в его минуты роковые!

😇 Дорогие коллеги, подписчики, друзья!
Со многими из вас я знаком лично.

📈 Канал System Design World рос неустанно на протяжение 1 года с момента своего основания и достиг 1242 подписчиков!
Без единой внешней оплаченной рекламы!

🎓 Канал стал местом сбора крутых специалистов. Неожиданно для меня в момент знакомства на крутейшей конференции по высоким нагрузкам Saint HighLoad++ случалось, что специалисты уже подписаны на канал. К каналу подключались также спикеры.

Стартовала авторская колонка крутых специалистов по темам, находящимся в контексте архитектуры. Из недавнего - была проведена своя архитектурная ката, офлайн встреча. Ещё ранее - интервью про создание System Design Интервью, сами мок интервью, #cheat_sheets, освящение хакатона и другое...

▶️ Скоро должна была состояться онлайн встреча... Новая ката или же мини-хакатон, на судейство в котором уже согласились специалисты, архитекторы, с которыми познакомился на профильных встречах. Да и хотелось делится новыми постами с уникальным контентом, устраивать встречи...

🤔 Я думал, что после фактической потери развиваемого youtube канала можно двигаться дальше. Ведь есть основное ядро заинтересованных в теме архитектуры и System Design членов нашего сообщества в рамках мессенджера Телеграм.

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

☝️ Я знаю, что не легко менять комфортную среду.
Чтобы двигаться дальше я создаю резервы, на которые постепенно будет происходить миграция:
rutube - vladimir_v_it - для видео контента
vk - System_Design_World - наше сообщество
boosty - vladimir_v_it - для желающих донатить на канал в это время на сломе эпох.

Подписывайтесь, чтобы оставаться на связи!
И берегите себя и своих близких.

System Design World

17 Aug, 15:03


👩🏻‍🦰 Из декрета в финалисты хакатона.

🚶‍♂️ Открываем новую страницу в развитие нашего канала - жизненные истории в IT.

☝️ Какие-то из них будут за именем человека, другие выкладываться анонимно. Если есть что-то интересное, захватывающее или неожиданное - пиши!

⚙️ С аналитиком Элеонорой мы познакомились на платформе проведения хакатона. Она вступила в ряды команды System_Design_World. За счёт упорства и энтузиазма закрыла большой спектр задач в процессе всего мероприятия и при подготовке финального решения. Отрисовала одну из самых крутых схем данных среди всех решений. Лаконично представила наш итоговый архитектурный дизайн. При том, что аналитиком она стала совсем недавно...



Элеонора, привет! Представься, пожалуйста :)

👩🏻‍🦰 Я специалист по государственным закупкам, который, на период мамского отпуска, ищет себя в новой профессии.

Недавно проходил Архитектурный Хакатон от ВТБ. Здорово поработали в одной команде и заняли достойное место!
Ты создала очень крутую детальную архитектуру данных. Я думаю на уровне призёров хакатона. Откуда такие знания и навыки по проектированию схем данных, досконального изучения доменов?

👩🏻‍🦰
Я только закончила курсы системных аналитиков, даже более того, начало Хакатона пришлось на дедлайны защиты диплома. Схемы данных разминочной задачи проектировала одновременно с проектированием дипломного проекта. Знания и навыки в основном учебные. Схема данных, спроектированная на Хакатоне для меня на текущий момент самая большая.

Подскажи, пожалуйста, откуда ты узнала о Хакатоне и почему решила участвовать?

👩🏻‍🦰 О Хакатоне я узнала абсолютно случайно, увидев баннер над статьей ВТБ на Хабре. До этого только слышала о подобных мероприятиях. И так как я сейчас в поисках опыта, большого и малого, решила участвовать. Спасибо, Владимир, что позвал в команду.

👍 Как ты оцениваешь проведение Хакатона - его подачу, атмосферу, задачи, оценки?

👩🏻‍🦰 Мне не с чем сравнивать, но мне понравилось: и позитивные включения организаторов, и своевременные напоминания куратора, и холивары в чате, и интенсивная работа команды, особенно в последние минуты перед сдачей проекта. Из того, что лично мне не хватило, это развернутого фидбека по проекту.

Что ты получила для себя от Хакатона и участвовала бы в подобном будущем?

👩🏻‍🦰 Я получила опыт работы в команде, познакомилась, пусть и шапочно, с новыми инструментами, а с некоторые пришлось оперативно освоить. И я безусловно, с большим удовольствием, приму участие в подобном в будущем.

Спасибо, Элеонора, за твоё участие, вклад и интервью!



Если понравилась IT история и хочешь больше, ставь лайк 👍
Если есть своя - пиши в личку, оформим 👌

🧐 А как ты учился новой профессии? Всё ли проходило гладко и давалось легко? :)

System Design World

12 Aug, 19:58


⭐️ Управление рисками by ITKatya.

👋 С Екатериной познакомился недавно. На её крутом докладе про бережливую архитектуру на майской Podlodka TechLead Crew(где победил как участник).

💵 Недавно в её блоге был анонсирован Master Mind по управлению рисками в IT проектах. Тема меня заинтересовала так как в последнее время выступаю на архитектурных хакатонах. Понял, что прокачка в этой составляющей может дать дополнительные баллы)

📕 Встреча началась с небольшого куска теории. Где рассказывалось про негативные и позитивные(!) риски. Приведена собственная типизация:
1) операционные
2) технические
3) функциональные
4) ...
с разбиением на подпункты. Что риск можно митигировать или нивелировать(это другое!).

🏷 Далее стали разбирать конкретный кейс построения системы лояльности выявляя те самые изученные риски.

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

Обсудили интересный кейс с баллами: "Что лучше - за покупку в 2000 рублей давать 20 рублей или 2000 баллов"?
Как считаешь? Я ответил правильно :)

Говорили про бизнес, сроки. Что заранее невозможно всё просчитать. И с этим надо смириться 😌

🙋‍♀️ Мнения участников встречи наполняли общий контекст. Вопросы находили ответы, благодаря чему получалось больше вовлекаться и держать текущую нить размышлений, дополнять её.

🔥 В конце много говорили про риск выгорания. Даже выбились из тайминга 😅
Приводили конкретные кейсы с работ. К примеру, спроектировал и вывел в мир продукт. Делал командой его 1.5 года. Устал. А у продукта жизнь только началась. И вся операционная деятельность по старту, обслуживанию ложится на твои плечи лида/архитектора/главного-не-к-кому-больше-идти. Которые уже опущены после битв с менеджерами за дедлайны, функционал, поддержку команды и вывода продукта в жизнь. Ещё пару месяцев разгрёб и всё...
И ты виноват. Что не идёшь дальше. Но нет. Оказывается, так часто бывает. Белка не может бегать в колесе вечно. А ещё может не хотеть. И это нормально.

🤗 Завершили пониманием и принятием себя, других, положительной обратной связью для развития в компании культуры взаимовыручки. Можно начинать со "спасибо", "пожалуйста", "благодарю". Твоё отношение начнёт постепенно распространяться и менять мир вокруг.

▶️ А реализовывался ли у тебя риск выгорания? Если нет, как его митигировал? :)

System Design World

31 Jul, 08:03


Эволюция HTTP: HTTP/2 и HTTP/3

Предыдущие части:
-
HTTP/0.9 и HTTP/1.0
-
HTTP/1.1

HTTP/2.0

В 2009 году компания Google начала разрабатывать свой протокол SPDY, который частично решал проблемы версии HTTP/1.1. Позднее нововведения данного протокола были приняты при разработке стандарта HTTP/2.0, опубликованного в 2015 году в RFC 7540.

Основные изменения в HTTP/2.0:

1️⃣ Мультиплексирование:
одно соединение может использоваться для отправки и получения нескольких независимых сообщений и файлов одновременно.

2️⃣ Бинарный формат:
данные передаются в бинарном формате, а не в текстовом виде, как в предыдущих версиях.

3️⃣ Сжатие заголовков:
заголовки передаются в сжатом виде с помощью алгоритма HPACK (RFC 7541). Это позволяет увеличить производительность и скорость передачи данных.

4️⃣ Серверные push-уведомления:
сервер может отправлять ресурсы клиенту до того, как он их запросит, что улучшает производительность.

HTTP/2.0 значительно увеличил производительность и скорость загрузки веб-страниц, сформировав современный интернет. В настоящее время версия HTTP/2.0 используется на около 70% веб-сайтов в интернете.

Однако, несмотря на значительные улучшения, HTTP/2.0 столкнулся с проблемами, обусловленными ограничениями транспортного протокола TCP.

Недостатки HTTP/2.0:

1️⃣ Head-of-line блокировка:
несмотря на мультиплексирование, с точки зрения транспортного протокола TCP передача файлов выглядит как единый поток байтов. Поэтому, если хотя бы один пакет из файла будет потерян, передача остальных файлов будет остановлена, пока потерянный пакет не будет получен.

2️⃣ Шифрование:
в HTTP/2 шифрование не является обязательным. И хотя основные браузеры запретили использовать HTTP/2.0 без шифрования (если сервер не поддерживает TLS, то браузер автоматически переходит на версию HTTP/1.1), в самом стандарте нет жестких требований.

3️⃣ Недостатки транспортного уровня:
протокол TCP является безопасным протоколом. Для установления соединения он использует трехэтапное рукопожатие, прежде чем клиент с сервером сможет обмениваться данными. Для установления соединения между клиентом и сервером необходимо затратить время для 3 круговых запросов (3-RTT) для TLS 1.2 и 2-RTT для TLS 1.3.

ℹ️ Именно поэтому началась работа над новой версией HTTP/3.0.

HTTP/3

В 2022 году был опубликован RFC 9114, описывающий HTTP/3.

Вместо TCP, протокол HTTP/3 работает поверх протокола QUIC, который использует UDP. HTTP/3 реализует все возможности предыдущей версии, но благодаря новому транспортному уровню имеет ряд нововведений:

1️⃣ Новый транспортный уровень:
в основе QUIC лежит протокол UDP, который не требует создания соединения. Также QUIC позволяет создавать мультиплексированные каналы с помощью стримов, которые не имеют блокировки Head-of-line.

2️⃣ Расширенная безопасность:
в QUIC интегрирован протокол безопасности TLS 1.3. Большая часть пакета QUIC зашифрована.

3️⃣ Быстрое установление соединения:
в QUIC рукопожатие транспортного уровня и уровня безопасности объединены. Поэтому для установления соединения необходимо 1-RTT (а для некоторых случаев и 0-RTT).

4️⃣ Гибкость в передаче данных:
протокол QUIC гарантирует надежную доставку сообщений: гарантия доставки и порядка сообщений. Но также поддерживает работу стримов в режиме DATAGRAMS — негарантированная доставка без подтверждения потоков (например, для создания видео-стриминга).

5️⃣ Миграция соединений:
благодаря использованию connection ID, QUIC поддерживает миграцию соединений: в случае изменения сети передачи данных, например, с GPRS на Wi-Fi, нет необходимости заново устанавливать соединение.

В настоящий момент более 25% сайтов и почти все браузеры по умолчанию поддерживают HTTP/3. Последняя версия HTTP/3 не является финальной, поэтому данный стандарт будет развиваться и дорабатываться.

Подробнее об HTTP/3 вы можете узнать из доклада: Нина Пакшина, "Чего ожидать от HTTP/3 + Go". Подписывайтесь на канал.

На этом серия постов об эволюции HTTP заканчивается.

Планируете ли вы использовать HTTP/3 в своем проекте?

System Design World

22 Jul, 19:08


Как пройти System Design Интервью?

1️⃣ Этапы интервью
По моему опыту прохождения и опыту изучения материалов для подготовки к успешному прохождению этой секции интервью могу выделить 4 основных этапа, которые кандидату необходимо пройти в ходе проектирования заданной системы:

1) Уточнение функциональных и нефункциональных требований
Звёздный час кандидата. Точнее 5-10 минут. За которые нужно собрать фт, нфт, которые есть в голове интервьюера на данную сессию интервью. Понять, прояснить, закомититься по функционалу, который нужно будет реализовать. Также рассчитать нагрузки.

2) API
Построение легкой версии интерфейса взаимодействия с пользователем. Возможны и вариации этого этапа. О них ниже.
Здесь можно определить happy path, data flow.

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

4) Уточнение технологий
Sql, NoSql? OLAP, OLTP? statefull, stateless? Python, Go? Rest, grpc? ... Возможный расчёт мощности сервера БД.

2️⃣ Какие могут быть вариации? И причём тут умение коммуницировать?
Нужно быть готовым к отклонению от такой схемы прохождения интервью.

🧐 Пример картинки на ближайшие 45 минут в голове у интервьюера:
"Ожидаю, что кандидат уточнит требования, рассчитает базовые характеристики системы, построит схему данных, базовую схему. Хочу в дополнение намекнуть ему реализовать систему мониторинга".

🤷 Можно проявить чудеса телекинеза и считать, что угадал план этого интервью.

🗣 А можно спрашивать. Явно. Это твой выход. Ты на сцене и прожекторы смотрят на тебя. Прежде чем выступить, нужно понять что от тебя хотят. И уточнять по мере продвижения.
"Нужно ли сейчас реализовывать полноценное api? Или сконцентрироваться на схеме данных?"

3️⃣ Нужные качества кандидата
1. Умение слушать
Помогает понимать подсказки и пожелания интервьюера. Возможно, менять направление дизайна.
2. Проактивность
Именно ты ведёшь интервью. Всегда есть баланс между:
Спросил много -> посчитали, что джун ⚖️ спросил мало -> говорит заученное
Практика помогает найти разумный баланс.

⭐️ Представленная схема с 4мя этапами, вариациями и подсвеченные важные навыки помогут тебе заложить фреймворк для прохождения любого System Design интервью.
Удачи в прохождение!

А какие интервью были недавно у тебя и как они прошли?

https://www.youtube.com/watch?v=KhfeYD0VBOY

#SystemDesignInterview #SystemDesign

System Design World

19 Jul, 11:54


Больше технического контента!

📬 Представляю твоему вниманию анонс ближайших публикаций на канале.
Активности из прошлого практически выполнены. Осталась летняя онлайн встреча.

▶️ Что же тебя ждёт?

1️⃣ Как пройти System Design Интервью?
Записал и смонтировал видео, в котором на живом примере прохождения собеседования поделюсь пониманием:
1) Какие основные 4 этапа нужно пройти кандидату;
2) Какими 2мя качествами нужно обладать кандидату
для успешного прохождения интервью.

2️⃣ Мультитенантность для Реляционных СУБД + ELK
Наш новый автор Лариса Соловьева расскажет реальный рабочий кейс как получилось разграничить доступ к кластеру БД. А затем и к ELK стеку, в который сливались данные. И всё в идеологии zero-code подхода.

3️⃣ Эволюция http - http2/3
Нина Пакшина завершит свой цикл про эволюцию http описывая последние стандарты этого популярного протокола. #HTTP

4️⃣ Построение HFT Биржи
На хабре увидел под статьей интересное обсуждение высоких нагрузок от одного комментатора. Познакомившись узнал, что он успел поработать много лет в пожалуй самой секретной сфере программирования - High Frequency Trading(HFT) - высокочастотная торговля. Месте, где за наносекунды происходят многомиллиардные обороты. На правах анонимности взял у автора интервью. В нём вкратце обсудим переломный 2008 год для мировых трейдеров. Как появилась высокочастотная торговля. И приоткроем завесу тайны как он создавал ядро HFT биржи.
Да-да. Один.

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

Как считаешь, какие ещё интересные разделы архитектуры, проектирования можно освятить в будущих постах?

System Design World

08 Jul, 17:23


😎 Кто смотрит на твои данные пока ты делаешь online заказ?

📝 Провёл System Design Интервью на летнем ProIT Fest.

🎦 Сначала дал небольшую вводную - как раньше в 90ых клиент ходил на сервер напрямую. А теперь запрос проходит через сервис анализа трафика.

А знаешь почему? К сожалению, стали распространены DDoS и другие типы атак, парсеры. Стало больше вредоносной активности для сайта клиента.

🎁 Предложил реализовать такую систему кандидату - Антону. Раскрыть содержимое этого black box анализатора исходя из озвученных требований.

⚡️ Успели:
1) Определить функциональные, нефункциональные требования
2) Построить базовую схему
3) Проговорить happy path, captcha path, false path варианты при обработке запроса
4) Выбрать технологии

🧐 В этот раз я был, скорее, наблюдателем. Потому что кандидат двигался в инициативном порядке. В конце предложил ему прикрутить ML сервис по оценки запросов. Куда ж без него 🤷

🙂 На мой взгляд и судя по обратной связи от участников секция прошла хорошо. Получилось продвинуться по самой задаче и взаимодействовать с участниками, у которых были очень точные вопросы по теме 👌

▶️ А какие нестандартные System Design задачи попадались тебе за последнее время?

System Design World

05 Jul, 15:46


🎗 Как мы попали в финал Архитектурного Хакатона от ВТБ

▶️ О Хакатоне мне сообщила Нина. Желание поучаствовать материализовалось в клике мышкой на слове "Регистрация" буквально сразу же.

🆒 На площадке была возможность собрать команду из участников. Хотя, можно выполнять задания одному. После создания команды "System_Design_World" разослал приглашения.

🌠 Команда
Хакатон мы также обсуждали сообществом в чате канала. На ранних этапах команде помогал Игорь, Саша. Позже Светлана.
Core командой стали:
1) Я - Владимир, бэк
2) Элеонора, которая приняла приглашение на платформе. Крутой аналитик.
3) Сулейман, с которым знакомы уже давно. Крутой бэк, архитектор.

💪 Разминочное задание - 2/3
За сделанное необязательное разминочное задание нам дали увесистые 2 балла из 3ёх возможных. Мы обсудили что можно улучшить на финальном задание.
Казалось бы, 1 недостающий до идеала балл - это не так уж и много. С другой стороны - это не полученные 33% от лучшего результата 🤔

🕧 Ready?...
18:00, вечер пятницы. Старт 24 часового таймера для решения финальной задачи!
Когда-нибудь проектировал систему за 24 часа?

По текущему рейтингу мы знали, что немало команд выполнило разминочное задание. Получается, что есть команды, нацеленные на успех. Плюс, могут подтянуться "тёмные лошадки", - кто копил силу для финала.
Мы асинхронно накидали на общую доску базовые элементы. А их нужно не мало, т.к. задача оценивается по многим параметрам.
Утром встретились на 2 часа. Затем асинхронно доделывали. На разборе разминочной задачи мы поняли, что необходимо улучшиться в визуальном представление сделанной работы. Что получилось сделать на этот раз. Мы пыхтели до последнего. И в 17:57 выгрузили итоговую презентацию на платформу.

🎁 Важнее - участие. Или нет?
Я шёл на Хакатон ради участия, практики. Хотя, предполагались и денежные призы для 9ых финалистов☝️
Кажется, что это приятный бонус, если дошёл до призового места. Он не был моей целью. Какая же была неожиданность, когда ко мне на следующий день(в воскресенье) постучался представитель Хакатона и позвал на 5 минутный питч для финалистов 😎

5️⃣ Успеть за 5 минут
Думаю, что за этот тайминг получилось рассказать максимум про все основные компоненты, сценарии использования созданной системы. А после ответить на интересующие вопросы.
Самым последним из них был: "Назовите сильные и слабые стороны Вашего решения?". Интуитивно понял, что нужно начинать со слабой(один из кейсов мы как-раз обсудили - что сделаем сейчас для быстрого старта и что потом можем улучшить), а закончить описанием сильных сторон.

🎇 Итог
Конкуренция была мощной. Мы заняли 15 место среди 90 команд. До 9ых призёров нам не хватило какого-то балла :) Торжественное награждение состоялось в этот же день после презентации решений финалистов. Какую грандиозную работу по оценки решений в короткий срок проделали коллеги-организаторы!

💡 Позднее на "After Party" мы поздравляли призёров, смотрели решения друг друга. И это круто - чувствовать открытость людей IT сообщества идти навстречу друг другу, показывать свои решения, обогащаться знаниями! 😊

🔜 В будущем опубликую интервью с членами-команды System_Design_World об их профессиональном опыте, мотивации, впечатлениях от прошедшего мероприятия.

А Вы участвовали в Хакатонах? Какую пользу от них видите для себя?

System Design World

01 Jul, 08:02


Продолжение постов об эволюции HTTP

HTTP/1.1


Новая версия HTTP/1.1 была впервые опубликована в 1997 году в RFC 2068, а в 1999 году стандартизирована в рамках RFC 2616.
HTTP/1.1 собрал в себе много важных доработок:

1️⃣ Новые методы: PUT (создание или обновление ресурса), DELETE (удаление), OPTIONS (параметры соединения), TRACE (трассировка запроса), CONNECT (установка туннеля к серверу), PATCH (частичное обновление, добавлен позже в 2010 году в RFC 5789).
Например, запрос:

TRACE /page HTTP/1.1
Host: example.com


Ответ:

HTTP/1.1 200 OK
Content-Type: message/http

TRACE /page HTTP/1.1
Host: example.com


2️⃣ Виртуальные хосты: до этого на одном IP-адресе мог располагаться только один веб-сайт. Обязательный заголовок Host позволяет использовать несколько веб-сайтов с одним IP-адресом:
POST /path HTTP/1.1
Host: example.com


3️⃣ Постоянные соединения (persistent connections): клиент и сервер HTTP/1.1 по умолчанию поддерживают постоянное соединение (с помощью keep-alive TCP/IP). Каждый новый запрос отправляется через это установленное соединение, что экономит время и ресурсы для каждого запроса.

4️⃣ Множество соединений (simultaneous connections): клиенты могут открывать несколько TCP-соединений к одному серверу, что позволяет параллельно загружать ресурсы и уменьшает время загрузки веб-страниц. В современных браузерах обычно используется до 6 соединений на один сайт.

5️⃣ Передача данных частями (chunked transfer encoding): HTTP/1.1 позволяет отправлять ответы частями, что особенно полезно для динамически генерируемого контента. Например, ответ отправляемый частями:

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

4
Test
7
Message
0


6️⃣ Конвейерная обработка (pipelining): клиент может передавать на сервер несколько запросов, не ожидая ответов. В ожидании получения дополнительных запросов сервер поддерживает соединение открытым в течение настраиваемого интервала (обычно 15 секунд). Это позволяет уменьшить накладные расходы на установление TCP-соединения.

При всех своих нововведениях HTTP/1.1 имел следующие недостатки:

1️⃣ Ограниченная производительность за счет того, что все запросы в рамках одного соединения выполнялись последовательно. Большое количество запросов в одном соединении создает очередь из запросов (request queuing), увеличивая время обработки запроса.

2️⃣ Количество одновременных соединений ограничивалось браузерами, что замедляло работу. При этом множество открытых соединений потребляло много ресурсов.

3️⃣ Head-of-line блокировка, которая возникает, когда задержка в обработке запроса/ответа блокирует обработку последующих запросов/ответов, использующих то же соединение. Такая блокировка возникает, если количество допустимых параллельных запросов в браузере исчерпано, и последующие запросы должны ждать завершения предыдущих.

4️⃣ Запросы имели огромное количество заголовков, которые дублировали друг друга и не сжимались, генерируя большое количество передаваемых данных и снижая производительность.

ℹ️ Эти недостатки были решены в версии HTTP/2.0, о которой мы расскажем в следующий раз!

А какие методы HTTP вы используете в своей работе?

Автор: Нина Пакшина
Нина создала свой youtube канал, где выкладывает видео, посвященное языку Go. Подписывайтесь, если актуально.

#Protocols #HTTP