Инструменты Google с открытым исходным кодом: как они обеспечивают непрерывную доставку

Опубликовано: 17 Апреля, 2023
Инструменты Google с открытым исходным кодом: как они обеспечивают непрерывную доставку

Непрерывная доставка вместе с культурой DevOps в значительной степени изменили правила развертывания программного обеспечения. В отрасли, где релизов было немного и они были далеко друг от друга, выпуск обновлений теперь можно сравнить с получением кофе. Такие компании, как Netflix и Google, ежедневно проводят десятки тысяч развертываний в постоянно растущем числе сервисов, каждый из которых имеет более миллиарда пользователей. Гигант поисковых систем всегда был хорошим парнем, и если бы для предприятия существовала награда за честную игру, Google, вероятно, получил бы ее. В отличие от многих своих конкурентов, Google, похоже, понял, что отдача экосистеме, за счет которой вы живете, — это то, что на самом деле обеспечивает устойчивость, и инструменты Google с открытым исходным кодом лидируют.

С большой властью приходит и большая ответственность, и Google хорошо использовал эту силу. Что касается контейнеров и технологий, позволяющих их использовать, Google использовала контейнеры Linux задолго до появления Docker, и сказать, что они многое сделали, чтобы сделать эту технологию доступной для всех, было бы преуменьшением. Kubernetes был запущен под руководством Google и, по сути, является продуктом более чем 15-летней работы в Google. Кроме того, самый популярный новый инструмент мониторинга, Prometheus, также имеет некоторые корни в Google и недавно был добавлен в Cloud Native Computing Foundation.

Непрерывная доставка

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

Изображение 14575
Flickr / Эмран Кассим

Чтобы добиться успеха с CD, важно помнить, что вам нужно иметь много недолговечных сред разработки и тестирования, чтобы обрабатывать все частые изменения кода, и Kubernetes идеально подходит для этого. Основными принципами, на которых основан CD, являются постановка и подготовка к любым возможным случаям, автоматизация и выполнение всего, чтобы избежать простоев. Например, инструмент с открытым исходным кодом Chaos Monkey от Netflix активно нарушает работу собственных сервисов, чтобы убедиться, что все всегда готовы к любым неожиданностям.

Kubernetes в Spinnaker

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

Хотя Kubernetes отлично справляется со своими задачами, развертывание в нескольких средах все же требует определенного опыта. Хотя в Kubernetes есть отличные API для развертывания, этого не всегда достаточно для полностью автоматизированного развертывания. Spinnaker заполняет этот пробел, позволяя вам организовывать несколько шагов, которые определяют конвейеры развертывания, и настраивать каждый шаг отдельно. Netflix имеет большой опыт в этой области, поскольку использует архитектуру микросервисов для обеспечения потокового видео с частым развертыванием кода на всех платформах.

Spinnaker, многооблачная платформа непрерывной доставки с открытым исходным кодом, особенно полезна для быстрого и точного выпуска обновлений. Это был последний объект внимания Google. Первоначально разработанный как замена Netflix Asgard, Google заинтересовался проектом примерно в 2014 году, когда он находился в разработке и производстве в Netflix около года. Spinnaker был выпущен на GitHub в ноябре 2015 года в сотрудничестве с Google и с тех пор набирает популярность на предприятиях.

Spinnaker был разработан с учетом перекрестной совместимости и микросервисной архитектуры. Другими крупными партнерами являются Microsoft и Pivotal. На сегодняшний день Spinnaker может одновременно развертывать и управлять кластерами как в AWS, так и в Google Cloud Platform с полной функциональной совместимостью между обоими поставщиками облачных услуг.

Как это работает

Spinnaker в настоящее время используется в производстве рядом крупных компаний, включая Netflix, Waze, Target и Cloudera. Его растущая популярность связана с тем, что вы можете установить его локально, локально или в облаке, работая либо на виртуальной машине, либо в Kubernetes. Это также помогает упростить процесс развертывания, отделив конвейеры доставки от вашего облачного провайдера. Он делает это, разбивая конвейеры на этапы, которые могут запускаться событиями из Jenkins, Travis CI, реестров Docker, Git, по расписанию, подобному cron, или даже другими конвейерами. Эти этапы могут состоять практически из всего, что вы хотите, например интеграции, системных тестов, раскрутки группы серверов вверх или вниз или ручных утверждений.

Spinnaker также легко интегрируется с существующими рабочими процессами непрерывной интеграции и в настоящее время имеет встроенную поддержку Google Compute Engine, Google Container Engine, Google App Engine, AWS EC2, Microsoft Azure, Kubernetes и OpenStack.

Мультиоблако становится реальностью

Изображение 14576 Независимо от того, выпускаете ли вы версию для нескольких облаков или просто боитесь привязки к поставщику, Spinnaker поможет развернуть ваше приложение по мере необходимости. Платформа Netflix с ее нынешней архитектурой построена на AWS, и очевидным следствием этого является то, что Netflix пытается выйти из этих отношений с AWS. Это может быть слух, основанный на общеизвестном факте, что Amazon сама вышла на рынок видеоуслуг с Amazon Prime Video и имеет историю пренебрежительного отношения к конкурирующим продуктам на своем портале онлайн-покупок. Netflix утверждает, что основным мотивом этого проекта с открытым исходным кодом является найм и установление контакта с лучшими специалистами в отрасли. Это то, что признали многие компании, поскольку нет лучшего способа протестировать разработчиков, чем заставить их работать над вашим проектом бесплатно.

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

Спинакер 1.0

В недавнем выпуске Spinnaker 1.0 был представлен новый инструмент командной строки под названием Halyard, который помогает администраторам устанавливать, настраивать и обновлять готовый к работе экземпляр Spinnaker, в отличие от предыдущего выпуска, в котором каждым микросервисом, составляющим Spinnaker, приходилось управлять отдельно.. Запуская код развертывания через предсказуемый цикл развертывания программного обеспечения с широкими возможностями настройки, Spinnaker устраняет неопределенность, которая ранее преследовала множество развертываний микросервисов. На данный момент Spinnaker обслуживает более 97% внутренних развертываний в Netflix, а благодаря его тесной совместимости с Kubernetes неудивительно, что Google занялся этим раньше всех.

Поскольку идет массовый переход к непрерывной доставке, нам нужна вся помощь, которую мы можем получить от первопроходцев, таких как Google. Благодаря Kubernetes, а теперь и Spinnaker, инструменты Google с открытым исходным кодом играют свою роль, внося значительный вклад в сообщество открытого исходного кода и команды DevOps во всем мире.