DevHands.io

🧠 Курс "Введение в очереди"

2 месяца, 50.000; следующий старт – 3-е июля 2024!



Знакомьтесь: автор курса – Владимир Перепелица.

Стрим про очереди с автором курса, Владимиром Перепелицей (ведущий - Алексей Рыбак)

О курсе


Формат: "Живые" онлайн-сессии (лекции, брейнштормы, демо) + асинхронная практика (вся инфраструктура предоставляется в первый же день)
Для кого: в первую очередь - для бекендера, программиста, руководителя, QA (автоматизация), системного/платформенного инженера, системного администратора
Навыки: базовое бекенд-программирование (Python или Golang), крайне желательны навыки работы в консоли Linux
Продолжительность: 2 месяцев, созвоны по 1 часу в неделю + практика асинхронно неболее нескольких часов в неделю
Цена: 50.000 рублей.
Соотношение теории/практики: 50/50
Средняя нагрузка в неделю: несколько часов (2-4 в зависимости от подготовки)

Цель обучения


Программа: лекции и практика

Автор: Владимир Перепелица (ex-VK/Tarantool)

Отзывы о платформе и образовательных программах DevHands

Анастасия Пчелкина (бекенд-разработчик Go/PostgreSQL)

Почему выбрала обучение DevHands? Пришла по рекомендации, курс мне порекомендовал супруг, опытный разработчик. Порекомендовал, потому что читал группу Алексея про высокие нагрузки, и отправил как к опытному человеку, который приложил силы к созданию больших известных проектов. У меня был явный был пробел в Linux и в управлении Linux-серверов, и, зная эту проблему, он мне посоветовали именно этот курс. Плюс я работаю с кубером, но хочу понимать, что там под капотом.

Что узнала и как будешь использовать в работе? Получилось очень разносторонне.

У нас есть команда, которая занимается инфрой. Курс помог правильно ставить им задачи и разговаривать на одном языке. Я наконец стала полностью понимать, как работают компоненты между собой, и мне стало сильно проще общаться. Например, однажды мы достаточно глубоко обсуждали конфигурацию nginx, я разобралась с этим на курсе, мне сильно помогло в общении и решении инфраструктурной части моих задач.

Также я стала значительно уверенее чувствовать себя с командной строкой и управлении Linux. Теперь, полгода спустя, мне кажется это тривиальными задачами, но это был очень важный “левел ап”. Это мне позволило писать мейкфайлы, работать с разными утилитами, взять на себя более низкоуровневые задачи.

По нагрузке: я не понимала, как мне проверить, что сервис не упадет. У нас нет активной практики нагрузочного тестирования. Благодаря курсу у меня теперь есть отличное понимание, как нагружать и проверять сервис, как интерпретировать результаты, и главное как это сопоставить с физическими ресурсами и возможностями. До курса у меня было очень смутное понимание этого.

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

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

Курс вообще непростой. Мне иногда не хватало каких-то более конкретных шагов или алгоритма. Гуглить, планировать самостоятельно - много неизвестных, довольно сложно спланировать и разбить по шагам, иногда сложно просто начать. Это нормально, но с этим нужно знать как работать. И мы прошли на курсе очень важный самостоятельный практический опыт, и это большой плюс. Очень мало курсов дают такой буст к развитию и к мышлению. В какой-то момент оглядываешься, и понимаешь, что сильно вырос.

Спасибо что выслушиваешь нас, а это не всегда структурировано. Спасибо за курс и за то, что ты делаешь.

Михаил Доманский (бекенд-разработчик, PHP/MySQL)

Почему выбрал обучение DevHands? Выбрал, потому что CTO Badoo не может не знать про нагрузки, а это были именно те знания, которые я хотел подтянуть. Вторая причина - давно подумываю пройти курсы для повышения навыков, когда ты уже опытный программист и кое-что понимаешь, но таких курсов я не нашел (хотя допускаю, что плохо искал). Все курсы в онлайне - все для новичков. Так что удачное стечение обстоятельств, что кто-то скинул ссылку на девхэндс с темой, которая мне как раз была нужна.

Узнал порядок цифр нагрузки на хелловорлд и ларавеля. Раньше я думал, что я постоянно работаю на легаси коде и это мой минус как кандидата при поиске работы, т.к. я не знаю популярных фреймворков. Теперь я знаю порядок цифр при нагрузке и мой опыт с легаси кодом наоборот считаю плюсом =)

Как буду использовать в работе? Теперь у меня более общая картина, а значит я смогу более правильно принимать решения. Я стал еще сильнее, как специалист. Вот конкретные знания по настройке и нагрузкам наверное я буду применять, только если найду стартап на низкой стадии технической готовности, где применятся мои познания. Обычно знания про распаралеливание и нагрузки лежат на плечах девопсов + техлидов. А до такой должности еще надо дорасти. Можно сказать, что я сегодня получаю знания, которые мне понадобятся в будущем.

Мне очень понравилось комьюнити. Т.е. чем опытнее становишься, тем Уже твоя специфика, тем более "одиноким" специалистом становишься. А теперь я знаю, где задавать интересные для меня вопросы. Это жирный плюс.

Кирилл Филимонов (Backend Developer, Python/PostgreSQL)

Почему выбрал обучение DevHands?

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

В процессе обучения что было наиболее полезно и интересно?

