Vertical Scaling

System Design. Подготовка к сложному интервью - Глава 2 - Приблизительные оценки

System Design. Подготовка к сложному интервью - Глава 2 - Приблизительные оценки

Переводы: EN

Очень короткая глава 2 посвящена тому, как делать приблизительные оценки, чтобы начать с самых важных моментов при разработке программного обеспечения.

Концепции, которые должен знать КАЖДЫЙ разработчик программного обеспечения:

  • “Сила двух”
  • Стандартные цифры задержки! Насколько быстрой является память, насколько медленным является диск и т.д.
  • Показатели доступности
  • Про какие ключевые метрики стоит думать

Эти понятия и числа раскрыты во второй главе книги:

“System Design. Подготовка к сложному интервью” Алекса Сюй. Оригинал: “System Design Interview – An insider’s guide” by Alex Xu

System Design. Подготовка к сложному интервью - Глава 1 - Масштабирование от нуля до миллионов пользователей

System Design. Подготовка к сложному интервью - Глава 1 - Масштабирование от нуля до миллионов пользователей

Переводы: EN

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

  • Настройка одного сервера
  • Выбор и использование базы данных
  • Вертикальное масштабирование против горизонтального масштабирования подходов. И почему вы должны предпочесть горизонтальный
  • Добавлен балансировщик нагрузки для горизонтального масштабирования
  • Добавление репликации базы данных для горизонтального масштабирования
  • Добавление кеша
  • Добавление CDN
  • Архитектура без сохранения состояния и с сохранением состояния и использование внешнего хранилища состояния
  • Добавление дополнительных центров обработки данных
  • Добавление очереди сообщений
  • Добавление ведения журнала, метрик и автоматизации
  • Масштабирование базы данных
  • и дальнейшие шаги…

Все это тщательно, но кратко раскрыто в Главе 1 книги:

Высоконагруженные приложения - Глава 5 - Репликация

Высоконагруженные приложения - Глава 5 - Репликация

Переводы: EN

Ранее книжный клуб нашей компании изучил отличную книгу:

Martin Kleppmann - Designing Data-Intensive Applications

Мартин Клеппман - Высоконагруженные приложения. Программирование, масштабирование, поддержка

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

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

Глава 5:

  • Вступление. Как масштабировать приложения. Репликация и партиционирование.
  • Три алгоритма репликации
  • Репликация с одним лидером
    • Лидеры и последователи
    • Синхроная и асинхронная репликация
    • Добавление новых последователей
    • Обработка перебоев в работе узлов
    • Технические реализации и все возможные проблемы
  • Многолидерная репликация
    • Случаи использования, когда это хорошо
    • Обработка конфликтов на запись
    • Три топологии и потенциальные проблемы
  • Репликация без лидера
    • Запись в базу данных, когда узел не работает
    • Кворумы и проблемы с ними
    • Обнаружение одновременных записей и способы разрешения конфликтов

Скачать всю майнд-мапу в PDF