Руководство по подготовке приложений к производству – CodesCode

Развертывание приложения в производственной среде - это не конечный этап, а очень важный этап жизненного цикла разработки программного обеспечения.

Развертывание приложения в производственной среде является не конечной точкой, а очень важным этапом жизненного цикла разработки программного обеспечения. Существует множество факторов, которые могут пойти не так, особенно когда вы разрабатываете новый сервис, развертываете его в первый раз или выпускаете крупное обновление функций. Чтобы избежать возникновения инцидентов, этот руководство поможет вам создать план развёртывания и управления вашим приложением в производственной среде.

Готовность к работе в производстве

  1. Обзор архитектуры: Я знаю, что это очень первый шаг перед началом разработки. Но часто, по мере развития проекта, многое меняется, и архитектура документов устаревает. Всегда полезно обновлять документацию и проверять ее перед финальным релизом.
  2. Безопасность: Безопасность является еще одним важным аспектом здорового сервиса. Это гарантирует сохранность хранящихся и передаваемых данных между различными подсистемами. Проверка и обеспечение соблюдения всех хороших практик безопасности перед выпуском сервиса поможет в долгосрочной перспективе.
  3. Панель управления сервисом: Набор мониторинговых панелей управления сервисом, объединенных в одном месте, чтобы обеспечить комплексный обзор состояния и производительности сервиса. Это поможет в понимании различных компонентов и использования приложения.
  4. Тревоги: Есть несколько стандартных тревог, таких как память, процессор, графический процессор и т. д. (пороговое значение составляет 70% или 80%), которые сообщат вашей команде о потенциальной проблеме и помогут предотвратить ее. Это событие поможет вам применить правильные методологии масштабирования вашего приложения по мере необходимости. Есть determinantы, которые неизвестны во время релиза, и вполне допустимо установить произвольное число для срабатывания тревоги по такому метрике.
  5. Масштабирование, кэширование и задержка: Каждое приложение создается для определенного количества пользователей и определенного числа транзакций, которые оно может поддерживать. Но часто нам необходима готовность масштабироваться в зависимости от использования. Всегда полезно использовать правильные коэффициенты масштабирования для автоматического масштабирования и подстройки приложения на основе различных параметров, чтобы избежать простоя или отрицательного влияния на клиента. Убедитесь, что реализована правильная система кэширования для кэширования и инвалидации кэшированных данных. Это поможет вам поддерживать необходимый уровень обслуживания с низкой задержкой.
  6. Бета-тестирование: Бета-тестирование предоставляет среду разработчика для тестирования потока, взаимодействия и полной работоспособности приложения. Это помогает повысить уверенность в его работе.
  7. Гамма-тестирование или тестирование на приемку пользователей (UAT): Всегда лучше протестировать ваше приложение/функцию с определенной группой отважных пользователей, которые могут дать обратную связь на основе реального использования. Это также поможет вам протестировать ваше приложение перед его распространением на более широкую аудиторию.
  8. Руководства для эксплуатации: Существуют ситуации, когда определенные наборы ручных операций требуются для выполнения определенных задач, например, добавление пользователей, перенос существующих клиентов и т. д. Следует тщательно задокументировать эти операции, чтобы избежать проблем.
  9. Покрытие модульными тестами: Определите минимальные критерии покрытия, например, 80% или 90%, и следуйте им при написании модульных тестов. Чем лучше покрытие, тем меньше вероятность возникновения ошибок.
  10. Интеграционные тесты: Модульные тесты – это отличный способ выявить проблемы с функцией или участком кода, но интеграционный тест поможет вам протестировать функциональность в целом. Это также обеспечит независимость будущих изменений от нарушения существующей функциональности.
  11. Процесс управления изменениями (CM): С третьего пункта начинаем говорить о руководствах для эксплуатации. В то время как руководства для эксплуатации описывают этапы выполнения ручных операций, процесс управления изменениями гарантирует соблюдение правил и документацию таких изменений. Это устанавливает лучшие практики для любого ручного изменения и помогает избежать проблем в производстве.
  12. CI/CD конвейер: Избегайте ручного вмешательства, насколько это возможно. Полноценный CI/CD конвейер обеспечит правильный процесс рассмотрения изменений, модульного тестирования и интеграционного тестирования.
  13. Тестирование разработчиков: Проведите максимальное количество тестирования разработчиков для всех возможных сценариев, о которых можете подумать. Это повысит качество результатов и обеспечит безопасность кода, развернутого в производстве.
  14. План смягчения инцидентов: Хотя система может быть создана и разработана наилучшим образом, всегда будут существовать какие-то известные или неизвестные риски. Всегда полезно задокументировать план смягчения риска на случай возникновения инцидентов. Например, что делать, если веб-сервер выйдет из строя, что делать, если перенаправление веб-страницы сломано и т.д.? План смягчения поможет разработчикам быстро реагировать в случае инцидента. “Разрабатывайте наилучшее; готовьтесь к худшему!”
  15. Документация зависимостей: Если ваше приложение зависит от другого приложения или нескольких приложений, осмотрите их, задокументируйте и создайте план смягчения для таких ситуаций, как что делать, если этот сервис начнет применять ограничения, что делать, если сервис не работает и т.д.
  16. Журналирование: Убедитесь, что реализовано правильное журналирование для всех сценариев, таких как информация, ошибка, предупреждение или отладка. Также обеспечьте, чтобы в журнале не печатались критические данные, и для разных стадий реализован соответствующий уровень журнала.
  17. Тестирование нагрузкой: Проведение тестирования нагрузкой на ваше приложение позволит определить момент, когда оно может выйти из строя. Это поможет вам реализовать правильный механизм масштабирования для избежания простоя.
  18. Механизм отката: Что если в производство попадет неправильно развернутое приложение? Что если непроверенный код попадет в производство? Что, если развернутый код некорректно функционирует в производстве?

    Заключение

    В заключение, наличие подробной документации, в которой фиксируются различные данные, не только обеспечивает более безопасную разработку, но и обеспечивает безопасное развертывание и качественное обслуживание.


Leave a Reply

Your email address will not be published. Required fields are marked *