Для более детального понимания процесса web разработки и доработки с использованием разделения на dev и production серверы, систем управления задачами (JIRA) и контроля версий (Git с GitHub), рассмотрим каждый этап более подробно.
Шаг 1: Управление задачами через JIRA
-
Создание задачи:
- Инициация: Все начинается с создания задачи в JIRA, где указываются детали проблемы или описание новой функциональности, которую нужно реализовать.
- Документация: К задаче прикрепляются требования, макеты, диаграммы или другие важные документы, которые могут помочь в разработке.
-
Назначение задачи:
- Распределение ответственности: Задача назначается мне
Шаг 2: Разработка на dev сервере
-
Создание ветки в Git:
- Ответвление: Я создаю новую ветку из основной ветки (main). Название ветки соответствует идентификатору задачи в JIRA для лучшей организации и отслеживания.
-
Разработка и тестирование:
- Кодирование: Реализую требуемые изменения или новые функции.
- Локальные тесты: Выполняю первичные тесты на локальной машине или на dev сервере для проверки функциональности.
- Dev тестирование: После локальных тестов код развертывается на dev сервере, где проводится дополнительное тестирование, включая интеграционные тесты и тестирование пользовательского интерфейса.
-
Код-ревью:
- Пересмотр кода: После завершения разработки и тестирования код отправляется на ревью. Другие разработчики (или тимлид) проверяют код на соответствие стандартам качества и предлагают возможные улучшения.
Шаг 3: Интеграция и деплой
-
Закрытие задачи в JIRA:
- Подтверждение выполнения: После успешного код-ревью и окончательного тестирования задача в JIRA закрывается, отмечая её как выполненную.
-
Слияние ветки в основную:
- Pull Request: Создается pull request на GitHub, который должен быть одобрен перед слиянием с основной веткой. Это финальный шаг контроля качества.
-
Автоматизация деплоя через GitHub Actions:
- Настройка Workflow: Настройка автоматического workflow в GitHub Actions для запуска на каждый push в основную ветку, включающего тесты, сборку проекта и деплой на production сервер.
- Деплой на production: После успешного прохождения всех тестов и одобрения, изменения автоматически развертываются на production сервере. Включается очистка кеша для корректного отображения изменений.
Шаг 4: Пост-деплой операции
-
Мониторинг и логирование:
- Наблюдение за системой: Активируется система мониторинга и логирования на production сервере для отслеживания состояния системы и быстрого реагирования на возникающие проблемы.
-
Обратная связь:
- Сбор и анализ данных: Разработчики анализируют обратную связь от пользователей и мониторят систему на предмет возможных проблем после релиза.
-
Оптимизация производительности:
- Анализ производительности: После деплоя анализируются показатели производительности системы. При необходимости проводятся дополнительные оптимизации, направленные на улучшение скорости загрузки страниц, эффективность использования ресурсов сервера и уменьшение времени отклика.
-
Управление инцидентами:
- Быстрое реагирование: В случае обнаружения проблем после деплоя команда быстро реагирует, чтобы минимизировать воздействие на пользователей. Это включает в себя быстрое восстановление предыдущей версии при необходимости.
- Постоянный анализ: Проводится постоянный анализ логов и системных сообщений для выявления и предотвращения возможных будущих проблем.
-
Обновление документации:
- Документирование изменений: Все изменения в коде и новые функции документируются. Это обновление технической документации необходимо для поддержки, обучения и будущих разработок.
- Обмен знаниями: Проводятся регулярные сессии обмена знаниями между членами команды для обеспечения понимания нововведений и изменений в системе.
-
Планирование будущих итераций:
- Анализ и планирование: Основываясь на полученных данных и обратной связи от пользователей, команда анализирует результаты и планирует следующие шаги для дальнейшего улучшения продукта.
- Создание новых задач в JIRA: На основе анализа создаются новые задачи в JIRA для следующего цикла разработки.
Дополнительные инструменты и практики
-
Использование Docker:
- Контейнеризация: Использование Docker для развертывания приложений может значительно упростить процесс развертывания и гарантировать консистентность среды между dev и production серверами.
- Управление зависимостями: Docker облегчает управление зависимостями и настройками среды, минимизируя "работает у меня" синдром.
-
Интеграция с CI/CD инструментами:
- Непрерывная интеграция и доставка: Интеграция с инструментами CI/CD позволяет автоматизировать тестирование и деплой, обеспечивая высокую частоту релизов с минимальными рисками.
- Автоматизация тестирования: Автоматическое выполнение различных уровней тестирования (юнит-тесты, интеграционные тесты, тесты производительности) при каждом изменении кода помогает поддерживать высокое качество продукта.
-
Резервное копирование и восстановление:
- Стратегии резервного копирования: Регулярное резервное копирование данных и настроек системы является критически важным для восстановления после сбоев.
- Планы восстановления: Наличие четкого плана восстановления после сбоя обеспечивает быстрое восстановление работоспособности сервиса без значительных потерь данных.
Эти шаги и дополнительные практики помогают создать эффективный процесс разработки и поддержки интернет проектов, обеспечивая стабильность, безопасность и инновационность в долгосрочной перспективе.