Руководство по подготовке приложений к производству – CodesCode
Развертывание приложения в производственной среде - это не конечный этап, а очень важный этап жизненного цикла разработки программного обеспечения.
Развертывание приложения в производственной среде является не конечной точкой, а очень важным этапом жизненного цикла разработки программного обеспечения. Существует множество факторов, которые могут пойти не так, особенно когда вы разрабатываете новый сервис, развертываете его в первый раз или выпускаете крупное обновление функций. Чтобы избежать возникновения инцидентов, этот руководство поможет вам создать план развёртывания и управления вашим приложением в производственной среде.
Готовность к работе в производстве
- Обзор архитектуры: Я знаю, что это очень первый шаг перед началом разработки. Но часто, по мере развития проекта, многое меняется, и архитектура документов устаревает. Всегда полезно обновлять документацию и проверять ее перед финальным релизом.
- Безопасность: Безопасность является еще одним важным аспектом здорового сервиса. Это гарантирует сохранность хранящихся и передаваемых данных между различными подсистемами. Проверка и обеспечение соблюдения всех хороших практик безопасности перед выпуском сервиса поможет в долгосрочной перспективе.
- Панель управления сервисом: Набор мониторинговых панелей управления сервисом, объединенных в одном месте, чтобы обеспечить комплексный обзор состояния и производительности сервиса. Это поможет в понимании различных компонентов и использования приложения.
- Тревоги: Есть несколько стандартных тревог, таких как память, процессор, графический процессор и т. д. (пороговое значение составляет 70% или 80%), которые сообщат вашей команде о потенциальной проблеме и помогут предотвратить ее. Это событие поможет вам применить правильные методологии масштабирования вашего приложения по мере необходимости. Есть determinantы, которые неизвестны во время релиза, и вполне допустимо установить произвольное число для срабатывания тревоги по такому метрике.
- Масштабирование, кэширование и задержка: Каждое приложение создается для определенного количества пользователей и определенного числа транзакций, которые оно может поддерживать. Но часто нам необходима готовность масштабироваться в зависимости от использования. Всегда полезно использовать правильные коэффициенты масштабирования для автоматического масштабирования и подстройки приложения на основе различных параметров, чтобы избежать простоя или отрицательного влияния на клиента. Убедитесь, что реализована правильная система кэширования для кэширования и инвалидации кэшированных данных. Это поможет вам поддерживать необходимый уровень обслуживания с низкой задержкой.
- Бета-тестирование: Бета-тестирование предоставляет среду разработчика для тестирования потока, взаимодействия и полной работоспособности приложения. Это помогает повысить уверенность в его работе.
- Гамма-тестирование или тестирование на приемку пользователей (UAT): Всегда лучше протестировать ваше приложение/функцию с определенной группой отважных пользователей, которые могут дать обратную связь на основе реального использования. Это также поможет вам протестировать ваше приложение перед его распространением на более широкую аудиторию.
- Руководства для эксплуатации: Существуют ситуации, когда определенные наборы ручных операций требуются для выполнения определенных задач, например, добавление пользователей, перенос существующих клиентов и т. д. Следует тщательно задокументировать эти операции, чтобы избежать проблем.
- Покрытие модульными тестами: Определите минимальные критерии покрытия, например, 80% или 90%, и следуйте им при написании модульных тестов. Чем лучше покрытие, тем меньше вероятность возникновения ошибок.
- Интеграционные тесты: Модульные тесты – это отличный способ выявить проблемы с функцией или участком кода, но интеграционный тест поможет вам протестировать функциональность в целом. Это также обеспечит независимость будущих изменений от нарушения существующей функциональности.
- Процесс управления изменениями (CM): С третьего пункта начинаем говорить о руководствах для эксплуатации. В то время как руководства для эксплуатации описывают этапы выполнения ручных операций, процесс управления изменениями гарантирует соблюдение правил и документацию таких изменений. Это устанавливает лучшие практики для любого ручного изменения и помогает избежать проблем в производстве.
- CI/CD конвейер: Избегайте ручного вмешательства, насколько это возможно. Полноценный CI/CD конвейер обеспечит правильный процесс рассмотрения изменений, модульного тестирования и интеграционного тестирования.
- Тестирование разработчиков: Проведите максимальное количество тестирования разработчиков для всех возможных сценариев, о которых можете подумать. Это повысит качество результатов и обеспечит безопасность кода, развернутого в производстве.
- План смягчения инцидентов: Хотя система может быть создана и разработана наилучшим образом, всегда будут существовать какие-то известные или неизвестные риски. Всегда полезно задокументировать план смягчения риска на случай возникновения инцидентов. Например, что делать, если веб-сервер выйдет из строя, что делать, если перенаправление веб-страницы сломано и т.д.? План смягчения поможет разработчикам быстро реагировать в случае инцидента. “Разрабатывайте наилучшее; готовьтесь к худшему!”
- Документация зависимостей: Если ваше приложение зависит от другого приложения или нескольких приложений, осмотрите их, задокументируйте и создайте план смягчения для таких ситуаций, как что делать, если этот сервис начнет применять ограничения, что делать, если сервис не работает и т.д.
- Журналирование: Убедитесь, что реализовано правильное журналирование для всех сценариев, таких как информация, ошибка, предупреждение или отладка. Также обеспечьте, чтобы в журнале не печатались критические данные, и для разных стадий реализован соответствующий уровень журнала.
- Тестирование нагрузкой: Проведение тестирования нагрузкой на ваше приложение позволит определить момент, когда оно может выйти из строя. Это поможет вам реализовать правильный механизм масштабирования для избежания простоя.
- Механизм отката: Что если в производство попадет неправильно развернутое приложение? Что если непроверенный код попадет в производство? Что, если развернутый код некорректно функционирует в производстве?
Заключение
В заключение, наличие подробной документации, в которой фиксируются различные данные, не только обеспечивает более безопасную разработку, но и обеспечивает безопасное развертывание и качественное обслуживание.
Leave a Reply