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

    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
    Поделиться публикацией
    Похожие публикации
    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое