Рубрики
Uncategorized

Начало работы с CI/CD на AWS

В этом посте вы узнаете, как CI/CD работает на AWS. Tagged with AWS, DevOps, новички.

В современном быстро растущем мире каждое предприятие сталкивается с проблемой сопоставления своих темпов с ожиданиями клиентов и скоростью доставки программного обеспечения. Непрерывная интеграция/непрерывная доставка (CI/CD) является частью DevOps Это может помочь в достижении быстрых изменений в программном обеспечении при сохранении стабильности и безопасности системы. В этом посте вы узнаете, как CI/CD работает на AWS Анкет

Этот пост — выдержка, взятая из книги Packt Publishing под названием «Сертифицированный разработчик AWS — помощник руководства — второе издание» и написано Vipul Tankariya и Bhavin Parmar. Эта книга проведет вас через AWS DynamoDB Служба базы данных NOSQL, Amazon Simple Queue Service (SQS) и обзор CloudFormation и многое другое.

Существуют различные отдельные веб -сервисы AWS для DevOps, такие как CodeCommit, Codebuild, Codedeploy и Codepipeline. Соответственно, эти службы AWS действуют как хранилище исходного кода и службы непрерывной интеграции, которая отвечает за составление исходного кода, запуск тестов и производство программных пакетов, готовых к развертыванию. Служба развертывания может автоматизировать развертывание программного обеспечения на различных сервисах AWS Compute и локальных серверах, а также автоматизировать фазы сборки, тестирования и развертывания для процесса выпуска. Для реализации гибкой процесса и культуры DevOps в ИТ -предприятиях, вручную перемещение кода от разработки к производству может быть трудоемким и подверженным ошибкам. Кроме того, в случае сбоя на любом шаге, может потребоваться сменить изменение и восстановить предыдущую стабильную версию. Если такая ошибка возникает в производственной среде, она также может напрямую повлиять на доступность бизнеса. С другой стороны, мы можем думать о CI/CD как о сборочной линии. Сердце CI/CD пишет или проектирует Codepipeline Анкет

Шаги можно управлять с самого начала, когда новая часть кода объединяется с главной филиалом из разработки (обычно, мастер -филиал в репозитории состоит из окончательного кода для использования в бизнесе) до последнего этапа развертывания Скомпилировано и протестировано программное обеспечение в производственную среду. CI/CD останавливает доставку плохого кода в производственную среду, внедряя все необходимые тесты, такие как модульные тесты, интеграционные тесты, нагрузочные тесты и т. Д., В трубопровод.

Лучшая практика — проведение таких тестов в тестовой среде, которая идентична производственной среде, для более точно калибровки и тестового кода. Реализация непрерывной доставки или непрерывного развертывания является одним из вариантов в практике CI/CD, где прохождение сборки развернуты непосредственно в производственную среду, а изменения приложений, проходящие через конвейер CI/CD.

Давайте посмотрим на какую -то основную терминологию с помощью следующего скриншота:

Основы непрерывной интеграции

Когда CI реализован, каждый из разработчиков в команде интегрирует свой код в основную ветвь общего хранилища несколько раз в течение дня. AWS CodeCommit или сторонние инструменты, такие как GitHub и Gitlab Может использоваться в качестве общего хранилища исходного кода для хранения разработчиков кода. Ранее, в традиционном программном обеспечении, разработка имела место в изоляции и была представлена в конце цикла. Основная причина частого отключения кода несколько раз в основную ветвь общего репозитория заключается в снижении затрат на интеграцию. Поскольку разработчики могут определить конфликты между старым и новым кодом на ранней стадии, легко разрешить эти конфликты и дешевле управлять.

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

  • Выполнить автоматическое сканирование качества кода, чтобы убедиться, что новый код придерживается стандартов кодирования корпоративных
  • Создайте код и запустите автоматические тесты

Цель CI — сделать новую интеграцию кода простым, легким и повторяемым, чтобы снизить общие затраты на сборку и выявить дефекты на ранней стадии. Успешная реализация CI внесет изменения в предприятие и будет действовать в качестве базы для CD. CI относится к этапам сборки и модульного тестирования процесса выпуска программного обеспечения. Каждый новый выпуск Commit запускает автоматическую сборку и тест.

Основы непрерывной доставки

