\documentclass{article} \input{settings/common-preamble} \input{settings/bmstu-preamble} \input{settings/fancy-listings-preamble} \author{Мещеринова Ксения Владимировна} \title{Телематика} \date{2023-02-08} \begin{document} \sloppy \fontsize{14}{18}\selectfont \maketitle \tableofcontents \newpage \section{Введение} DevOps -- стратегия разработки ПО, призванная устранить разрыв между разработчиками, и другими командами. Методология автомтизации технологических процессов сборки, настройки и развёртывания программного обеспечения. Методология предполагает активное взаимодействие специалистов по разработке со специалистами по информационно-технологическому обсулуживанию и взаимную интеграцию их технологических процессов друг в друга, для обеспечения высокого качества программного продукта. Методологии разработки - waterfall (последовательный переход от одного этапа к другому), agile (scrum, lean) -- гибкая методология, система идей. Ключевой принцип - разработка через короткие итерации. Водопадная модель разработки (Waterfall-разработка): \begin{itemize} \item Системные и программные требования: закрепляются в PRD (product requirements documents, документ требований к продукту). \item Анализ: воплощается в моделях, схемах и бизнес-правилах. \item Дизайн: разрабатывается внутренняя архитектура ПО, способы реализации требований; Не только интерфейс, и внешний вид ПО, но и его внутренняя структурная логика. \item Кодинг: непосредственно пишется код программы, идёт интеграция ПО. \item Тестирование: баг-тестеры (тестировщики) проверяют финальный продукт, занося в трекеры сведения о дефектах кода программы или функционала. В случае ошибок и наличия времени/финансов происходит исправление багов. \item Операции: продукт адаптируется под разные операционные системы, регулярно обновляется для исправления обнаруженных пользователями багов и добавления функционала. В рамках стадии также осуществляется техническая поддержка клиентов. \end{itemize} Основные принципы гибкой методологии: \begin{itemize} \item Люди и взаимодействие важнее процессов и инструментов \item работающий продукт важнее исчерпывающей документации \item сотрудничество с заказчиком важнее согласования условий контракта \item готовность к изменениям важнее следования первоначальному плану. \end{itemize} Обычно ИТ-команда это разработчики(Dev), тестировщики(QA), группа эксплуатации(Ops). Толчком к появлению девопс стало появление микросервисов. Цели девопс -- Сокращение времени выхода на рынок, надёжность (снижение частоты отказов новых релизов), сокращение времени выполнения исправлений, уменьшение количества времени на восстановления (в случае сбоя). девопс предлагает представителям ранее разрозненных подразделений координировать свои действия. Культура: совместная работа и согласованность, изменения в сфере участия и ответственности, сокращение циклов выпуска (не количество, а сами циклы), непрерывное обучение. Жизненный цикл приложения \begin{itemize} \item \textbf{Планирование} помогает обеспечить командам гибкость и прозрачность \begin{itemize} \item представляют, определяют и описывают функции и возможности создаваемых приложений \item отслеживают ход работы на низком и высоком уровнях детализации \item создают журналы невыполненной работы, отслеживая ошибки, и так далее. \end{itemize} \item \textbf{Разработка} включает написание, тестирование, проверку и интеграцию кода участниками команды. Быстро внедряют инновации, автоматизируя рутинные действия, а также запускают итерации с маленьким шагом при помощи автоматического тестирования и непрерывной интеграции. \item \textbf{Доставка} -- это процесс последовательного и надёжного развёртывания приложений в рабочих средах. Этап доставки также включает развёртывание и настройку полностью управляемой базовой инфраструктуры, лежащей в основе этих сред. \begin{itemize} \item определяют процесс управления выпусками \item устанавливают автоматические шлюзы, с помощью которых приложения перемещаются между этапами, пока не станут доступными клиентам \end{itemize} \item \textbf{Эксплуатация}. \begin{itemize} \item обслуживание \item мониторинг \item устранение неполадок приложений в рабочих средах \end{itemize} внедряя методики девопс, различные подразделения стремятся обеспечить надёжность системы и высокую доступность, свести простои к нулю, а также повысить уровень безопасности и усовершенствовать управление. \end{itemize} Девопс предполагает представителям ранее разрозненных подразделений компании координировать свои действия и совместно создавать более качественные и надёжные продукты (постоянная обратная связь и оптимизация). Совместная работа и согласованность, изменения в сфере участия и ответственности, сокращение циклов выпуска, непрерывное обучение. методики девопс \begin{itemize} \item непрерывная доставка (CI/CD) \item управление версиями (git) \item гибкая разработка (DevOps) \item инфраструктура как код (IaC) \item управление конфигурацией \item непрерывный мониторинг \end{itemize} \begin{figure}[H] \centering \includegraphics[width=12cm]{04-telematics-devops.png} \includegraphics[width=12cm]{04-t-devops-table.jpg} \end{figure} Внедрение облачных технологий в корне изменило способы создания развёртывания и эксплуатации приложений. Преимущества: затраты, скорость, глобальный масштаб, производительность, эффективность, надёжность, безопасность. Три способа развёртывания облачных служб: \begin{itemize} \item Публичное облако -- всё принадлежит облачному поставщику. \item частное облако -- ресурсы только одной компании, локаный ЦОД (иногда аутсорс ЦОД) \item гибридное облако \end{itemize} модели обслуживания: \begin{itemize} \item IaaS -- infrastructure (серверы, виртуальные машины, итд с оплатой по мере использования); \item PaaS -- platform (среда по управлению, доставке, итд, упрощает разработчикам настройку связок); \item Saas -- software (предоставление уже разработанного ПО как услуги); \end{itemize} В облаке, с помощью девопс возможно: \begin{itemize} \item создание собственных облачных приложений \item тестирование и сборка приложений \item хранение, резервное копирование, восстановление данных \item анализ данных \item доставка ПО по запросу \end{itemize} DevOps-инженер -- высококвалифицированный специалист, который отвечает за автоматизацию всех этапов создания приложений и обеспечивает взаимодействие программистов и системных администраторов. Прорабатывает сборку, доставку и тестирование. Build-инженер, Release-инженер, Automation-инженер, Security-инженер. \begin{itemize} \item [+] высокий заработок \item [+] востребованность \item [+] интересные задачи \item [+] перспектива карьерного роста \item [-] непрерывное обучение (\textit{а минус ли это? прим. Овчинников}) \item [-] необходимость знать много из разных областей \item [-] возможны стрессовые ситуации и высокая нагрузка \end{itemize} Необходимые знания: \begin{itemize} \item Основы программирования (базовый уровень, несколько языков) \item освоиться в принципах работы ОС \item понимать облачные и гибридные решения \item разбираться в системах оркестрации \item освоить принципы работы микросервисов \item понимать принципы работы с системами конфигурации \end{itemize} Используемые инструменты -- Jenkins, Docker, Kubernetes, Git, Приложения для управления инфраструктурой (Terraform), платформенные и облачные сервисы, утилиты мониторинга и оповещений. \end{document}