Во-первых, это был хороший “рефрешер” знаний и практик, которые можно и нужно использовать. Погрузиться снова в тулинг, поработать на уровне операционной системы, вспомнить какие-то базовые вещи - и начать о них думать, когда решаешь задачи в облачной инфраструктуре, выбирая ресурсы для своих задач - это было очень полезно. Блок, связанный с перфоманс-тюнингом, было очень интересен с точки зрения инсайтов и открытий, которые мы делали в рамках группы, когда использовали разный стэк и инструменты и получали разные результаты. Было очень интересно сравнить технологии, понять границы применения, и получить практический опыт оценок, фундамент знаний необходимый при проектировании сервисов. Инструменты для оценки перфоманса, что ожидать от привычных компонент, и какие есть ограничения применимости компонент для настоящих сервисов. Теоретическая часть тоже была хорошая, полезно вспомнить базовые штуки. Блок про системный дизайн - хорошее практическое упражнение по систематизации и по построении правильного процесса мышления при проектировании решений. Он мне показался в большей степени ориентирован на практику прохождения интервью, как мне показалось, но в целом формирование паттерна мышления, подхода к проектированию систем и практика применения этого шаблона - важный навык, процесс получается структурированный и результативный. Так же были интересны открытые дискуссии, которые происходили в рамках сессий, и было ценно получать мгновенный фидбек.

Удалось ли что-то то уже применять или собираешься ли что-то применять в ближайшее время?

Много чего применял, у нас параллельно начинался новый e-commerce проект, мне пригодились, например, наши эксперименты с nginx. Вообще мне стало значительно проще использовать инфраструктурные компоненты. Имея практику управления и тюнинга, это становится более простой задачей - поднять, настроить. Ну и тот подход к дизайну, который мы обсуждали и практиковали на сессиях - я его так же применял при дизайне, это помогло собрать в результате эффективное решение.

Роман Гордеев (бекенд-разработчик, Java/PostgreSQL)

Курс DevHands.io (Hardcore Backend Bootcamp) охватывает фундаментальные и продвинутые аспекты бэкенд-разработки, включая настройку и оптимизацию серверов, понимание и применение концепций параллелизма, производительности, нагрузочного тестирования, масштабирования и высокой доступности систем. Материалы курса хорошо структурированы и включают практические лабораторные работы, направленные на глубокое понимание принципов работы и оптимизации современных высоконагруженных бэкенд-систем. Акцент на реальных задачах и проблемах, с которыми разработчики сталкиваются в индустрии, подкрепленный примерами из практики и детальными рекомендациями по решению, делает этот курс ценным ресурсом для разработчиков, стремящихся повысить свою квалификацию и готовых к сложным вызовам современной бэкенд-разработки.

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

Первый модуль курса охватывает настройку виртуальной машины, основы системного администрирования, и введение в инструменты и практики для обеспечения эффективной работы серверов. Он включает в себя такие темы, как управление пакетами, основы работы в консоли, базовые аспекты системного администрирования, такие как использование Screen/tmux, настройка swap, systemd, и настройки firewall. Также акцентируется внимание на работе с логами и базовой настройке серверного окружения. Этот модуль формирует базу для дальнейшего изучения более сложных аспектов разработки и масштабирования бэкенд-систем.

Первая часть второго модуля курса фокусируется на производительности и нагрузочном тестировании, включая изучение и практическое применение утилит нагрузочного тестирования (например, http_load, wrk2) и инструментов мониторинга (например, Prometheus, Grafana). Рассматриваются стратегии тестирования, ключевые метрики производительности (latency, throughput), и влияние различных настроек (например, количество потоков и соединений) на производительность системы. Представлены практические задания, направленные на оптимизацию производительности веб-серверов и приложений, включая анализ результатов нагрузочных тестов и тонкую настройку серверных параметров.

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

Третий модуль посвящен стратегии масштабирования бэкенд-систем, включая "наивное" масштабирование, обеспечение высокой доступности (HA), принципы работы с несколькими базами данных и подходы к масштабированию слоев приложения. Особое внимание уделяется концепции CAP (Consistency, Availability, Partition tolerance) и Eventual Consistency. Рассматриваются алгоритмы шардинга, стратегии кэширования и методы обеспечения масштабируемости и высокой доступности систем. Этот модуль предлагает практические рекомендации по масштабированию приложений и баз данных, а также обсуждает сложности, связанные с обеспечением консистентности и доступности в распределенных системах.

Лабораторные работы модуля 3 курса [DevHands.io](http://devhands.io/) Hardcore Backend Bootcamp охватывают широкий спектр задач, связанных с масштабированием и оптимизацией бэкенд-систем. Среди основных заданий — горизонтальное масштабирование слоя приложений, масштабирование кеш-слоя с использованием алгоритмов консистентного хеширования, масштабирование СУБД через микрошардинг и шардинг с координатором, а также разработка много-серверных систем с использованием Saga-паттерна и транзакционных очередей. Курс также предлагает задания на проектирование систем с применением Map-Reduce и разработку MVP на основе знаний, полученных в ходе обучения. Каждое из этих заданий направлено на практическое применение теоретических знаний и развитие навыков, необходимых для работы с современными высоконагруженными бэкенд-системами.

Из минусов отмечу только малое количество реферальной литературы, хотелось бы побольше ссылок на статьи и книги 😳 И из личного отмечу отличный педагогический опыт Леши ❤️ мне было приятно у тебя учиться ❤️


Зарегистрироваться на курс
Пожалуйста, оставьте ваши контакты, и мы очень скоро свяжемся с вами





Как лучше связаться?