CD является следующей фазой CI, и он автоматизирует толкание приложений в различные среды, от разработки до тестирования и предварительного производства. Также возможно иметь более одной среды разработки и тестирования для изменений приложений, которые проводятся для различных отдельных тестов и обзора. Даже если код прошел все тесты, CD автоматически не продвигает новые изменения в производство. Но это гарантирует, что кодовая база развернута, и сборки готовы к развертыванию в производственную среду в любое время.

Команды могут быть уверены, что они могут выпустить программное обеспечение, когда им нужно без сложной координации или тестирования поздней стадии. Amazon Codepipeline может использоваться для создания трубопроводов, а Amazon Codedeploy может использоваться для развертывания вновь созданного кода в различные услуги вычислительных услуг AWS или в различных средах от разработки до производства.

В целом, с помощью графиков выпуска CD (ежедневно, еженедельно, две недели или ежемесячно) в соответствии с требованиями бизнеса, для производства развернуты новые функции для производства по этим конкретным графикам. Если бизнес разрешается, то разрабатывайте программное обеспечение в небольших партиях, так как легко устранять устранение неполадок, если есть проблема.

Непрерывное развертывание: расширение CD

Непрерывное развертывание является продолжением непрерывной доставки. Непрерывное развертывание автоматически развертывает каждую сборку и гарантирует, что сборка прошла весь жизненный цикл в производственную среду. Этот метод не ждет вмешательства человека, чтобы решить, использовать ли новую сборку в производственную среду; Как только он пройдет трубопровод развертывания, сборка будет развернута в производственной среде.

Следующая диаграмма помогает нам понять этот процесс:

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

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

Инструменты AWS для CI/CD

На более высоком уровне жизненный цикл разработки программного обеспечения может быть разбит на пять шагов, которые являются источником, строительностью, тестированием, развертыванием и монитором, как показано на следующем скриншоте:

Мы подробно рассмотрим каждый из этих шагов:

  • Источник : На этом первом этапе жизненного цикла разработки программного обеспечения разработчики много раз в общий филиал в репозитории общего исходного кода совершают свой исходный код для определения ошибок интеграции на ранних стадиях. После того, как функция, разработка, исправление ошибок или Hotfix завершены на соответствующей филиале, она будет объединена с главной ветвью для раскрытия разработки в производство, проходя через различные среды, такие как разработка и тест, и прохождение всех указанных тестов в кодепелине.
  • Сборка : На более раннем этапе, как только разработка будет рассмотрена и объединена в производство, обычно это запускает процесс сборки. Исходный код будет извлечен из указанного хранилища и филиала исходного кода, а качество кода будет проверено по стандартам предприятия. Как только качество кода будет принято, код готов к компиляции. Если исходный код записан на языке программирования компилятора, таким как Java, C/C ++ или .NET, он будет преобразован в двоичный файл. Этот двоичный выход также называется артефактами и хранится в репозитории артефактов. Файлы контейнеров Docker преобразуются в изображение контейнера Docker и хранятся в репозитории изображения контейнера.
  • Тест : На этом этапе артефакты извлекаются из репозиториев артефактов и развернуты в одном или нескольких тестовых средах для проведения одного или нескольких тестов, таких как тестирование нагрузки, тестирование пользовательского интерфейса, тестирование на проникновение и так далее. В целом, рекомендуется иметь тестовую среду, которая идентична производственной среде для проведения точных тестов.
  • Развернуть После того, как исходный код успешно прошел через все этапы сборки и тестов, которые определены в кодепиплинах, он готов к развертыванию в производство. В случае непрерывной доставки исходный код будет ждать вмешательства человека, прежде чем он будет развернут в производственной среде в предварительно определенную дату выпуска. Если было настроено непрерывное развертывание, то не имеет значения, что выводный артефакт одного действия используется на последовательных этапах или на некотором будущем. Код будет развернут для производства автоматически.
  • Монитор : После того, как пересмотренное программное обеспечение было развернуто для производства, пришло время контролировать ресурсы приложения и инфраструктуры на предмет ошибок и потребления ресурсов соответственно.

Теперь давайте посмотрим на тот же жизненный цикл разработки программного обеспечения с AWS Services :

