Мы довольно долго находимся в скрытом режиме, пытаясь как можно больше скрыть наши разработки и деятельность вокруг Bits-Service. Конечно, кое-какая информация просочилась туда и сюда, где мы не могли избежать этого. Но в целом нам это удалось сохранить в секрете.

Это, конечно, бессмысленно. Bits-Service разрабатывался открыто, как и любой другой настоящий проект с открытым исходным кодом, и развивается как проект Cloud Foundry Incubator. Что правда, так это то, что не было много информации о Bits-Service и о том, какую проблему он решает, за исключением некоторых Youtube видео с прошлых Cloud Foundry Summit.

Однако это скоро изменится, поскольку мы приближаемся к тому, чтобы стать стандартным компонентом Cloud Foundry. Это, конечно, вызывает вопросы: Что такое Bits-Service на самом деле? и Можете ли вы начать использовать его в развертывании Cloud Foundry уже сегодня?

Ответ на последний вопрос: «Да, вы можете использовать это!» А остальная часть этого поста объясняет, как и почему вы должны его использовать.

Что такое Bits-Service и зачем его использовать?

Чтобы объяснить это, давайте сначала рассмотрим контекст. Со временем у Облачного контроллера появилось немало обязанностей. Кто-то может сказать он немного раздулся. Стремясь разделить некоторые обязанности, которые в настоящее время выполняет Cloud Controller, мы решили перенести обработку битов в его собственный сервис, Bits-Service. Что такое биты в этом контексте? Все, что связано с файлами: ваш исходный код, также известный как пакет, капли, пакеты сборки и т. Д.

Итак, с одной стороны, Bits-Service на самом деле представляет собой усилие по гигиене дизайна, которое позволяет нам иметь независимую команду, работающую над обработкой битов Cloud Foundry, избегая расширения команды CAPI (которая разрабатывает Cloud Controller) более крупной команде, что означает, что мы просто следовали лучшим практикам в области архитектуры микросервисов.

С другой стороны, извлечение обработки битов из Cloud Controller открыло новые интересные возможности для повышения производительности Cloud Foundry. Это почему?

Облачный контроллер в настоящее время служит (среди прочего) двум целям:

  1. Он отвечает на кратковременные запросы, такие как cf apps, который просто запрашивает базу данных и немедленно возвращает ответ.
  2. Он отвечает на длительные запросы, такие как загрузка битов пакета или загрузка битов капли.

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

Теперь, когда обработка битов извлечена, мы можем заставить cf CLI напрямую взаимодействовать с Bits-Service. Это освобождает облачный контроллер от этой ответственности и позволяет нам увидеть реальный прирост производительности.

Для небольших развертываний Cloud Foundry, таких как тестовые среды, многое из вышеперечисленного не имеет большого значения. Однако в развертывании Cloud Foundry в масштабе IBM Cloud, где у нас есть огромное количество облачных контроллеров и большая нагрузка на обработку битов, этот рефакторинг действительно имеет значение.

Поскольку мы находимся в середине этой миграции, улучшения производительности пока нет. Но, включив Bits-Service в своем развертывании Cloud Foundry, вы освобождаете место для вышеописанных улучшений производительности, которые мы ожидаем итеративно внедрять в ближайшие месяцы.

С этим, как вы можете начать его использовать?

Включение службы Bits в Cloud Foundry

Приведенное ниже руководство предназначено для разработчиков, которые уже знакомы с развертыванием vanilla Cloud Foundry с использованием BOSH.

Новый и рекомендуемый способ развертывания Cloud Foundry - через cf-deployment. cf-release скоро будет устаревшим, поэтому я не буду здесь объяснять подход.

Благодаря модульной структуре cf-deployment, на самом деле особо нечего делать, за исключением включения пары экспериментальных файлов BOSH Ops и установки необходимых переменных Ops при условии, что в директоре BOSH уже есть действующий cloud-config, как описано в документацииcf-deployment.

Наш конвейер напр. развертывает Cloud Foundry с Bits-Service в нескольких средах, включая IBM Cloud, AWS и Bosh-Lite.

Команда генерации манифеста BOSH для нашего развертывания IBM Cloud выглядит примерно так:

bosh interpolate cf-deployment/cf-deployment.yml \
    --vars-store deployment-vars-cf.yml \
    -v system_domain=cf-deployment.dynamic-dns.net \
    -o cf-deployment/operations/experimental/bits-service.yml \
    -o cf-deployment/operations/experimental/enable-bits-service-https.yml \
    -o cf-deployment/operations/experimental/bits-service-s3.yml \
    -o cf-deployment/operations/scale-to-one-az.yml \
    -v 'aws_region="eu-west-1"' \
    -v 'blobstore_access_key_id="AKIAIOSFODNN7EXAMPLE"' \
    -v 'blobstore_secret_access_key="wJalrXUtnF...EXAMPLEKEY"' \
    -v 'resource_directory_key="ci-bits-service-blobs"' \
    -v 'buildpack_directory_key="ci-bits-service-blobs"' \
    -v 'droplet_directory_key="ci-bits-service-blobs"' \
    -v 'app_package_directory_key="ci-bits-service-blobs"'

Очевидно, вам необходимо настроить параметры system_domain, _9 _, _ 10_ и *_directory_keys в соответствии с вашей конкретной средой.

Теперь bosh deploy вот и все! Кажется простым? Это!

Вы увидите, что теперь в развертывании есть новое задание под названием bits-service. Это то, что теперь заботится об обработке битов.

Обратите внимание, что вы можете сделать это в существующем развертывании Cloud Foundry, учитывая, что вы используете ту же конфигурацию хранилища для Bits-Service, что и для Cloud Controller. Миграция происходит без проблем, и вы всегда можете вернуться. Мы очень позаботились о том, чтобы вы могли включить Bits-Service без перебоев в существующем развертывании Cloud Foundry.

Заключение

Bits-Service существует, и это реально. Скоро он станет стандартной частью Cloud Foundry, и поэтому мы призываем людей попробовать его. В этом посте я объяснил, почему мы создали Bits-Service и как каждый может начать использовать его сегодня.

В восторге от всего Cloud Foundry и хотите узнать больше о Bits-Service? Bits-Service разрабатывается в IBM-Lab Boeblingen, Германия, и мы обычно размещаемся на cloudfoundry.slack.com в # bits-service. Приходите и поговорите с нами!