IaaS, VPS, VDS, Частное и публичное облако, SSL
197,65
рейтинг
25 ноября 2014 в 14:46

Разное → How-to: Как строится инфраструктура хостинг-провайдера

image

Бизнес хостинг-провайдеров является крайне технологичным — для того, чтобы обеспечить бесперебойную работу даже не самых крупных и популярных сайтов необходимо создание мощной инфраструктуры. Сегодня мы расскажем об архитектуре внешних систем проекта 1cloud.

Элементы инфраструктуры


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

Система 1cloud состоит из следующих компонентов:

  • Внешний сайт;
  • Внутренняя панель;
  • Панель администратора и службы поддержки;
  • Сервис нотификации;
  • Сервис обработки задач;
  • Биллинг-сервис;
  • Сервис отработки ассинхронных по времени заданий;
  • Сервис мониторинга.

При создании сервисов использовались технологии C#, ASP.NET MVC 5, Entity Framework 6.1. Все перечисленные компоненты связаны общей программной частью, называемой DataLayer — она содержит информацию по моделям, статическим методам, общим словарям. В этом же решении определены так называемые data facade для работы с базой данных.

Схематично инфраструктуру можно представить подобным образом:

image

По клику изображение откроется в полном размере

Рассмотрим отдельные элементы системы подробнее.

Внешний сайт и внутренняя панель

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

Внутренняя же панель ориентирована в первую очередь на выполнение типовых операций по управлению своими серверами и оплате услуг (осуществлена интеграция с платежным шлюзом «ДеньгиОнлайн»).

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

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

Сервис обработки задач

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

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

Сервис нотификаций

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

Все параметры корреспонденции (поля кому, от кого, тема, тело сообщения в html/plane text) определяются на уровне сервиса обработки задач. Сервис нотификации также работает по принципу fifo.

Биллинговая подсистема

Один из важнейших с точки зрения бизнеса элементов системы. Данный сервис отвечает за тарификацию услуг и списание денег с клиентов. Каждые 10 минут сервис осуществляет сбор параметров заказанных услуг, расчет стоимости и, соответственно, проводит списания с лицевых счетов пользователей. В настоящее время подсистема является не особенно сложной — и в этом один из ее главных плюсов, поскольку такую архитектуру проще поддерживать (хотя количество генерируемых операций в сутки поначалу доставляло нам сложности, с которыми пришлось справляться отдельно).

image

В будущем нам придется развивать биллинг, поскольку планируется введение новых услуг и модели оплаты за реально потребленные ресурсы (pay as you go) — в ходе этого проекта планируется работа с VMware vSphere API.

Сервис отправки асинхронных сообщений

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

Система мониторинга

«Главный диагност» системы, который главным образом следит за ее внутренним здоровьем и ищет ошибки вроде зависших тасков или сбоев при их обработке, проблемы при осуществлении биллинга, отправке сообщений и парсинге логов (для логирования использован компонент log4net).

Планы


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

