CI/CD Flashcards
Что такое CI/CD?
Continuous Integration/Continuous Delivery
Continuous Integration - методология разработки и набор практик, при которых в код вносятся небольшие изменения с частыми коммитами в течение суток. И поскольку большинство современных приложений разрабатываются с использованием различных платформ и инструментов, то появляется необходимость в механизме интеграции и тестировании вносимых изменений.
С технической точки зрения, цель CI — обеспечить последовательный и автоматизированный способ сборки, упаковки и тестирования приложений. При налаженном процессе непрерывной интеграции разработчики с большей вероятностью будут делать частые коммиты, что, в свою очередь, будет способствовать улучшению коммуникации и повышению качества программного обеспечения.
Continuous Delivery - постоянная поддержка кода в состоянии готовом для выхода в продакшн.
Она автоматизирует развертывание приложений в различные окружения: большинство разработчиков работают как с продакшн-окружением, так и со средами разработки и тестирования.
цель Continuous Delivery (CD) состоит в том, чтобы автоматизировать и ускорить процесс доставки приложения в различные среды: тестовую, стейджинговую и производственную. Цель заключается в том, чтобы быстро и безопасно доставлять новые версии приложения в производственную среду, минимизируя возможные ошибки и устраняя риски.
Continuous Integration - это DevOps модель, в которой разработчики делают Commit кода в Repository(GitHub) и автоматически запускаются Build или компиляция этого кода, после этого запускаются автоматические тесты кода: Unit Test, Intagration Test, Functionality Test.
Continuous Delivery and Deplyment - это DevOps модель, в которой разработчики делают Commit кода в Repository и автоматически запускаются Build или компиляция этого кода, после этого запускаются автоматические тесты кода и готовый Artifact(скомпелированный код) делает Deploy в Staging, Production.
Что такое SDLC?(Software Development Life Cicle)
Software Development Life Cicle:
1) Requirement Analisis: анализ конкурентов и проблематики - участвуют топы
2) Planning
3) Design: Архитектура приложение на основе планирования
4) Build: артефакт на выходе
5) Testing: зациклено с п. 4. Unit / Continous (integrational / end-to-end / performance / security(DUST, …))
6) Deployment + Maintenance: разворачивание в среде.
И пошли по кругу.
Что такое Waterfall?
Waterfall - это модель разработки программного обеспечения, в которой процесс разработки представлен последовательными этапами, которые выполняются по очереди, как вода, стекающая по каскаду. Эта модель предполагает, что каждый этап завершается полностью до перехода к следующему, и изменения в одном этапе могут быть внесены только после завершения предыдущего этапа. Модель Waterfall обычно включает в себя следующие этапы: анализ требований, проектирование, реализация, тестирование и сопровождение.
Что такое CI / CD?
Интерфейс Взаимодействия между командами. Комбинация непрерывной интеграции и непрерывного развёртывания в процессе разработки.
CI - Continuous Integration
CD - Continuous Deployment / Delivery
CI: Build + Test Loop. Гарантирует, что на выходе мы получим протестированный, версионированный и готовый к деплою кусок или весь проект / микросервис.
CD:
Acceptance Test: передаем тестировщикам или разворачиваем на автотестировочном окружении -> Deploy to Staging (предпродакшн): разворачивание в демо-среде
-> Deploy to Production (Delivery: manual / Deployment: auto)
-> Smoke Tests: небольшие тесты, чтобы убедиться, что приложение уютно легло на среду.
https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbUE0OXk1UEhmMEo0Z2JBVVdlNHVaUG9SQ1VDUXxBQ3Jtc0tudWdvSUJFNElpM2xxbnB2VWVJYUNtMGMyZG44Y0Q0RS1OMERLQXcwcEhaTURXcW1LdmpJUTJXdWRvYlFTeElBQU45b2tXVzFaWENaeGdwaVhyZEVIb3RNdVBjT0laTHZvN2xtaFJUTFlfYXQ3YVAydw&q=https%3A%2F%2Fhabr.com%2Fru%2Fcompany%2Fotus%2Fblog%2F515078%2F&v=Hkq_78xSfSY
Какие есть метрики в CI/CD?
Lead Time: время от идеи до Deploy to TProduction
Deployment Frequency: как часто мы доставляем клиентам новые версии приложения
Deployment Failure Rate: процент ошибочных разворачиваний приложения
MTTR: Mean Time To Restore / Recover: сколько времени на восстановление системы (откатка продакшна на предыдущую рабочую версию / исправление бага )
Инструменты соблюдения CI/DC
Содержат пайплайны, соответствующие этапам CICD
GitLab CI
GitHub Actions
Jenkins
Что такое среда / environment?
https://ru.hexlet.io/blog/posts/environment
Зачем нужен DEVOps?
Чтобы наладить коммуникацию между разработкой, тестированием и сопровождением.