Разработка NAS — цели и этапы

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

Для чего нам этот проект? — Есть следующие основные причины:

  • Интерес к разработке своими силами сложного устройства, такого как NAS.

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

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

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

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

Процесс разрабтки NAS

Процесс разрабтки NAS

Наш концепт открытого и модульного NAS

Открытая платформа нашего проекта подразумевает, что все схемы, файлы для производства, 3D модели корпусных деталей, исходники и другие файлы, можно будет скачать в открытом доступе по Creative Commons лицензии — Атрибуция 3.0 Непортированная. Ну или адаптированный для чтения вариант:

Что можно будет делать с нашими файлами в открытом доступе

Что можно будет делать с нашими файлами в открытом доступе

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

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

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

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

Архитектура NAS

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

Ключевые элементы NAS

Ключевые элементы NAS

Также была представлена таблица с техническими характеристиками базового / начального варианта NAS, основные параметры которого приведены ниже:

Название

Характеристика

Вычислительный модуль

SODIMM на базе процессора ARM

Операционная система

Armbian / Debian

Жесткие диски

SATA с поддержкой RAID 5, 6

Сетевое подключение

1GbE

Внешний порт данных

3x USB 3.1 Gen1 / Type-C PD

Видео выход со звуком

Mini DP / Type-C DP Alt Mode

Питание

230В

Резервное питание

Батарея не менее 20Вт•ч

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

Попробуем расширить / изменить базовый набор за счет уже имеющихся интерфейсов. Например, что мешает подключить дополнительную сетевую карту к интерфейсу USB или дополнительный контроллер дисков SATA:

Вариант

расширения

Тип интерфейса

SATA Gen3

PCIe 2.1 / 3.0

USB 3.0 / Type-C

Подключение нескольких SATA дисков хранилища

SATA Port Multiplier

до 15 дисков на один порт SATA

PCIe / SATA Bridge 

5–6 дисков на PCIe x2

2–4 диска на PCIe x1

USB / SATA adapter

1–2 диска

Системный SSD

NVME x2 / x4

SATA / NVME x2 adapter

Ethernet

1GbE / 2.5GbE

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

Декомпозиция дизайна

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

Контроллеры дисков

Рассмотрим особенности шин PCIe и SATA, которые нам позволят снять ограничения по количеству дисков в системе (с разумной точки зрения, ясное дело).

Так зачастую PCIe контроллеры процессоров поддерживают разветвление шины PCIe — bifurcation, что позволяет организовывать несколько независимых шин PCIe:

Примеры разветвления шины PCIe

Примеры разветвления шины PCIe

Получив несколько независимых шин, к одному процессору теперь можно подключить уже не один, а несколько PCIe / SATA Bridge контроллеров, и тем самым увеличить количество дисков в системе:

Подключение нескольких PCIe / SATA Bridge контроллеров

Подключение нескольких PCIe / SATA Bridge контроллеров

Еще один из вариантов расширения размера хранилища — это подключение нескольких SATA дисков к одному порту, если контроллер SATA поддерживает функцию PMP — Port Multiplier:

Схема подключения нескольких дисков к одному SATA

Схема подключения нескольких дисков к одному SATA

Хотя функция PMP довольно известная, но среди производителей контроллеров SATA найдется не так много вариантов чипсетов и встроенных контроллеров, которые могут «увидеть» на одном порту SATA сразу несколько дисков.

К сожалению, в ARM процессоры довольно редко встраивают контроллер SATA. На мой взгляд, производители таким образом пытаются всеми способами выжить данную технологию и заменить её на более универсальную PCIe. В отличие от x86 и AMD процессоров, для которых выпускаются специальные чипсеты с поддержкой нескольких SATA портов, у ARM процессоров даже таких вариантов нет.

Тем не менее, некоторые производители до сих пор размещают PCIe Gen2 «рядом» с PCIe Gen3. Спрашивается для чего? — Лучше бы увеличили ширину PCIe Gen3. Но если разобраться, то ответ становится очевидным:

  • Высокоскоростные лэйны PCIe Gen2 имеют практически такую же скорость как USB3.0 (иначе USB3.1 Gen1) и самое важное SATA Gen3. Это позволяет подключать нужный контроллер внутри процессора к комбинированным лэйнам со скоростью до 6Гб/с в зависимости от интерфейса. Далее, как мы видели на рисунке выше, даже к одному SATA с поддержкой функции PMP можно подключить до 15 SATA дисков.