На сегодня все. Пишите в комментариях, о каких элементах инфраструктуры хостинг-провайдера вы хотели бы узнать больше?
Автор: @1cloud
1cloud.ru
рейтинг 197,65
IaaS, VPS, VDS, Частное и публичное облако, SSL

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

  • +1
    Мне, если честно, было бы интересно почитать даже не о развитии конкретных сервисов (хотя реализация биллинга, наверное, вполне интересна), а то, как осуществляется защита данных? Сейчас это все-таки очень актуальный впрос
  • 0
    Наталья,
    подскажите, пожалуйста, защиту каких именно данных Вы имеете в виду, для того чтобы мы смогли подробно ответить на Ваш вопрос здесь или в следующих наших публикациях
    • 0
      Просто, какие средства защиты используете. Вот я размещу у вас проект свой, насколько хорошо он защищен? Какие-то может были случаи, когда удавалось решать проблемы с вторжениями. Я не специалист, спрашиваю на уровне своего понимания)
      • 0
        Наталья,
        Разделим наш сервис на 2 составляющие:

        1. Наш Web сайт. Данные которые Вы вносите на нашем сайте передаются по защищенному протоколу https. Для шифрования трафика используется сертификат, выданный сертифицированным удостоверяющим центом: GoDaddy. Безопасность нашего соединения, также Вы можете проверить на сайте: www.ssllabs.com/ssltest/analyze.html?d=1cloud.ru

        2. Виртуальные сервера, которые Вы можете заказать на нашем сервисе: В этом пункте мы обеспечиваем в основном бесперебойность работы инфраструктуры и каналов связи. Мы предоставляем сервер с «чистой» операционной системой, вопросы безопасности приложений, которые запущены на этом сервере в этом случае находятся в зоне ответственности Клиента. Мы подробно писали об этом в нашей статье: habrahabr.ru/company/1cloud/blog/243001/
        • 0
          защита от DDoS?
          • 0
            Пока защиты от DDoS у нас нет, но мы работаем в этом направлении
  • +2
    А это ваш датацентр на КДПВ? 1core, 1Gb, 40Gb nonSSD за 625 руб? Да еще и winserv only! Хм, дайте-ка подумать…
    • 0
      Нет, это не наш ЦОД.
      В наличии оказался только снимок нашего массива:
      image

      image

      Мы не гонимся за максимально низкой ценой, хотя она чуть ниже цены наших основных конкурентов. Мы акцентируем свое внимание на качестве предоставляемого сервиса и поддержки.
      Насчет SSD: мы используем промышленные дисковые массивы NetApp FAS6240 и NetApp FAS8040, которые обеспечивают показатели по количеству IOPS, достаточные для подавляющего количества задач. Если хотите, Вы можете зарегистрироваться у нас на сайте, запросить тестовый период, заказать сервер и убедиться в высоком качестве нашего решения.
      Насчет «winserv only»: функциональность автоматического создания linux серверов временно выведена из эксплуатации, но мы планируем ее снова запустить в самое ближайшее время. Пока же Вы можете заказать linux сервер по запросу в службу поддержки.
  • 0
    А меня иллюминация (на первом фото) заинтересовала. Я так понимаю, «красоту» сами делали.

    Вижу, что там РГБ-лед лента, но с независимыми секциями, так что можно подсвечивать отдельные юниты своими цветами…
    • 0
      Как уже отметили чуть выше это не наш ЦОД, это картинка для привлечения внимания. Мы не украшаем свои стойки.
  • 0
    Скажите, пожалуйста, а какие задачи/проблемы вы пытались решить создавая свой биллинг? Почему не использовали имеющиеся на рынке?

    Также из описания запутался в функциях внутренней панели, в которой можно платить и функцией биллинга, где тоже клиент платит. Как это все работает можете подробней рассказать?
    • 0
      Какие задачи пытались решить: все решения на рынке, которые мы рассматривали либо не умеют штатно тарифицировать VMware инфраструктуру, либо имеют большой over head для нашей задачи. Плюс нам хотелось добиться полностью интегрированной между собой инфраструктуры.

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

      Сервис биллинга же работает полностью в автономном режиме и не имеет никакого пользовательского интерфейса. Главная его задача — это на периодической основе рассчитывать стоимость заказанных Клиентом решений, списывать соответствующую сумму денежных средств с лицевого счета Клиента и генерировать соответствующие операции.
      • 0
        Спасибо за ответы.
        Всех благ и терпения в дальнейшей работе над сервисами. Был опыт участия в разработке двух панелей управления и биллингов у разных хостеров в роли product owner очень трудоемкое мероприятие особенно дальнейшая поддержка и доработка.

        Просто меня смутило то, что в клиентском интерфейсе есть раздел «Биллинг».
      • 0
        Сертифицировали ли вы ваш биллинг по законам РФ?

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

Самое читаемое Разное