CI/CD Flashcards

1
Q

Что такое CI/CD?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое SDLC?(Software Development Life Cicle)

A

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: разворачивание в среде.
И пошли по кругу.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое Waterfall?

A

Waterfall - это модель разработки программного обеспечения, в которой процесс разработки представлен последовательными этапами, которые выполняются по очереди, как вода, стекающая по каскаду. Эта модель предполагает, что каждый этап завершается полностью до перехода к следующему, и изменения в одном этапе могут быть внесены только после завершения предыдущего этапа. Модель Waterfall обычно включает в себя следующие этапы: анализ требований, проектирование, реализация, тестирование и сопровождение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое CI / CD?

A

Интерфейс Взаимодействия между командами. Комбинация непрерывной интеграции и непрерывного развёртывания в процессе разработки.
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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие есть метрики в CI/CD?

A

Lead Time: время от идеи до Deploy to TProduction
Deployment Frequency: как часто мы доставляем клиентам новые версии приложения
Deployment Failure Rate: процент ошибочных разворачиваний приложения
MTTR: Mean Time To Restore / Recover: сколько времени на восстановление системы (откатка продакшна на предыдущую рабочую версию / исправление бага )

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Инструменты соблюдения CI/DC

A

Содержат пайплайны, соответствующие этапам CICD
GitLab CI
GitHub Actions
Jenkins

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое среда / environment?

A

https://ru.hexlet.io/blog/posts/environment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Зачем нужен DEVOps?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly