От задачи до production

или "Как мы ведем разработку"

Andrey F. Kupreychik @ Bitworks

Bitworks Software

Основана в 2005 году в Томске

В штате более 50 сотрудников

Направления:

  • Высокопроизводительные системы высокой доступности
  • Контентные проекты
  • Data mining
  • ЦОД и облачные услуги (NetPoint)
    • Dedicated/VPS/Hosting
    • Хранение и обработка данных
    • Системное администрирование

Инструменты разработки

Наш минимальный набор:

  • Continuous integration система (Jenkins)
  • VCS (git + gitolite)
  • Project management система (redmine)

***

От задачи до production

Redmine workflow

Задачи и GIT

Тысяча и одно окружение

Поддержка со стороны проекта

Конфиг по домену (например ticket1111.test.project.com):

  • namespace для БД
  • Имена очередей
  • Префиксы имен загружаемых файлов
  • и так далее...

Развертывание и свертывание

  • База данных
  • Файлы
  • Код
  • Сервисы окружения

А для apache это просто:


## ticket1214.test.project.com
ServerName test.project.com
ServerAlias *.test.project.com
VirtualDocumentRoot /var/www/vhosts/%-4.0/public_html
                

Code-review и unit-тестирование

Ручные тесты и автотестирование

  • Быстрое ручное тестирование нового кода
  • Функциональное автоматизированное тестирование
  • Три этапа тестирования:
    • отдельно
    • в составе релиза
    • на production

Сборка релизов

Заливка в прод


git checkout production
git pull
git merge --no-ff origin/ticket3333 # release ticket
git push origin production
            

Облегчаем свою жизнь

  • Любая задача подчиняется процессу, абсолютно любая!
  • Изменения в БД только через миграции.
  • Соблюдайте принципы, бейтесь за архитектуру.
  • Код не понятен - код-ревью не пройден.
  • Писать тесты - полезный навык

Немного фактов

  • Счетчик тикетов в редмайне скоро отсчитает 30000 тикетов
  • У нас бывает до 50 разрабатываемых/тестируемых фич одновременно
  • За последние 3 года мы откатили с production только один релиз
  • Ведущие разработчики знают до 90% классов в проекте как свои 5 пальцев

Спасибо за внимание