Разработка Высоконагруженных Систем (Рубрика Architecture)
Нашел на своей полке старенькую книгу издательства Олега Бунина, с которой началось мое знакомство с высоконагруженными системами. Эта книга является сборником материалов по итогам конференций HighLoad++ 2010-2011 годов, изданный в 2012 году. Официально она приписывается коллективу авторов, а Олег Бунин выступил в качестве издателя и составителя.
Книга насчитывает 400 страниц и представляет собой попытку не просто описать технические характеристики крупных систем, а изложить принципы построения архитектур самых передовых и посещаемых интернет-проектов того времени. Книга фокусируется на принципах проектирования архитектуры высоконагруженных систем и практических аспектах их реализации, опираясь на опыт реальных проектов, представленных на конференциях HighLoad++. Книга начиналась с базового учебника, который включал следующие уроки 1) Первый урок, что содержал рассказ про монолитные приложения и сервис-ориентированную архитектуру, про ремесленный и промышленный подход к разработке нагруженных приложений, про вертикальное и горизонтальное масштабирование приложений, про трехзвенную архитектуру 2) Второй урок про масштабирование фронендов, что содержал обсуждение раздачи статики, кеширования, логику на фронте/беке, масштабирование бекендов и работу со всплесками трафика, про балансировку запросов на фронтенд при помощи DNS 3) Третий урок про маштабирование бекенда, где авторы говорили про функциональное разделение бекенд сервисов для масштабирования, про горизонтальное масштабирование и важность низкой связности кода (видимо, low coupling), shared nothing подходов, layered architecture. Также тут опять шла речь про кеширование, инвалидацию и прогрева кеша 4) Четвертый урок с масштабированием во времени, где речь шла про асинхронность и отложенные вычисления, использование очередей, немного про консистентность данных. Здесь был пример проектирования ленты соцсети, где эти подходы можно было использовать 5) Пятый урок про базы данных, где авторы рассказывают про разные типы баз данных, тюнинг запросов, шардинг, репликацию, кластеризацию и денормализацию, а также про хранимые процедуры.
В общем, в то время книга для меня была полезной, но сейчас она скорее исторический документ. А если хочется почитать чего-то актуального, то стоит взять книгу Мартина Клеппмана "Высоконагруженные приложения", особенно с учетом того, что Мартин пишет второе издание книги.
#DistributedSystems #Architecture #SystemDesign #Software #SoftwareArchitecture