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

Базовые меры


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

Обеспечьте мониторинг инфраструктуры


Важно понимать, в каких местах есть нерациональное переиспользование мощностей. Убедитесь, что вы можете проследить за работой сетевого оборудования, ОС, базы данных, платформ виртуализации, приложений и других компонентов IT-инфраструктуры.

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

Удовлетворить базовые потребности мониторинга могут такие известные системы, как Zabbix, Prometheus, Grafana, Datadog, InfluxDB (TICK stack).

Для большей картины можете добавить внутренний мониторинг провайдера — он покажет связь потребленных ресурсов и потраченных денег. В Selectel это реализовано для клиентов облачной платформы. В панели управления — раздел Потребление платформы, вкладка Текущая стоимость — вы увидите таблицу со всеми ресурсами, за которые списываются деньги. Они разделяются по проектам, зонам и регионам. Убедитесь, что у вас нет рудиментарных элементов инфраструктуры – образ диска или плавающий IP, за которые списываются деньги.

Цены актуальны на 13 апреля 2022 г.

Если какой-то сервер выполнил задачи и больше не нужен, удалите его вместе с IP-адресом и дисками. Для этого выделите объекты, которые хотите удалить вместе с сервером, в диалоговом окне.


Дисклеймер: данные в таблице обновляются с периодичностью 1-1,5 часа. Сразу после удаления объекта вы все еще можете видеть его в таблице, хотя списываться деньги за него уже не будут. Потребление лучше проверять спустя несколько часов.

Проверьте медленные и наиболее частые запросы к базе данных


С помощью выбранного инструмента мониторинга выведите топ медленных запросов, или так называемый slowlog. Если у вас есть SQL-запросы, которые выполняются дольше секунды, потратьте время на их исправление. Также стоит провести ревью наиболее частых запросов. Вы выиграете в производительности, даже если оптимизируете их на 50 миллисекунд.

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

Выберите плавающий IP-адрес вместо публичной подсети


Если для решения задачи вам нужна одна или несколько виртуальных машин с доступом в интернет, выберите плавающий IP-адрес. Этот термин OpenStack, на базе которого создана облачная платформа Selectel, нередко сбивает с толку клиентов. Плавающий не значит динамический. Плавающий IP — это публично маршрутизируемый IP-адрес, который вы приобретаете у провайдера.

То есть это обычный статический IP, который работает на основе технологии nat. Если вам нужны 1-2 «айпишника», смело берите плавающие IP-адреса вместо публичной подсети на 5 и более адресов. Так вы не переплатите за пустующие адреса, сэкономив в среднем 80% от стоимости публичной сети.

Перенесите нетребовательные к ресурсам серверы на инстансы с долей ядра


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

В Selectel такие виртуальные машины можно заказать в линейке Shared Line. В ней доступны конфигурации с 1, 2 и 4 ядрами на 10%, 20% и 50% гарантированной мощности. Производительность облачного сервера не опустится ниже указанной доли и может временно доходить до 100%, если другие клиенты используют ресурсы не по максимуму или часть ядра свободна от «соседей».

Где пригодятся дешевые серверы:

  • при запуска стейджинга (развертывайте среду по шаблону на vds и сворачивайте ее после использования, заплатив только за потребленные ресурсы),
  • для хостинга сайта,
  • в создании jump-хоста, или инсталляционного сервера,
  • для развертывания небольшого VPN-сервера.

Понять, на какую именно мощность работает ваш сервис, помогут системы мониторинга, которые мы упоминали выше. Также, если вы клиент Selectel, обратитесь к вкладке Статистика на странице сервера. Там вы найдете график, показывающий загрузку по vCPU. Подробная инструкция — в базе знаний.

Возможности серверов линейки Shared Line →

Легкие в реализации меры


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

Кэшируйте статический контент


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

Изучите природу трафика. Если пользователи забирают статику — картинки, тексты с сайта и подобный контент, есть смысл кэшировать данные через серверы CDN. Услуга сетей доставки контента может выйти дешевле, чем заказ новой вычислительной машины.

Рассчитать стоимость CDN →

Еще один классический способ кэширования, который используют многие компании, — это передача статики через nginx. Так запросы к контенту не «тревожат» бэкенд.

Пример: Новостной сайт столкнулся с проблемой повышения трафика. Работал на серверах на базе VMware, которые буквально загибались под нагрузкой. Проблему полностью решил инструмент для кэширования страниц на уровне веб-сервера. Сайту не пришлось масштабировать облако. Для компаний, которые работают со статическим контентом — новостные сайты, маркетплейсы, — это мастхэв.

Выберите выгодный способ снятия и хранения бэкапов


Клиенты Selectel могут хранить образы дисков сразу в панели управления — это удобно для быстрого создания нового диска из образа или восстановления данных.

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

Скачать образ диска в Selectel можно в панели управления.

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

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

Больше о бэкапах по расписанию →

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

Устанавливайте квоты на ресурсы


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

Особенно это актуально для тех, кто предоставляет ресурсы облака Selectel своим клиентам, подрядчикам или командам. Настроить квоты можно в одноименном разделе панели управления. Подробнее о них — в базе знаний.

