Решения

SaaS-провайдерам и многопользовательским сервисам

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

Работает везде одинаково

Рабочие окружения Jetware максимально изолированы от рабочего окружения операционной системы. Они используют собственные библиотеки и системные утилиты, собственную файловую иерархию. Это полностью исключает конфликт по зависимостям с компонентами операционной системы и позволяет использовать любые комбинации пакетов и версий. От операционной системы требуется минимум: ядро для выполнения системных вызовов, POSIX shell и файловая система. То есть любой вариант JeOS (just enough operating system). Основная коллекция программ собрана для Linux kernel >= 2.6.32 архитектуры x86_64. Есть также экспериментальная поддержка других версий ядра и архитектур.

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

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

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

Качественное рабочее окружение

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

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

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

  • Программы доступны в разных версиях и вариантах компиляции
  • Последние версии программ
  • Свежие обновления стабильных версий программ
  • Меньше ошибок и потерь времени на диагностику и устранение проблем
  • Дополнительные инструменты Jetware для эксплуатации приложения

Собственные варианты сборки программ

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

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

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

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

Декомпозиция проекта на пакеты

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

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

Модули проекта представлены в виде пакетов, имеющих зависимости друг на друга и на сторонние компоненты; они могут иметь свои системы нумерации версий (например, semantic versioning), разной сложности зависимости на версии и политики обновления; они могут иметь отдельные правила сборки для разных вариантов использования. Менеджер пакетов автоматически проверяет выполнимость зависимостей и наличие конфликтов по различным условиям сборки модулей. Проект, разделенный на модули, можно легче реализовать в микросервисной архитектуре.

Модульность проекта позволяет применять мелко-гранулярные обновления релизов и улучшить эффективность конвейера Continuous Integration. Мелко-гранулярные обновления ускоряют выполнение тестов и помогают на ранних стадиях находить новые ошибки; помогают автоматически находить комбинации измененных модулей, приводящих к регресии; уменьшают объем изменений при разворачивании обновления и позволяют быстрее откатиться к предыдущему состоянию при возникновении проблем.

  • Фреймворк декомпозиции проекта в пакеты
  • Улучшает сопровождение программного проекта
  • Уменьшает число ошибок и несовместимостей
  • Повышает эффективность тестирования
  • Снижает длительность сбоев рабочей системы

Неизменяемые или загрузочные образы

Менеджер рабочих окружений Jetware позволяет собирать загрузочные или неизменяемые образы с компонентами из коллекции программ Jetware и из частных репозиториев. Кроме ядра Linux 64-bit для x86, могут использоваться другие аппаратные платформы и другие операционные системы, в том числе и не POSIX-совместимые.

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

В настоящее время загрузочные или неизменяемые образы все чаще применяются для автоматизации дата-центра и для горизонтального масштабирования приложений. Образы с сетевой загрузкой удобно подходят для разворачивания поверх аппаратного обеспечения инфраструктурного слоя, например, на OpenStack, или абстракции различного оборудования к одному виду при помощи виртуализации (KVM, Xen) или контейнеров. Образы используются для массового разворачивания приложений в виртуальных серверах на облачной инфраструктуре или непосредственно на физических серверах. Это позволяет с низкими затратами и в короткий срок развернуть или переконфигурировать программную систему, состоящую из большого количества вычислительных узлов.

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

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

  • Сборка загрузочных образов из пакетов
  • Вариации пакетов для разных профилей использования
  • Быстрая сборка большого числа образов
  • Интеграция сборки образов в Continuous Integration
  • Разворачивание приложений на большом числе серверов
  • Установки и обновления на удаленных или автономных устройствах