Вычислительный модуль

Не хотелось бы сейчас подробно останавливаться на теме, связанной с возможностями современных ARM процессоров. Для этого мы постараемся приготовить отдельный материал, с оценкой возможностей нескольких процессоров, которые для нашего проекта являются целевыми. Тем не менее, хочется рассказать ещё об одном элементе системы — вычислительном модуле SODIMM.

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

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

Состав нашего модуля на RK3399

Состав нашего модуля на RK3399

На плате модуля есть 200-pin краевой разъём, на который выведены практически все интерфейсы процессора, питание и цепи управления:

Назначение

Название интерфейса

100/1000 Ethernet

RGMII

DIY, управление системой

GPIO x50 (UART, SPI, I2C, I2S, PWM, etc) / ADC x5

Подключение SD

SDMMC

Подключение дисков

PCIe x4 Gen2

USB устройства и модули

Type-C / USB 3.1 / USB 2.0×2

Дисплеи и камеры

MIPI TX x4 / RX x4 / TX-RX x2 / eDP

Сброс / Питание

Reset / Power Enable / 5V

Конструкция вычислительного модуля — это многослойная печатная плата, производство, сборка и начальное тестирование которой, рассчитано на контрактное производство — EMS (Electronic Manufacturing Service) provider:

Внешний вид нашего модуля на RK3399

Внешний вид нашего модуля на RK3399

На модуле размещены только самые необходимые компоненты для работы системы: процессор, оперативная память, eMMC и NOR флэш, а также PMU / PMIC (контроллер питания и DC/DC преобразователи). Никаких WiFi модулей, SD карт, Ethernet Phy и т.д.

Почему?  — Ответ прост:

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

С другой стороны, благодаря модульности всегда можно «прокачать» устройство в нужную сторону. Например, сейчас мы планируем дополнительно разработать ещё два вычислительных модуля, один с увеличенным объемом памяти, а другой с ECC для аппаратной поддержки ZFS.

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

Есть еще один момент в пользу выбора модульного дизайна. Многие используют контроллеры определенных производителей: JMicron, Marvell, ASMedia и т.д. В случае модульного дизайна и стандартного разъёма, у пользователей будет возможность подключить свой контроллер. К примеру, на рисунке представлены варианты контроллеров PCIe / SATA Bridge на 5 и 6 дисков фирм JMicron и ASMedia (качество скринов не очень, в нашем распоряжении пока только один контроллер M.2 и тот в работе):

Плата 5-портового PCIe / SATA контроллера на M.2

Плата 5-портового PCIe / SATA контроллера на M.2

Плата 6-портового PCIe / SATA контроллера на M.2

Плата 6-портового PCIe / SATA контроллера на M.2

Несущая плата

В качестве конструктива несущей платы начального уровня был выбран nano-ITX с размерами 120 мм x 120 мм. Это на 50 мм меньше чем mini-ITX по каждой стороне. 

На плате размещен минимальный набор компонентов и разъемов как для подключения внешних устройств, так и для модулей. Для примера, ниже показана структурная схема несущей платы с установленными модулями резервного питания — UPS, контроллером дисков с разъемом M.2 и модулем сетевого адаптера 2.5GbE:

Структурная схема несущей платы с установленными модулями

Структурная схема несущей платы с установленными модулями

Спецификация несущей платы:

Название

Характеристика

Тип разъема

Вычислительный модуль

ARM

SODIMM 200-pin

Подключение USB / Type-C

DisplayPort Alt Mode

2x USB2.0

2x USB3.0 Front Panel

2x USB3.0

Type-C PD

Pin Header 2×5

Twin USB Type A

Pin Header 2×10

Сетевое подключение

100 / 1000 Ethernet

RJ45

Контроллер дисков

PCIe Gen2×4lanes

M.2 key M

Дисплей / камера

DisplayPort

MIPI CSI / DSI

MIPI-CSI

MIPI-DSI

DP

FPC-30

FPC-30

FPC-30

Низкоскоростная периферия

I2C

I2C / UART / SPI

ADC 4-channel

Pin Header 1×6

Pin Header 2×5 — UEXT

Pin Header 1×6

Консоль

USB / UART

Type-C

Аудио вход / выход

Кодек ES8388

HD Audio Header

Основное питание 

12В

Mini-DIN / ATX 4-pin

Несущая плата сейчас активно разводится, при этом все основные разъемы для подключения кабелей и модулей уже расставлены:

