Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
94 lines (61 sloc) 17.6 KB
# Решения
{:.no_toc}
## SaaS-провайдерам и многопользовательским сервисам
{:.no_toc}
Системы для автоматической сборки, установки, настройки и управления программными модулями собственного проекта и сторонними программами. Снижают затраты на эксплуатацию и администрирование больших проектов, повышают скорость разработки и эффективность тестирования.
* TOC
{:toc}
### Работает везде одинаково
Рабочие окружения Jetware максимально изолированы от рабочего окружения операционной системы. Они используют собственные библиотеки и системные утилиты, собственную файловую иерархию. Это полностью исключает конфликт по зависимостям с компонентами операционной системы и позволяет использовать любые комбинации пакетов и версий. От операционной системы требуется минимум: ядро для выполнения системных вызовов, POSIX shell и файловая система. То есть любой вариант JeOS (just enough operating system). Основная коллекция программ собрана для Linux kernel >= 2.6.32 архитектуры x86_64. Есть также экспериментальная поддержка других версий ядра и архитектур.
Одно и то же рабочее окружение Jetware обеспечивает одинаковые условия для работы приложения на разном оборудовании, в разных версиях операционной системы, с разными методами виртуализации или контейнеризации. Приложение везде работает одинаково: на серверах, десктопах и лэптопах; непосредственно в операционной системе, в контейнерах или в виртуальных машинах.
Единое рабочее окружение приложения позволяет сократить затраты на конфигурацию и эксплуатацию систем с большим числом серверов. В цикле Continuous Integration это помогает легче организовать и сопровождать систему автоматического тестирования, и проводить тестирование более эффективно за счет более полной имитации рабочих условий. У разработчиков исключаются ошибки и несовместимости, вызванные отличиями в настройках и версиях компонентов.
* Снижает расходы на администрирование больших систем
* Сокращает время на настройку и обслуживание среды разработки и тестирования
* Разработчик использует рабочее окружение идентичное серверному
* Исключает ошибки, связанные с разными версиями программ у разработчиков
* Повышает эффективность тестирования, обеспечивая имитацию рабочих условий
{: .summary}
### Качественное рабочее окружение
{::comment} duplicates 'software_developers' {:/comment}
Большой выбор программ и библиотек из коллекции Jetware, выбор разных версий и вариантов сборки, позволяют использовать для приложения наиболее подходящие компоненты. Последние версии программ предоставляют разработчикам наиболее полную функциональность и сокращают затраты времени на разработку. Стабильные версии программ имеют более широкую совместимость и хорошо отлаженный код, что сокращает число ошибок при разработке и затраты времени на диагностику и устранение проблем.
При сборке рабочего окружения для приложения, в него автоматически устанавливаются и настраиваются все зависимости, предоставляя их приложению в готовом к использованию виде.
В сборки можно также включать дополнительные инструменты Jetware: средства обновления пакетов, автоматического администрирования, историю изменения настроек, средства резервного копирования. Эти инструменты облегчают эксплуатацию и сопровождение приложения у пользователя, помогают быстро вернуться к работоспособному состоянию после аварии или при неправильных настройках, заранее предупреждают о возможных проблемах и автоматически устраняют или предотвращают часть проблем.
* Программы доступны в разных версиях и вариантах компиляции
* Последние версии программ
* Свежие обновления стабильных версий программ
* Меньше ошибок и потерь времени на диагностику и устранение проблем
* Дополнительные инструменты Jetware для эксплуатации приложения
{: .summary}
### Собственные варианты сборки программ
Менеджер рабочих окружений Jetware поддерживает работу с несколькими репозиториями пакетов. Это могут быть публичные репозитории, например, коллекция программ Jetware, и частные репозитории, принадлежащие компании заказчика или отдельному проекту заказчика.
Частные репозитории удобно использовать для сборки и хранения пакетов программ с собственным выбором версий и параметров сборки. Например, отключать лишние или применять дополнительные патчи, компилировать для группы серверов с учетом их версии процессора и типа памяти, настраивать оптимизацию под характер задачи. При сборке пакетов и при сборке рабочих окружений может учитываться проект, тип задач, профиль используемого оборудования, группу серверов, и на этом основании автоматически выбирать варианты используемых пакетов.
Если аналогичные пакеты уже находятся в коллекции программ Jetware, их можно использовать в качестве базы и расширять уже существующие спецификации. Кроме спецификаций Jetware, при сборке пакетов может быть реализована совместимость с спецификациями сборки программ для Debian или RHEL. Некоторые виды приложений могут быть автоматически конвертированы в пакеты при помощи утилиты пакетизации.
* Снижает затраты на эксплуатацию собственных сборок компонентов
* Позволяет использовать компоненты, доработанные под требования проекта
* Позволяет оптимизировать компоненты для разных типов оборудования и задач
* Автоматический выбор подходящего варианта пакета при сборке рабочих окружений
{: .summary}
### Декомпозиция проекта на пакеты
В больших проектах, как правило, имеются независимые или слабосвязанные участки, а также элементы, часто используемые в разных частях проекта. Для облегчения совместной разработки и тестирования такие участки выделяются в отдельные модули (подпроекты) со своими собственными циклами разработки. Частные репозитории вместе с менеджером пакетов Jetware помогают организовать модульную структуру проекта и затем собирать релизы проекта из пакетов.
Jetware предоставляет фреймворк декомпозиции, который помогает конвертировать модули в пакеты или создавать спецификации сборки пакетов из исходного кода, указывать зависимости модулей друг на друга и на сторонние компоненты. Пакеты могут собираться автоматически по исходному коду модуля из центрального репозитория кода, либо модуль можно конвертировать в пакет и хранить в таком виде в центральном репозитории кода.
Модули проекта представлены в виде пакетов, имеющих зависимости друг на друга и на сторонние компоненты; они могут иметь свои системы нумерации версий (например, semantic versioning), разной сложности зависимости на версии и политики обновления; они могут иметь отдельные правила сборки для разных вариантов использования. Менеджер пакетов автоматически проверяет выполнимость зависимостей и наличие конфликтов по различным условиям сборки модулей. Проект, разделенный на модули, можно легче реализовать в микросервисной архитектуре.
Модульность проекта позволяет применять мелко-гранулярные обновления релизов и улучшить эффективность конвейера Continuous Integration. Мелко-гранулярные обновления ускоряют выполнение тестов и помогают на ранних стадиях находить новые ошибки; помогают автоматически находить комбинации измененных модулей, приводящих к регресии; уменьшают объем изменений при разворачивании обновления и позволяют быстрее откатиться к предыдущему состоянию при возникновении проблем.
* Фреймворк декомпозиции проекта в пакеты
* Улучшает сопровождение программного проекта
* Уменьшает число ошибок и несовместимостей
* Повышает эффективность тестирования
* Снижает длительность сбоев рабочей системы
{: .summary}
### Неизменяемые или загрузочные образы
Менеджер рабочих окружений Jetware позволяет собирать загрузочные или неизменяемые образы с компонентами из коллекции программ Jetware и из частных репозиториев. Кроме ядра Linux 64-bit для x86, могут использоваться другие аппаратные платформы и другие операционные системы, в том числе и не POSIX-совместимые.
Встроенные или автономные устройства традиционно применяют неизменяемые или загрузочные образы для запуска программного обеспечения. Для устройств с удаленной загрузкой или с удаленной перезаписью устройства хранения, использование образов предоставляет простой способ установки и обновления программного обеспечения.
В настоящее время загрузочные или неизменяемые образы все чаще применяются для автоматизации дата-центра и для горизонтального масштабирования приложений. Образы с сетевой загрузкой удобно подходят для разворачивания поверх аппаратного обеспечения инфраструктурного слоя, например, на OpenStack, или абстракции различного оборудования к одному виду при помощи виртуализации (KVM, Xen) или контейнеров. Образы используются для массового разворачивания приложений в виртуальных серверах на облачной инфраструктуре или непосредственно на физических серверах. Это позволяет с низкими затратами и в короткий срок развернуть или переконфигурировать программную систему, состоящую из большого количества вычислительных узлов.
Создание образов сборкой из пакетов позволяет более четко указывать требования к программам и конфигурациям для различных профилей работы, легче развивать и сопровождать проект. Для специализированных задач могут использоваться вариации пакетов, из которых исключены лишние компоненты и функции для сокращения потребности в ресурсах.
Система сборки образов Jetware успешно внедряется в конвейер Continuous Integration. Она позволяет быстро выполнять тестирования при обновлении кода или настроек. Повторное использование промежуточных результатов значительно сокращает время сборки - до нескольких секунд или нескольких десятков секунд на один образ. При модульной организации проекта и использовании различных комбинаций модулей для различных устройств и задач, параллельная сборка позволяет быстро выполнить тесты для всех комбинаций.
* Сборка загрузочных образов из пакетов
* Вариации пакетов для разных профилей использования
* Быстрая сборка большого числа образов
* Интеграция сборки образов в Continuous Integration
* Разворачивание приложений на большом числе серверов
* Установки и обновления на удаленных или автономных устройствах
{: .summary}