Подтвердить что ты не робот

Облачный литейщик объяснил

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

Традиционное предложение PaaS, такое как Microsoft Azure или Google AppEngine, обеспечивает полную платформу для разработки, тестирования, размещения и управления вашим веб-приложением. Однако вы должны использовать их API и ограничены услугами, которые они предлагают, и языками/фреймворками, которые они поддерживают.

Cloud Foundry - это своего рода "средний человек", благодаря которому ваше приложение может использовать службы из многих общественных облаков. Как это достигается? Есть ли один API, который вы используете, что-то вроде LibCloud или JCloud? Можете ли вы использовать одну услугу у одного провайдера и, например, другую услугу у другого поставщика? И действительно ли Cloud Foundry предлагает какие-либо услуги, или это просто средний человек, позволяющий легко переноситься с одной платформы на другую и использовать разные комбинации услуг от разных поставщиков в одном приложении?

4b9b3361

Ответ 1

Я разработчик в Cloud Foundry - и да, Cloud Foundry действительно немного туманный (каламбур не предназначен). Надеюсь, я немного помогу прояснить ситуацию.

Cloud Foundry является платформой как услуга, но ей требуется инфраструктура как услуга под ней. Cloud Foundry поддерживает vSphere, vCloud, OpenStack и Amazon AWS в качестве инфраструктуры через BOSH. Большинство разработчиков веб-приложений не заботятся об этом, но это действительно здорово для людей, которым приходится беспокоиться о большой ИТ-инфраструктуре.

Скажите, что вы отвечаете за IT для AcmeCorp. У вас 50 000 сотрудников, которые используют ваш внутренний веб-сервис Fizzbuzz, чтобы помочь им выполнять свою работу. Для поддержки всех сотрудников вам нужны десятки экземпляров приложения Fizzbuzz, работающего на нескольких машинах с мощными процессорами и большим объемом памяти, и вам нужно огромное количество дискового пространства для хранения информации, созданной приложениями Foo, Bar и Baz, которые вы используете внутренне, тоже. Вы переехали далеко за пределы того, что вы хотели бы управлять на своих блейд-серверах, поэтому вы решили арендовать центр обработки данных.

К сожалению, AcmeCorp ужасно дисфункциональен. Финансовый отдел имеет огромное значение в том, какой датацентр вы используете, и каждые пару лет они заставляют вас переключаться с одного центра обработки данных на другой. Каждые пару лет у вас есть несколько недель простоя, в то время как ваши инженеры пытаются исправить ошибки в Fizzbuzz, подвергнутые переключению между vSphere, vCloud, OpenStack или что-то еще.

Если ваши инженеры писали Fizzbuzz, Foo, Bar и Baz против Cloud Foundry, а не напрямую против базовой инфраструктуры, время простоя было бы сведено к минимуму. Вам не пришлось бы так беспокоиться о том, чтобы быть привязанным к конкретному центру данных, потому что этот уровень хостинга был отвлечен Cloud Foundry. Cloud Foundry поддерживает определенный набор сервисов, включая PostgreSQL, MySQL, Mongo, Redis и RabbitMQ, чтобы назвать некоторые. Если Foo, Bar и Baz используют эти сервисы, предоставляемые Cloud Foundry, это меньше всего беспокоит, когда вы мигрируете между инфраструктурами.

Позже, по дороге, вы понимаете, что можете заработать удачу, продавая Fizzbuzz в качестве услуги другим крупным компаниям. У вас действительно хорошая форма для этого: потому что ваши инженеры закрепили Fizzbuzz для работы в Cloud Foundry, вы можете просто развернуть Cloud Foundry до AWS столько, сколько нужно. Клиент пробовал его в течение шести месяцев и решил не продлевать услугу? Нет проблем, у вас нет каких-либо аренды центров обработки данных, чтобы беспокоиться - просто прекратите все эти экземпляры EC2 и перейдите. Вы можете легко иметь одно развертывание Cloud Foundry для каждого экземпляра Fizzbuzz в качестве службы, чтобы данные ваших клиентов были полностью изолированы друг от друга.

Обледенение на торте гласит, что Cloud Foundry является открытым исходным кодом. Если вы обнаружите, что это не совсем подходит вашим потребностям, вам не нужно просто поддерживать электронную почту и ждать, пока инженеры Cloud Foundry будут реализовывать вашу мечту - у вас тоже есть источник, поэтому вы можете сделать любые изменения, которые вам нужны. И доступно в лицензия Apache 2.0, поэтому запросы на загрузку с радостью принимаются, хотя и не требуются.

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

