DevOps - DmitryGontarenko/usefultricks GitHub Wiki
DevOps
На рынке появляются маленькие компании, которые мгновенно реагируют на требования потребителей и быстро выводят новые продукты на рынок. Поэтому одна из важных задач по сохранению конкурентоспособности - сократить время вывода новых продуктов на рынок.
Одна из мер, которая позволяет добиться этой цели - это внедрение DevOps.
DevOps - акроним от англ. Development и Operations (разработка и эксплуатация). Это сочетание стандартов, практик и инструментов направленных на повышение эффективности производства ПО.
Все практики DevOps связаны в единый сквозной автоматизированный процесс, который условно можно поделить на несколько этапов:
- CI (Continuous Integration, непрерывная интеграция/сборка) - включает в себя написание кода, модульное тестирование, статический анализ кода и информационной безопасности, а также сборку и развертывание на средах разработки. Цель этого этапа - обнаружение дефектов на ранней стадии разработки.
- CDL (Continuous Delivery, непрерывная поставка) - включает регулярное развертывание результатов сборки исходного кода на среды тестирования и само тестирование. На этом этапе происходит функциональное, регрессионное, smoke, интеграционное и нагрузочное тестирование. Цель этого этапа - повышение скорости и качества тестирования, что непосредственно ведет к увеличению скорости вывода приложения в ПРОМ.
- CDP (Continuous Deployment, непрерывное развертывание) - на этом этапе проводится сквозное бизнес-тестирование (end-2-end), UAT-тестирование и развертывание приложения на ПРОМ.
Описание терминов, относящихся к этапам CI/CD:
Модульное тестирование - это изолированная проверка отдельных модулей исходного кода. Корректность реализации модуля определяется значениями выходных параметров методов и состоянием экземпляра тестируемого класса.
Интеграционное тестирование - вид тестирования, в рамках которого проводится проверка взаимодействия подсистем объекта тестирования.
UAT (User Acceptance Testing) - это приемочное тестирование (технического и (или) пользовательского вида), в рамках которого проводится проверка объекта тестирования на соответствие заданным требованиям для принятия решения по внедрению.
Статический анализ кода - это автоматический анализ исходного кода на предмет его соответствия правилам кодирования. Он позволяет обеспечить соответствие кода принятым стандартам, предотвращает дубликацию кода и позволяет избегать распространенных ошибок. Примером такого инструмента для анализа является SonarQube.
Регрессионное тестирование - это тестирование, направленное на обнаружение ошибок в уже протестированных участках программного кода. Регрессионные ошибки обнаруживаются, когда после внесения изменений в программу перестает работать то, что должно было продолжать работать.
Нагрузочное тестирование - тестирование производительности, сбор показателей и определение производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству).
Smoke-тестирование - проверки состояния системы в целом, что бы дать "зеленый свет" более тщательной проверке. Например, что web-сервер работает и отвечает кодом "200".
Сквозное тестирование (end-2-end, E2E) - тестирование от начала до конца. Состоит из тестирования новой функциональности, регрессионного тестирования и нагрузочного тестирования.
DevSecOps
DevSecOps - это развитие концепции DevOps, где помимо автоматизации затрагиваются вопросы обеспечения качества и надёжности кода.
DevSecOps обеспечивает интеграцию тестирования безопасности на ранних этапах жизненного цикла разработки ПО, а не в конце, когда обнаружение уязвимостей, требующих устранения, сложнее и дороже реализовать.
DevSecOps требует планирования безопасности приложений и инфраструктуры с самого начала. Правильные инструменты могут помочь достичь цели непрерывной интегрированной безопасности. Инструменты и процессы по работе с безопасностью также должны быть автоматизированы, чтобы не замедлять рабочий процесс DevOps.
DevSecOps может включаться в себя следующие важные компоненты:
- SAST (Static Application Security Testing) - анализ ПО, производимый без реального выполнения исследуемых программ. Для этого могут использоваться SonarQube, Checkmarx.
- DAST (Dynamic Application Security Testing) - это процесс анализа ПО для поиска уязвимостей с помощью имитируемых атак для запущенных приложений.
- IAST (Interactive Application Security Testing) - это общий термин для инструментов, сочетающих преимущества статического тестирования безопасности приложений (SAST) и динамического тестирования безопасности приложений (DAST).
- RASP (Runtime application self-protection) - это технология, которая встроена или связана с приложением или средой выполнения приложения и способна контролировать выполнение приложений, а также обнаруживать и предотвращать атаки в реальном времени.
- SCA (Software Composition Analysis) - это инструмент, который предназначен для автоматизированного обнаружения рисков при использовании в приложениях ПО с открытым исходным кодом (OSS).
Sources
Mellarius. Разработка и эксплуатация
Microfocus. What is SAST?
Microfocus. What is DevSecOps?
Microfocus. What is OWASP Top 10?