Часть установленных в проекте квот.

Подберите более скромную конфигурацию


Пример: Компания приобрела выделенный сервер с большим диском. В результате оказалось, что такой большой диск не нужен — он заполняется данными лишь на 30-50%. Остальное простаивает и впустую ест деньги. Уменьшить диск нельзя, поэтому лучшей альтернативой станет переезд на машину с другой конфигурацией. Такое «затягивание поясов» — крайняя мера, но ее тоже можно иметь в виду.

Нередко компании руководствуются правилом «возьму сервер на вырост». В случае базы данных, например, придерживаются такой логики: лучше переплачу, чем буду переезжать через полгода на новый сервер. Однако переезда можно избежать совсем: так, в серверах облачной платформы увеличить размер диска можно в любой момент — через интерфейс панели управления (главное, чтобы были квоты). А значит, нет смысла платить больше.


Дисклеймер: Советуем расширять диск, не дожидаясь его полного заполнения. Увеличение размера диска может занять какое-то время. Особенно это актуально для локальных дисков.

Об увеличении размера дисков →

Более сложные меры


Здесь как минимум понадобится хороший DevOps-специалист и его драгоценное время.

Обеспечьте автоскейлинг инфраструктуры с помощью виртуальных машин


Легкое масштабирование инфраструктуры обеспечат облачные серверы, но не всегда такая инфраструктуры будет выгодна бизнесу. Есть ситуации, когда при подсчете экономики выделенный сервер выйдет дешевле.

Если у вас хороший рабочий «дедик», но иногда нужно немного экстра ресурсов, можно балансировать нагрузку на несколько виртуальных машин в дополнение к выделенному серверу. Они будут разворачиваться при повышении нагрузки и отключаться при возвращении к прежнему уровню. Также в Selectel есть клиенты, которые поднимают Kubernetes на выделенных серверах и запускают при необходимости группы нод в облаке. Профит в том, что не придется менять конфигурацию нынешнего сервера или полностью переезжать в облако.

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

Вынесите функцию чтения данных на отдельный сервер


Пример: Компания использует довольно большую базу данных PostgreSQL, примерно на 1,3 ТБ. Нагрузка идет в основном на запись. Отдельный сервис читает данные с реплики и переносит в ClickHouse, в котором строится аналитика. Таким образом, компания снимает часть нагрузки со своей базы данных и продолжает использовать под базу довольно скромный по мощности облачный сервер.

Такое «разделение обязанностей» можно отнести к best practices. Любой компании важно оценить характер работы базы данных. Стоит ли грузить сервер под БД дополнительными операциями? Возможно, будет дешевле вынести их на небольшой недорогой виртуальный сервер (тут также можно рассмотреть процентный инстанс) и выполнять все операции с данными по ночам, когда общая нагрузка на системы сильно снижена.

Это бесплатно


Пункты ниже касаются именно услуг Selectel, но вы всегда можете запросить аналогичную информацию у вашего провайдера IT-инфраструктуры.

Трафик между услугами


Трафик между всеми услугами Selectel бесплатный. Поэтому выгоднее использовать несколько продуктов Selectel, чем настраивать связность с сервером on-premise или комбинировать услуги нескольких провайдеров.

Так, вы можете держать продакшен на выделенных серверах или colocation, тестовые среды разворачивать в облачной платформе, а медиафайлы сервиса хранить в объектном хранилище Selectel. Все «транзакции» между частями инфраструктуры не будут стоить ни копейки.

3 ТБ бесплатного трафика для публичных адресов
Помимо трафика между услугами, у клиентов облачной платформы Selectel есть еще 3 ТБ бесплатного трафика в месяц между инфраструктурой и внешними адресами. Используйте эту возможность в своих целях и постарайтесь не выходить за указанный лимит — так он не отразится на статусе баланса.

Услуги в бете


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

В Selectel, например, в бете находятся сразу несколько услуг:

  1. Container Registry. Если вы пользуетесь Managed Kubernetes, храните образы контейнеров в реестре бесплатно. В рамках одного проекта можно использовать один реестр объемом не более 20 ГБ. В него вместится до 50 репозиториев.
  2. Облачные базы данных Redis. Первая NoSQL-база данных в списке поддерживаемых Selectel. Если вам нужно поддержать нереляционную БД, не вдаваясь в сложности инфраструктуры, попробуйте это решение.

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

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

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

Заключение


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

Если у вас есть успешный опыт экономии, поделитесь им в комментариях! Интересно услышать ваши варианты.