Глядя на предыдущую диаграмму, услуги AWS можно объяснить следующим образом:

  • AWS CodeCommit : Это полностью управляемый хранилище исходного кода контроля версий для размещения частных репозиториев GIT. Он хорошо подходит для большинства потребностей в контроле версий на предприятиях. У него нет никаких ограничений на размер файла, тип файла или размер репозитория.
  • AWS Codebuild : Это полностью управляемая служба непрерывной интеграции, которая компилирует исходный код, запускает тесты и производит программные пакеты, называемые артефактами. Артефакты готовы к развертыванию в производство. Он автоматически строится для поддержки запуска нескольких сборок одновременно. Каждый коммит или слияние в мастер или настроенную филиал запустит индивидуальный процесс сборки.
  • AWS Codebuild + Сторонние инструменты : Кодовая строительство AWS может использоваться с сторонними инструментами для удовлетворения пользовательских требований к сборке и тестированию.
  • AWS Codedeploy : Это полностью управляемая служба развертывания, которая автоматизирует развертывание программного обеспечения для AWS Compute Services, таких как Amazon EC2, AWS Farget, AWS Lambda или локальные серверы. Эта услуга облегчает частоту выпуска новых функций приложения, управляя сложностью обновления приложений. Это устраняет трудоемкий и подверженный ошибкам процесс обновления приложений. Он беспрепятственно работает с различным управлением конфигурацией, управлением источником, CI, непрерывной доставкой и непрерывными инструментами развертывания.
  • AWS CODESTAR : Это сочетает в себе различные предложения DevOps от веб -сервисов AWS под одной крышей, таких как AWS Codecommit, AWS CodeDeploy, AWS Codebuild и AWS Codepipeline. Каждый из этих веб -сервисов AWS может использоваться индивидуально из своей веб -консоли. Но вместо того, чтобы прыгать от одной веб -консоли на другую и иметь дело с отдельными ресурсами в каждом из этих веб -сервисов AWS, AWS Codestar предоставляет беспроблемный опыт, объединяя все услуги DevOps в одном месте в качестве проекта.

    Codestar предоставляет подготовленный шаблон на основе графического интерфейса, чтобы быстро и легко развернуть DevOps для нового проекта. Codestar предоставляет образец шаблона для веб -приложения, веб -службы, навыков Alexa, статического веб -сайта и правила конфигурации AWS с использованием C#, GO, HTML 5, Java, Node.js, PHP, Python или Ruby для развертывания AWS Elastic Beanstalk, Amazon EC2, или AWS Lambda.

  • Aws x-ray : Эта услуга предоставляет платформу для просмотра, фильтрации и получения понимания собранных данных для выявления проблем и возможностей оптимизации. Рентген AWS помогает разработчикам анализировать и отладку приложения с использованием распределенной трассировки. Короче говоря, эта услуга помогает нам понять основную причину проблем, ошибок и узких мест в приложении.

    Следующий скриншот является примером сбора и отчетности данных:

  • Amazon CloudWatch : Это услуга, которая контролирует ресурсы AWS и приложения клиентов, работающие на AWS в режиме реального времени. Он автоматически настроен, чтобы предоставить некоторые показатели по умолчанию для каждой службы AWS. Эти метрики различаются для каждого типа сервиса AWS и ресурсов. Он собирает мониторинг и эксплуатационные данные в форме журналов, метрик и событий.

  • AWS Cloud9 : Это богатая облачная интерактивная среда разработки (IDE) для написания, запуска и отладки кода в веб-браузере. Он также имеет встроенный терминал, предварительно настроенный с AWS CLI. Это экономит вас от установки и настройки IDE на локальной машине разработчика. Он также дает разработчикам бесплатно использовать ту же IDE с любой машины или устройства через веб -браузер. Он защищен, а также имеет функции сотрудничества.

Подводя итог, CI/CD — это механизм, который оптимизирует и автоматизирует жизненный цикл разработки. В этом посте познакомились с CI/CD на AWS и описали, как вы можете использовать его со своими рабочими нагрузками AWS. Чтобы дополнительно понимать упругие бобовые стебли и AWS Lambda, вы можете прочитать книгу Сертифицированный разработчик AWS — Ассоциированное руководство — Второе издание Packt Publishing.

Оригинал: «https://dev.to/kayis/getting-started-with-ci-cd-on-aws-3l66»