Drim Dev
Привет! Мы в чате Тимлидов (@teamleads_kz) по итогу обсуждения сложностей проектирования высоконагруженных систем, пришли к выводу что в Казахстане есть потенциальный запрос на проведение образовательного Хакатона на эту тему. Мы готовы взять на себя полностью…
В апреле мы анонсировали проведение хакатона HackLoad 2025 по проектированию высоконагруженного билетного сервиса. Вот страница хакатона https://hackload.kz/, там описаны все детали. Уже определены конкретные даты - с 15 по 17 августа. Регистрация будет проходить с 1 по 25 июля. Команды могут участвовать как офлайн в Алматы, так и онлайн. Команда организаторов состоит из 4 человек - Станислава Беляева, Андрея Курдюмова, Теймура Шайкемелова и меня (Дмитрия Мельника).
Одна из целей проведения хакатона - образовательная. Поэтому перед мероприятием я проведу цикл лекций на тему проектирования надёжных и производительных систем. Они пройдут онлайн в конце июля и начале августа. Точные даты я напишу позже.
Лекции будут напрямую применимы к задаче проектирования билетного сервиса. То есть на каждой лекции предлагаемые технологии и подходы будут демонстрироваться на тех или иных частях билетного сервиса. Вот темы:
1. Паттерн «Сага» для распределенных транзакций
Кратко сравним монолит и микросервисы. Разберём паттерн «Сага» для обеспечения целостности данных в микросервисах (заказ, оплата, резервирование места). В основу положим классификацию саг из книги "Software Architecture: The Hard Parts": Epic Saga, Phone Tag Saga, Fairy Tale Saga, Time Travel Saga, Fantasy Fiction Saga, Horror Story, Parallel Saga, Anthology Saga.
2. Масштабирование под высокую нагрузку
Проектирование систем для пиковых нагрузок в момент старта продаж. Разберем вертикальное масштабирование, горизонтальное масштабирование, балансировщики нагрузки и методы оптимизации баз данных (индексы, read-реплики, шардирование), чтобы сервис не «упал» от наплыва пользователей. Также коснемся ускорения системы с помощью кеширования (Redis) и CDN.
3. Организация конкурентного доступа
Научимся решать главную проблему билетных сервисов — как избежать «двойной продажи» одного и того же места. Изучим на практике разные виды конкурентности (оптимистичная и пессимистичная на уровне БД и на уровне приложения) и использование очередей для надежной обработки заказов.
4. Создание отказоустойчивых систем
Научимся обеспечивать стабильность сервиса при внутренних сбоях и при сбоях внешних API (например, API стадиона). Разберем паттерны Timeouts, Retries, Bulkhead, Circuit Breaker и другие.
5. Интеграция платежных провайдеров
Практический разбор процесса приема платежей. Рассмотрим, как работают платежные шлюзы, сравним способы интеграции (редирект, iframe) и научимся обрабатывать подтверждения об оплате через вебхуки.
Лекции будут открытыми, то есть участвовать могут все желающие. Форму регистрации и даты проведения я укажу позже. Рекомендую принять участие, это улучшит ваши навыки проектирования и системного дизайна.
Все новости хакатона и сопутствующих мероприятий я продолжу публиковать в этом канале. Подписывайтесь на него, будет полезно и интересно 🚀 @drimdev
#hackload #architecture #lectures
Одна из целей проведения хакатона - образовательная. Поэтому перед мероприятием я проведу цикл лекций на тему проектирования надёжных и производительных систем. Они пройдут онлайн в конце июля и начале августа. Точные даты я напишу позже.
Лекции будут напрямую применимы к задаче проектирования билетного сервиса. То есть на каждой лекции предлагаемые технологии и подходы будут демонстрироваться на тех или иных частях билетного сервиса. Вот темы:
1. Паттерн «Сага» для распределенных транзакций
Кратко сравним монолит и микросервисы. Разберём паттерн «Сага» для обеспечения целостности данных в микросервисах (заказ, оплата, резервирование места). В основу положим классификацию саг из книги "Software Architecture: The Hard Parts": Epic Saga, Phone Tag Saga, Fairy Tale Saga, Time Travel Saga, Fantasy Fiction Saga, Horror Story, Parallel Saga, Anthology Saga.
2. Масштабирование под высокую нагрузку
Проектирование систем для пиковых нагрузок в момент старта продаж. Разберем вертикальное масштабирование, горизонтальное масштабирование, балансировщики нагрузки и методы оптимизации баз данных (индексы, read-реплики, шардирование), чтобы сервис не «упал» от наплыва пользователей. Также коснемся ускорения системы с помощью кеширования (Redis) и CDN.
3. Организация конкурентного доступа
Научимся решать главную проблему билетных сервисов — как избежать «двойной продажи» одного и того же места. Изучим на практике разные виды конкурентности (оптимистичная и пессимистичная на уровне БД и на уровне приложения) и использование очередей для надежной обработки заказов.
4. Создание отказоустойчивых систем
Научимся обеспечивать стабильность сервиса при внутренних сбоях и при сбоях внешних API (например, API стадиона). Разберем паттерны Timeouts, Retries, Bulkhead, Circuit Breaker и другие.
5. Интеграция платежных провайдеров
Практический разбор процесса приема платежей. Рассмотрим, как работают платежные шлюзы, сравним способы интеграции (редирект, iframe) и научимся обрабатывать подтверждения об оплате через вебхуки.
Лекции будут открытыми, то есть участвовать могут все желающие. Форму регистрации и даты проведения я укажу позже. Рекомендую принять участие, это улучшит ваши навыки проектирования и системного дизайна.
Все новости хакатона и сопутствующих мероприятий я продолжу публиковать в этом канале. Подписывайтесь на него, будет полезно и интересно 🚀 @drimdev
#hackload #architecture #lectures
🔥17❤1👍1
В течение года проходит много различных мероприятий. Мне интересно, зависит ли количество участников от того, в какое время эти мероприятия проходят. В какие месяцы вы с большей вероятностью поучаствуете в оффлайн-мероприятии? Можно выбрать несколько.
Anonymous Poll
36%
Июль
51%
Август
53%
Сентябрь
52%
Октябрь
Открытие регистрации на HackLoad 2025
Мы открываем регистрацию на хакатон HackLoad 2025! Для этого мы запустили веб-приложение, куда вам нужно перейти и заполнить форму регистрации. Адрес приложения - https://hub.hackload.kz/
На текущий момент приложение представляет собой простую форму регистрации. Там вам нужно будет залогиниться с помощью Google или GitHub, а затем указать краткую информацию о себе. Если вы уже сформировали команду, то первым должен зарегистрироваться лидер команды. Он должен будет ввести название команды, которая будет автоматически создана. Затем в своём профиле он увидит ссылку, которую нужно будет разослать участникам команды, чтобы они также зарегистрировались. Если вы ещё не выбрали команду, укажите этот вариант на форме регистрации. Выбрать команду можно будет позже.
Также на форме регистрации находятся несколько вопросов от одного из спонсоров хакатона. Они опциональные, но просьба на них ответить, это займёт меньше минуты. Про компании, которые являются спонсорами хакатона, я напишу отдельно.
Повторюсь, что веб-приложение сейчас представляет просто форму регистрации. Но мы в ближайшее время его доработаем, чтобы оно стало полноценным центром проведения хакатона. Там будет публичная информация об участниках и командах со ссылками на репозитории с кодом. Кроме этого команды во время хакатона смогут с помощью этого приложения запускать нужные им ресурсы и проводить промежуточные нагрузочные тестирования для валидации качества своих решений. Обо всём новом функционале веб-приложения мы будем оповещать вас по электронной почте.
Все дальнейшие анонсы я буду делать на этом канале. Кроме этого, мы будем публиковать их в группе "Тимлид не кодит" @teamleads_kz. Вступайте туда, чтобы быть в курсе новостей и иметь возможность обсуждать интересующие вас вопросы. Также можете задавать вопросы в комментариях к этому посту, я на всё отвечу.
Если вы ещё не слышали про хакатон, то вот его информационная страница - https://hackload.kz/.
До хакатона осталось 1,5 месяца. Начинается жаркая пора подготовки и обучения! ☀️ Подписывайтесь на канал @drimdev, будем готовиться и расти вместе 🚀
#hackload
Мы открываем регистрацию на хакатон HackLoad 2025! Для этого мы запустили веб-приложение, куда вам нужно перейти и заполнить форму регистрации. Адрес приложения - https://hub.hackload.kz/
На текущий момент приложение представляет собой простую форму регистрации. Там вам нужно будет залогиниться с помощью Google или GitHub, а затем указать краткую информацию о себе. Если вы уже сформировали команду, то первым должен зарегистрироваться лидер команды. Он должен будет ввести название команды, которая будет автоматически создана. Затем в своём профиле он увидит ссылку, которую нужно будет разослать участникам команды, чтобы они также зарегистрировались. Если вы ещё не выбрали команду, укажите этот вариант на форме регистрации. Выбрать команду можно будет позже.
Также на форме регистрации находятся несколько вопросов от одного из спонсоров хакатона. Они опциональные, но просьба на них ответить, это займёт меньше минуты. Про компании, которые являются спонсорами хакатона, я напишу отдельно.
Повторюсь, что веб-приложение сейчас представляет просто форму регистрации. Но мы в ближайшее время его доработаем, чтобы оно стало полноценным центром проведения хакатона. Там будет публичная информация об участниках и командах со ссылками на репозитории с кодом. Кроме этого команды во время хакатона смогут с помощью этого приложения запускать нужные им ресурсы и проводить промежуточные нагрузочные тестирования для валидации качества своих решений. Обо всём новом функционале веб-приложения мы будем оповещать вас по электронной почте.
Все дальнейшие анонсы я буду делать на этом канале. Кроме этого, мы будем публиковать их в группе "Тимлид не кодит" @teamleads_kz. Вступайте туда, чтобы быть в курсе новостей и иметь возможность обсуждать интересующие вас вопросы. Также можете задавать вопросы в комментариях к этому посту, я на всё отвечу.
Если вы ещё не слышали про хакатон, то вот его информационная страница - https://hackload.kz/.
До хакатона осталось 1,5 месяца. Начинается жаркая пора подготовки и обучения! ☀️ Подписывайтесь на канал @drimdev, будем готовиться и расти вместе 🚀
#hackload
🔥5
Forwarded from AI-Driven Development. Родион Мостовой
🎙 Митап AI Driven Development в MOST IT Hub (Алматы)
Есть кто из Алматы?) Залетайте на митап
11 июля в 19:00 в MOST IT Hub опытные техлиды из Bereke Bank, QazCode и архитектор из CodeAlive поделятся своими рецептами использования AI-кодинг-агентов в решении реальных рабочих задач. Доклады будут актуальны не только для технических лидеров, но и для всех, кто интересуется AI-агентами.
🧠 В программе:
🔹 Иван Луценко, техлид из Bereke Bank, покажет, как он с помощью Claude сократил анализ крашей с нескольких часов до 15 минут и выстроил единый workflow для всех проектов.
🔹 Родион Мостовой, CEO и RAG-архитектор из CodeAlive, поделится своими находками в решении сложных задач с помощью LLM и расскажет, как его команда настраивала AI Code Review.
🔹 Но просто сгенерировать код недостаточно — AI-агентов нужно правильно интегрировать в команду. Павел Королев, техлид из QazCode, объяснит, как «обучить» искусственный интеллект особенностям вашего проекта и поддерживать его знания в актуальном состоянии.
📅 11 июля | 19:00
📍 MOST IT Hub - г. Алматы, ул. Ходжанова 2/2, БЦ Fortis, 3 этаж.
⏱ Длительность: 2,5 часа
📝 Регистрация по ссылке
⚠️ Количество мест ограничено
Есть кто из Алматы?) Залетайте на митап
11 июля в 19:00 в MOST IT Hub опытные техлиды из Bereke Bank, QazCode и архитектор из CodeAlive поделятся своими рецептами использования AI-кодинг-агентов в решении реальных рабочих задач. Доклады будут актуальны не только для технических лидеров, но и для всех, кто интересуется AI-агентами.
🧠 В программе:
🔹 Иван Луценко, техлид из Bereke Bank, покажет, как он с помощью Claude сократил анализ крашей с нескольких часов до 15 минут и выстроил единый workflow для всех проектов.
🔹 Родион Мостовой, CEO и RAG-архитектор из CodeAlive, поделится своими находками в решении сложных задач с помощью LLM и расскажет, как его команда настраивала AI Code Review.
🔹 Но просто сгенерировать код недостаточно — AI-агентов нужно правильно интегрировать в команду. Павел Королев, техлид из QazCode, объяснит, как «обучить» искусственный интеллект особенностям вашего проекта и поддерживать его знания в актуальном состоянии.
📝 Регистрация по ссылке
⚠️ Количество мест ограничено
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
📣 2 июля мы объявили об открытии регистрации на хакатон HackLoad 2025. После этого нам начало поступать много вопросов. Вся информация доступна на сайте https://hackload.kz/. Изучите его. Кроме того, я решил написал отдельный пост (этот), где собрать все детали о хакатоне.
💥 Идея проведения хакатона родилась после сбоя Тикетона во время продажи билетов на концерт Дженнифер Лопес в Астане. Эта ситуация вызвала много критики в ИТ-сообществе. Мы решили перевести её в конструктивное русло и предложить всем желающим создать билетный сервис, устойчивый к большим нагрузкам и внутренним и внешним сбоям. Так родился хакатон HackLoad 2025.
📍Хакатон будет проходить в Алматы с 15 по 17 августа. Место проведения мы сообщим позже. Можно участвовать как на месте, так и онлайн.
⚙️ В хакатоне будет два трека: для начинающих и для продвинутых. В первом треке задание будет проще, во втором - сложнее. Трек для начинающих подходит для студентов и джуниоров.
🎓 Основная цель хакатона - образовательная. Мы хотим, чтобы участники получили опыт создания высоконагруженного сервиса в условиях, приближенных к реальным. Для этого мы и наши спонсоры проведём перед хакатоном ряд лекций, где дадим знания, необходимые для решения этой задачи. Об этом я писал в одном из прошлых постов.
🎯 Задача участников хакатона - создать бекенд билетного сервиса. Фронтенд делать будет не нужно. Мы, как организаторы хакатона, предоставим описание API сервиса, и командам нужно будет его реализовать. Во время реализации у команд будет возможность запускать нагрузочное тестирование и оценивать, как их приложения будут себя вести. Также бекенд нужно будет интегрировать с 2 внешними сервисами: платёжным провайдером и системой стадиона, где будет проходить концерт. Система стадиона будет отслеживать проданные места. Мы предоставим командам реализации обоих этих сервисов.
🚲 Команды могут использовать любые удобные им технологии.
🔨 Когда команды завершат создание билетных сервисов, мы по очереди запустим несколько сценариев нагрузочного тестирования. Выиграют те команды, чьи сервисы не упадут и покажут лучшие метрики (летенси, пропускная способность и другие). Также будет оцениваться потребление вычислительных ресурсов сервисами.
✉️ Задания будут опубликованы 5 августа. Можно будет начать прорабатывать их заранее. Задача создания билетного сервиса достаточно объемная и может потребоваться подготовка, чтобы затем за 3 дня успеть его реализовать.
👩💻👨💻Регистрация открылась 2 июля и будет закрыта 25 июля. У каждой команды должен быть лидер, и он должен зарегистрироваться первым, чтобы создать команду. Затем остальные участники при регистрации смогут выбрать эту команду. Максимальное количество участников в команде - 4 человека. Регистрироваться можно без команды и выбрать её позже. Участовать могут люди как из Казахстана, так и из других стран. Сайт для регистрации - https://hub.hackload.kz/.
👥 Организаторы хакатона - Станислав Беляев, Андрей Курдюмов, Теймур Шейкемелов и я, Дмитрий Мельник.
💰 Спонсорами хакатона будут 2 крупные казахстанские компании. О них мы расскажем немного позже.
ℹ️ Чтобы получать дальнейшую информацию и задавать вопросы, вступайте в группу "Тимлид не кодит". Также в скором времени мы создадим отдельный чат для участников хакатона.
🏆 В завершение повторю слоган хакатона:
🥇 Регистрируйтесь на хакатон и получите новые знания, ценный опыт и важные знакомства.
🚀 P.S. Подписывайтесь на канал @drimdev, будет полезно и интересно!
💥 Идея проведения хакатона родилась после сбоя Тикетона во время продажи билетов на концерт Дженнифер Лопес в Астане. Эта ситуация вызвала много критики в ИТ-сообществе. Мы решили перевести её в конструктивное русло и предложить всем желающим создать билетный сервис, устойчивый к большим нагрузкам и внутренним и внешним сбоям. Так родился хакатон HackLoad 2025.
📍Хакатон будет проходить в Алматы с 15 по 17 августа. Место проведения мы сообщим позже. Можно участвовать как на месте, так и онлайн.
⚙️ В хакатоне будет два трека: для начинающих и для продвинутых. В первом треке задание будет проще, во втором - сложнее. Трек для начинающих подходит для студентов и джуниоров.
🎓 Основная цель хакатона - образовательная. Мы хотим, чтобы участники получили опыт создания высоконагруженного сервиса в условиях, приближенных к реальным. Для этого мы и наши спонсоры проведём перед хакатоном ряд лекций, где дадим знания, необходимые для решения этой задачи. Об этом я писал в одном из прошлых постов.
🎯 Задача участников хакатона - создать бекенд билетного сервиса. Фронтенд делать будет не нужно. Мы, как организаторы хакатона, предоставим описание API сервиса, и командам нужно будет его реализовать. Во время реализации у команд будет возможность запускать нагрузочное тестирование и оценивать, как их приложения будут себя вести. Также бекенд нужно будет интегрировать с 2 внешними сервисами: платёжным провайдером и системой стадиона, где будет проходить концерт. Система стадиона будет отслеживать проданные места. Мы предоставим командам реализации обоих этих сервисов.
🚲 Команды могут использовать любые удобные им технологии.
🔨 Когда команды завершат создание билетных сервисов, мы по очереди запустим несколько сценариев нагрузочного тестирования. Выиграют те команды, чьи сервисы не упадут и покажут лучшие метрики (летенси, пропускная способность и другие). Также будет оцениваться потребление вычислительных ресурсов сервисами.
✉️ Задания будут опубликованы 5 августа. Можно будет начать прорабатывать их заранее. Задача создания билетного сервиса достаточно объемная и может потребоваться подготовка, чтобы затем за 3 дня успеть его реализовать.
👩💻👨💻Регистрация открылась 2 июля и будет закрыта 25 июля. У каждой команды должен быть лидер, и он должен зарегистрироваться первым, чтобы создать команду. Затем остальные участники при регистрации смогут выбрать эту команду. Максимальное количество участников в команде - 4 человека. Регистрироваться можно без команды и выбрать её позже. Участовать могут люди как из Казахстана, так и из других стран. Сайт для регистрации - https://hub.hackload.kz/.
👥 Организаторы хакатона - Станислав Беляев, Андрей Курдюмов, Теймур Шейкемелов и я, Дмитрий Мельник.
💰 Спонсорами хакатона будут 2 крупные казахстанские компании. О них мы расскажем немного позже.
ℹ️ Чтобы получать дальнейшую информацию и задавать вопросы, вступайте в группу "Тимлид не кодит". Также в скором времени мы создадим отдельный чат для участников хакатона.
🏆 В завершение повторю слоган хакатона:
В HackLoad мы верим в создание возможностей для разработчиков решать реальные задачи в совместной, образовательной среде. Наше мероприятие направлено на развитие как навыков, так и сообщества.
🥇 Регистрируйтесь на хакатон и получите новые знания, ценный опыт и важные знакомства.
🚀 P.S. Подписывайтесь на канал @drimdev, будет полезно и интересно!
👍2❤1
Forwarded from Stanislav Belyaev
Обновление по hackload.kz
Мы выпустили следующий релиз личного кабинета https://hub.hackload.kz
Теперь, вы можете:
- В ваш профиль мы добавили возможность указать Telegram, Github, Linkedin. Эти данные важны для контакта с вами и для других участников. Рекомендуем зайти в профиль и заполнить :)
- Добавить возможность управлять командами. Вы можете редактировать команды (описание, участники)
- Если вы лидер команды - вы можете найти участников без команды и пригласить их в вашу команду (для связи у вас есть почта + внутренняя система сообщений)
- Если вы хотите присоединиться к существующей команде - вам доступны все команды к просмотру и описание всех участников, кто в команде
Для участия в хакатоне мы рассматриваем только команды. Соло-девелоперы, к сожалению, не справятся, в виду размера задания. Минимальный размер команды - 3 человека.
Если вы создали команду, но не хотите ее продвигать (например, вы присоединитесь к другой) - вы смело можете покинуть команду, она будет удалена.
Обновляйте ваши данные и ждем следующего обновления кабинета участника :)
https://hub.hackload.kz
Мы выпустили следующий релиз личного кабинета https://hub.hackload.kz
Теперь, вы можете:
- В ваш профиль мы добавили возможность указать Telegram, Github, Linkedin. Эти данные важны для контакта с вами и для других участников. Рекомендуем зайти в профиль и заполнить :)
- Добавить возможность управлять командами. Вы можете редактировать команды (описание, участники)
- Если вы лидер команды - вы можете найти участников без команды и пригласить их в вашу команду (для связи у вас есть почта + внутренняя система сообщений)
- Если вы хотите присоединиться к существующей команде - вам доступны все команды к просмотру и описание всех участников, кто в команде
Для участия в хакатоне мы рассматриваем только команды. Соло-девелоперы, к сожалению, не справятся, в виду размера задания. Минимальный размер команды - 3 человека.
Если вы создали команду, но не хотите ее продвигать (например, вы присоединитесь к другой) - вы смело можете покинуть команду, она будет удалена.
Обновляйте ваши данные и ждем следующего обновления кабинета участника :)
https://hub.hackload.kz
👍2❤1🔥1
Этот канал называется "Drim Dev" и это название компании, которую я, Дмитрий Мельник, основал 2 года назад. Я работаю как солопренёр (solopreneur), то есть являюсь единственным сотрудником этой компании. В дальнейшем это изменится, но пока ИИ-инструменты позволяют сильно ускорить многие задачи, чтобы не нанимать кого-то ещё.
Цель моей деятельности - повышение квалификации действующих разработчиков. То есть я не обучаю новичков с нуля, чтобы они "вошли в айти". Я помогаю тем программистам, кто уже работает, но у кого есть пробелы в знаниях и в системном понимании профессии. Это очень частая ситуация в Казахстане из-за некачественного образования и из-за того, что на работе нет больших возможностей для развития.
После моих курсов и менторинга программисты получают новые знания и опыт, которые позволяют им повысить свою ценность на рынке. Джуны становятся мидлами, мидлы сеньорами, а сеньоры лидами. Уже много людей прошло через такое повышение.
Кроме того, я занимаюсь консультированием компаний, которым помогаю с архитектурой и обучением команд. Это позволяет удешевить и ускорить разработку проектов.
Сейчас у меня нет активных потоков курсов, потому что я сконцентрирован на организации хакатона HackLoad 2025 и на создании новых курсов. Хакатон важен для меня, потому что это ещё одна возможность повысить квалификацию разработчиков в Казахстане. Для этой же цели я буду проводить серию публичных лекций перед хакатоном.
Но есть возможность самостоятельно пройти мои курсы. Сегодня я хочу рассказать об одном из них - "Разработка монолитного бекенда крипто-банка". Вот страница с его описанием https://drim.dev/courses/crypto-bank-monolith
В рамках курса участникам необходимо реализовать монолитный бекенд крипто-банка на языке C# с использованием фреймворка ASP.NET Core. Для этого они изучат и применят технологии и практики, необходимые для разработки расширяемых, надёжных и производительных бекенд-приложений, готовых к коммерческому использованию.
Вот краткий перечень тем курса:
* Универсальные принципы проектирования и разработки бекенд-приложений
* Основные принципы и детали работы фреймворка ASP.NET Core
* Аутентификация и авторизация в ASP.NET Core
* Обработка ошибок и валидация
* Анализ и сравнение различных архитектур для WebAPI-приложений
* Выбор и использование конкретного типа гибкой архитектуры реализации WebAPI-приложений
* Анализ и сравнение разных типов автоматического тестирования
* Реализация гибкого микро-фреймворка для написания простых и расширяемых интеграционных тестов
* Принципы и детали работы контейнеров, образов и рантаймов
* Принципы и детали работы runc, Buildah, Scopeo, Podman
* Принципы и детали работы Docker
* Принципы и детали работы Docker Compose
* Принципы и детали работы блокчейна
* Принципы и детали работы Bitcoin
* Основы реляционных баз данных и детали их реализации на примере PostgreSQL и MS SQL Server
* Принципы и механики конкурентного выполнения запросов в реляционных базах данных
* Уровни изоляции транзакций в реляционных базах данных
Курс представляет собой 25 записанных лекций длительностью в 60-90 минут. Кроме этого есть описание проекта, который вы можете реализовать, чтобы на практике закрепить знания. Я буду отвечать на вопросы и помогать в случае затруднений.
Отдельно отмечу 2 темы курса:
1. Написание простых и расширяемых интеграционных тестов. Я расскажу о подходе к автотестированию, который нарабатывал более 10 лет. Этой информации нет в публичном доступе и все, кто внедрил этот подход на своих проектах, очень высоко его оценивают.
2. Взаимодействие с биткоином из приложений на C#. Вы научитесь интегрироваться с нодами биткоина, чтобы программно отправлять и получать транзакции. Эти знания необходимы для создания таких систем, как криптобиржи, криптобанки и другие.
Стоимость курса - 150 тысяч тенге. Оплату можно производить в рассрочку в течение 3 месяцев.
Уровень участников - джуниор и мидл бекенд-разработчики. Если вы сеньор и вам интересны темы курса, участвуйте тоже 🙂
Если вы хотите приобрести курс, или у вас есть вопросы, пишите мне в аккаунт @mitro52.
Цель моей деятельности - повышение квалификации действующих разработчиков. То есть я не обучаю новичков с нуля, чтобы они "вошли в айти". Я помогаю тем программистам, кто уже работает, но у кого есть пробелы в знаниях и в системном понимании профессии. Это очень частая ситуация в Казахстане из-за некачественного образования и из-за того, что на работе нет больших возможностей для развития.
После моих курсов и менторинга программисты получают новые знания и опыт, которые позволяют им повысить свою ценность на рынке. Джуны становятся мидлами, мидлы сеньорами, а сеньоры лидами. Уже много людей прошло через такое повышение.
Кроме того, я занимаюсь консультированием компаний, которым помогаю с архитектурой и обучением команд. Это позволяет удешевить и ускорить разработку проектов.
Сейчас у меня нет активных потоков курсов, потому что я сконцентрирован на организации хакатона HackLoad 2025 и на создании новых курсов. Хакатон важен для меня, потому что это ещё одна возможность повысить квалификацию разработчиков в Казахстане. Для этой же цели я буду проводить серию публичных лекций перед хакатоном.
Но есть возможность самостоятельно пройти мои курсы. Сегодня я хочу рассказать об одном из них - "Разработка монолитного бекенда крипто-банка". Вот страница с его описанием https://drim.dev/courses/crypto-bank-monolith
В рамках курса участникам необходимо реализовать монолитный бекенд крипто-банка на языке C# с использованием фреймворка ASP.NET Core. Для этого они изучат и применят технологии и практики, необходимые для разработки расширяемых, надёжных и производительных бекенд-приложений, готовых к коммерческому использованию.
Вот краткий перечень тем курса:
* Универсальные принципы проектирования и разработки бекенд-приложений
* Основные принципы и детали работы фреймворка ASP.NET Core
* Аутентификация и авторизация в ASP.NET Core
* Обработка ошибок и валидация
* Анализ и сравнение различных архитектур для WebAPI-приложений
* Выбор и использование конкретного типа гибкой архитектуры реализации WebAPI-приложений
* Анализ и сравнение разных типов автоматического тестирования
* Реализация гибкого микро-фреймворка для написания простых и расширяемых интеграционных тестов
* Принципы и детали работы контейнеров, образов и рантаймов
* Принципы и детали работы runc, Buildah, Scopeo, Podman
* Принципы и детали работы Docker
* Принципы и детали работы Docker Compose
* Принципы и детали работы блокчейна
* Принципы и детали работы Bitcoin
* Основы реляционных баз данных и детали их реализации на примере PostgreSQL и MS SQL Server
* Принципы и механики конкурентного выполнения запросов в реляционных базах данных
* Уровни изоляции транзакций в реляционных базах данных
Курс представляет собой 25 записанных лекций длительностью в 60-90 минут. Кроме этого есть описание проекта, который вы можете реализовать, чтобы на практике закрепить знания. Я буду отвечать на вопросы и помогать в случае затруднений.
Отдельно отмечу 2 темы курса:
1. Написание простых и расширяемых интеграционных тестов. Я расскажу о подходе к автотестированию, который нарабатывал более 10 лет. Этой информации нет в публичном доступе и все, кто внедрил этот подход на своих проектах, очень высоко его оценивают.
2. Взаимодействие с биткоином из приложений на C#. Вы научитесь интегрироваться с нодами биткоина, чтобы программно отправлять и получать транзакции. Эти знания необходимы для создания таких систем, как криптобиржи, криптобанки и другие.
Стоимость курса - 150 тысяч тенге. Оплату можно производить в рассрочку в течение 3 месяцев.
Уровень участников - джуниор и мидл бекенд-разработчики. Если вы сеньор и вам интересны темы курса, участвуйте тоже 🙂
Если вы хотите приобрести курс, или у вас есть вопросы, пишите мне в аккаунт @mitro52.
🔥12👍2
💬 Мы создали группу в Телеграме для участников хакатона HackLoad 2025. Будем там обсуждать все возникающие вопросы и идеи. Вот ссылка на вступление https://news.1rj.ru/str/+FpmkE1LL2VcwNmUy
Если вы зарегистрировались на хакатон или планируете это сделать, вступайте в группу.
Также подписывайтесь на этот канал @drimdev. Здесь также будут все анонсы и образовательная информация. 🚀
Если вы зарегистрировались на хакатон или планируете это сделать, вступайте в группу.
Также подписывайтесь на этот канал @drimdev. Здесь также будут все анонсы и образовательная информация. 🚀
Давно не писал в канал и на это есть причина - мы активно готовимся к проведению хакатона HackLoad 2025. До него осталось меньше двух недель 🙃 Регистрация уже закрыта, будет участвовать 31 команда по 3-4 человека. Это отличный результат ☀️
Начинается большое образовательное событие. Оно включает не только хакатон, но и серию лекций перед ним. Расписание уже готово и вы можете увидеть его на странице https://hackload.kz/schedule.
Продублирую расписание здесь (время по Астане):
1. "Паттерн «Сага» для распределенных транзакций". 4 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://youtube.com/live/9vfuqDVWZ04
2. "Масштабирование под высокую нагрузку". 5 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://youtube.com/live/LE5sckhMAoE
3. "Организация конкурентного доступа". 6 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://www.youtube.com/live/S1wILEUUMKo
4. "Создание отказоустойчивый систем". 7 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://www.youtube.com/live/VQFPNT_CMuY
5. "Интеграция платёжных провайдеров". 11 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://www.youtube.com/live/9MODb5vSd_Q
6. "Решения, которые работают". 12 августа в 19:30. Докладчик - Владимир Иванов. Трансляция - https://www.youtube.com/live/dKulH47IwHQ
7. "Платформа PS.kz". 13 августа в 19:30. Докладчики - команда PS.kz. Трансляция - https://www.youtube.com/live/-hI7HJTAD-s
Вас ждут 7 лекций, на которых вы получите (или освежите) важные знания для построения надёжных и масштабируемых систем. И потом сможете применить эти знания на хакатоне.
Лекции будут проводиться в Zoom, участники хакатона тоже будут в Zoom. Всем остальным доступны трансляции в YouTube. Ссылки на них я привёл выше.
Ждём вас на лекциях, будет полезно и интересно! И подписывайтесь на канал @drimdev 🚀
#hackload
Начинается большое образовательное событие. Оно включает не только хакатон, но и серию лекций перед ним. Расписание уже готово и вы можете увидеть его на странице https://hackload.kz/schedule.
Продублирую расписание здесь (время по Астане):
1. "Паттерн «Сага» для распределенных транзакций". 4 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://youtube.com/live/9vfuqDVWZ04
2. "Масштабирование под высокую нагрузку". 5 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://youtube.com/live/LE5sckhMAoE
3. "Организация конкурентного доступа". 6 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://www.youtube.com/live/S1wILEUUMKo
4. "Создание отказоустойчивый систем". 7 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://www.youtube.com/live/VQFPNT_CMuY
5. "Интеграция платёжных провайдеров". 11 августа в 19:30. Докладчик - Дмитрий Мельник. Трансляция - https://www.youtube.com/live/9MODb5vSd_Q
6. "Решения, которые работают". 12 августа в 19:30. Докладчик - Владимир Иванов. Трансляция - https://www.youtube.com/live/dKulH47IwHQ
7. "Платформа PS.kz". 13 августа в 19:30. Докладчики - команда PS.kz. Трансляция - https://www.youtube.com/live/-hI7HJTAD-s
Вас ждут 7 лекций, на которых вы получите (или освежите) важные знания для построения надёжных и масштабируемых систем. И потом сможете применить эти знания на хакатоне.
Лекции будут проводиться в Zoom, участники хакатона тоже будут в Zoom. Всем остальным доступны трансляции в YouTube. Ссылки на них я привёл выше.
Ждём вас на лекциях, будет полезно и интересно! И подписывайтесь на канал @drimdev 🚀
#hackload
👍9🔥1
Завтра в 10:00 начинается хакатон HackLoad 2025 🎉 Проделано много работы, чтобы участники могли погрузиться в создание высоконагруженной системы.
Трансляция открытия будет на YouTube https://youtube.com/live/MAY9b2rRyo4?feature=share
Также можете подключиться в Zoom https://us06web.zoom.us/meetings/87341487618/invitations?signature=FYfxNVvf2-DXOjyV5-_yZ5ICntb8Mpxy0JMiCZoCu78
Присоединяйтесь!
Трансляция открытия будет на YouTube https://youtube.com/live/MAY9b2rRyo4?feature=share
Также можете подключиться в Zoom https://us06web.zoom.us/meetings/87341487618/invitations?signature=FYfxNVvf2-DXOjyV5-_yZ5ICntb8Mpxy0JMiCZoCu78
Присоединяйтесь!
Youtube
- YouTube
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
👍4🔥3🤝1
Forwarded from Stanislav Belyaev
Ссылка на трансляцию поменялась
https://youtube.com/live/en-S1XCVcp8?feature=share
https://youtube.com/live/en-S1XCVcp8?feature=share
YouTube
Открытие хакатона Hackload.kz
Открытие хакатона https://hackload.kz.
Спонсоры, организационные моменты
Спонсоры, организационные моменты
Всем привет! Я возвращаюсь к публикациям в канале) За то время, что я не писал, было несколько активностей, но самая главная - это проведение хакатона HackLoad 2025. Вкратце опишу тут результаты и полученный опыт. А его было получено немало 🙂
Изначально планировалось провести хакатон за 3 дня. Для этого мы арендовали зал в SmArt.Point в Алматы и я туда прилетел. Но по факту оказалось, что ни одна из команд не успела сделать решение за отведённое время. В итоге мы перевели все команды в онлайн-режим и продлили хакатон ещё на 7 дней. Получается, мы недооценили сложность задания. Обязательно учтём это на следующем хакатоне.
Неожиданно много команд сошло с дистанции до завершения хакатона. Начинало работу 25 команд, а результаты продемонстировали только 4 (!). Мы пришли к выводу, что это результат следующих факторов: сложность задания, отсутствие призов, отсутствие менторов и, возможно, недостаточная коммуникация с командами с нашей стороны. Мы проведём работу над ошибкам, чтобы больший процент команд в дальнейшем доходил до конца.
Но те команды, что дошли до закрытия, показали крутые результаты. Закрытие проходило в формате звонка в Zoom, где команды показывали, что они сделали. И этот звонок превратился в насыщенное двухчасовое обсуждение выбранных технологий, инфраструктурных схем, принятых компромиссов и сделанных оптимизаций. Именно на этом звонке я понял, что цель хакатона была достигнута. Вот таких вызовов и публичных обсуждений на высоком инженерном уровне не хватает казахстанскому ИТ-сообществу. И мы с участниками смогли достичь этого уровня 🚀 Рекомендую посмотреть видео встречи, оно того стоит - https://hackload.kz/results. Также на этой странице вы можете посмотреть, какие места заняли команды и детали их решений.
Отдельно хочу рассказать о том, чем наш хакатон отличился от большинства других подобных мероприятий. Мы дали командам возможность быстро проверять свои решения и видеть, на каком месте в общем зачёте они сейчас находятся. Для этого мы разработали систему запуска нагрузочных тестов и автоматически обновляемую таблицу результатов. То есть команды с помощью одной кнопки могли выполнять нагрузочные тесты и тут же видеть и сравнивать полученные результаты с другими командами. Как только участники начали это делать, чат хакатона закипел) Мы скидывали полученные цифры метрик, делились графиками из Графаны и обсуждали разные методики выполнения нагрузочных тестов. Не знаю как другие, но я в этом процессе получил огромное инженерное удовольствие. Мы задали ещё одну планку качества обсуждений в сообществе 🥇
В итоге хочу сказать, что мероприятие удалось! Да, были проблемы и нестыковки. Да, до финала дошло не так много команд, как нам бы хотелось. Да, оффлайн присутствовало тоже не так много команд. Но это был наш первый опыт и мы готовили мероприятие как волонтёры в свободное от работы время. И в итоге хакатон состоялся и команды (как и организаторы) получили много новых знаний и опыта. И все мы увидели, на каком высоком инженерном уровне можно выполнять и обсуждать поставленные задачи. Теперь будем масштабироваться, чтобы этот опыт получило как можно больше людей🚀
И в конце хочу сказать спасибо тем, без кого этого мероприятия бы не было:
Нашему спонсору Freedom Holding. Компания оплатила все наши расходы и показала, что заинтересована в развитии ИТ-сообщества нашей страны. Спасибо!
Нашему спонсору PS Cloud Services. Компания предоставила вычислительные ресурсы организаторам и всем командам. Они показали, что у нас в Казахстане есть качественные и профессиональные провайдеры облачных решений. И они готовы вкладываться в развитие сообщества. Спасибо!
И отдельное спасибо всем организаторам: Станиславу Беляеву, Теймуру Шайкемелову, Андрею Курдюмову! Было непросто, но мы смогли это сделать)
Оставайтесь на связи, будем вместе продолжать проводить такие мероприятия и развиваться ☀️
Изначально планировалось провести хакатон за 3 дня. Для этого мы арендовали зал в SmArt.Point в Алматы и я туда прилетел. Но по факту оказалось, что ни одна из команд не успела сделать решение за отведённое время. В итоге мы перевели все команды в онлайн-режим и продлили хакатон ещё на 7 дней. Получается, мы недооценили сложность задания. Обязательно учтём это на следующем хакатоне.
Неожиданно много команд сошло с дистанции до завершения хакатона. Начинало работу 25 команд, а результаты продемонстировали только 4 (!). Мы пришли к выводу, что это результат следующих факторов: сложность задания, отсутствие призов, отсутствие менторов и, возможно, недостаточная коммуникация с командами с нашей стороны. Мы проведём работу над ошибкам, чтобы больший процент команд в дальнейшем доходил до конца.
Но те команды, что дошли до закрытия, показали крутые результаты. Закрытие проходило в формате звонка в Zoom, где команды показывали, что они сделали. И этот звонок превратился в насыщенное двухчасовое обсуждение выбранных технологий, инфраструктурных схем, принятых компромиссов и сделанных оптимизаций. Именно на этом звонке я понял, что цель хакатона была достигнута. Вот таких вызовов и публичных обсуждений на высоком инженерном уровне не хватает казахстанскому ИТ-сообществу. И мы с участниками смогли достичь этого уровня 🚀 Рекомендую посмотреть видео встречи, оно того стоит - https://hackload.kz/results. Также на этой странице вы можете посмотреть, какие места заняли команды и детали их решений.
Отдельно хочу рассказать о том, чем наш хакатон отличился от большинства других подобных мероприятий. Мы дали командам возможность быстро проверять свои решения и видеть, на каком месте в общем зачёте они сейчас находятся. Для этого мы разработали систему запуска нагрузочных тестов и автоматически обновляемую таблицу результатов. То есть команды с помощью одной кнопки могли выполнять нагрузочные тесты и тут же видеть и сравнивать полученные результаты с другими командами. Как только участники начали это делать, чат хакатона закипел) Мы скидывали полученные цифры метрик, делились графиками из Графаны и обсуждали разные методики выполнения нагрузочных тестов. Не знаю как другие, но я в этом процессе получил огромное инженерное удовольствие. Мы задали ещё одну планку качества обсуждений в сообществе 🥇
В итоге хочу сказать, что мероприятие удалось! Да, были проблемы и нестыковки. Да, до финала дошло не так много команд, как нам бы хотелось. Да, оффлайн присутствовало тоже не так много команд. Но это был наш первый опыт и мы готовили мероприятие как волонтёры в свободное от работы время. И в итоге хакатон состоялся и команды (как и организаторы) получили много новых знаний и опыта. И все мы увидели, на каком высоком инженерном уровне можно выполнять и обсуждать поставленные задачи. Теперь будем масштабироваться, чтобы этот опыт получило как можно больше людей
И в конце хочу сказать спасибо тем, без кого этого мероприятия бы не было:
Нашему спонсору Freedom Holding. Компания оплатила все наши расходы и показала, что заинтересована в развитии ИТ-сообщества нашей страны. Спасибо!
Нашему спонсору PS Cloud Services. Компания предоставила вычислительные ресурсы организаторам и всем командам. Они показали, что у нас в Казахстане есть качественные и профессиональные провайдеры облачных решений. И они готовы вкладываться в развитие сообщества. Спасибо!
И отдельное спасибо всем организаторам: Станиславу Беляеву, Теймуру Шайкемелову, Андрею Курдюмову! Было непросто, но мы смогли это сделать)
Оставайтесь на связи, будем вместе продолжать проводить такие мероприятия и развиваться ☀️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤2
А для чего вообще проводить хакатон? На мой взгляд, это в первую очередь образовательное мероприятие. Перед началом нашего хакатона я и наши партнёры прочитали серию лекций, где дали знания, полезные для выполнения задачи. Потом команды смогли сразу применить полученные знания на хакатоне и получить практический опыт, цементирующий эти знания.
Кроме того, многие команды для хакатона специально выбирали технологии, которые они хотели бы освоить и попрактиковать, но в обычной жизни до этого не доходили руки. Примеры таких технологий: Solana, SQLite, Rust для веб-разработки, Go, микросервисы. Интенсивное программирование в течение нескольких дней с чётко поставленной задачей на хакатоне помогает получить хорошую базу в новых технологиях.
Но в этом посте я хочу отметить ещё один источник новых знаний и опыта - это обсуждения между организаторами и участниками на самом хакатоне. Эти обсуждения вводят в оборот новые принципы, технологии и подходы, и участники тут же учатся применять их в своей работе.
К примеру, есть разные подходы к организации нагрузочного тестирования, Один из вариантов классификации это закрытая модель (closed model) и открытая модель (open model). Следующим постом я скину сообщение, которое я написал командам во время хакатона. И уже с учётом этих знаний мы продолжили обсуждать результаты тестов.
Надеюсь, теперь больше людей поймут ценность хакатонов и присоединятся к нам на следующем мероприятии 🙂
Кроме того, многие команды для хакатона специально выбирали технологии, которые они хотели бы освоить и попрактиковать, но в обычной жизни до этого не доходили руки. Примеры таких технологий: Solana, SQLite, Rust для веб-разработки, Go, микросервисы. Интенсивное программирование в течение нескольких дней с чётко поставленной задачей на хакатоне помогает получить хорошую базу в новых технологиях.
Но в этом посте я хочу отметить ещё один источник новых знаний и опыта - это обсуждения между организаторами и участниками на самом хакатоне. Эти обсуждения вводят в оборот новые принципы, технологии и подходы, и участники тут же учатся применять их в своей работе.
К примеру, есть разные подходы к организации нагрузочного тестирования, Один из вариантов классификации это закрытая модель (closed model) и открытая модель (open model). Следующим постом я скину сообщение, которое я написал командам во время хакатона. И уже с учётом этих знаний мы продолжили обсуждать результаты тестов.
Надеюсь, теперь больше людей поймут ценность хакатонов и присоединятся к нам на следующем мероприятии 🙂
👍8
Внимание, важная информация про нагрузочное тестирование!
Мы уже запустили несколько нагрузочных тестов. В некоторых из них мы эмулировали 1000 пользователей. Но что это значит? Какая реальная нагрузка идёт на систему? Есть 2 варианта:
1. Каждый пользователь сидит и шлёт запросы на вашу систему в течение всего времени теста. Отправил запрос, дождался ответа, отправил следующий и так далее.
2. Каждый пользователь приходит, шлёт запрос на вашу систему, получает ответ и уходит.
Первый вариант называется "closed model". Второй вариант называется "open model". То есть закрытая и открытая модели. Вот оригинальная статья, которая ввела эти понятия https://www.usenix.org/legacy/event/nsdi06/tech/full_papers/schroeder/schroeder.pdf
Вот документация k6, рассказывающая как настроить ту или иную модель https://grafana.com/docs/k6/latest/using-k6/scenarios/concepts/open-vs-closed/
Так в чём же практическая разница? Очень важно понять, то разница в том, сколько реально запросов в секунду получит ваша система.
1. Closed model. Представьте, что пользователь сидит и шлёт запросы. Он отправил запрос, через 100 мс пришёл ответ. Он следом шлёт другой запрос. Таким образом, за секунду пользователь отправит 10 запросов. Если пользователей будет 1000, то нагрузка на систему будет 10 тысяч запросов в секунду.
И тут внимание! Если ваша система начнёт медленее отвечать на запросы, то пользователь будет слать меньше запросов в секунду. Если запрос теперь обрабатывается за 500 мс, то пользователь будет слать 2 запроса в секунду. Нагрузка на систему будет 2 тысячи запросов в секунду. То есть нагрузка на вашу систему зависит от производительности самой системы.
2. Open model. В этой модели каждую секунду к нам приходит 1000 пользователей, шлют запрос, дожидаются ответа и уходят. Они не будут слать следующий запрос. То есть время ответа системы никак не будет влиять на количество звпросов в секунду. Это всегда будет тысяча запросов в секунду.
Все предыдущие тесты мы запускали как closed model. И это, на самом деле, не позволяет сравнивать результаты Rorobotics и helloalem. Потому что на helloalem по факту отправлялось больше запросов в секунду. Почему? Потому что их система быстрее обрабатывала запросы.
Нам было важно рассказать вам об этих двух подходах. И чтобы вы на практике увидели разницу. В дальнейшем мы будем использовать open model, чтобы мы могли справедливо сравнивать результаты команд.
Сейчас я скину результаты тестирования helloalem на 5000 пользователей по open model.
P.S. То что я описал, это достаточно нетривиальные вещи. Вы можете не сразу их понять. Но со временем поймёте. И хакатон с его запусками тестов вам в этом поможет. Сегодня я сделаю возможность каждой команде самой запускать тесты в hub.hackload.kz. И тогда вы сможете сами запускать тесты и анализировать их результаты.
Мы уже запустили несколько нагрузочных тестов. В некоторых из них мы эмулировали 1000 пользователей. Но что это значит? Какая реальная нагрузка идёт на систему? Есть 2 варианта:
1. Каждый пользователь сидит и шлёт запросы на вашу систему в течение всего времени теста. Отправил запрос, дождался ответа, отправил следующий и так далее.
2. Каждый пользователь приходит, шлёт запрос на вашу систему, получает ответ и уходит.
Первый вариант называется "closed model". Второй вариант называется "open model". То есть закрытая и открытая модели. Вот оригинальная статья, которая ввела эти понятия https://www.usenix.org/legacy/event/nsdi06/tech/full_papers/schroeder/schroeder.pdf
Вот документация k6, рассказывающая как настроить ту или иную модель https://grafana.com/docs/k6/latest/using-k6/scenarios/concepts/open-vs-closed/
Так в чём же практическая разница? Очень важно понять, то разница в том, сколько реально запросов в секунду получит ваша система.
1. Closed model. Представьте, что пользователь сидит и шлёт запросы. Он отправил запрос, через 100 мс пришёл ответ. Он следом шлёт другой запрос. Таким образом, за секунду пользователь отправит 10 запросов. Если пользователей будет 1000, то нагрузка на систему будет 10 тысяч запросов в секунду.
И тут внимание! Если ваша система начнёт медленее отвечать на запросы, то пользователь будет слать меньше запросов в секунду. Если запрос теперь обрабатывается за 500 мс, то пользователь будет слать 2 запроса в секунду. Нагрузка на систему будет 2 тысячи запросов в секунду. То есть нагрузка на вашу систему зависит от производительности самой системы.
2. Open model. В этой модели каждую секунду к нам приходит 1000 пользователей, шлют запрос, дожидаются ответа и уходят. Они не будут слать следующий запрос. То есть время ответа системы никак не будет влиять на количество звпросов в секунду. Это всегда будет тысяча запросов в секунду.
Все предыдущие тесты мы запускали как closed model. И это, на самом деле, не позволяет сравнивать результаты Rorobotics и helloalem. Потому что на helloalem по факту отправлялось больше запросов в секунду. Почему? Потому что их система быстрее обрабатывала запросы.
Нам было важно рассказать вам об этих двух подходах. И чтобы вы на практике увидели разницу. В дальнейшем мы будем использовать open model, чтобы мы могли справедливо сравнивать результаты команд.
Сейчас я скину результаты тестирования helloalem на 5000 пользователей по open model.
P.S. То что я описал, это достаточно нетривиальные вещи. Вы можете не сразу их понять. Но со временем поймёте. И хакатон с его запусками тестов вам в этом поможет. Сегодня я сделаю возможность каждой команде самой запускать тесты в hub.hackload.kz. И тогда вы сможете сами запускать тесты и анализировать их результаты.
👍4
Атака на цепочку поставок npm
Представьте, что вы используете веб-приложение для переводов криптовалют. Это приложение написано уважаемой компанией, которой можно доверять. Фронтенд реализован на JavaScript и использует сторонние библиотеки для ускорения разработки.
Мы все используем библиотеки, ведь какой смысл каждый раз изобретать велосипед и тратить на разработку неоправданно много времени. Мы используем npm для JavaScript, NuGet для .NET, PyPI для Python, Maven Central для Java, crates.io для Rust, Go modules для Go. И мы такие не одни. По оценкам, типичное приложение в наше время на 70-90% состоит из свободного ПО (Free and Open Source Software - FOSS).
Так вот вы используете веб-приложение крипто-кошелька и делаете перевод 0.5 биткоинов с одного своего адреса на другой. Но средства не приходят на ваш адрес. Они уходят в совершенно другое место. Почему это могло произойти? Могла быть скомпроментирована одна из библиотек, используемых кошельком. И в этой библиотеке мог оказаться код, подменяющий адреса в транзакциях на адреса злоумышленников.
Это именно то, что произошло в мире JavaScript 8 сентября 2025 года.
В этот день злоумышленники получили доступ к аккаунту маинтейнера нескольких популярных пакетов npm и выпустили их новые версии, добавив код, заменяющий адреса крипто-транзакций. Маинтейнера зовут Josh Junon и он стал жертвой фишинга. Изменены были такие популярные пакеты как debug и chalk. Общее количество скачиваний атакованных пакетов - 2 миллиарда в неделю. Вот тут можно прочитать детали.
Получается, кто-то обманул какого-то разработчика, а в итоге полбиткоина потеряли вы, серьёзно? Да, серьёзно, и это большая проблема в мире современной разработки. Данный тип атаки называется Supply Chain Attack - атака на цепочку поставок. Почему цепочку? Дело в том, что библиотеки тоже не пишутся с нуля, а используют другие библиотеки. А те другие и так далее. И, когда вредный код попадает в библиотеку debug, он по цепочке попадает и в другие библиотеки, которые используют debug. А затем в другие и так далее. Разработчики крипто-кошелька даже могли не знать, что в их приложении есть код debug.
Как разработчикам защититься?
Эта проблема особенно актуальна для экосистемы npm, которая чаще всего становится целью атак из-за своего огромного размера (более 4.8 млн пакетов) и относительно слабых правил безопасности. Культура использования множества мелких пакетов ("микрозависимостей") создает огромную поверхность для атаки. Вот несколько ключевых шагов для защиты:
* Фиксируйте версии зависимостей. Это важнейшее правило. Никогда не полагайтесь на автоматическое скачивание "последней" версии. Используйте lock-файлы (
* Используйте
* Минимизируйте количество зависимостей. Каждая библиотека, которую вы добавляете в проект, — это потенциальный вектор атаки. Прежде чем установить новый пакет, спросите себя: "Действительно ли он мне нужен?". Иногда проще написать несколько десятков строк кода самостоятельно, чем тянуть за собой целое дерево чужих зависимостей. Экосистемы с богатой стандартной библиотекой (например, .NET) поощряют именно такой подход, снижая необходимость во внешних инструментах.
* Обратите внимание на Deno. Deno — это альтернативная среда выполнения для JavaScript/TypeScript, созданная Ryan Dahl, автором Node.js. Одна из целей Deno, как раз, заключается в том, чтобы создать богатую стандартную библиотеку.
В этом посте я затронул только базовые вопросы атаки и борьбы с ней. Пишите в комментариях ваши мысли, будет интересно обсудить.
#security #javanoscript #npm #supply_chain
Представьте, что вы используете веб-приложение для переводов криптовалют. Это приложение написано уважаемой компанией, которой можно доверять. Фронтенд реализован на JavaScript и использует сторонние библиотеки для ускорения разработки.
Мы все используем библиотеки, ведь какой смысл каждый раз изобретать велосипед и тратить на разработку неоправданно много времени. Мы используем npm для JavaScript, NuGet для .NET, PyPI для Python, Maven Central для Java, crates.io для Rust, Go modules для Go. И мы такие не одни. По оценкам, типичное приложение в наше время на 70-90% состоит из свободного ПО (Free and Open Source Software - FOSS).
Так вот вы используете веб-приложение крипто-кошелька и делаете перевод 0.5 биткоинов с одного своего адреса на другой. Но средства не приходят на ваш адрес. Они уходят в совершенно другое место. Почему это могло произойти? Могла быть скомпроментирована одна из библиотек, используемых кошельком. И в этой библиотеке мог оказаться код, подменяющий адреса в транзакциях на адреса злоумышленников.
Это именно то, что произошло в мире JavaScript 8 сентября 2025 года.
В этот день злоумышленники получили доступ к аккаунту маинтейнера нескольких популярных пакетов npm и выпустили их новые версии, добавив код, заменяющий адреса крипто-транзакций. Маинтейнера зовут Josh Junon и он стал жертвой фишинга. Изменены были такие популярные пакеты как debug и chalk. Общее количество скачиваний атакованных пакетов - 2 миллиарда в неделю. Вот тут можно прочитать детали.
Получается, кто-то обманул какого-то разработчика, а в итоге полбиткоина потеряли вы, серьёзно? Да, серьёзно, и это большая проблема в мире современной разработки. Данный тип атаки называется Supply Chain Attack - атака на цепочку поставок. Почему цепочку? Дело в том, что библиотеки тоже не пишутся с нуля, а используют другие библиотеки. А те другие и так далее. И, когда вредный код попадает в библиотеку debug, он по цепочке попадает и в другие библиотеки, которые используют debug. А затем в другие и так далее. Разработчики крипто-кошелька даже могли не знать, что в их приложении есть код debug.
Как разработчикам защититься?
Эта проблема особенно актуальна для экосистемы npm, которая чаще всего становится целью атак из-за своего огромного размера (более 4.8 млн пакетов) и относительно слабых правил безопасности. Культура использования множества мелких пакетов ("микрозависимостей") создает огромную поверхность для атаки. Вот несколько ключевых шагов для защиты:
* Фиксируйте версии зависимостей. Это важнейшее правило. Никогда не полагайтесь на автоматическое скачивание "последней" версии. Используйте lock-файлы (
package-lock.json, yarn.lock). Они записывают точную версию каждого пакета в вашем проекте. Это гарантирует, что при каждой установке вы получите именно тот код, который был протестирован и проверен.* Используйте
npm ci вместо npm install. Команда npm install может обновлять ваш package-lock.json, что нежелательно в автоматизированных средах. Команда npm ci (clean install) строго устанавливает зависимости только из package-lock.json.* Минимизируйте количество зависимостей. Каждая библиотека, которую вы добавляете в проект, — это потенциальный вектор атаки. Прежде чем установить новый пакет, спросите себя: "Действительно ли он мне нужен?". Иногда проще написать несколько десятков строк кода самостоятельно, чем тянуть за собой целое дерево чужих зависимостей. Экосистемы с богатой стандартной библиотекой (например, .NET) поощряют именно такой подход, снижая необходимость во внешних инструментах.
* Обратите внимание на Deno. Deno — это альтернативная среда выполнения для JavaScript/TypeScript, созданная Ryan Dahl, автором Node.js. Одна из целей Deno, как раз, заключается в том, чтобы создать богатую стандартную библиотеку.
В этом посте я затронул только базовые вопросы атаки и борьбы с ней. Пишите в комментариях ваши мысли, будет интересно обсудить.
#security #javanoscript #npm #supply_chain
👍10❤4