Доступно

Разработка надёжных высоконагруженных систем

Тема в разделе "Курсы по программированию", создана пользователем Covax, 10 янв 2015.

Цена: 21000р.-98%
Взнос: 378р.
100%

Основной список: 124 участников

Резервный список: 7 участников

Статус обсуждения:
Комментирование ограничено.
  1. 10 янв 2015
    #1
    Covax
    Covax ЧКЧлен клуба

    Разработка надёжных высоконагруженных систем

    Разработка надежных высоконагруженных систем
    Ведущий вебинара — Андрей Смирнов
    Вебинар в семи частях с практическими заданиями

    Серия вебинаров позволит ответить на вопросы:
    • какую архитектуру системы мне выбрать, когда стоит изменить существующую архитектуру, какие будут преимущества у такого перехода?
    • где лучше хранить данные X, если над ними надо производить операции Y, при этом всё это будет находиться в облаке/железных серверах/памяти/…? как устроено хранилище данных, какие возможны компромиссы?
    • какие изменения необходимо будет сделать, когда нагрузка увеличится в десять, сто, … раз?
    • как обеспечить надёжность, начиная с клиентского приложения и заканчивая сервером?
    Каждый из вебинаров раскрывает независимую тему, в то же время все вебинары связаны общей логикой: первые вебинары в серии посвящены вопросам выбора системы хранения данных, далее рассматриваются вопросы создания бэкенда, общей архитектуры и взаимодействия, разработки клиентских приложений, тестирования и, наконец, вопросы разворачивания, эксплуатации и мониторинга.

    В силу того, что курс состоит из большого набор разнообразных тем, некоторые из них будут рассмотрены подробно, для других, в силу их большого объёма, будет дан краткий сравнительный обзор. Самое ценное — это полученный опыт, расширение кругозора, набор «трюков» и просто приёмов.

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

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

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


    Длительность вебинаров: 4 часа

    Программа курса

    О серии вебинаров. Нагрузка, характеристики нагрузки. Запросы, задержка, конкурентность, отказы. Характеристики нагрузки. Экономика высоконагруженной системы. Ресурсы и их ограниченность. Успех проекта как его способность масштабироваться. Надежность. Внедрение изменений.

    Как устроены вебинары, обзор всех вебинаров, логика рассмотрения тем. Определение общих терминов - нагрузка и ее характеристики, почему понятие “высокая нагрузка” относительна. Почему так важно масштабирование и когда оно не нужно, вертикальное и горизонтальное масштабирование. Надежность системы, примеры, определение доступности. Цена отказа, способы обеспечение надежности, независимость отказов. Внедрение изменений в масштабах проекта (компании), подготовка, ожидаемый результат, трудные ситуации. Модель веб-проекта, узкие места, сложность масштабирования и обеспечения отказоустойчивости.

    В рамках этого вебинара мы ответим на следующие вопросы:
    • из чего состоит курс вебинаров? почему выбраны именно эти темы?
    • что такое нагрузка, как ее измерять, что такое высокая нагрузка?
    • как обеспечить надежность (доступность)?
    Базовые принципы хранения данных. Хранение на диске и в памяти. ACID. Реляционные БД. Проектирование схемы реальной БД в различных моделях данных. Индексы, денормализация, использование разных типов хранилищ для разных данных. Партиционирование. Репликация. Полнотекстовый поиск.
    Хранение данных - ключевой вопрос с точки зрения как масштабирования, так и отказоустойчивости проекта и, чаще всего, самый сложный. Мы начнем рассмотрение темы с вопросов хранения данных на одной машине: как можно хранить данные, как это делать эффективно, можно ли хранить данные в памяти. Чем отличается хранение на SSD и HDD? Самым популярным и все еще самым часто используемым вариантом хранения являются реляционные базы данных. На примере MySQL, PostgreSQL мы рассмотрим все то, что можно “выжать” из одиночного сервера баз данных. Как хранятся данные в РСУБД. Что такое MVCC и что это означает с точки зрения производительности и конкурентного доступа. Как устроены индексы и какие индексы могут быть полезны. Вычисление плана и результатов запросов. Почему классический подход к проектированию базы данных неприменим при высоких нагрузках. Практические трюки с базой данных ради увеличения производительности.

    Как должно быть устроено обращение к базе данных, выжимаем максимум из драйвера БД. Мы рассмотрим различные варианты репликации данных и обсудим, что они могут дать с точки зрения производительности и отказоустойчивости. Полнотекстовый поиск - теория и практика, в каких задачах полнотекстовый поиск мог бы пригодиться.

    В рамках этого вебинара мы ответим на следующие вопросы:
    • хранение на диске: можно ли сделать еще быстрее? какой способ хранения выбрать?
    • когда применимо хранение в памяти? какие архитектурные преимущества мы можем получить?
    • являются ли сегодня реляционные СУБД возможным решением для хранения данных в высоконагруженном проекте?
    • как выжать из базы данных максимум? как обеспечить отказоустойчивость?
    • как устроен полнотекстовый поиск, где границы его применимости?
    Логическим продолжением этого вебинара будет вебинар “Данные часть 2”
    Масштабирование: шардинг в реляционных и key-value хранилищах. Key-value хранилища. CAP-теорема. Распределенные хранилища. Консистентность. Кешированные данных: инвалидация кеша, тегирование кешей.

    Данный вебинар является логическим продолжением вебинара “Данные часть 1”. Масштабирование хранилища данных, обеспечение отказоустойчивости - это то, с чем раньше всего придется столкнуться веб-проекту под растущей нагрузкой и требованиями надежности.

    Шардинг: просто о сложном, выбор ключа шардирования. Когда внедрять шардинг: заранее или когда “придет время”? Проектирование с учетом шардинга. Как избежать решардинга и как его сделать, если все-таки необходимо. Особенности шардинга в реляционных базах данных. Шардинг и отказоустойчивость. Одиночные key-value хранилища: memcached, Redis, корректная реализация счетчиков, блокировок и тому подобных распределенных структур данных. MongoDB как пример распределенного key-value хранилища. CAP-теорема: что невозможно реализовать и какие классы систем существуют. Multi-master решения и их область применимости. AP-распределенные хранилища на примере Cassandra и Riak. Виды консистентности и их влияние практическую разрабтку программного обеспечения. Как обеспечивается консистентность.

    Кеширование как способ уменьшения нагрузки на хранилище данных и уменьшения времени отклика. Как организовать кеширование? Основные проблемы при кешировании и их решения.

    В рамках этого вебинара мы ответим на следующие вопросы:
    • как осуществлять горизонтальные масштабирование данных? как связана отказоустойчивость и горизонтальное масштабирование?
    • как правильно выбрать ключ шардирования и почему этот выбор может оказаться критическим?
    • каким образом распределенные системы хранения данных достигают своих характеристик?
    • как организовать корректное кеширование данных, как избежать проблем консистентности?
    Структура серверного и клиентского приложения, анализ узких и проблемных мест. Сетевой ввод-вывод: синхронный, асинхронный. Реактор, обслуживание большого числа соединений (C10K, C100K). Многозадачность: процессы, нити, кооперативная многозадачность, комбинации. Краткий обзор фреймворков и языков программирования: Ruby, Python, Go, Java, C#, Erlang, JavaScript. Безопасность. Типичные уязвимости. Пользователи и пароли. CSRF.

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

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

    В рамках этого вебинара мы ответим на следующие вопросы:
    • как увеличить производительность backendа? чем она ограничена?
    • какой язык программирования/фреймворк выбрать?
    • какие предпринять шаги для обеспечения безопасноти?
    Архитектура системы: монолитная, сервис-ориентированная (SOA). Непосредственный вызов (RPC), очереди, персистентные очереди, очереди фоновых задач. Шины, широковещательные каналы. Примеры и разбор реальных архитектур веб-приложений.

    Мы посмотрим на архитектуру с высоты “птичьего полета” и рассмотрим вопросы взаимодействия частей системы. Выбор между монолитным и сервис-ориентированным подходом. Переход от монолитной к сервис-ориентированной архитектуре. Проектирование взаимодействия компонентов, выбор протоколов, видов связи. Способы реализации типичных паттернов взаимодействия: удаленный вызов, очередь, publish-subscribe, worker, шина. AMQP-серверы и ZeroMQ. Высокопроизводительные сервисы очередей и простые решения для очереди задач. Надежность доставки сообщений в очереди.

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

    В рамках этого вебинара мы ответим на следующие вопросы:
    • какую архитектуру проекта лучше выбрать?
    • как должна изменяться архитектура по мере роста проекта?
    • какой вариант взаимодействия подсистем лучше использовать?
    • могут ли очереди решить все проблемы взаимодействия?
    Синхронизация данных, работа в offline, информирование пользователя. Сетевое взаимодействие с сервером. Ошибки API. Клиент как веб-сервис. Алгоритмы повтора запроса. Нагрузочное и системное тестирование. Почему unit-тестирование бесполезно. Непрерывное тестирование, постоянное выкатывание.

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

    Как организовать тестирование веб-системы. Идеальное тестирование и попытки к нему приблизиться, автоматизация тестирования. Почему вы можете удалить почти все unit-тесты, и какая от этого будет польза. Системное тестирование, его преимущества. Тестирование в боевом окружении, нагрузочное тестирование, использование нагрузочного тестирования для планирования ресурсов. Постоянное выкатывание как способ минимизации числа отказов.

    В рамках этого вебинара мы ответим на следующие вопросы:
    • как выстроить таймауты при взаимодействии клиент - сервер?
    • как организовать работу клиента в режиме offline?
    • как сделать тестирование эффективным и избавиться от бессмысленных тестов?
    • как провести нагрузочное тестирование и делать это регулярно?
    Оценка нагрузки и планирование ресурсов. Резервное копирование, репликация. Master-Slave. Hot-Spare. Несколько дата-центров, схемы Active-Failover, Master-Slave, Active-Active. Обеспечение консистентности. Протоколы голосования. Выбор между “облаком” и железом. Выкатывание проекта, управление конфигурацией. Логирование. Мониторинг.

    После того как разработка и тестирование завершено, настало время выложить проект в боевое окружение и поддерживать его работоспособность. Мы начнем с оценки нагрузки и планирования ресурсов на простом примере. Затем мы поговорим об обеспечении отказоустойчивости и надежности - начиная от резервного копирования и заканчивая паттернами дублирования компонентов. Переход к работе проекта из нескольких дата-центров: в активном и активно-пассивном режимах, особенности работы в нескольких дата-центрах и обеспечения консистентности. Конфигурация системы, протоколы голосования, механизмы обнаружения сервисов, выявления сбоев, переключения конфигурации. Автоматическое управление конфигурацией, подходы и решаемые проблемы. Автоматизация выкатывания проекта. Централизованный сбор логов, мониторинг, сбор метрик, хранение, визуалзизация, триггеры.

    В рамках этого вебинара мы ответим на следующие вопросы:
    • как оценивать необходимые ресурсы? как оценивать потребность в ресурсах при масштабировании?
    • как обеспечить отказоустойчивость?
    • как переключить запросы на другие копии ресурса в случае отказа?
    • как компоненты системы могут “обнаруживать друг друга”?
    • как автоматизировать управление конфигурацией и выкатывание проекта?

     
  2. Последние события

    1. skladchik.com
      Складчина доступна.
      17 дек 2020
    2. skladchik.com
      Paul Fart хранитель.
      17 дек 2020
    3. skladchik.com
      Складчина закрыта.
      6 май 2017
    4. skladchik.com
      Складчина доступна.
      4 май 2017

    Последние важные события

    1. skladchik.com
      Складчина доступна.
      17 дек 2020
    2. skladchik.com
      Paul Fart хранитель.
      17 дек 2020
    3. skladchik.com
      Складчина закрыта.
      6 май 2017
    4. skladchik.com
      Складчина доступна.
      4 май 2017
  3. Отзывы участников

    5/5,
    • 5/5,
      Работой организатора доволен
      Спасибо за отличный материал!
      27 июл 2015
      1 человеку нравится это.
    • 5/5,
      Работой организатора доволен
      Посмотрел весь курс. Информация полезная, обилие академической теории местами просто выносит мозг, надо смотреть частями по 1 часу за раз. В целом все знакомо, но мне не хватило практических энтерпрайз SaaS решений. Бонус очень порадовал. Отдельное спасибо организатору.
      27 июл 2015
      2 пользователям это понравилось.
    • 5/5,
      Работой организатора доволен
      Материалом доволен. Организатору спасибо за проведение и бонус! :)
      22 июл 2015
      1 человеку нравится это.
    • 5/5,
      Работой организатора доволен
      Оргу сасибо! Организация проведена четко! Будем изучать инфу..
      22 июл 2015
      1 человеку нравится это.
  4. Обсуждение
  5. 10 янв 2015
    #2
    Theseus
    Theseus ЧКЧлен клуба
    Все ли я правильно понял заплатив сумму указанную в шапке можно пожизненно участвовать во всех его тренингах?
     
  6. 10 янв 2015
    #3
    Covax
    Covax ЧКЧлен клуба
    это где такое написано? цена только за эти 1+6 вебинаров
     
  7. 13 фев 2015
    #4
    I_I_Iahid
    I_I_Iahid ДолжникДолжник
    Стоимость уже увеличилась, сейчас она составляет 21000, если все согласны на текущий взнос могу попробовать организовать
     
    4 пользователям это понравилось.
  8. 13 фев 2015
    #5
    Dima_1st
    Dima_1st ЧКЧлен клуба
    Конечно нужно, это же не гавнокурс по заработку. Контент дельный, нужен он только людям, которые в теме, а зп у нас далеко не 30 тыс )
     
    1 человеку нравится это.
  9. 13 фев 2015
    #6
    Primat83
    Primat83 ЧКЧлен клуба
    Да очень нужно материал реально хороший.Нормальной систематизированной информации по HightLoad очень мало. Цена данного курса будет постоянно повышаться. Поэтому нельзя тянуть.
     
    1 человеку нравится это.
  10. 15 фев 2015
    #7
    xiaset
    xiaset СкладчикСкладчик
    Согласен. Даже по первому вводному семинару получил много порядка в голове. Автор очень структурировано излагает материал.
     
    2 пользователям это понравилось.
  11. 20 фев 2015
    #8
    ruzerone
    ruzerone ДолжникДолжник
    Выкупайте за свои и организовывайте, кто вам мешает? После проверки администрацией наличия у вас материала и чеков, сможете организовывать.

    У вас аккаунт с 2011 года, участия в складчинах минимальное, соответственно доверия такое же к вам.
     
    1 человеку нравится это.
  12. 20 июл 2015
    #9
    Control
    Control БанЗабанен
    В складчине будет быстрая раздача материала.
    Так же быстро хочу её завершить - кто хочет, вписывайтесь сейчас.
     
    7 пользователям это понравилось.
  13. 21 июл 2015
    #10
    rshateev
    rshateev СкладчикСкладчик
    Я хотел бы вписаться. При нажатии на кнопку пишет, что складчина остановлена((
     
    1 человеку нравится это.
  14. 21 июл 2015
    #11
    Gektor87
    Gektor87 СкладчикСкладчик
    Почему меня удалили из складчины?
     
  15. 22 июл 2015
    #12
    Control
    Control БанЗабанен
    Фэйсконтроль. Увеличивайте репутацию в клубе.
     
    1 человеку нравится это.
  16. 22 июл 2015
    #13
    nobody
    nobody ЧКЧлен клуба
    Можно ещё вписаться?
     
  17. 22 июл 2015
    #14
    Control
    Control БанЗабанен
    Будет доступно для членов клуба, после завершения.
     
    1 человеку нравится это.
Статус обсуждения:
Комментирование ограничено.

Поделиться этой страницей