Внешний вид несущей платы с основными разъемами и модулями

Внешний вид несущей платы с основными разъемами и модулями

Firmware контроллеров

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

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

Например, контроллеры PCIe и SATA, о которых рассказывалось выше, не работают нормально, если при включении питания они не будут проинициализированы либо из локальной EEPROM, либо по SPI. Причем последовательность команд инициализации чаще всего известна только производителю. Среди этих команд есть очень специфичные, касающиеся процедуры тренинга линков перед началом работы. Если этот тренинг не пройдет успешно, то нестабильная работа на высоких скоростях практически гарантирована.

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

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

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

Проверка концепции

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

У нас не было особых ограничений по стоимости прототипов, поэтому, мы не экономили. В результате получилось собрать три прототипа. Два из них, собраны на одинаковой платформе ARM — процессоре RK3588, но только с разными вариантами подключения дисков. Еще один прототип NAS мы собрали на x86 материнке с процессором Core i3, где диски подключались стандартно к чипсету.

С помощью этих трех прототипов мы планировали провести и потом сравнить результаты тестов производительности NAS. Также мы хотели оценить возможные проблемы, связанные с работой дисков при их подключении через SATA Multiplier и PCIe / SATA Bridge.

Характеристика

x86 Mini Server

RK3588 19»

RK3588 Mini Server

Процессор

Core i3–10100

RK3588

RK3588

Память

DDR4 — 8ГБ

LPDDR4 — 16ГБ

LPDDR4 — 16ГБ

Материнская плата

H510M-ITX/ac

ITX-3588J

ITX-3588J

Контроллер SATA / чипсет

Intel H510

PCIe / SATA Bridge

JMB585

SATA Multiplier

JMB575

Поддержка SATA PMP

нет

да

да

Количество дисков NAS

4

5

4

Модель дисков

Toshiba P300

Toshiba P300

Toshiba P300

RAID

5

6

5

Системный SSD M.2

NVME

SATA

SATA

ОС

Debian 11

Armbian / Debian 11

Armbian / Debian 11

ПО для NAS

OMV6

OMV6

OMV6

Сборка прототипов для проверки концепта

Сборка NAS на x86 никаких трудностей не вызвала, все четыре диска были подключены к разъемам на плате:

В x86 прототипе все диски подключены к штатным SATA

В x86 прототипе все диски подключены к штатным SATA

Особой необходимости в NAS на x86 не было, хотели просто оценить разницу в производительности между x86 и ARM.

Сборка второго и третьего NAS на ARM процессорах также прошла относительно просто, благодаря стандартной плате формата mini-ITX. В одном из них диски были подключены к плате PCIe с контроллером PCIe / SATA Bridge JMB585:

Подключение пяти дисков к контролеру SATA / PCIe Bridge в прототипе с корпусом 19

Подключение пяти дисков к контролеру SATA / PCIe Bridge в прототипе с корпусом 19»

Для этого NAS был специально собран прототип модульного UPS, состоящий из модуля контроля и модуля батарей 2S2P. В основу конструкции UPS легла идея, подробно изложенная в нашей предыдущей статье:

Размещение модульного UPS внутри 19

Размещение модульного UPS внутри 19» прототипа

В третьем прототипе NAS на базе ARM процессора, диски были подключены в разъемы, расположенные на самой плате. В качестве контроллера на плате установлен чип JMB575 — SATA Multiplier на 5 дисков, который подключен прямо к процессору также через SATA интерфейс:

Подключение четырех дисков к плате на ARM процессоре с контроллером SATA PMP

Подключение четырех дисков к плате на ARM процессоре с контроллером SATA PMP

В этом NAS был размещён наш первый прототип UPS с интегрированной батареей 2S1P:

Размещение блока UPS в прототипе на ARM процессоре в корпусе Mini Server

Размещение блока UPS в прототипе на ARM процессоре в корпусе Mini Server

Первые результаты

Смоук тест всех трех NAS прошел успешно. После этого на все три прототипа был установлен Debian 11 / Armbian, поверх которого мы установили openmediavault. Но обнаружилась одна проблема со стабильной работой дисков хранилища на прототипе с SATA Multiplier.

  • Диски, подключенные к контроллеру SATA PMP спонтанно »терялись» и вновь »находились», при этом скорость линка снижалась доходя с 6Гб/с до 3Гб/с и даже 1.5Гб/с. Причем, чем выше нагрузка была на диски, тем чаще происходили такие события:

