Основная задача семинара - продемонстрировать классический инженерный подход к созданию сложных программных систем и рассказать об основных принципах построения проектов, имеющих многосерверную масштабируемую ахитертуру (стек технологий: Linux/Unix, apache/nginx, PHP, MySQL).
Мы уделим максимум внимания тому, каким образом функционируют каждый из компонентов практически любой интернет-системы, их узкие места, и рассмотрим основные принципы разработки с учётом этих особенностей. Мы рассмотрим классические методы масштабирования, кластеризации и увеличения производительности, с использованием которых создаются практически все современные интернет-системы. Мы также рассмотрим множество практических приёмов, которые легко можно применить для очень широкого круга задач.
Ведущий
Алексей Рыбак (fisher), руководитель отдела веб-разработчиков компании Eyelinkmedia. Занимается разработкой веб-проектов с 1999 года. Основное направление работы в последние годы - массовые социальные сервисы. Участвовал в создании и поддержке ряда крупнейших российских и международных проектов.
Аудитория
Программа семинара будет доступной широкой аудитории. В первую очередь мы ориентируемся на разработчиков, которые уже сделали первые шаги к настоящему Мастерству, но хотят существенно пополнить и систематизировать свои знания. Особенно семинар будет интересен разработчикам молодых стартапов, которые либо уже сталкиваются с проблемами производительности, либо хотят быть во всеоружии перед ростом популярности и большими нагрузками на свои проекты. Многие вопросы, которых мы будем касаться на семинаре, будут также интересны архитекторам и техническим руководителям.
Итоги посещения семинара
После семинара вы научититесь смотреть на любую сложную интернет-систему как на простую модель простых и понятных компонент и получите все необходимые знания, чтобы создавать быстрые и простые в эксплуатации интернет-проекты, расчитанные практически на любую нагрузку.
Вопросы, затрагиваемые в рамках семинара
Базовые аппаратные и сервисные компоненты интернет-систем
- веб-сервера, основные характеристики, prefork/worker модели, apache-1/2, nginx и прочие "легкие" сервера
- fcgi
- базы данных, основные характеристики и этапы выполнения запроса
- сервисы приложений и кэширования, memcached
- общий взгляд на компоненты: как всё работает вместе
- аппаратные компоненты: жесткий диск, память, процессор, сеть и их характеристики
- особенности OC Linux
- характерные риски при проектировании и эксплуатации интернет-систем
Классификация основных типов интернет-систем
- "статический" и "динамический" контент
- технологические особенности реализации различных проектов, новостные ресурсы, комьюнити-проекты, многопользовательские онлайн-игры, электронная коммерция, медиа-сервисы, поисковые и экспертные системы
Особенности использования PHP
- безопасность
- сессии
- MVC, работа с базой данных, спагетти и шаблонизаторы
- zval, память и процессор
- акселерация
- разработка собственных расширений
- распространенные ошибки & performance hints
Особенности использования MySQL
- типы таблиц, блокировки
- типы индексов
- типы запросов, анализ плана выполнения, тюнинг
- важные конфигурационные параметры
- денормализация
- разделение данных, partitioning
- кэширование
- репликация, binary log, особенности, optimization hints
- распространённые ошибки & performance hints
Системная архитектура крупных интернет-систем
- вертикальное и горизонтальное масштабирование, слабосвязанные архитектуры (shared nothing)
- проксирование, двухуровневая модель (frontend/backend) и её производные
- долгоживущие соединения (persistent/keep-alive)
- репликация, плюсы и минусы
- распределённые платформы для хранения данных
- методики кеширования
- отложенные операции и фоновые процессы
Процесс разработки интернет-систем
- основные "программистские" риски в разработке ПО для крупных проектов
- гибкое проектирование, обязательные последующие изменения, работа над ошибками, качественные логи
- функциональное и нагрузочное тестирование
- эксплуатация, профилирование и тюнинг
- методы ведения документации и базы знаний по проекту
Условия и предварительная регистрация
Продолжительность программы - 1 день.
Ориентировочная стоимость - 9 000 рублей.