Инфраструктура
DevOps создаёт инфраструктуру разработки:
- сервис для управления пользователями и их правами: OpenLDAP и т.д.
- сервис для управления репозиториями: GitLab, Gitea и т.д.
- сервис для базы знаний: Confluence, DokuWiki и т.д.
- сервис для управления задачами: Jira и т.д.
- сервис для автоматического тестирования, сборки и деплоя: Gitlab, Drone и т.д.
- сервис для хранения пакетов/образов: pip, docker, debian, npm и т.д.
Описание проекта
Product Owner расписывает продукт в базе знаний.
Архитектор разбивает описание на сервисы и модули, описывает их взаимодействие между собой, выбирает платформы, фреймворки, БД, кэши, очереди, в общем, всё, на чём будет построен продукт.
Руководители групп разработчиков разбивает всё описанное на крупные задачи и начинает их декомпозицию.
Руководитель совместно с девопсом создаёт группы репозиториев под каждое направление разработки, предоставляет соответственные права разработчикам к нужным им репозиториям.
Разработчики, используя базу знаний и задачи из трекера реализуют задуманное.
Полезное
Следующее экономит время и ресурсы:
- определиться со стилем кода (python google style и прочие) и следовать ему;
- создать инструкцию по оформлению сообщений коммита и работе с ветками репозитория;
- каждый репозиторий должен содержать README.md (описание в формате markdown), в котором описано что это, как запустить локально, как протестировать локально, какие настройки требуются, какие дополнительные сервисы должны быть запущены;
- каждый сервис должен по умолчанию запускаться и работать (при запущенных сервисах, от которых он зависит), вся конфигурация должна определяться через переменные окружения, значения по умолчанию которых, способствует задачи запуска из коробки;
- код надо писать для людей, максимально просто и понятно, где приходится писать сложные конструкции или логику - надо обязательно подробно комментировать это место.
- максимально использовать типизацию и подписывать все функции;
- создать автотесты, которые не зависят от внешних сервисов, например, замокать обращения к БД и в интернет, т.к. вам не надо тестировать БД, вам надо тестировать свой код.
Сколько разработчиков надо
Как минимум надо два разработчика на каждое направление.
Рассмотрим, проект мобильного приложения:
- DevOps: 1-2
- Backend Devs: 2+
- iOS Devs: 2+
- Android Devs: 2+
- Designer: 1
- Testers: 2+
Итого 12 человек, считая Product Owner.
При такой минимальной команде проект лучше сделать за полгода, максимум год. Если сроки затягиваются, то люди начинают "выгорать" и уходить. Получается интересная ситуация: надо делать быстро релизы или увеличивать команду. Тут уже выбор за вами ;)
Услуга по развёртыванию инфраструктуры работки для Python проектов:
- Развёртывание Docker хоста;
- Развёртывание Docker Registry для хранения образов;
- Развёртывание БД PostgreSQL для сервисов;
- Развёртывание Gitea (хранилище репозиториев);
- Развёртывание Drone CI (автотестирование и деплой сервисов);
- Развёртывание DevPI (хранилище и прокси для PIP пакетов);
- Подключение этой инфраструктуры к вашему домену;
Опционально:
- Инструкция по подключению нового проекта в инфраструктуру;
- Инструкция по подключению гового проекта в систему деплоя на сервер;
- Инструкция по упаковке Django проекта в Docker контейнер;
- Инструкция по упаковке Python проекта в Docker контейнер;
- Инструкция по установке TLS/SSL сертификата на сервис.
Все сервисы закрыты TLS/SSL сертификатами.
Для развёртывания достаточно сервера 4GB+ RAM/80GB+ SDD.
Контакт: Руслан Попов