Release it! Проектирование и дизайн ПО для тех, кому не все равно
Майкл Нейгард
Не важно, каким инструментом вы пользуетесь для программной разработки - Java, NET или Ruby on Rails. Написание кода - это еще только полдела. Готовы ли вы к внезапному наплыву ботов на ваш сайт? Предусмотрена ли в вашем ПО «защита от дурака»? Правильно ли вы понимаете юзабилити? Майкл Нейгард утверждает, что большинство проблем в программных продуктах были заложены в них еще на стадии дизайна и проектирования. Вы можете двигаться к идеалу сами - методом проб и ошибок, а можете использовать опыт автора. В этой книге вы найдете множество шаблонов проектирования, помогающих избежать критических ситуаций и не меньшее количество антишаблонов, иллюстрирующих неправильные подходы с подробным анализом возможных последствий. Любой разработчик, имеющий опыт многопоточного программирования, легко разберется в примерах на Java, которые подробно поясняются и комментируются.
Стабильность, безопасность и дружественный интерфейс - вот три важнейших слагаемых успеха вашего программного продукта. Если в ваши планы не входит в течение последующих лет отвечать на недовольные письма пользователей, выслушивать критику заказчиков и постоянно латать дыры, устраняя возникающие баги, то прежде чем выпустить финальный релиз, прочтите эту книгу.
Издательство: Питер, 2016 г.
ISBN 978-5-496-01611-7
Количество страниц: 320.
Содержание книги «Release it! Проектирование и дизайн ПО для тех, кому не все равно»:
- 12 Предисловие
- 13 Для кого предназначена эта книга?
- 14 Структура книги
- 15 Анализ примеров
- 15 Благодарности
- 16 1. Введение
- 17 1.1. Правильный выбор цели
- 18 1.2. Важность интуиции
- 18 1.3. Качество жизни
- 19 1.4. Охват проблемы
- 20 1.5. Миллионом больше, миллионом меньше
- 21 1.6. Прагматичная архитектура
- 24 Часть I. Стабильность
- 24 2. Исключение, помешавшее работе авиакомпании
- 25 2.1. Авария
- 30 2.2. Последствия
- 31 2.3. Анализ причин сбоя
- 34 2.4. Бесспорное доказательство
- 36 2.5. Легче предупредить, чем лечить?
- 38 3. Понятие стабильности
- 39 3.1. Определение стабильности
- 41 3.2. Режимы отказов
- 42 3.3. Распространение трещин
- 43 3.4. Цепочка отказов
- 44 3.5. Паттерны и антипаттерны
- 46 4. Антипаттерны стабильности
- 48 4.1. Точки интеграции
- 61 4.2. Цепные реакции
- 64 4.3. Каскадные отказы
- 67 4.4. Пользователи
- 79 4.5. Блокированные программные потоки
- 85 4.6. Самостоятельно спровоцированный отказ в обслуживании
- 88 4.7. Эффекты масштабирования
- 93 4.8. Несбалансированные мощности
- 97 4.9. Медленная реакция
- 98 4.10. SLA-инверсия
- 102 4.11. Огромные наборы результатов
- 106 5. Паттерны стабильности
- 106 5.1. Задавайте таймауты
- 110 5.2. Предохранители
- 113 5.3. Переборки
- 117 5.4. Стабильное состояние
- 123 5.5. Быстрый отказ
- 126 5.6. Квитирование
- 128 5.7. Тестовая программа
- 132 5.8. Разделение связующего ПО
- 135 6. Заключение по теме стабильности
- 24 2. Исключение, помешавшее работе авиакомпании
- 138 Часть II. Вычислительная мощность
- 138 7. Затоптаны клиентами
- 138 7.1. Обратный отсчет и запуск
- 139 7.2. Цель — пройти тест качества
- 142 7.3. Нагрузочное тестирование
- 145 7.4. Растоптаны толпой
- 147 7.5. Недочеты тестирования
- 148 7.6. Последствия
- 151 8. Понятие вычислительной мощности
- 151 8.1. Определение вычислительной мощности
- 153 8.2. Ограничители
- 155 8.3. Взаимное влияние
- 155 8.4. Масштабируемость
- 157 8.5. Мифы о вычислительной мощности
- 163 8.6. Заключение
- 165 9. Антипаттерны вычислительной мощности
- 165 9.1. Конкуренция в пуле ресурсов
- 169 9.2. Избыточные JSP-фрагменты
- 170 9.3. Перебор с AJAX
- 173 9.4. Затянувшиеся сеансы
- 175 9.5. Напрасный расход пространства HTML-страницами
- 179 9.6. Кнопка обновления страницы
- 180 9.7. Кустарный SQL-код
- 183 9.8. Эвтрофикация базы данных
- 186 9.9. Задержка в точках интеграции
- 187 9.10. Cookie-монстры
- 189 9.11. Заключение
- 191 10. Паттерны вычислительной мощности
- 192 10.1. Организация пула соединений
- 194 10.2. Будьте осторожны с кэшированием
- 196 10.3. Предварительное вычисление контента
- 199 10.4. Настройка сборщика мусора
- 202 10.5. Заключение
- 138 7. Затоптаны клиентами
- 204 Часть III. Общие вопросы проектирования
- 204 11. Организация сети
- 204 11.1. Многоинтерфейсные серверы
- 207 11.2. Маршрутизация
- 208 11.3. Виртуальные IP-адреса
- 211 12. Безопасность
- 211 12.1. Принцип минимальных привилегий
- 212 12.2. Настроенные пароли
- 214 13. Доступность
- 214 13.1. Сбор требований доступности
- 215 13.2. Документирование требований доступности
- 217 13.3. Балансировка нагрузки
- 223 13.4. Кластеризация
- 225 14. Администрирование
- 226 14.1. «Совпадают ли условия тестирования с условиями эксплуатации?»
- 228 14.2. Конфигурационные файлы
- 231 14.3. Начало и завершение работы
- 232 14.4. Административные интерфейсы
- 233 15. Заключение по теме проектирования
- 204 11. Организация сети
- 236 Часть IV. Эксплуатация
- 236 16. Феноменальная мощь и маленькое жизненное пространство
- 236 16.1. Время максимальной нагрузки
- 237 16.2. Первое в жизни Рождество
- 238 16.3. Рука на пульсе
- 240 16.4. День благодарения
- 240 16.5. Черная пятница
- 242 16.6. Жизненно важные функции
- 243 16.7. Диагностические тесты
- 244 16.8. Обращение к специалисту
- 245 16.9. Сравнение вариантов лечения
- 246 16.10. Есть ли реакция на лекарство?
- 247 16.11. Выводы
- 248 17. Прозрачность
- 250 17.1. Точки зрения
- 257 17.2. Проектирование с учетом прозрачности
- 258 17.3. Применение технологий
- 259 17.4. Протоколирование
- 266 17.5. Системы мониторинга
- 271 17.6. Стандарты де юре и де факто
- 280 17.7. База данных функционирования системы
- 286 17.8. Вспомогательные процессы
- 290 17.9. Заключение
- 292 18. Адаптация
- 293 18.1. Адаптация со временем
- 294 18.2. Проектирование адаптируемого ПО
- 301 18.3. Адаптируемая архитектура предприятия
- 308 18.4. Безболезненный переход к новой версии
- 316 18.5. Заключение
- 236 16. Феноменальная мощь и маленькое жизненное пространство
- 317 Список литературы
Инструкция как скачать книгу Майкл Нейгард: Release it! Проектирование и дизайн ПО для тех, кому не все равно в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.