Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Проектирование абстрактной (конфигурируемой) архитектуры приложения на Python

Проектирование абстрактной (конфигурируемой) архитектуры приложения на Python

Александр Ковалёв (Positive Technologies) @ MoscowPython 43

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

Видео: http://www.moscowpython.ru/meetup/43/proektirovanie-abstraktnoj-konfiguriruemoj-arhitek/

Moscow Python Meetup
PRO

February 22, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Проектирование абстрактной
    (конфигурируемой)
    архитектуры приложения
    на Python
    на примере проекта CrossPM
    Александр Ковалев
    Ведущий программист отдела технологий разработки (DevOps)
    [email protected]
    http://alkov.pro

    View Slide

  2. • Positive Technologies 15 лет;
    • Нас 750 человек (в 2015 было 500);
    • В RND 500+ человек (6 центров разработки в
    России, 1 в Чехии и 1 в Лондоне);
    • Мы разрабатываем 10 продуктов. Среди наших
    клиентов Сбербанк, Газпром, Мегафон и РЖД;
    • 3 года в Positive Technologies есть отдел
    DevOps, который занимается автоматизацией и
    поддержкой разработки основных продуктов;
    • Доклад посвящен внутреннему устройству
    одного из средств этой автоматизации.

    View Slide

  3. 3
    CrossPM
    Пакетный менеджер
    с настраиваемой структурой репозиториев
    https://github.com/devopshq/crosspm
    установка:
    pip install crosspm
    использование:
    crosspm --help

    View Slide

  4. Business progress: 20142015
    Постановка Т.З.
    • Не должно быть внутренних данных Компании
    • структура репозиториев
    • учетные данные для доступа к ним
    • переменные окружения
    • прочие параметры
    • Реализовать все требования для Компании
    • Исправить ошибки
    • Предусмотреть разную структуру репозиториев
    • Навести «красоту»
    Постановка Т.З.

    View Slide

  5. • repo1
    • package
    • develop
    • package.1.0.1.2-feature1.tar.gz
    • package.1.0.1.3-feature2.tar.gz
    • master
    • package.1.0.1.5.tar.gz
    • repo2
    • package
    • ubuntu
    • gcc4
    • package.1.2.3-feature1.tar.gz
    • win
    • vc110
    • package.1.2.3-feature1.zip
    • vc120
    • package.1.2.3.nupkg
    Пример структуры репозитория

    View Slide

  6. Business progress: 20142015
    Схема новой реализации CrossPM

    View Slide

  7. Business progress: 20142015
    crosspm.yaml
    командная строка
    переменные окружения
    crosspm.adapters.*
    Схема новой реализации CrossPM

    View Slide

  8. Business progress: 20142015
    dependencies.txt
    Схема новой реализации CrossPM

    View Slide

  9. Business progress: 20142015
    • Uploader
    • Output
    • Cache
    • Locker
    • App
    • Config
    • Source
    • Parser
    • Adapter
    • Downloader
    • Package
    Расширение архитектуры

    View Slide

  10. Business progress: 20142015
    • Тесты!
    • Разделение «ответственности»
    • MVP
    Выводы
    • Плюсы:
    • Универсальность
    • Интересный (challenging) проект
    • Понятно где и как расширять
    • Минусы:
    • Универсальность :)
    • Сложный (challenging) проект
    • При доработке легко поломать то, что уже было

    View Slide

  11. Спасибо!
    Александр Ковалев
    Ведущий программист отдела
    технологий разработки (DevOps)
    [email protected]
    https://github.com/devopshq
    https://github.com/devopshq/crosspm
    [email protected]

    View Slide