Вышел патч Blesta 5.0.4



Мы рады объявить о выпуске Blesta 5.0.4, в которой исправлены ошибки, обнаруженные в ветке 5.0. Большое спасибо всем, кто участвовал в помощи по улучшению Blesta, сообщая и подтверждая ошибки на наших форумах и в чате Discord, мы ценим вашу помощь!

Примечания к выпуску доступны по адресу docs.blesta.com/display/support/5.0.4

Релизы исправлений могут применяться только к второстепенному релизу, которому они принадлежат. Применяйте этот патч, только если вы используете 5.0.0, 5.0.1 или 5.0.2. Если вы используете более раннюю версию, вы должны загрузить полную версию. Если вы еще не обновились до 5.0, мы настоятельно рекомендуем выполнить обновление непосредственно до последней версии полного патча, то есть 5.0.3.

Yandex.Cloud Solution Library for Amazon Web Services



Мы знаем, что многим компаниям важна возможность работать с двумя облачными провайдерами одновременно. Для разработчиков, которые хотят развернуть проект в Yandex.Cloud и Amazon Web Services, мы подготовили набор рекомендаций и примеров кода для основных сценариев и задач.

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

Подробнее в разделе Решения → cloud.yandex.ru/solutions/yc-solution-library-for-aws
Сразу на GitHub → github.com/yandex-cloud/yc-solution-library-for-aws

Как мы ускорили работу консоли в два раза

Спойлер: задачу помогли решить неочевидная метрика пользовательского ожидания и интерактивный график



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

Скорость работы консоли влияет не только на наши бизнес-процессы, но и на бизнес-процессы заказчиков. Количество сервисов также важно для бизнеса. Поэтому Yandex.Cloud растет супербыстро: в 2020 году появились восемь новых сервисов. В какой-то момент платформа развивалась так интенсивно, что каждый месяц мы выпускали по сервису.

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

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


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

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

В основу графика легли две метрики:
  • Время первого открытия консоли — Time To Interactive (TTI). В этом режиме, который условно назвали холодным, мы учитываем полную загрузку консоли со стилями и скриптами.
  • Время перехода между страницами. В этом режиме учета — горячем — статика уже загружена. Учитывается только время ответа API и рендеринг.
Еще на старте мы собирали статистику обо всех API-запросах в Managed Service for ClickHouse. Сервис помогает разворачивать и поддерживать кластеры серверов столбцовой системы управлениями базами данных ClickHouse в инфраструктуре Yandex.Cloud. Для детализации мы добавили к данным запросов API информацию о странице, с которой происходят вызовы. Так мы стали вычислять, какие запросы пользователь ждет дольше всего на самых частотных страницах.

Разработчик Евгений Сорокин: «Сперва ввод метрики пользовательского ожидания был неочевидным. Казалось, что нужно концентрироваться на самых частотных запросах. Но практика показывала, что дело не в них: вызовов в Object Storage могло быть до 1к в секунду, но при этом сервис работал супербыстро».

Благодаря данным и метрикам мы локализовали проблемы в бэкенде и на фронтенде, сформировали список доработок на каждой стороне и отдали его ответственным командам.

Параллельный фикс
Что влияет на скорость работы консоли? Она складывается из множества параметров: размера статики, рендеринга компонентов. Наиболее чувствительна для пользователя скорость работы API.

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

Что сделали на фронтенде
  • Сократили объемы поставляемой в браузер статики. Оптимизировали размер статики для первой загрузки и стали загружать пользователю только то, что ему нужно в данный момент.
  • Избавились от большей части запросов, блокирующих интерфейс. То, без чего нельзя обойтись, стали загружать параллельно, где это возможно.

Что сделали на бэкенде
  • Оптимизировали логику запросов для открытия консоли.
  • Ускорили критичные для открытия консоли методы API.
  • Вынесли часть запросов с сервера на клиент, чтобы не блокировать первое открытие консоли.

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



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

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

Если мы заметили замедление работы страницы или сервиса, то можем проанализировать, какие методы API на это повлияли.

Распределение скорости запросов в API по времени:

стало


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

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

Сообщить об ошибке в работе консоли → console.cloud.yandex.ru/support/create-ticket
Предложить идею → cloud.yandex.ru/features

Лицензии WHMCS Kneecaps: больше нет поддержки

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

