TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Соло, научи меня | Системный анализ

18 Sep, 08:31

Открыть в Telegram Поделиться Пожаловаться

📖 Ванечка выбирает, как масштабировать

В понедельник у ПиццаЕдинорога лёг сайт заказов🤪

Не подтормаживал, а именно лёг, наглухо, ровно в тот момент, когда на него пришло больше людей, чем обычно.

Ванечка решил проблему быстро: зашёл в панель облака и переключил тариф на сервер помощнее, больше памяти, больше ядер, больше диска.

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

👍ПиццаЕдинорог как раз вытаскивал противень из печи.

- Ванечка, у нас поток вырос вдвое. Что делаешь с печью?
- Куплю печь побольше.
- Купил. Поток снова вырос. Что делаешь?
- Ещё побольше...
- В какой-то момент печь перестанет влезать в кухню.
- И что тогда?
- Тогда ставишь вторую печь, вот и всё различие. То, что ты делал, называется вертикальное масштабирование: увеличиваешь характеристики той же машины, память, процессор, хранилище. Просто, переписывать ничего не надо. Так чаще всего масштабируют SQL-базы и приложения с состоянием, потому что растащить состояние по нескольким машинам и удержать его согласованным очень сложно. Но потолок есть всегда, ты в него только что упёрся.
- А вторая печь это...
- Горизонтальное масштабирование. Добавляешь машины и распределяешь нагрузку между ними.
- Так, а как клиент поймёт, на какую машину идти? Я же не могу выдать людям два разных IP и сказать: выбирайте сами, к какой печи вставать.
- Не можешь. Поэтому на входе стоит администратор, в системах он называется балансировщик нагрузки. Все клиенты обращаются к нему одному, он принимает входящий поток и отправляет каждый заказ на наименее загруженную печь. Клиент вообще не знает, сколько у нас печей, три или триста.
- И что чаще используют в реальности?
- Горизонтальное, почти всегда. Вертикальное это первая помощь, на стратегию оно не тянет.


Ванечка поднял три инстанса, поставил перед ними балансировщик и впервые за неделю выспался.
💛💛💛💛💛
Что важно запомнить:
➡️ Вертикальное масштабирование это увеличить мощность одной машины, просто, но упирается в потолок
➡️ Горизонтальное это добавить машины и распределить нагрузку, потолка практически нет
➡️ Клиенту нельзя раздавать разные IP, поэтому перед серверами стоит балансировщик нагрузки
➡️ В реальном мире большую часть времени используют горизонтальное масштабирование
💛💛💛💛💛
      🔸🔸🔸🔸🔸🔸

Вертикальное (scale up):
⚫️Что делаем: докидываем RAM, CPU, диск на ту же машину
⚫️Плюс: код менять не надо, состояние живёт в одном месте
⚫️Минус: жёсткий физический потолок, машина остаётся единой точкой отказа
⚫️Где применяют: SQL-СУБД, stateful-приложения, там, где согласованность состояния важнее

Горизонтальное (scale out):
⚫️Что делаем: добавляем инстансы и раскидываем нагрузку
⚫️Плюс: масштабируется дальше, отказ одной машины не роняет систему
⚫️Минус: нужен балансировщик, состояние приходится выносить наружу, в кэш или БД
⚫️Где применяют: stateless-сервисы, веб-приложения, микросервисы

Как работает балансировщик:
⚪️Было: 8 клиентов, 1 сервер, перегрузка.
⚪️Стало: 8 клиентов идут в балансировщик, он отправляет 4 на сервер 1 и 4 на сервер 2. Балансировщик сам определяет, какой сервер наименее загружен.

Что спросить на аналитике: хранит ли приложение состояние в памяти инстанса. Если хранит, горизонтально его не размножить, пока состояние не вынесут наружу. Это ограничение архитектуры, и всплывать оно должно на этапе требований, а не на нагрузочном тесте.
💛💛💛💛💛

😐 А вы упирались в потолок вертикального масштабирования? Как выкручивались?
💛💛💛💛💛
Потренировать сбор требований 

Где ещё я пишу:

YouTube
ВКонтакте
Сетка
Instagram*
Boosty

*Instagram принадлежит компании Meta, признанной экстремистской и запрещённой в РФ

#ВанечкаИЕдинорог #СистемныйАнализ #SystemDesign #Масштабирование #Обучение

104 0 0 12
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot