oleg_bunin (oleg_bunin) wrote,
oleg_bunin
oleg_bunin

Category:

Разработка крупных веб-проектов


Коллеги, приветствую!

Решил возродить к жизни свои незаконченные планы по написанию книги про то, как разрабатывать крупные Интернет-проекты (крупные по нагрузке и/или по объему данных). Впервые я приступил к ней три года назад, написал половину, потом бросил, с тех очень многое изменилось - все придется переписать. Прошу комментариев, что добавить/убрать в план, что думаете и так далее.

Насколько я вижу рынок книга будет архиактуальной! Аналогов просто нет. Она представляет собой практически сборник (систематизированный и переработанный) всех тех форумов, документаций, опыта создания Незнакомки, Рамблер-Планеты/Фото/Групп/ICQ..., куцых презентаций, знаний людей, моих многочисленных коллег (многие из которых настоящие гуру!), с которыми мне довелось работать. Все это будет собрано по крупицам и организовано в небольшую книжку.

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


1. Введение

2. Разработка высоконагрузочных сайтов

2.1. Ресурсы для ускорения работы Интернет-сайта.
2.1.1. Что такое высоконагрузочный сайт?
2.1.2. Тестирование времени выполнения скриптов, на что тратится время?
2.1.3. Язык интерпретирующий или компилятор – теория работы интерпретатора и тестирование скоростей выполнения.
2.1.4. Описание существующих языков написания ПО для Интернет-серверов с точки зрения скорости выполнения.
2.1.5. Проектирование высоконагрузочных сайтов. Типичные "узкие" места.

2.2. Технологии, с помощью которых можно ускорить работу сервера, без серьезной переработки скриптов.
2.2.1. Технология FastCGI. Настройка web-сервера.
2.2.2. Технология mod_perl (без непосредственного модульного программирования и хэндлеров).

2.3. Модульное программирование для Apache.
2.3.1. Как компилируется и работает Apache, как подключаются модули?
2.3.2. Написание собственного модуля.
2.3.3. Технология mod_perl:
2.3.3.1. Подробное описание технологии.
2.3.3.2. Настройка Apache-сервера.
2.3.3.3. Создание простого модуля, хэндлеры.
2.3.3.4. Постоянное соединение с базой данных, общие переменные.
2.3.3.5. Хэндлеры.

2.4. База данных.
2.4.1. Скоростные настройки основных баз данных (PostgreSQL, MySQL, Oracle, FireBird).
2.4.2. Таблицы в памяти.
2.4.3. Скорости выполнения различных операций в БД.
2.4.4. Индексирование – теория и практика.
2.4.5. Собственная БД – плюсы и минусы.
2.4.6. Репликация базы данных.

2.5. Разделение программ на несколько стадий (фоновые программы).
2.5.1. Эффективность сложных программных комплексов. Проектирование такого ПО.
2.5.2. Фоновые программы.
2.5.3. Методы сопряжения работы различных стадий.
2.5.4. Конвейерная обработка данных.

2.6. Технологии кэширования.
2.6.1. Внутреннее кэширование.
2.6.2. Кэширование в Mason.
2.6.3. Генерация html-сайта офф-лайн.
2.6.4. Кэширование с помощью прокси или акселератора.

2.7. Кластерные разработки.
2.7.1. Что такое кластер в общем виде?
2.7.2. Пример построения кластера, отказоустойчивость.
2.7.3. Типичные проблемы, связанные с кластерным решением, проблемы целостности данных.
2.7.4. Граничные условия, каналы, сетевые интерфейсы.

2.8. Быстрые узкоспециализированные сервера
2.8.1. Быстрый nginx, аналоги;
2.8.2. Узкоспециализированные демоны (на примере чата);


3. Разработка web-сайтов, больших по содержанию и сложных по структуре.

3.1. Ресурсы для облегчения разработки больших сайтов.
3.1.1. Что такое крупный сайт?
3.1.2. Хранение и вывод информации пользователю;
3.1.3. Обработка информации;
3.1.4. Масштабируемость программного обеспечения.

3.2. Объектно-ориентированное программирование.
3.2.1. Основы объектно-ориентированного программирования.
3.2.2. Построение класса "Сообщение" – основы интерактивности любого www-сайта.
3.2.3. Построение на его основе нескольких типичных Интернет-сервисов.
3.2.4. Наследование и полиморфизм.

3.3. Хранение информации (объектов) в базе данных.
3.3.1. Постановка проблемы хранения информации.
3.3.2. Хранение данных в БД, оптимизация БД под большие объемы информации.
3.3.3. Специальные поля в объекте.
3.3.4. Хранитель объектов.
3.3.5. Абстрактные модули.

3.4. Технологии шаблонирования.
3.4.1. Постановка проблемы.
3.4.2. Смешанная шаблонизация, Mason, PHP.
3.4.3. Простая шаблонизация.
3.4.4. Многоуровневая шаблонизация с использованием ООП.

3.5. Программное обеспечение Интернет-сервера (контент-системы, движки сайтов, backend’ы и автоматизация обработки новых данных, фреймворки).
3.5.1. Проблема разделения труда дизайнеров, программистов и редакторов.
3.5.2. Программное обеспечение крупного сервера;
3.5.2.1. Движок сервера;
3.5.2.2. Система контент-менеджмента;
3.5.2.3. Поисковая система.
3.5.3. Примеры программных систем для построения web-серверов, их основные плюсы и минусы;
3.5.4. Автоматизация обработки новых данных, проблемы (в том числе и не решенные) такой автоматизации;

3.6. Технология персонализации.
3.6.1. Что такое персонализация сайта? Зачем она нужна?
3.6.2. Примеры персонализированных сайтов, примеры ПО для персонализации.
3.6.3. Мотивационный портрет пользователя.
3.6.4. Источники информации о пользователе.
3.6.5. Методы хранения и обработки информации.
3.6.6. Единое пространство авторизации.

4. Приложение 1. Литература, сайты.

5. Приложение 2. Примеры
5.1. Баннерная сеть "Фламинго".
5.2. Кластер сайта знакомств "Незнакомка.RU".
5.3. Система контент-менеджмента.
5.4. Система персонализации Persona.

Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 88 comments