Мы пишем вам, чтобы сообщить о важных изменениях в собственных лицензиях. Сегодня мы прекращаем поддержку собственных лицензий. Что это означает для вас и вашей существующей лицензии:
  • Ваша лицензия WHMCS будет продолжать работать так же, как и сегодня. Вы можете продолжать запускать установку WHMCS, используя имеющуюся лицензию, сколько захотите.
  • Вы не сможете приобрести или продлить поддержку своей лицензии WHMCS, вступает в силу немедленно.

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

Если у вас нет поддержки для вашей лицензии WHMCS, и вам требуется поддержка продукта или вы хотите перейти на текущую версию, вам необходимо будет перейти на нашу стандартную модель лицензии. Вы можете получить стандартную лицензию, войдя на портал для клиентов WHMCS (https://www.whmcs.com/members)

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

Если вам нужна помощь с нашей стандартной моделью лицензии и какая лицензия лучше всего подходит для вас, мы здесь, чтобы помочь. Вы можете связаться со службой поддержки клиентов, открыв билет на www.whmcs.com/submit-a-ticket

Команда WHMCS

Что, какие тарифы делать ?



Вышла новость
hostsuki.pro/news/scale-dedicated-servers-ovh.html

Сейчас получается (модель как бы прижилась, 1000/2000 идеальная цена вышла, хотя многие покупают и по 24 или 48 озу, а вот на 64 озу никто не купил)
  • 8 озу — 1000р, 16 озу — 2000р
  • И сервер на 1 гигабите в Hetzner
  • 12 ядер у Райзен 9, 24 потока. ОЗУ 128.
  • Самый популярный пока что получается. Эпики недавние не так популярны. И даже 9900k который за 500р, тоже не так хотят, как Райзен 9. Список всякого что мы делали.

Допустим в ОВХ можно купить
  • Epyc 7642 [48c/96t] (3.3GHz) / 1 ТБ DDR4 ECC 2933MHz / 4x 1.92 TB NVMe
48 ядер / 4 = 12 ядер как раз выходит => в кол-ве тоже самое.
1024 / 128 = 8 серверов типо можно заменить.
Но если купить с 1 гигабитом? То это не дело.
Нужно значит покупать с 10 гигабитами сервер. Но тогда будет 16 озу не 2000р, а 4000р уже.
Т.е. параметры одинаковые. Но зато ОВХ все такое. Можно дохуя IP бесплатных туда вешать еще. Плюс ддос защита лучше чем в Hetzner.


Если покупать в ОВХ на 256 озу или 512 озу — то уже дороже чем Hetzner выходит даже без 10 гигабитного канала.

В итоге, брать эти ОВХ ?
Или продолжать покупать дешевые дедики на 128 озу и просто кол-вом расти? Как в свое время я рос 1245/6700k или все же покупать новые на терабайт которые еще и заполнять нужно дольше, чем мелкие.

Минусы
  • Долго заполнять. Нужно больше заказов. Кто-то хочет за свой % накрутки привлекать клиентов ?
  • Много клиентов на одном сервере, риски.

Плюсы
  • Можно сделать наконец-то шаредовый 10 гигабитный канал.
  • Больше шаред ядер на дешевую ВМ-ку за 4000р.
  • Много IP
  • Защита и firewall

Можно вообще вот такой сделать
  • 2x Epyc 7532 [64c/128t] (3.3GHz) / 2 TB DDR4 ECC 2400MHz / 6x 3.84 TB NVMe
  • тоже с 10 гигабитами
Тут 16 озу будет стоить как Райзен 9 — 2000р но с 10 гигабитами
НО зато кол-во ядер в разы меньше с учетом того сколько долей ВМ будет. А значит процессор будет проигрывать. Плюс 178000р нужно сразу клиентуры найти.

NAS 101: руководство покупателя по необходимым функциям и емкости





По мере роста вашего бизнеса растет и количество данных, которые ему необходимо хранить и которыми нужно управлять. Хранение этих данных на незакрепленных жестких дисках и отдельных рабочих станциях больше не приведет к их сокращению: вашей команде нужен постоянный доступ к данным, защита от потери и емкость для будущего роста. Самый простой способ быстро и легко предоставить все три — это сетевое хранилище (NAS).

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

Этот пост призван облегчить вам процесс. Следующий контент поможет вам:
  • Ознакомьтесь с преимуществами системы NAS.
  • Перейдите к нужным параметрам.
  • Понять причину, по которой ваш NAS подключается к облачному хранилищу.

Как NAS может принести пользу вашему бизнесу?
Система NAS может предоставить пользователям в вашей сети множество преимуществ, но здесь мы кратко перечислим некоторые из основных преимуществ.
  • Больше места для хранения. Это немного очевидно, но основное преимущество системы NAS заключается в том, что она значительно увеличивает емкость вашего хранилища, если вы полагаетесь на рабочие станции и жесткие диски. Системы NAS создают единый том хранения из нескольких дисков (часто организованных по схеме RAID).
  • Защита от потери данных. Менее очевидная, но не менее важная конфигурация RAID в системе NAS гарантирует, что данные, которые вы храните, смогут пережить отказ одного или нескольких жестких дисков. Жесткие диски выходят из строя! NAS помогает сделать это утверждение менее пугающим.
  • Безопасность и скорость. Помимо защиты от сбоя диска, NAS также обеспечивает безопасность ваших данных от внешних субъектов, поскольку они доступны только в локальной офисной сети и для учетных записей пользователей, которые вы можете контролировать. Более того, он обычно работает так же быстро, как и ваша локальная офисная сеть.
  • Лучшие инструменты управления данными. Полностью автоматизированное резервное копирование, дедупликация, сжатие и шифрование — это лишь некоторые из функций, которые вы можете задействовать в системе NAS. Все они делают ваше хранилище данных более эффективным и безопасным. Вы также можете настроить рабочие процессы синхронизации, чтобы упростить совместную работу вашей команды, включить службы для управления пользователями и группами с помощью служб каталогов и даже добавить такие службы, как управление фотографиями или мультимедиа.
Если все это кажется полезным для вашего бизнеса, читайте дальше, чтобы узнать больше о том, как воспользоваться этими преимуществами внутри компании.


Руководство покупателя к сетевому хранилищу (NAS)
Как вы оцениваете различия между разными поставщиками NAS? Или даже в рамках продуктовой линейки одной компании? Мы здесь, чтобы помочь. Этот тур по основным компонентам системы NAS поможет вам составить список для определения размеров и функций системы, которые будут соответствовать вашим потребностям.

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

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

В системе NAS хранилище определяется количеством дисков, общим томом, который они создают, и их схемой чередования (например, RAID 0, 1, 5, 6 и т. Д.). Например, один диск не дает дополнительной производительности или защиты. Два диска позволяют выполнить простое зеркальное отображение. Зеркальное отображение также называется RAID 1, когда один том состоит из двух дисков, что допускает отказ одного из этих дисков без потери данных. Два диска также допускают чередование — называемое RAID 0 — когда один том «растягивается» на два диска, образуя один диск большего размера, что также дает некоторое улучшение производительности, но увеличивает риск, поскольку потеря одного диска означает, что весь том будет недоступен.

Напоминание: как снова работает RAID?
Резервный массив независимых дисков или RAID объединяет несколько жестких дисков в один или несколько томов хранения. RAID распределяет данные и четность (информацию о восстановлении дисков) по дискам по-разному, и каждая схема обеспечивает разную степень защиты данных.

Три диска — это минимум для RAID 5, который может выдержать потерю одного диска, хотя четыре диска являются более распространенной конфигурацией системы NAS. Пять дисков позволяют использовать RAID 6, который может выдержать потерю двух дисков. От шести до восьми дисков являются очень распространенными конфигурациями NAS, которые позволяют увеличить объем хранилища, пространства, производительности и даже сэкономить диск — возможность назначить резервный диск для немедленного восстановления отказавшего диска.

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

Понятно подумать: зачем мне готовиться на случай, если два диска выйдут из строя? Что ж, когда диск выходит из строя и вы заменяете его новым, процесс восстановления данных и информации о четности на этом диске может занять много времени. Хотя это случается редко, во время восстановления может выйти из строя другой диск. В этом случае, если у вас RAID 6, все будет в порядке. Если у вас RAID 5, возможно, вы только что потеряли данные.

Примечание покупателя. Некоторые системы продаются без дисков. Стоит ли покупать NAS с дисками или без них? Это решение обычно сводится к размеру и типу дисков, которые вы хотели бы иметь.

При покупке системы NAS с дисками в комплекте:
  • На диски обычно распространяется гарантия производителя как на часть полной системы.
  • Накопители обычно покупаются непосредственно в цепочке поставок производителя и отправляются напрямую от производителя жестких дисков.
Если вы решите покупать диски отдельно от NAS:
  • Приводы могут представлять собой смесь производственных циклов приводов и дольше присутствовать в цепочке поставок. Подбирайте емкости и модели дисков для наиболее предсказуемой производительности всего тома RAID.
  • Выберите диски, рассчитанные на работу с системами NAS — поставщики NAS публикуют списки поддерживаемых типов дисков. Вот, например, список от QNAP.
  • Проверьте гарантии и процедуры возврата, и если вы перемещаете коллекцию старых дисков в свой NAS, вы также можете определить, какая часть гарантии уже истекла.

Вывод для покупателя: выберите систему, которая может поддерживать RAID 5 или RAID 6, чтобы обеспечить сочетание большего объема памяти, производительности и защиты диска от сбоев. Но обязательно проверьте, продается ли система NAS с накопителями или без них.

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

Если у вас есть какие-либо исторические данные за предыдущие годы, вы можете рассчитать простой темп роста. Но добавляйте буфер, так как с каждым годом рост данных ускоряется. Вообще говоря, цены на системы в два или четыре раза превышают размер вашей существующей емкости данных. Допустим, ваши жесткие и внешние диски для резервного копирования, а также любое дополнительное общее хранилище, которое вы хотите предоставить своим пользователям, увеличивают до 20 ТБ. Удвойте этот размер, чтобы получить 40 ТБ с учетом роста, затем разделите на общий размер жесткого диска, например 10 ТБ. Имея это в виду, вы можете начать покупать системы с четырьмя отсеками и более.

Формула 1: ((количество пользователей NAS x размер жесткого диска) + общее хранилище) * фактор роста = необходимое хранилище NAS

Пример. В офисе шесть пользователей, каждый из которых будет выполнять резервное копирование своих рабочих станций и ноутбуков емкостью 2 ТБ. Команда захочет использовать еще 6 ТБ общего хранилища для документов, изображений и видео для всех. Умноженный на коэффициент роста в два раза, вы начнете покупать системы NAS, которые предлагают не менее 36 ТБ хранилища.

((Шесть пользователей * 2 ТБ каждый) + 6 ТБ общего хранилища) * коэффициент роста два = 36 ТБ

Формула 2: ((требуется хранилище NAS / размер жесткого диска) + два диска с контролем четности) = требуются отсеки для дисков

Пример. Продолжая приведенный выше пример, при поиске новой системы NAS с дисками емкостью 12 ТБ, учитывая два дополнительных диска для RAID 6, вы должны искать системы NAS, которые могут поддерживать пять или более отсеков для жестких дисков по 12 ТБ.
((36 ТБ / 12 ТБ) + два дополнительных диска) = пять отсеков для дисков и более

Если ваш бюджет позволяет, выбор дисков большего размера и большего количества отсеков для дисков приведет к увеличению накладных расходов на хранилище, которые со временем наверняка вырастут. Учтите, однако, что если вы станете слишком большим, вы будете платить за неиспользуемое пространство для хранения в течение более длительного периода времени. А если вы используете бухгалтерский учет по GAAP, вам нужно будет окупить эти вложения за то же время, что и меньшая система NAS, что принесет прибыль на ежегодной основе. Это классическая дилемма CapEx и Opex, о которой вы можете узнать больше здесь.

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

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


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

Процессор, контроллеры и память: какой уровень производительности вам нужен?
Что лучше: большие встроенные процессоры или контроллеры? Меньшие встроенные микросхемы, обычно используемые в небольших NAS-системах, обеспечивают базовую функциональность, но могут зависнуть при обслуживании большого количества пользователей или при выполнении задач дедупликации и шифрования, которые являются вариантами со многими решениями для резервного копирования. Более крупные системы NAS, которые обычно хранятся в стойках ИТ-центров обработки данных, обычно предлагают несколько контроллеров хранения, которые могут обеспечить максимальную производительность и даже возможность переключения при отказе.
  • Процессор: обеспечивает вычислительную мощность для работы системы, служб и приложений.
  • Контроллер: управляет представлением и состоянием объема хранилища.
  • Память: Повышает скорость работы приложений и производительность обслуживания файлов.
Чипы ARM и Intel Atom хороши для базовых систем, в то время как более крупные и более мощные процессоры, такие как Intel Corei3 и Corei5, быстрее справляются с задачами NAS, такими как шифрование, дедупликация и обслуживание любых встроенных приложений. Микросхемы серверного класса Xeon также можно найти во многих стоечных системах.

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



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

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

Сеть и подключения: какая скорость вам нужна?
Базовый NAS будет иметь соединение Gigabit Ethernet, которое часто обозначается как 1GigE. Пропускная способность сети в 1 Гбит / с эквивалентна 125 МБ / с, поступающей из вашей системы хранения. Это означает, что система NAS должна предоставлять услуги хранения для всех пользователей в рамках этого ограничения, что обычно не является проблемой при обслуживании только нескольких пользователей. Многие системы имеют внутренние порты расширения, что позволяет позже приобрести сетевую карту 10GigE для обновления вашего NAS.



Некоторые поставщики NAS предлагают в своих системах соединения со скоростью 2,5 Гбит / с или 5 Гбит / с — это даст вам больше производительности, чем подключения 1GigE, но обычно требуется, чтобы вы получили совместимый сетевой коммутатор и, возможно, USB-адаптеры или карты расширения для каждого система, которая будет подключаться к этому NAS через коммутатор. Если ваш офис уже подключен к 10GigE, убедитесь, что ваш NAS также 10GigE. В противном случае, чем больше сетевых портов на задней панели системы, тем лучше. Если вы не готовы получить систему с поддержкой 10GigE сейчас, но думаете, что, возможно, получите ее в будущем, выберите систему с возможностью расширения.


Некоторые системы предоставляют еще один вариант соединений Thunderbolt в дополнение к соединениям Ethernet. Они позволяют ноутбукам и рабочим станциям с портами Thunderbolt напрямую подключаться к NAS и предлагают гораздо более высокую пропускную способность — до 40GigE (5 ГБ / с) — и подходят для систем, которым необходимо редактировать большие файлы непосредственно на NAS, как это часто бывает случай в редактировании видео. Если вы будете напрямую подключать системы, которым требуется максимально высокая скорость, выберите систему с портами Thunderbolt, по одному на каждого пользователя, подключенного к Thunderbolt.

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

Функции кэширования и гибридного диска: насколько быстро нужно обслуживать файлы?
Многие из высокопроизводительных NAS-систем могут дополнять стандартные 5,25-дюймовые жесткие диски более производительными SSD или дисками M.2 меньшего форм-фактора. Эти более компактные и быстрые диски могут значительно повысить производительность обслуживания файлов NAS за счет кэширования файлов в самых последних или наиболее часто запрашиваемых файлах. Комбинируя эти разные типы дисков, NAS может обеспечить как улучшенную производительность обслуживания файлов, так и большую емкость.

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

Вывод для покупателя: комбинируйте различные типы дисков, например SSD меньшего форм-фактора или хранилище M.2 с жесткими дисками 5,25 дюйма, чтобы повысить производительность обслуживания файлов.

Операционная система: какие функции управления вам требуются?


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

Если в вашей ИТ-среде есть определенные функции управления пользователями, которые вам нужны или вы хотите протестировать, как работает ОС NAS, вы можете протестировать их, запустив демонстрационную виртуальную машину, предлагаемую некоторыми поставщиками NAS. Вы можете протестировать конфигурацию сервиса и почувствовать интерфейс и инструменты, но очевидно, что в виртуальной среде вы не сможете напрямую управлять оборудованием. Вот несколько вариантов:
Вывод для покупателя: встроенная ОС NAS OS похожа на операционную систему Mac или ПК, что упрощает навигацию по настройке и обслуживанию системы, а также позволяет управлять настройками, хранилищем и задачами.

Решения: какие дополнительные услуги вам требуются?
Хотя встроенный процессор и память на вашем NAS в основном предназначены для файлового сервиса, резервного копирования и синхронизации, вы также можете установить другие решения прямо на него. Например, QNAP и Synology — два популярных поставщика NAS — имеют магазины приложений, доступные из их управляющего программного обеспечения, где вы можете выбрать приложения для загрузки и установки на NAS. Возможно, вас заинтересует решение для резервного копирования и синхронизации, такое как Archiware, или решения CMS, такие как Joomla или WordPress.


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

Вывод для покупателя: основные приложения для резервного копирования и синхронизации от основных поставщиков NAS превосходны — дайте им хороший тест, но знайте, что существует множество отличных решений для резервного копирования и синхронизации.

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

Во-первых, облачное хранилище обеспечивает защиту резервного копирования за пределами площадки. Это приводит настройку вашего NAS в соответствие с отраслевым стандартом защиты данных: стратегией резервного копирования 3-2-1, которая гарантирует, что у вас будет три копии ваших данных, исходные данные и две резервные копии, одна из которых находится на вашем NAS, а вторая копия ваших данных защищена за пределами сайта. А в случае потери данных вы можете восстановить свои системы прямо из облака, даже если все системы в вашем офисе выйдут из строя или разрушены.

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

Кроме того, облачное хранилище обеспечивает ценный доступ к вашим данным и документам с вашего NAS за счет возможностей синхронизации. В случае, если кому-то из вашей команды потребуется доступ к файлу, когда он находится вне офиса, или, что более распространено сейчас, если вся ваша команда работает из дома, они смогут получить доступ к файлам, которые были синхронизированы с облако через программу безопасной синхронизации вашего NAS. Вы даже можете выполнять синхронизацию в нескольких местах, используя облако в качестве двусторонней синхронизации для быстрой репликации данных в разных местах. Сотрудникам, работающим на большом расстоянии, это помогает избежать ожидания доставки важных файлов в Интернете: они уже находятся на месте.

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

Готовы к настройке вашего NAS с облачным хранилищем
Подводя итог, вот несколько вещей, которые следует помнить при покупке системы NAS:
  • Подумайте, сколько места вам понадобится как для локального резервного копирования, так и для общего пользовательского хранилища.
  • Ищите систему как минимум с тремя-пятью отсеками для дисков.
  • Убедитесь, что система NAS продается с дисками — в противном случае вам придется приобрести достаточное количество дисков одинакового размера.
  • Выбирайте систему, которая позволяет вам модернизировать память и сетевые опции.
  • Выберите систему, которая соответствует вашим потребностям сегодня; вы всегда можете обновить его в будущем.
В сочетании с облачным хранилищем, таким как Backblaze B2 Cloud Storage, которое уже интегрировано с системами NAS от Synology и QNAP, вы получаете необходимую защиту резервного копирования и восстановление из облака, а также возможность синхронизации между местоположениями.
www.backblaze.com/b2/cloud-storage.html

Доктор в облаке: как мы создали сервис телемедицины для борьбы с коронавирусом в Люксембурге



Разработкой платформы мы занялись… случайно. Всё началось с пандемии, из-за которой правительство Люксембурга и распорядилось создать сервис онлайн-консультаций с врачами. Чтобы выжать из платформы максимум пользы, в неё решили добавить всё, что только нужно для полноценной работы врачей с пациентами. Обмен всевозможными медицинскими документами и даже выдача рецептов на лекарства исключениями не стали — старый вендор всё и сразу заложил в сервис. А затем, чтобы всё добро было в сохранности, к нам и обратились с уже готовым продуктом — нам всего-то и требовалось, что развернуть платформу в защищённой точке присутствия облака.

Через полтора месяца сервис успешно работал в люксембургском дата-центре EDH Tier IV, но ещё при первом знакомстве мы признали в нём слабое звено всего проекта: в отличие от точки присутствия, платформа защищённостью похвастаться не могла и обладала десятком других недостатков. Решение было очевидным — сервис нужно было делать с нуля. Оставалась убедить в этом правительство Люксембурга.



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

1. Систему разрабатывали без фреймворка
Из-за этого проблем в платформе было немыслимое количество. Если бы для создания сервиса использовался какой-нибудь популярный фреймворк — Symfony, Laravel, Yii или что-то ещё, — то даже посредственные разработчики избежали бы большинства проблем безопасности, ведь ORM умеют подготавливать запросы к базе, шаблонизаторы — эндкодить полученный от пользователя контент, а формы по умолчанию защищены CSRF-токенами, да и авторизация и аутентификация, как правило, доступны практически из коробки. В этом же случае платформа заставила нашего разработчика ностальгировать по студенческим временам — код выглядел почти так же, как его первая лабораторная работа в университете.

Вот, например, как было реализовано подключение к базе данных. Учётные данные для подключения были захардкожены выше в том же файле.
if (!isset($db)) {
	$db = new mysqli($db_info['host'], $db_info['user'], $db_info['pass'], $db_info['db']);
	if ($db->connect_errno) {
		die("Failed to connect to MySQL: " . $db->connect_errno);
	}
	if (!$db->set_charset("utf8")) {
		die("Error loading character set utf8 for MySQL: " . $db->connect_errno);
	}
	$db->autocommit(false);
}


2. В платформе было множество проблем безопасности
После аудита мы поняли, что с такими недоработками выходить в production нельзя даже с простым блогом, не то что с платформой с конфиденциальными данными. Приведём некоторые из них.

SQL-инъекции. В 90% запросов попадали введенные пользователями данные без их предварительной подготовки.
$sql = "
	UPDATE user
	SET firstname='%s', lastname='%s', born='%s', prefix='%s', phone='%s', country_res='%s', extra=%s
	WHERE id=%d
;";
$result = $db->query(sprintf($sql,
	$_POST['firstname'],
	$_POST['lastname'],
	$_POST['born'],
	$_POST['prefix'],
	$_POST['phone'],
	$_POST['country'],
	isset($_POST['extra']) ? "'".$_POST['extra']."'" : "NULL",
	$_SESSION['user']['id']
));


XSS-уязвимости. Пользовательский код никак не фильтровался перед выводом:
<button id="btn-doc-password" class="btn btn-primary btn-large pull-right" data-action="<?= $_GET['action'] ?>"><i class="fas fa-check"></i> <?= _e("Valider") ?></button>


Кроме того, попавшая в БД информация, вроде причины консультации с врачом, не фильтровалась ни перед записью в базу, ни перед рендерингом на странице.
Отсутствие проверки прав доступа. Достаточно было иметь аккаунт пациента и подобрать автоинкрементный ID другого пациента, чтобы без труда получить список приёмов и другой информации из профиля. Те же проблемы были и на стороне приложения доктора. Более того, зная ID врача не составляло проблем получить доступ к его приёмам.
Отсутствие проверки загружаемых файлов. Через форму добавления документов можно было загрузить какой угодно файл в любую из папок, доступных для записи пользователям веб-сервера. Помимо того, поиграв с quеry-string запроса на загрузку документа можно было даже скачать файлы с исходным кодом.
$file_dir = $settings['documents']['dir'] . $_SESSION['client']['id'] . DIRECTORY_SEPARATOR . $_GET['id_user'];


Устаревшие сторонние библиотеки. У старого вендора никто не следил за версиями сторонних библиотек, которые, кстати, вместо использования того же Composer просто копировались в проект. Более того, в некоторые из таких сторонних зависимостей вносились изменения «под себя».
Небезопасное хранение паролей пользователей. Для хранения паролей использовались ненадёжные криптографические функции.
$sql = "
	SELECT id, firstname, lastname
	FROM user
	WHERE id=%d AND password=PASSWORD('%s')
;";
$result = $db->query(sprintf($sql, $_SESSION['user']['id'], $_POST['pass']));


Уязвимость CSRF. Ни одна форма не была защищена CSRF-токеном.
Отсутствие защиты от brute-force атак. Её просто не было. Никакой.

Тут можно было бы продолжить и дальше, но уже этих проблем достаточно, чтобы понять: либо у системы были серьёзные проблемы, либо она сама была серьёзной проблемой.

3. Код было сложно поддерживать и расширять
Проблемами безопасности всё не ограничилось. К нашему удивлению, на проекте отсутствовала система контроля версий. Код был совершенно не структурирован. В root-директории web-сервера находились файлы вроде ajax-new.php, ajax2.php и все они использовались в коде. Отсутствовало и чёткое разграничение на слои (presentation, application, data). В подавляющем большинстве случаев файл с кодом представлял собой смешение PHP, HTML и JavaScript.

Всё это привело к тому, что когда нас попросили сделать примитивный backoffice для этой системы, лучшим решением стало развернуть рядом Symfony 4 в связке с Sonata Admin и вообще не касаться существующего кода. Понятно, что если бы нас попросили добавить новые возможности для врачей или пациентов, это отняло бы у нас кучу сил и времени. А поскольку об автоматических тестах речи не шло, вероятность сломать при этом что-нибудь была бы крайне велика.

Всего перечисленного правительству Люксембурга оказалось достаточно — нам дали зелёный свет на разработку новой платформы.

Доктор едет-едет: как мы разрабатывали новую платформу

Готовиться к разработке новой платформы мы начали с самого начала — ещё когда увидели детище старого вендора. Поэтому, когда нам дали добро на разработку новой платформу, мы сразу приступили к созданию её MVP-версии. С этой задачей команда из четырёх PHP- и трёх фронтенд-разработчиков справилась за какие-то три с половиной недели. Все работы велись на Symfony 5, а делегировать удалось только видеозвонки и чаты — их реализовали с помощью нашего сервиса G-Core Meet. Пригодился и backoffice для старой системы: его удалось адаптировать к МVP всего за пару дней. В результате MVP-версия системы на 80% закрывала функционал старой платформы. Сейчас она, кстати, используется и для ещё одной задачи — в один момент мы клонировали MVP для хелпдеска агентства электронного здравоохранения Люксембурга, чтобы администраторы там могли созваниваться с пользователями.

Когда MVP был готов, мы приступили к разработке полноценной новой платформы. В качестве основы для API использовали API Platform и ReactJS в связке с Next.js для client-side. Без интересных задач не обошлось.

1. Реализуем уведомления
Одна из сложностей возникла с уведомлениями. Поскольку клиентами API могли быть как мобильный приложения, так и наши SPA, требовалось комбинированное решение.
Сначала мы выбрали Mercure Hub, с которым клиенты взаимодействуют через SSE (Server Sent Event). Но как бы это решение не пиарили сами создатели API Platform, наша мобильная команда его забраковала, так как с ним получать уведомления приложение могло только в активном состоянии.

Так мы пришли к Firebase, с помощью которого удалось добиться поддержки нативных пушей на мобильных устройствах, а для браузерных приложений оставили Mercure Hub. Теперь, когда в системе происходило какое-то событие, мы уведомляли пользователя об этом через нужный нам private-канал в Mercure Hub и, помимо этого, отправляли пуш ещё и на Firebase для мобильного устройства.

Почему мы сразу не реализовали всё на Firebase? Тут всё просто: несмотря на поддержку web-клиентов, браузеры без Push API — тот же Safari и большинство мобильных браузеров — с ним не работают. Однако, мы ещё планируем реализовать пуш-уведомления от Firebase для тех пользователей, которые используют поддерживаемые браузеры.

2. Функциональные тесты
Другая интересная ситуация возникла, когда мы занимались функциональными тестами для API. Как известно, каждый из них должен работать в чистом окружении. Но каждый раз поднимать базу и заполнять в ней базовые fixtures + fixtures, необходимые для тестирования, оказалось накладно с точки зрения производительности. Чтобы этого избежать, мы решили на начальном этапе поднимать базу данных на основании маппинга сущностей (bin/console doctrine:schema:create) и уже затем добавлять базовые fixtures (bin/console doctrine:fixtures:load).

Затем с помощью расширения dama/doctrine-test-bundle мы добились того, чтобы выполнение каждого теста оборачивалось в транзакцию и в конце тест-кейса откатывало её без фиксации. Благодаря этому, даже если в ходе тестирования в базу вносятся изменения, они не фиксируются, а база после прогона остаётся в том же состоянии, что и до запуска PHPUnit.
Чтобы на каждый эндпоинт был написан хотя бы один тест, мы сделали auto review тест. Он обнаруживает все зарегистрированные роуты и проверяет наличие тестов для них. Так, например, для роута app_appointment_create он проверяет, есть ли в папке tests/Functional/App/Appointment файл CreateTest.php.

Дополнительно за качеством кода следят PHP-CS-Fixer, php-cpd и PHPStan c расширениями типа phpstan-strict-rules.

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

Такой подход позволяет в одном пул-реквесте создать фичу (библиотеку) и интегрировать её во все нужные приложения. Это преимущество и привело к использованию монорепозитория вместо реализации фич в отдельных npm-библиотеках и проектов в разных репозиториях.
Для конфигурации монорепозитория используется библиотека ns.js, которая с коробки позволяет собирать библиотеки и приложения React и Next.js, а именно этот стек и используется в проекте. Чтобы следить за качеством кода, мы используем ESLint и Prettier, для написания unit-тестов — Jest, а для тестирования компонентов React — React Testing Library.

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

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

Платформа доступна для всех медицинских профессионалов, жителей и работников Люксембурга. Сейчас она работает в 2-х крупнейших учреждениях здравоохранения страны — в Больнице им. Роберта Шумана (Hôpitaux Robert Schuman) и Больничном центре им. Эмиля Мэйриша (Centre Hospitalier Emile Mayrisch). Сервис развёрнут в защищённой точке присутствия облака G-Core Labs в люксембургском дата-центре EDH Tier IV, где для него настроена виртуальная среда в соответствии с нужными спецификациями.

https://gcorelabs.com