Содержание
Платформа как услуга (PaaS) — это модель облачных вычислений, позволяющая разработчикам создавать и доставлять приложения через Интернет, не задумываясь о сложности обслуживания инфраструктуры, обычно связанной с их разработкой и эксплуатацией. Разработчики могут легко получить доступ к PaaS и управлять им через веб-браузер, но у некоторых есть плагины IDE, чтобы сделать их использование еще проще.
Более детально, PaaS похож на бронирование Uber: вы входите и выбираете пункт назначения и маршрут, по которому вы хотите добраться. Как оставить машину работающей и выяснить детали, зависит от водителя Uber. Инфраструктура как услуга (IaaS), с другой стороны, похожа на аренду автомобиля: вождение, заправка (настройка, обслуживание программного обеспечения и т. Д.) — ваша работа, но чинить ее — чужая проблема.
Если вы предпочитаете модель IaaS, ознакомьтесь с этой статьей о 5 лучших IaaS-решениях для размещения Java-приложений .
Зачем использовать PaaS?
PaaS — это облачная прикладная платформа, которая работает поверх IaaS и размещает программное обеспечение в качестве сервисного приложения. PaaS включает в себя операционные системы, промежуточное программное обеспечение, серверы, хранилище, среду выполнения, виртуализацию и другое программное обеспечение, которое позволяет приложениям запускаться в облаке без отвлечения многих системного администрирования. Это позволяет организациям сосредоточиться на двух важных вещах: своих клиентах и своем коде. PaaS позаботится обо всех деталях системного администрирования, связанных с настройкой серверов и виртуальных машин, установкой сред выполнения, библиотек, промежуточного программного обеспечения, настройкой средств сборки и тестирования. Рабочий процесс в PaaS так же прост, как и кодирование в IDE, а затем проталкивание кода с использованием таких инструментов, как Git, и немедленное отслеживание изменений.
Предоставляя инфраструктуру как услугу, PaaS также предлагает те же преимущества, что и IaaS, но с дополнительными функциями инструментов разработки.
- Лучшее время кодирования : поскольку PaaS предоставляет инструменты разработки с предварительно закодированными компонентами приложения, время на кодирование нового приложения сокращается.
- Динамическое распределение . В современном конкурентном мире большинству ИТ-специалистов необходимо иметь возможность развертывать новую функцию или новую службу приложения для быстрого тестирования или тестировать их на небольшом участке клиентов, прежде чем сделать их доступными для всего Мир. С PaaS такие задачи стали возможными.
- Легкая разработка кроссплатформенных приложений : поставщики услуг PaaS предоставляют нам различные варианты разработки для различных платформ, таких как компьютеры, мобильные устройства и планшеты, что делает кроссплатформенные приложения более простыми и быстрыми в разработке.
- Поддержка географически : Это полезно в ситуациях, когда несколько разработчиков работают над одним проектом, но не находятся поблизости.
- Используйте доступные по цене полезные инструменты : метод Pay-as-you-go позволяет вам платить за то, что вы используете. Таким образом можно использовать необходимое программное обеспечение или аналитические инструменты согласно их требованию. Он обеспечивает поддержку полного жизненного цикла веб-приложения: создание, тестирование, развертывание, управление и обновление.
Iaas предлагает ресурсы хранения и инфраструктуры, необходимые для доставки в облачные сервисы, тогда как организациям, использующим PaaS, не нужно беспокоиться ни об инфраструктуре, ни об услугах, таких как обновления программного обеспечения, хранение, операционные системы, балансировка нагрузки и т. Д. IaaS может использоваться организациями, которым требуется полная контроль над своими высокопроизводительными приложениями, стартапами и небольшими компаниями с ограниченным временем и энергией, растущими организациями, которые не хотят выделять аппаратные / программные ресурсы, приложениями, которые видят нестабильные требования — масштабирование или уменьшение масштабов которых имеет решающее значение в зависимости от скачков или спадов трафика ,
PaaS для Java хорошо подходит в качестве JVM, сервера приложений и архивов развертывания, т. Е. WAR или EAR обеспечивают естественную изоляцию для приложений Java, что позволяет многим разработчикам развертывать приложения в одной и той же инфраструктуре. Как Java-разработчик, мы должны помнить о следующих моментах, прежде чем выбирать сервис PaaS:
- гибкость выбора сервера приложений, такого как JBoss, Tomcat и т. д.
- возможность настройки JVM, т.е. настройки GC
- возможность подключить выбранный вами стек, например MongoDB, MySQL, Redis и т. д.
- надлежащее средство ведения журнала
В этой статье мы собираемся сравнить пять поставщиков услуг PaaS; С точки зрения разработчика Java , Elastic Beanstalk AWS , Heroku , IBM Bluemix , RedHat OpenShift и Google App Engine .
Эластичный бобовый стебель Амазонки
Elastic Beanstalk позволяет пользователям создавать, отправлять и управлять веб-приложениями в консоли Amazon Web Services (AWS). С Elastic Beanstalk просто загрузите свой код, и он автоматически обработает развертывание, предоставление балансировщика нагрузки и развертывание файла WAR в один или несколько экземпляров EC2, на которых работает сервер приложений Apache Tomcat. Кроме того, вы по-прежнему имеете полный контроль над ресурсами AWS, которые обеспечивают работу вашего приложения.
За Elastic Beanstalk дополнительная плата не взимается. Он следует модели Pay-as-you-go для ресурсов AWS, необходимых для хранения и запуска ваших приложений. Пользователи, имеющие право на бесплатный уровень использования AWS, могут использовать его бесплатно.
Здесь вы можете начать работу с Java-приложением на AWS. После упаковки кода в стандартный архив веб-приложений Java (файл WAR) его можно загрузить в Elastic Beanstalk с помощью консоли управления AWS, набора инструментов AWS для Eclipse или любых других инструментов командной строки. Этот инструментарий представляет собой плагин с открытым исходным кодом и предлагает вам управлять ресурсами AWS с помощью ваших приложений и сред из Eclipse. Он имеет встроенные метрики мониторинга CloudWatch, такие как средняя загрузка ЦП, количество запросов и средняя задержка, которые можно измерить при запуске приложения. Через сервис Amazon Simple Notification Service вы можете получать электронные письма, когда в приложении происходят какие-либо изменения.
Недостатком Elastic Beanstalk может быть отсутствие четкой документации. Там нет заметки о выпуске, блоги или сообщения на форуме для новых обновлений стека.
Несколько пользователей Elastic Beanstalk — это Amazon Corporate LLC , RetailMeNot Inc , Vevo LLC , Credible Labs Inc. и Geofeedia Inc.
Heroku
Heroku — это еще один сервис PaaS для легкого развертывания и масштабируемости вашего кода. Это один из старейших сервисов PaaS, но его можно сравнить с Amazon, Google или Microsoft. Heroku позволяет создавать приложения на вашем пути, предоставляя необходимые инструменты.
Допустим, вы хотите использовать стандартные библиотеки с серверами приложений, такими как Tomcat, Jetty и т. Д. Вы можете легко выполнить такую настройку с Heroku. По умолчанию Heroku поддерживает Ruby, Node, Python, Java, Clojure, Go, Groovy, Scala и PHP, но его можно расширить, т. Е. Можно работать с другим языком с помощью пользовательского пакета сборки.
Heroku использует Git для управления развертыванием приложений. Вам просто нужно перенести свой Git-репозиторий на их серверы для развертывания вашего приложения.
Heroku предоставляет некоторые специальные службы безопасности, такие как возможность управления конфигурациями, зависящими от среды (например, учетные данные для банковских услуг). Это гарантирует, что ваш исходный код отделен от этих конфигураций для большей безопасности и переносимости.
Для Java Heroku обеспечивает автоматическое совместное использование сеансов между экземплярами сервера, поскольку каждый из его экземпляров сервера обернут вокруг пользовательского экземпляра Jetty. Его ориентированный на разработчиков фокус и приверженность позволяет вам освоить приложение Heroku в кратчайшие сроки.
Что касается ценообразования, Heroku бесплатна для экспериментов с облачными приложениями, 7 долл. США в день / месяц для хобби-приложений и 25–500 долл. США в день / месяц для профессиональных приложений с высоким трафиком. Следует знать об ограничениях, прежде чем разрабатывать Java-приложение на Heroku.
Вы можете прочитать несколько историй успеха от пользователей Heroku, например, о том, как Citrix бесплатно создал GoToMeeting для Heroku, или портфолио приложений UrbanDaddy, демонстрирующих лучший городской шик на Heroku.
RedHat’s OpenShift
Red Hat OpenShift основана на приложениях с открытым исходным кодом с широким спектром языков, баз данных и компонентов. Они поддерживают широкий спектр языков, таких как Java, Ruby, Node, Python, PHP, Perl и другие.
Используя OpenShift, можно быстро создавать, развертывать и управлять образами Docker на надежной, масштабируемой платформе. OpenShift также дает вам полный контроль над экземпляром частной базы данных. Можно выбирать из разных баз данных, таких как MySQL, PostgreSQL, MongoDB и SQLite. Они имеют предварительно закодированные репозитории для быстрого старта. Простая команда «git push» развертывает ваш код в приложении.
OpenShift делает больше, чем просто развертывание, и предоставляет сложные инструменты для управления всем жизненным циклом программного обеспечения. Он также предоставляет такие инструменты, как снимки приложений, для резервного копирования и восстановления приложений. Снимки хранятся в tar-файлах, которые содержат приложение, локальные файлы и файлы журнала. Благодаря встроенной интеграции платформы OpenShift с Eclipse, JBoss Developer Studio, многие разработчики могут разрабатывать полностью в среде IDE так, как им удобно.
Его цены структурированы в виде планов, таких как бесплатный, бронзовый или серебряный план. В бесплатном плане размещается до 3 веб-приложений в облаке. Бронзовый план бесплатный с дополнительным платным доступом к дополнительным ресурсам, а серебряный план — платный, когда вы пользуетесь системой поддержки.
С OpenShift вы можете быстро развертывать и запускать приложения Java, используя ваши любимые серверы приложений и платформы.
Вы можете прочитать несколько блогов на тему «Что вы не должны знать о неудаче» или о том, как Pioneer внедрил облачную среду на основе контейнерной платформы Red Hat OpenShift для своей новейшей автомобильной навигационной системы, Super Route Finder , или как ИТ-специалисты Cisco получили помощь от OpenShift, когда они были завалены запросами приложений.
Bluemix от IBM
Bluemix является реализацией открытой облачной архитектуры IBM. Он основан на CloudFoundry, что позволяет разработчикам создавать, развертывать и управлять своими приложениями через панель инструментов. Bluemix поддерживает различные языки программирования, такие как Java, Node.js, PHP и Python, и расширяется для поддержки других языков.
Эта платформа также включает в себя промежуточные сервисы и автоматически предоставляет новые экземпляры этих сервисов. Разработчики также могут масштабировать свои приложения при изменении требований к рабочей нагрузке, используя каталог Bluemix для доступа к сервисам. У Bluemix также есть невероятный выбор составных сервисов времени выполнения, которые работают со средами исполнения, которые вы хотите использовать. Они уже установлены и лицензированы на платформе, что упрощает их создание и настройку, а также имеет ценовую политику на основе использования.
Bluemix — это и корпоративная производственная платформа, и песочница для разработчиков. Он имеет развертывания виртуальных машин через OpenStack, так что вы можете контролировать весь программный стек. Стоимость Bluemix составляет $ 0,07 USD / ГБ-час, и вы получаете 375 ГБ-часов бесплатно в течение 30 дней.
Пример приложения научит вас запускать, изменять, тестировать и развертывать веб-приложение в облаке с помощью инструментов Java и Eclipse. Их документация хорошая (но не отличная), но то, что немного запутывает, это их демо-приложения.
Посмотрите истории некоторых клиентов, например, как Bluebee получила глобальную сеть и хранилище геномных данных в Bluemix, через гибридную инфраструктуру Bluemix или как Sonnet перенесла рабочие нагрузки страхования в облако.
Google App Engine
Google App Engine (GAE) — это предложение PaaS, позволяющее создавать и запускать приложения в инфраструктуре Google. Это приложения, которые легко создавать, поддерживать и масштабировать для данных и хранилищ трафика.
Поскольку нет серверов для обслуживания, вы можете просто загрузить свое приложение, и оно готово к работе. Приложения работают в защищенной изолированной среде, что позволяет GAE распределять запросы по нескольким серверам и масштабировать их в соответствии с требованиями трафика. Вы можете легко создавать, разрабатывать, тестировать и размещать различные версии вашего приложения в промежуточных и производственных средах.
App Engine динамически позволяет распределять системные ресурсы всякий раз, когда существует реальная потребность в приложении. Google Stackdriver, который является инструментом отладчика, который помогает вам диагностировать и контролировать производительность вашего приложения. Он использует контейнер Jetty Servlet для размещения приложений и поддерживает API Java Servlet. К сожалению, версия 3.0 с поддержкой неблокирующего ввода-вывода по-прежнему недоступна, что является единственным недостатком, о котором я могу думать сейчас.
Вы можете начать работу с GAE для Java, выбрав предпочитаемую среду: гибкую и стандартную . Приложения GAE выполняются как экземпляры в этих средах, поэтому цена указана за час за экземпляр. Подробные цены описаны здесь .
Несколько клиентов делятся своим чудесным путешествием с Google App Engine, таким как Floreysoft , который объединяет компании, коллег и клиентов вместе с Google App Engine, или как Best Buy сокращает время и ресурсы разработки приложений с Google App Engine.
Резюме
Эта таблица поможет вам решить, какое предложение PaaS лучше всего подойдет вам:
свойства | Эластичный бобовый стебель | Heroku | OpenShift (Интернет) | Bluemix | App Engine |
---|---|---|---|---|---|
развертывание | Общественный PaaS | Public PaaS, виртуальный частный PaaS | Public PaaS, виртуальный частный PaaS | Общественный PaaS, Частный PaaS | Общественный PaaS |
пересчет | Вертикальный, горизонтальный, автоматическое масштабирование | вертикальный горизонтальный | Вертикальный, горизонтальный, автоматическое масштабирование | Вертикальный, горизонтальный, автоматическое масштабирование | Горизонтальное и автоматическое масштабирование |
Runtimes | Dotnet, Java, Ruby, Node, PHP, go, python | Java, Ruby, Node, PHP, go, Python, Groovy, Closure, Scala плюс расширяемый | Java, Node, Perl, Php, Python, Ruby плюс расширяемый | Java, Node, Perl, Php, Python, Ruby плюс расширяемый | Java, Node, Perl, Php, Python, Ruby плюс расширяемый |
Выбор рамок | Не Доступно | Django, Flask, Grails, Play, Rails | Django, Drupal, Flask, Rails, Vert.x, Switchyard | Рельсы, Синатра | Джанго, Webapp2 |
Сервисы | Не Доступно | Postgresql, Redis | Jenkins, MongoDB, MySQL, метрики openshift, postgresql | Доступны 49 служб, таких как планировщик рабочей нагрузки, Интернет вещей, кэш данных, управление API и т. Д. | Облачное хранилище данных Google, Google Cloud SQL, облачное хранилище Google |
инфраструктура | Азия, Европа, Северная Америка, Океания, Южная Америка | Европа, Северная Америка | Европа, Северная Америка | Европа, Северная Америка, Океания | Европа, Северная Америка |
PaaS для Java прошел долгий путь за последние годы. Его предложения все еще быстро развиваются и используются все больше и больше. С этим знанием, я надеюсь, вы сможете решить, какой PaaS предложить использовать.