Как стать автором
Обновить

Книга «Масштабирование приложений. Выращивание сложных систем»

Время на прочтение 7 мин
Количество просмотров 11K
imageМы живем в мире растущих приложений. Практически любые программные продукты рано или поздно приходится расширять, надстраивать, адаптировать к обслуживанию растущей пользовательской аудитории и к пиковым нагрузкам. Для того чтобы подобное масштабирование протекало гладко и быстро, нужно закладывать такие возможности уже на уровне архитектуры приложения. В этой прикладной книге Ли Атчисон рассказывает не только об архитектурных тонкостях, необходимых для эффективного масштабирования приложений, но и о рисках, присущих такой работе, о грамотной организации масштабирования и об использовании облачных сервисов. Книга описывает ключевые решения и практики масштабируемых систем: доступность, классы сервисов, плановые проверки, матрицы рисков.


Для кого предназначено издание


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

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

Почему была написана эта книга


Проведя многие годы в Amazon за проектированием крупномасштабных приложений в области как розничной торговли, так и веб-сервисов Amazon (AWS), Ли Отчисон перешел на работу в компанию New Relic, которая переживала период взрывного роста. В компании ощущали болезненную необходимость в системах и процессах для управления крупномасштабными приложениями, но пока не пришли к четко установленному порядку масштабирования своего приложения.

В New Relic он лицом к лицу столкнулся с проблемами компании, масштабирующей свое приложение. Тогда и осознал, что многие компании сталкиваются с теми же проблемами ежедневно.

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

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

Современные проблемы масштабирования


Облачные сервисы растут и расширяются невероятно высокими темпами. Подход «программное обеспечение как сервис» (Soft­ware as a Service, SaaS) становится нормой в современной практике разработки в первую очередь из-за наличия спроса на облачные сервисы. SaaS-приложения особо чувствительны к проблемам масштабирования в силу своей многопользовательской природы.

Мир меняется, все больше внимания уделяется SaaS, облачным сервисам и приложениям, обрабатывающим большие объемы данных. Росту размеров и сложности облачных приложений не видно конца.

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

Цель этой книги — предоставить информацию, которая будет актуальна не один год.

Структура книги


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

Таким образом, данная книга имеет следующую структуру.

Часть I. Доступность

Доступность и управление доступностью — те области, которые часто первыми ощущают последствия роста приложения.

Глава 1. Что такое доступность. Для начала определим, что такое высокая доступность и чем она отличается от надежности.

Глава 2. Пять приоритетных направлений для улучшения доступ­ности приложения. В этой главе я перечисляю пять основных моментов, на которых при создании приложения следует сосредоточиться для улучшения его доступности.

Глава 3. Измерение доступности. В этой главе рассмотрен стандартный алгоритм измерения доступности, а также глубже исследовано понятие высокой доступности.

Глава 4. Улучшение неудовлетворительной доступности. Если ваше приложение труднодоступно или вы хотите предупредить возникновение этой проблемы в будущем, то приведенные в данной главе организационные шаги помогут вам повысить доступность приложения.

Часть II. Управление рисками

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

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

Глава 6. Критичность и вероятность. В этой главе рассматриваются различия между критичностью риска и вероятностью его реализации. Оба эти фактора важны, но каждый по-своему.

Глава 7. Матрица рисков. В данной главе я представляю систему для понимания рисков в крупномасштабных приложениях и управления ими.

Глава 8. Смягчение рисков. В этой главе обсуждается, как можно намеренно пойти на риск, в то же время минимизируя негативные последствия для приложения.

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

Глава 10. Создание систем со сниженными рисками. В этой главе я привожу рекомендации относительно того, как уменьшить риски в ваших приложениях и создавать приложения с меньшими рисками.

Часть III. Сервисы и микросервисы

Сервисы и микросервисы — архитектурная стратегия построения крупных и сложных приложений, работающих с большими объ­емами запросов.

Глава 11. Зачем нужны сервисы. Из этой главы мы узнаем, почему сервисы важны для создания масштабируемых приложений.

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

Глава 13. Обработка отказов сервисов. В последней главе этой части мы рассмотрим, как создавать сервисы, грамотно обрабатывающие отказы.

Часть IV. Масштабирование приложений

Масштабирование касается не только количества запросов, но всей вашей организации и ее способности справляться с потребностями растущего приложения.

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

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

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

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

Глава 18. Соглашения сервисного уровня. В этой главе рассмотрим SLA как механизм управления взаимозависимостями владельцев сервисов.

Глава 19. Непрерывное совершенствование. В этой главе приводятся методики и рекомендации по улучшению масштабируемости приложения в целом.

Часть V. Облачные сервисы

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

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

Глава 21. Распределение облака. В данной главе в общих чертах описывается, как эффективно использовать регионы и зоны доступности для улучшения доступности и масштабируемости.

Глава 22. Управление инфраструктурой. В этой главе рассматривается использование управляемых сервисов, таких как RDS, SQS, SNS и SES, для масштабирования приложений и снижения затрат на управление.

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

Глава 24. Другие средства масштабирования. В этой главе рассма­триваются такие модели масштабируемых вычислений, как AWS Lambda. Они используются для улучшения масштабируемости, доступности и управляемости приложений.

Глава 25. AWS Lambda. В последней главе этой части более подробно рассматривается AWS Lambda — технология, предоставляющая сверхширокие возможности для масштабирования событий с небольшими требованиями к вычислительной мощности.

Часть VI. Заключение

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

Об авторе


Ли Атчисон — главный облачный архитектор New Relic. Он проработал там четыре года. За это время Ли спроектировал продукты инфраструктуры New Relic и руководил их разработкой, а также помог New Relic создать надежную сервисно-ориентированную архитектуру, которая масштабировалась на протяжении всего времени, пока организация росла от простого стартапа SaaS до высоконагруженного крупного предприятия. Наибольший опыт Ли получил при разработке высокодоступных систем.

Ли работает в индустрии 28 лет, изучал облачные масштабиру­емые системы все семь лет работы главным менеджером в Amazon.com. В Amazon он руководил созданием первого в компании магазина загружаемого программного обеспечения, создал AWS Elastic Beanstalk и руководил командой, переводившей интернет-магазин Amazon с монолитной на сервисно-ориентированную архитектуру.

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглаление
» Отрывок

Для Хаброжителей скидка 20% по купону — Architecting for Scale
Теги:
Хабы:
+9
Комментарии 0
Комментарии Комментировать

Публикации

Информация

Сайт
piter.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия