DevHands.io     

🧠 Буткемп "Производительность и масштабируемость"

6 месяцев, 80.000 рублей рублей или 13.500 в пересчёте на месяц (физикам – рассрочка); следующий старт 4 марта 2024



О буткемпе

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

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


Лекции

Практика

Модули курса
  1. Модуль 1. Управление виртуальным машинами Linux
    Студенты ставят, собирают, конфигурируют свой собственный стэк - мы поддерживаем практически любой стэк (Java, Python, PHP, C#, Golang, node.js; MySQL или PostgreSQL), поскольку вопросы масштабируемости и производительности общеуниверсальны и не зависят от стэка.

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

    Мы обсудим основы параллелизма в Linux, модели серверов, почему nginx работает супер-быстро и лучше, чем Apache, почему MySQL имеет лучшую серверную модель, чем PostgreSQL, и как с этим бороться и успешно использовать PostgreSQL в больших проектах. В дополнение к вашему любимому серверу приложений вы будете использовать nginx в качестве балансировщика и обратного прокси, MySQL или PostgreSQL в качестве базы данных и Memcached или Redis в качестве кэш-сервера.

  2. Модуль 2. Производительность и нагрузочное тестирование
    Мы изучим основы настройки производительности, тестирования производительности и выжмем максимальную пропускную способность из вашей виртуальной машины. Наш текущий студенческий "рекорд" - 50K "синтетических" RPS с Golang/Fiber на довольно скромной виртуалке.

    Студенты построят latency/RPS-диаграммы и сравнят показатели производительности и ограничения компонент вашего стека. Мы используем wrk2, но поскольку у нас настоящая программа R&D, мы будем рады использовать любой инструмент, поддерживающий независимо управляемые клиентские потоки и пул соединений.

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

    В модуле достаточно много теоретического материала: мы обсудим принципы масштабирования и что ему мешает, принцип слабой связности, принципиальные различия в масштабировании "слоев" компонент, шардинг, а так же такие темы как CAP-теорема, strong/eventual consistency и многие другие.

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

Отзывы

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

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

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

Получилось очень разносторонне.

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Алексей Рыбак (ex-Badoo/Bumble CTO)


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




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