Изменения архитектуры ОС мэйнфрейма

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

Зачем нужен рефакторинг?

Фон

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

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

  • Фоновый процесс, который мы назвали демоном, будет отвечать за взаимодействие с базовой инфраструктурой (Ethereum и Swarm), управление закрытыми ключами пользователя и предоставление клиентам JSON-RPC API.
  • Настольное приложение на базе Electron, называемое пусковой установкой, будет нашим первым клиентом, запускающим приложения, использующие Ethereum и Swarm с помощью демона.

Ограничения

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

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

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

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

Что изменилось?

Новую архитектуру можно резюмировать как объединение модуля запуска и демона вместе в приложении Electron с использованием следующего стека:

  • Erebos до сих пор используется для взаимодействия с Swarm.
  • Вместо настраиваемой структуры данных, которую мы назвали хранилищем, отвечающей за хранение пользовательских данных (кошельков, приложений, контактов…), теперь мы используем локальную базу данных RxDB, обеспечивающую более мощные возможности.
  • GraphQL по-прежнему используется в качестве основного интерфейса данных между пользовательским интерфейсом и базой данных, но теперь обслуживается основным процессом Electron, а не демоном.

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

Что дальше?

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

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

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