System Design World
4.19K subscribers
170 photos
20 videos
127 links
Улучшаем навыки проектирования систем вместе! Готовимся к System Design Interview.

Автор - Старший бэкэнд разработчик HighLoad систем, специалист кибербезопасности Невзоров Владимир - @vova_dev
Download Telegram
🧩 HTTP + Нина. Зажигательная комбинация!

😇 Мне посчастливилось улучшить понимание HTTP 2 раза.

1️⃣ Первый - послушал вживую доклад Нина Пакшиной про HTTP3.
Очень ёмко, последовательно и структурировано Нина освятила:
1) Эволюцию HTTP
2) Различие в транспорте 2 и 3 версий HTTP
3) QUIC vs TCP
4) Работу HTTP/3 в Go
Если хочешь улучшить своё понимание работы этого популярного протокола, запись доступна здесь!

2️⃣ Второй - Нина напишет на канале ряд постов про HTTP!😊

💪 Двойная польза
Да-да, реализуется тот самый двойной формат подачи, о чём писал ранее:
1) На канале размещается видео контент;
2) А также полезная информация в формате постов, для тех кому ближе чтение.

👩🏼 Нина - кто ты?
Давайте познакомимся с Ниной ближе - новым автором канала!

Нина, привет! Я знаю тебя как старшую разработчицу Go и активную участницу Московского Клуба Программистов. Ничего не перепутал? 😊

Да, все верно. Когда я присоединилась к Московскому клубу программистов, я программировала ПЛК (контроллеры для автоматизации промышленных объектов) Потом несколько лет писала на Python в онлайн ритейле. И уже три года пишу на Go!

В какой команде ты работаешь, за что отвечаешь?

На своей основной работе в Ленте Онлайн я работаю в команде операций. У меня большой стек задач, который включает сбор статистики, управление персоналом и заказами. В команде мы работаем с большим количеством микросервисов, основная часть из которых написана на Go.

Что больше всего нравится в твоей работе?

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

На митапе ты сказала, что решила сделать доклад, потому что самой было интересно разобраться как в самом протоколе HTTP3, так и в его реализации на Go.
Откуда взялось такое желание?

Я работаю в IT области уже больше 13 лет. Работала в области промышленной автоматизации, кибер безопасности, онлайн ритейле. И постоянно моя работа очень тесно была связана с сетями передачи данных, а конкретно с протоколами стека TCP/IP. За развитием QUIC и HTTP/3 я слежу с 2020 года. И считаю, что за ними большое будущее как в ритейле, так и в промышленных сетях.

Стоит ли использовать HTTP/3 в своих проектах и есть ли у него перспектива?

HTTP/3 уже поддерживается почти всеми популярными браузерами и 30% сайтов в интернете работают с HTTP/3.
Вы можете ускорить взаимодействие пользователей с вашим веб-приложением. А как именно - смотрите доклад или ждите постов!

Классно!

Я уже списывался с тобой по поводу идеи по написанию серии постов про HTTP. Давай ещё раз спрошу в рамках этого небольшого интервью - как тебе идея написать несколько постов по HTTP, поделится своим видением протокола, его эволюцией? :)

Это отличная идея, в самом ближайшем посту я расскажу про первые две версии HTTP - 0.9 и 1.0, а в дальнейшем освещу особенности версий 1.1, 2.0 и 3.0.

Желаю тебе удачи! И если участникам сообщества посты заходят, чтобы смело ставили лайки за твои старания!

👏 - поддержим начинание нового автора!

Ссылка на доклад Нины

#Protocols #HTTP
🔥14👏91
HTTP

Протокол HTTP (HyperText Transfer Protocol, Протокол передачи гипертекста) был опубликован в 1991 году как часть экосистемы для обмена гипертекстовыми файлами HTML, которая позже получила название WWW (World Wide Web).

HTTP — это простой протокол, главной задачей которого стала отправка с сервера клиенту документов HTML в текстовом представлении. В качестве транспортного уровня HTTP стал использовать надежный протокол TCP поверх IP.

HTTP/0.9

Самая первая версия HTTP, которая впоследствии стала называться HTTP/0.9, была очень простой и поддерживала следующий функционал:

1️⃣ Запрос от клиента с методом GET

GET /page.html


2️⃣ Ответ с сервера с HTML данными:

<html>
Hello world!
</html>


HTTP/1.0

Сеть WWW начала развиваться очень активно. В конце 1994 года в WWW насчитывалось около 2,7 тысяч сайтов, а в 1996 году — уже более 100 тысяч!

При этом HTTP/0.9 был крайне ограничен в своих возможностях, поэтому в 1996 году появился стандарт HTTP/1.0 с дополненным функционалом:

1️⃣ Новые методы HEAD (получение метаданных о документе) и POST (отправка данных на сервер).

2️⃣ Поле версии протокола, которое отправлялось при каждом запросе с клиента.

3️⃣ Заголовки для запросов и ответов, отображающие дополнительные метаданные:

POST /image.gif HTTP/1.0
User-Agent: Windows 3.1


4️⃣ Поддержка отправки сервером документов, отличных от HTML, с помощью заголовка Content-Type.

5️⃣ Коды статусов ответов, например, 200 (Статус OK) или 418 (Я чайник):

200 OK
Date: Wed, 16, Nov 1994 10:12:34 GMT
Content-Type: text/gif
(image gif)


Несмотря на серьезную доработку протокола, веб-страницы в WWW становились более сложными, насыщенными графикой, мультимедиа и интерактивными элементами. HTTP/1.0 не справлялся с возросшими требованиями, что приводило к значительным задержкам и нагрузке на серверы.

ℹ️ Именно поэтому, появилась новая версия HTTP/1.1, но о ней мы расскажем в следующем посте.

(На изображении справа первый веб-сайт в WWW)

#Protocols #HTTP
🔥12👍411
Продолжение постов об эволюции 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
🔥7💯2
This media is not supported in your browser
VIEW IN TELEGRAM
Больше технического контента!

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

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

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 биржи.
Да-да. Один.

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

Как считаешь, какие ещё интересные разделы архитектуры, проектирования можно освятить в будущих постах?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍21
🫶 С Наилучшими пожеланиями в Новый Год!

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

🚀 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!
Ставь:
❤️ - если год для тебя прошёл супер)
💯 - выдался хорошим с приятными событиями
👍 - в среднем год как год, что-то получилось из задуманного
🤷 - сложно ответить было ли положительного больше
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍149💯6🤷5