[  886.887645] ata1.04: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[  886.887649] ata1.04: failed command: WRITE DMA
[  886.887658] ata1.04: cmd ca/00:01:08:00:00/00:00:00:00:00/e0 tag 20 dma 512 out
                        res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[  886.887662] ata1.04: status: { DRDY }
[  888.097425] ata1.15: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  888.408754] ata1.00: SATA link down (SStatus 0 SControl 310)
[  888.408828] ata1.01: hard resetting link
[  888.718265] ahci fe210000.sata: FBS is disabled
[  888.874071] ahci fe210000.sata: FBS is enabled
[  888.874600] ata1.01: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  888.874642] ata1.02: hard resetting link
[  889.185254] ahci fe210000.sata: FBS is disabled
[  889.344063] ahci fe210000.sata: FBS is enabled
[  889.344648] ata1.02: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  889.344690] ata1.03: hard resetting link
[  889.655095] ahci fe210000.sata: FBS is disabled
[  889.810750] ahci fe210000.sata: FBS is enabled
[  889.811339] ata1.03: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  889.811381] ata1.04: hard resetting link
[  890.122080] ahci fe210000.sata: FBS is disabled
[  890.280720] ahci fe210000.sata: FBS is enabled
[  890.281310] ata1.04: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  890.592159] ata1.05: SATA link down (SStatus 0 SControl 310)
[  890.901819] ata1.06: SATA link down (SStatus 0 SControl 310)

Мы предположили, что проблема могла быть в начальной конфигурации контроллера JMB575 — SATA Multiplier. Дело в том, что после подачи питания, контроллер считывает конфигурацию внутренних регистров из локальной EEPROM, и если, к примеру, эти данные отсутствуют, то работа линков SATA может быть нестабильной.

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

Попытка проверить работу SATA PMP на x86 прототипе

Попытка проверить работу SATA PMP на x86 прототипе

В этот момент пришло осознание того, что в действительности не все чипсеты с контроллерами SATA, выпускаемые Intel и другими фирмами, поддерживают SATA Port Multiplier. В нашем случае, чипсет H510 не поддерживал эту функцию. Контроллер SATA видел только один диск из четырех, при этом на произвольном порту. К слову, функция SATA PMP не является обязательной.

Так что пришлось подключать SATA PMP адаптер к другому прототипу, но уже в один из портов PCIe / SATA Bridge адаптера. На слух звучит запутано, поэтому, приведу схему тестирования для этого случая:

Подключение SATA PMP к PCIe / SATA Bridge

Подключение SATA PMP к PCIe / SATA Bridge

Выглядело такое подключение следующим образом:

Подключение SATA Multiplier к SATA / PCIe Bridge контроллеру

Подключение SATA Multiplier к SATA / PCIe Bridge контроллеру

Так как на этом прототипе уже был поднят RAID6, то после загрузки сразу удалось убедиться, что проблем с дисками нет и контроллер JMB575 на этой плате работает нормально.

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

Итоги

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

Основные итоги проверки концепта в части создания дискового массива приведены в таблице:

Название

Результат

Общая проверка SATA Multiplier

В целом работает

Необходима начальная конфигурация чипа от производителя

Поддержка SATA Multiplier в чипсетах и HOST контроллерах

Необходимо смотреть на поддержку данной функции в контроллерах SATA, без этой поддержки применение SATA Multiplier невозможно

Общая проверка PCIe / SATA Bridge

Работает без вопросов

Не требует особой поддержки со стороны Root контроллера PCIe

Проверка PCIe / SATA Bridge в режиме PMP

Успешно проверен в режиме работы PMP с подключенным SATA Multiplier

Предварительные тесты производительности дисковых массивов для ARM процессора c PCIe / SATA Bridge контроллером и референсной платформы x86 на чипсете H510 представлены в следующей таблице:

Название теста

RK3588 19» / 5 дисков / RAID6

x86 Mini Server / 4 диска / RAID5

fio RANDOM 4k READ

5168KiB/s (5292kB/s)

4724KiB/s (4837kB/s)

fio RANDOM 4k WRITE

1000KiB/s (1024kB/s)

981KiB/s (1005kB/s)

fio SEQUENTIAL 512k READ

624MiB/s (654MB/s)

1626MiB/s (1705MB/s)

fio SEQUENTIAL 512k WRITE

216MiB/s (227MB/s)

287MiB/s (301MB/s)

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

Что дальше

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

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

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

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

© Habrahabr.ru