Эффективное управление ПО под *nix
Андрей Пантюхин
<
infofarmer@FreeBSD.org
>
Вид сверху
Масштаб темы
Традиционный ответ
Установка программ
Обновление программ
Удаление программ
Масштаб темы
Новая парадигма
Идея у разработчика в голове
Управление ПО
Готовый результат у пользователя
Новые задачи
Управление ресурсами
Интеграция в жизненный цикл ПО
Межпрограммная интероперабельность
Ресурсы
Материальные
Аппаратное обеспечение, …
Абстрактные
Доверие, роли, …
Ресурсы
Управление на уровне пакетов ПО
Текущая практика
Оптимизация потребления
Оптимизация управления
Разгрузка рутины администратора
Материальные ресурсы
Процессор, память, диск
Пространства имён
Файловая система, учётные записи
Сетевой доступ
Доступ к производным ресурсам
База данных, Web API
Средства презентации
Визуализация, аурализация
Процессор
Время выполнения
Привязка к ядрам
Контекстные переключения
Оптимальные параметры многопоточности
Использование кэш-памяти разных уровней
Использование функций виртуализации
Собственная сложность планировщика
GPGPU, другие процессоры
Память
Занимаемый объём
resident, virtual
Полоса доступа, каналы DMA
Фрагментируемость
Эффекты технологий безопасности
Разделяемые данные и код
Диск
Место
Полоса доступа
Количество мета-информации
Износ
Разделяемые данные
Сеть
Полоса доступа
Приоритет, QoS
Зарезервированные порты, протоколы
Правила политик безопасности
firewall, NAT, tcp wrappers, fixup, inspect
Ресурсы мониторинга и сбора статистики
Идентификаторы
Файловая система
Учётные записи
пользователи, группы, роли
Многоверсионные инсталляции
Многоинстационные инсталляции
Производные
База данных
Антивирус
Web API
Визуализация
Экранное пространство
в привязке ко времени и режимам
Полупрозрачные, уменьшенные представления
Тайлинг, виртуальные десктопы
Системная индикация
Аурализация
Частоты
Громкость
Шаблоны
Абстрактные ресурсы
Внимание пользователя
Доступ
Доверие
Домены безопасности
Внимание пользователя
Штатные визуализация и аурализация
Монотонность мониторинга
Загрязнение журналов
Индикация в дата-центрах
Совокупные тревоги
Экран, сигнализация, пейджер
Дизайн интерфейсов
Windows UAC, AJAX login
Доверие
Центральный вендор
Цифровые подписи по лицензионным договорам
Цифровые подписи собственого ПО вендора
WHQL, Apple, Symbian, игровые приставки, Tivo
Cisco California, сервера общего назначения
Паутина доверия
PGP - p2p-цепочки
SSL - централизованные системы (CACert, Thawte)
Бинарные пакеты (deb, rpm)
Архивы исходного кода
Изменения в репозитарии версий
Любые другие данные
Доступ
Традиционные механизмы Unix
Разрешения файловой системы
Доступ к сетевым портам с низкими номерами
Ограничения chroot и jail
Методы управления доступом для повышенной безопасности
Мандатный (MAC), избирательный (DAC), ролевой (RBAC), списочный (RSBAC)
Эволюция
Возможности (Capabilities)
Роли
Точечные привилегии
SELinux, AppArmor, TrustedBSD, Systrace, Symbian
Домены безопасности
Коммуникационные - на уровне предприятия
Технологические
Непотопляемость
Бастионы
Локальные уязвимости
Timing-атаки
Атаки на энтропию RNG
Виртуализация
Обход проблем совместимости и разграничения
На уровне ОС
Полная
Тонкая
На уровне ОС
FreeBSD Jails, Linux VServer, Solaris Zones
Несущественный overhead
Неполное разграничение
Поддерживается штатными системами управления ПО
FreeBSD Ports DESTDIR
Полная
VMWare, Xen, Linux KVM, Qemu
Заметный overhead
Более жёсткое разграничение
Отсутствует проблема совместимости
Программные устройства
appliances, rPath Conary
Тонкая
ThinApp, App-V, XenApp, klik, Zero Install, PBI
Смешанное решение
Жёстко централизованные и SaaS-среды
Жизненный цикл ПО
Разработка
Дистрибуция и установка
Эксплуатация
Сбор и обработка отзывов
Патчи и обновления
Особенности открытой модели
Итеративная разработка
Постоянный доступ сообщества
Доступ к любым изменениям
Разработка
Использование стороннего ПО
Интеграция с другим ПО
Поддержка разных ОС и сред
Дистрибуция
Проприетарный путь
бинарные пакеты на сайте вендора
Открытый путь
исходники на сайте вендора
бинарники и метаданные в репозитариях ОС
Смешанный путь
исходники на сайте вендора
бинарники и метаданные в репозитариях вендора
p2p - DebTorrent, apt-p2p
Установка
Привилегированная
Пользовательская
Кластер
Предприятие
Эксплуатация
Управление конфигурацией
Динамическое управление ресурсами
Фидбэк
Статистика использования
Отчёты об ошибках
Поддержка
Патчи и обновления
Пользовательский cherry-picking
Локальные изменения
Апгрейд конфигураций
Постоянное тестирование
Интероперабельность
Интеграция ПО в рабочую среду
Freedesktop
Заменимые провайдеры функциональности
MTA, браузер, видеоплеер
Провайдеры системных служб
mdns, ssl
Обмен данными
Локально, по сети
Итого
Управление ПО - медленно меняющаяся парадигма
Рост требований толкает интенсивное развитие
Текущее состояние - ряд полумер и обходных путей
Их конвергенция в комплексные решения - за будущим
Вид изнутри
Обновления
Сбор информации
Бекап
Тестирование
Установка
Откат
Сбор информации
Списки рассылки и форумы вендора
Списки рассылки и форумы ОС
Изменения
ChangeLog
Bug-Tracking System
Version Control System
Полный diff исходников
ports/Tools/scripts/ardiff
Бекап и откат
Бинарные пакеты про запас
База данных установленного ПО
Бекап и откат
portupgrade -b portmaster -b pkg_create -b cp /var/db/pkg /backup pkg_delete && pkg_add
Откат версий
из бекапа
csup date
portdowngrade
ftp.*.FreeBSD.org
Проверка состояния
pkg_create -b
pkg_delete
-n
ports/Tools/scripts/consistency-check
tripwire и другие IDS
логи инкрементальных бекапов
Ошибки
в портах
portupgrade
/var/db/pkg
Инфраструктура
Метаданные
Дистрибутивы и пакеты
Зеркало
Локальный cvsup
NFS
Дерево портов - только чтение
Дистрибутивы - доступ на запись или автозагрузка
Ссылки
Third-party software management under BSD, EuroBSDCon 2006
Codename Upak
有り難う!
Спасибо!
¿Вопросы?