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

February 22, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

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

    CrossPM Александр Ковалев Ведущий программист отдела технологий разработки (DevOps) [email protected] http://alkov.pro
  2. • Positive Technologies 15 лет; • Нас 750 человек (в

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

    данных Компании • структура репозиториев • учетные данные для доступа к ним • переменные окружения • прочие параметры • Реализовать все требования для Компании • Исправить ошибки • Предусмотреть разную структуру репозиториев • Навести «красоту» Постановка Т.З.
  4. • 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 Пример структуры репозитория
  5. Business progress: 20142015 • Uploader • Output • Cache •

    Locker • App • Config • Source • Parser • Adapter • Downloader • Package Расширение архитектуры
  6. Business progress: 20142015 • Тесты! • Разделение «ответственности» • MVP

    Выводы • Плюсы: • Универсальность • Интересный (challenging) проект • Понятно где и как расширять • Минусы: • Универсальность :) • Сложный (challenging) проект • При доработке легко поломать то, что уже было