Ответ 2

Я защитник разработчика для Cloud Foundry и хочу добавить немного, чтобы отметить ответ, чтобы сосредоточиться на некоторых других деталях, которые вы упомянули в своем исходном вопросе.

Во-первых, вы упоминаете GAE и Azure. Оба они имеют определенные ограничения - например, GAE ограничивает вас конкретными языками и API. Также нет Open Source. CF расширяема (например, новая версия поддерживает buildpack, позволяя вам выбрать "любое" языковое исполнение), и вы можете выбрать ее, где хотите.

В Mark упоминаются 4 провайдера IaaS, на которых мы можем запускать CF сегодня, но предполагая, что рассматриваемый IaaS (скажем, мы включим Azure, CloudStack, Google Compute Engine и т.д. в качестве будущих целей) может поддерживать небольшое количество того, что мы называем Cloud Provider Интерфейсы (CPI), то вы также можете установить Cloud Foundry на эти инфраструктуры.

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

Это довольно круто:-) приходят поговорить с нами в списке рассылки, если вы хотите узнать больше!

Ответ 3

хотел бы добавить это как комментарий относительно API для ответа Andy, но, к сожалению, не имеет достаточной репутации для этого. Насколько я понимаю, Cloud Foundry действительно не имеет конкретного API, но он предоставляет много полезной информации через переменные среды (например, VCAP_SERVICES, VCAP_APPLICATION, VCAP_CONSOLE_IP, VCAP_APP_PORT), к которым можно получить доступ с любого языка или фреймворка. Хотя многие данные из таких переменных являются внутренними для Cloud Foundry, некоторые из них могут быть весьма полезными. Основной VCAP_SERVICES, который предоставляет информацию об услугах, связанных с вашим приложением.

Например, если я хотел бы собрать информацию о экземпляре Azure Cloud Service (например, его идентификатор), на котором в настоящее время работает мое приложение, я бы использовал this из библиотеки управления Azure.

В свою очередь Cloud Foundry предоставляет VCAP_APPLICATION env. переменная, которая будет содержать следующие поля:

{"application_users": [],
"instance_id":"97467a9cf508cb75273284b948b6319b",
"instance_index":1,
"application_version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"application_name":"helloworld",
"application_uris":["helloworld.vcap.me"],
"started_at":"2013-07-22 10:58:16 +0300",
"started_at_timestamp":1374479896,
"host":"0.0.0.0",
"port":61014,
"limits":{"mem":256,"disk":1024,"fds":16384},
"version":"330b7caf-50e5-48f4-8792-1c80a90b06f1",
"name":"helloworld",
"uris":["helloworld.vcap.me"],
"users":[],
"start":"2013-07-22 10:58:16 +0300",
"state_timestamp":1374479896}

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

Ответ 4

Конечно, CF - это уровень абстракции между вашими IaaS (серверами, хранилищем и сетью) и вашим приложением, что дает вам возможность переносить ваше приложение среди публичных и частных облаков, но это также намного больше:

1. Платформа с платформой с высокой горизонтальностью

Приложения запускаются в контейнерах, что позволяет лучше управлять ресурсами, чем назначать приложения на хосты (виртуальные машины). Warden/Garden - это технология контейнеров на основе CF, хотя Docker также поддерживается в последних версиях.

2. Платформа самовосстановления, обеспечивающая применение нескольких слоев HA к вашему приложению

Система управления здоровьем воскрешает неудавшиеся экземпляры приложений, контейнеры, процессы платформы и виртуальные машины без каких-либо сбоев. Поддержка зоны доступности обеспечивает HA на уровне инфраструктуры. Обновления для прокатки и развертывания канарейки обеспечивают нулевое время простоя даже во время развертываний или обновлений платформы.

3. Удовлетворительное время выполнения приложения polyglot

Используя конструкцию "buildpack" heroku, язык приложения автоматически обнаруживается, и соответствующий стек времени выполнения создается поверх образа операционной системы ванили, что позволяет разработчикам сосредоточиться на написании кода.

4. Разработчик по требованию для предоставления услуг передачи данных с сохранением состояния

Разработчики могут самостоятельно предоставлять срез кластера MySQL, RabbitMQ, Redis и т.д., с помощью uri/credentials, автоматически вставляемых в среду их приложений.