Комментарии (4)


  1. mvs
    13.04.2022 14:43
    +1

    Selectel, а расскажите, как так получилось, что ВСЕ ваши IP-адреса (ASN 49505) находятся в чёрном списке UCEPROTECT-Level3 www.uceprotect.net/en/rblcheck.php?asn=49505 ? А большинство адресов - ещё и в других списках.

    Производительность файлового хранилища оказывается в несколько раз ниже заявленных по вашим же тестам fio. Поддержка в лучших традициях отмораживается "у нас всё хорошо, мониторинг показывает твёрдо и чётко".


    1. Slav2
      13.04.2022 17:45

      Если заказывать прокси на сайте https://proxyline.net/ то в 80% случаев это прокси, которые расположены на сервере компании Selectel. Так можно и в черный список РКН попасть легко.


  1. 0x131315
    13.04.2022 23:27
    +3

    И самое главное: найдите людей, которые способны в анализ и оптимизацию на алгоритмическом уровне.

    Пример из практики: тяжелые запросы рекомендаций в БД с множеством условий и проверкой остатков, выполняются суммарно около 6 секунд на 3 запроса, это много - покупатели уходят не дождавшись ответа, минус продажи.

    За несколько лет опытной командой разработки было сделано несколько попыток его оптимизации. Ни к чему не пришли, потому что запрос максимально оптимален в классическом понимании. Как показала практика, так оно и есть.

    Проблема пришла в виде мелкой просьбы, в стиле "Тут долго работает, если можно сделайте, нет - нет" при решении другой проблемы. Время оплачено независимо от результата, так что есть простор для экспериментов, а эксперименты это интересно.

    День ушел на анализ запроса. Все индексы есть, путь с индексами тупиковый, отбрасываем.

    Разбив запрос на части, выяснилось: почти все время уходит на проверку остатков, сделать с ними ничего нельзя, данных очень много прогоняется, время справедливое.

    Кешировать запрос нельзя: остатки зависят от условий, а условия от остатков, плюс сортировка - запрос имеет смысл только целиком.

    Полный тупик, понятно почему от решения отказывались несколько лет: его реально нет.

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

    Через несколько дней фоновых размышлений нащупан вариант: что если отделить тяжелый запрос от легкого? Это лишает смысла результат, но решает основную часть проблемы: время. Решение очевидное, но из-за фокусировки на запросе приходит не сразу. Решение бесполезное: без учета остатков смысла в запросе нет. Но обретает смысл, добавив опыт и экспертизу: да, отдельные запросы сами по себе бессмысленны, но переводят проблему в другую плоскость - теперь у нас два запроса с разными свойствами, и по отдельности они отлично кешируются. Чтобы получить результат достаточно найти общие элементы двух множеств, а это элементарно. Бонусом возможность задавать любые условия: условия дешевые по времени, а тяжелые остатки повторно запрашивать больше не нужно.

    Результат: 6с->2c. Уже неплохо, но хотелось бы хотя бы 0.6-0.8с, чтобы покупатель гарантированно дождался результата.

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

    Результат: 0.6с, это отличный результат, задача решена.

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

    Во-первых из-за особенностей каталога можно хранить только 10% остатков без потери функционала, что уменьшит и ускорит кеш. Чей бы и нет? Делаем.

    Результат: 0.2с, это уже шикарный результат.

    Во-вторых выяснилось что данные отлично поддаются сжатию, и тесты показали что сжатие длится буквально 0.01с, а значит можно еще уменьшить и ускорить кеши. Делаем.

    Результат: 0.07с, без комментариев, это уже далеко за пределами желаемого.

    Итог: на входе долгий запрос, целых 6 секунд, многолетний ущерб продажам, фактически нерешаемая классическими способами проблема. На выходе 0.07 секунды. Цена вопроса - несколько дней работы одного подходящего человека. Человека, которому интересно щелкать нерешаемые проблемы и погружаться в систему глубже, чем это обычно делает рядовой разработчик. Человека, который набрал опыт и экспертизу конкретно на сложных и непонятных случаях.

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


  1. Ckaue
    14.04.2022 09:35
    +1

    Увидел название статьи и поспешил открыть, с надеждой почерпнуть что-то новое. Увы :)

    Все-таки "инфраструктура" и "арендуемая виртуальная инфраструктура" - разные вещи. Я как ответственный за функционирование ЦОД был вынужден решать вопросы начиная от потребления электроэнергии (вычисление простаивающего оборудования, обесточивание, консолидация ресурсов в стойках/серверах/облачной инфраструктуре) и обеспечении охлаждения (btu, n+1, фильтра, фреон, обслуживание), ИТ-инфраструктуры (сервера, дисковые массивы, ленточные библиотеки и (внезапно!) сами ленточки, SAN-коммутаторы, роутеры-маршрутизаторы-коммутаторы, оптические каналы, DWDM) до лицензий (ОС, БД (внезапно в некоторых сценариях Postgres дороже чем Oracle), системы резервирования, виртуализация, смартнеты и т.д. и т.п.), необходимых для функционирования ЦОД.

    А ведь есть еще и резервные мощности - резервные вводы, ДГУ, АВР, системы питания и их АКБ... Регламентные процедуры, запуск ДГУ без нагрузки и под нагрузкой, обслуживание каждые 100 моточасов, замеры емкости АКБ раз в неделю, вычисление АКБ с битыми банками и их замена...

    А ЦОД-ов еще и не один а куча, плюс еще удаленные для обеспечения geo redundancy...

    Квоты на ресурсы, говорите? Трафик между услугами? Плавающие IP-адреса?