2013-04-29 5 views
51

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

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

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

ответ

73

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

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

Скажите, что вы отвечаете за ИТ для 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 будут реализовывать вашу мечту - у вас тоже есть источник, поэтому вы можете сделать любые изменения, которые вам нужны. И он доступен под the Apache 2.0 license, поэтому запросы на тягу с радостью принимаются, хотя и не требуются.

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

+0

И что еще размывается ценообразование? Является ли cf стеком свободным и что вы платите? Есть ли улов? :) – Tomo

+0

Mark, отличная информация. Что делать, если AcmeCorp постоянно развертывал новые экземпляры Fizzbuzz на месте, каждый из которых имеет немного другую конфигурацию для кеширования, обмена сообщениями, протоколирования, соединений с базами данных, переменных среды и т. Д., Могут ли эти конфигурации параметрироваться и отображаться в консоли самообслуживания в CloudFoundry, позволяя командам разработчиков создавать и развертывать новые экземпляры Fizzbuzz по своему усмотрению? – raffian

+0

хорошо написано ... – underdog

20

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

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

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

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

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

+0

Спасибо, что заполнили пробелы из моего ответа, Энди! –

+0

Спасибо вам, ребята, Марк и Энди! У меня все еще есть вопрос относительно API. Есть ли какой-то общий API, который предоставляет Cloud Foundry, позволяющий моему приложению быть общим, в том смысле, что мой код будет функционировать с любым предложением IaaS, которое я выбираю? О, пока я нахожусь в нем, есть ли какие-либо учебники по курсу, которые могут показать мне, как начать работу? – Amoeba

+0

Нет «API облачного литейного завода», о котором вам нужно беспокоиться. Если вы правите мертвым стандартным узлом node.js, Grails, Ruby и т. Д., Тогда вы сможете просто нажать его на CF без каких-либо специальных изменений кода. На уроках вы можете взглянуть на docs.cloudfoundry.com –

6

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

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

В свою очередь 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) будут доступны для наших приложений.

+1

Если вы не можете оставлять комментарии, вы не должны использовать ответы как другой вариант. Однако я считаю, что это законно, поскольку вы улучшаете ответ. Я бы предложил в будущем, а не сделал новый ответ, предложите отредактировать существующий ответ. –

+0

«Насколько я понимаю, Cloud Foundry действительно не имеет специфического API» - на самом деле это - API Cloud Controller (зарегистрированный здесь http://docs.cloudfoundry.com/docs/reference/cc-api.html). «несколько слов о журналах, мониторинге и диагностике. В настоящее время это не реализовано на уровне CF PaaS» - эти функции добавляются через Loggregator, который находится в разработке. –

+1

Ну, как я понял, API, о котором идет речь, не был API управления PaaS (который, по сути, реализован в CF и описан в ссылке Andy), но API из развернутой прикладной точки зрения (API, который может быть вызвано развернутым приложением). Нет такого API-интерфейса приложения (в основном, как я понимаю, потому что существует поддержка огромного количества фреймворков). Пожалуйста, исправьте меня, если я ошибаюсь. –

2

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

1 ,Платформа с высокой горизонтальной масштабируемостью

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

2. самовосстановление платформа предоставление нескольких слоев HA для приложения

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

3. упрямый, приложение полиглот выполнения

Использование Heroku «buildpack» построить, языковое приложение автоматически определяется и соответствующий стек выполнения построен на вершине ванильным образа ОС, позволяя разработчики сосредоточились на написании кода.

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

Разработчики могут самообеспечения кусочек MySQL, RabbitMQ, Redis и т.д. кластера с Ури/учетными данными автоматически впрыскивается в среде своего приложения.