Google App Engine

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 09:56, 1 марта 2019.
Google App Engine
Preview image.JPG
Создатели: Google inc.
Выпущена: 2008
Постоянный выпуск: 1.9.35 / 24 марта 2015
Написана на: Python, PHP, Java
Лицензия: патентная
Веб-сайт http://cloud.google.com/appengine/

Google App Engine — служба хостинга сайтов и web-приложений на серверах Google с бесплатным именем <имя_сайта>.appspot.com, либо с собственным именем, задействованным с помощью служб Google[Источник 1].

Предлагается набор API для служб хранилища, datastore API (BigTable), аккаунтов Google, загрузки данных по URL, электронной почты [Источник 2] Предоставлена возможность использовать планировщик задач cron как для приложений, реализованных на Python, так и на Java. Разрешено планирование не более 20-ти заданий Использование службы учётных записей Google позволяет быстро начать работу с приложением, нет необходимости проводить отдельную регистрацию учётных данных на каждом сайте. Это также позволяет разработчику не заботиться о реализации ещё одной системы регистрации пользователей специально для своего приложения. Платформа Google конкурирует с аналогичными сервисами от Amazon, которые предоставляют возможности размещать файлы и веб-приложения, используя свою инфраструктуру.

App Engine представлена в апреле 2008, доступны как бесплатные учётные записи: «…до 1 Гб дискового пространства, 10 Гб входящего трафика в день, 10 Гб исходящего трафика в день, 200 миллионов гигациклов CPU в день и 2000 операций отправления электронной почты в день», так и возможность приобретения дополнительных ресурсов. Приложения, разворачиваемые на базе App Engine, должны быть написаны на Python, Java, Go либо PHP. Последние два до сих пор имеют статус «экспериментальных» инструментов, хотя Google и заявлял о намерениях расширить список поддерживаемых языков программирования и сред, а саму службу сделать независящей от какого-либо языка программирования. Среда исполнения Python включает в себя полную реализацию возможностей самого Python, большинство функций стандартной библиотеки языка, ограниченную версию Django, и т.д.

Поддерживаемые функции/ограничения

Надежность и поддержка

Все приложения Engine счет выставляется высокая Репликация Datastore App имеют 99,95% времени бесперебойной работы в соглашение об уровне обслуживания. App Engine спроектирована таким образом , что он может выдержать несколько отключений центров обработки данных без каких - либо простоев. Эта устойчивость к простою показывает статистики о том , что с высоким уровнем репликации Datastore видел простоя 0% в течение года (см. рисунок 1).

Рисунок 1 - GAE и CloudBees

Платная поддержка от инженеров Google предлагается в рамках Premier счетов. Бесплатная поддержка предоставляется в App Engine групп, переполнение стека , Server неисправностей , и GitHub , однако помощь со стороны сотрудника Google не гарантируется.

Массовая загрузка

SDK версии 1.2.2 добавлена поддержка навалочных загрузки данных с использованием Python с открытым исходным кодом Python проектов Gaebar, approcket, и gawsh также позволяют пользователям загружать и создавать резервные копии данных App Engine.

Облачное хранилище

Облачное хранилище позволяет хранить и извлекать любой объем данных в любое время по всему миру. Облачное хранилище можно использовать для различных сценариев, включая обслуживание содержимого веб-сайта, хранение данных для архивирования и аварийного восстановления или распространение больших объектов данных среди пользователей посредством прямой загрузки. Облачное хранилище делится на несколько типов, а именно: проектное, контейнерное, объектное и ресурсное. Также облачное хранилище предоставляет геоизбыточность, тем самым позволяет хранить избыточные данные в двух отдельных географических местах, разделеных не менее чем на 100 миль.

Google Transfer Appliance

Google Transfer Appliance - это аппаратное устройство, которое можно использовать для безопасной миграции больших объемов данных (от сотен терабайт до 1 петабайта) на облачную платформу Google без нарушения бизнес-операций. Google предоставляет возможность фактически купить у Google специальную дисковую полку в стандартном стоечном формфакторе (2U или 4U) на 100ТБайт или на 400ТБайт для того, чтобы скопировать туда все данные вашего датацентра и перенести их вручную в ближайший датацентр Google. Google Transfer Appliance ставят в доступную для этого стойку и пользователь получает возможность через консоль разработчика GCP скопировать данные с этой полки прямо на свой Google Storage в пределах локальной сети датацентра Google, что может быть в десятки раз быстрее, если просто загружать данные на ваш датацентр.

Cloud Security Scanner

Cloud Security Scanner - сканер облачной безопасности, который выявляет уязвимости в веб-приложениях Google App Engine. Он выполняет обход приложения по всем ссылкам в области начальных URL-адресов и пытается использовать как можно больше пользовательских входных данных и обработчиков событий для выявления уязвимостей. При запуске сканера возможны критические ошибки, так как Cloud Security Scanner отправляет запросы по всем возможным ссылкам.

Ограничения

Разработчики только для чтения доступ к файловой системе на App Engine. Приложения могут использовать только виртуальные файловые системы, такие как GAE-файлового хранилища. App Engine может выполнять только код вызывается из запроса HTTP (запланированные фоновые задачи позволяют для самостоятельного вызова HTTP запросов). Пользователи могут загружать произвольные модули Python, но только если они являются чисто Python, C и Pyrex модули не поддерживаются. Java - приложения могут использовать только подмножество (The JRE класса белый список) классов из стандартной версии JRE. Datastore не может использовать фильтры неравенства более одного объекта недвижимости на каждый запрос. Процесс, запущенный на сервере, чтобы ответить на запрос не может длиться более 60 секунд (с выпуском 1.4.0, это ограничение не распространяется на фоновых заданий больше).

Среда выполнения платформы Google App Engine позволяет разработчику контролировать лишь часть параметров операционной системы, что может представлять затруднение для разработки приложений. Нет доступа на запись в файловую систему сервера. Единственный способ сохранять данные — внутреннее хранилище, нереляционная, высокомасштабируемая база данных. Хранилище отличается от реляционных СУБД MySQL и PostgreSQL, которые используются на большинстве сайтов. Системы управления сессиями, использующие файловую систему, не будут работать. Google предоставляет альтернативный вариант — Memcache API. Есть возможность организовать авторизацию пользователей через аккаунты Google. Google широко использует в своих приложениях технологию MapReduce, и её поддержка, вероятно, будет добавлена к возможностям платформы. App Engine имеет поддержку SQL с Google Cloud SQL

Не поддерживает липкие сессии, только реплицируемые сеансы поддерживаются в том числе ограничения объема данных сериализации и время для сеанса сериализации.

Основные отличия

Различия с другими приложениями хостинга

Рисунок 2 - Архитектура Google App Engine

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

Инфраструктура App Engine, устраняет многие из проблем системы управления и развития создания приложений для масштабирования до сотен запросов в секунду и за ее пределами. Google обрабатывает развертывания кода кластера, мониторинга, восстановления после сбоя, и запуск экземпляров приложений по мере необходимости.

В то время как другие сервисы позволяют пользователям установить и настроить практически любой * NIX совместимое программное обеспечение, App Engine требует от разработчиков использовать только свои поддерживаемые языки, API и рамки (см. рисунок 2). Текущие API - интерфейсы позволяют хранить и извлекать данные из BigTable без реляционной базы данных; что делает HTTP - запросов; отправка электронной почты; работы с изображениями; и кэширование. Существующие веб - приложения , которые требуют реляционной базы данных не будет работать на App Engine хранилище данных без изменений. Google Cloud SQL может быть использован для приложений App Engine , требующих реляционную MySQL совместимый хранения базы данных [Источник 3].

В отличие от многих обычных размещений приложений на виртуальных машинах, таких как Amazon EC2, платформа App Engine тесно интегрирована с приложениями и накладывает на разработчиков некоторые ограничения. Среды параллельной обработки позволяют применять многое из программного обеспечения, созданного для Unix-подобных систем, в то время как App Engine требует от разработчика использовать один из языков программирования: Python, Java, Go (с мая 2011) или PHP (в экспериментальном режиме), а для хранения информации применять хранилище — подмножество проприетарной базы данных BigTable (en), являющейся ноу-хау компании Google. Хотя многие из разработанных на языке Python приложений возможно запустить без изменений для App Engine (исключая те, которые требуют доступа к низкоуровневым функциям системы или доступа к сети), использование хранилища потребует значительных сил от разработчиков на адаптацию приложений. В отличие от популярных СУБД MySQL и PostgreSQL, хранилище не является реляционной базой данных, не требует схемы и нормализации данных. Архитектура платформы поддерживает масштабирование без изменения кода. Реализация поддержки реляционной логики привела бы к значительному замедлению работы. Нереляционный характер хранилища требует от разработчиков использования нетрадиционной архитектуры хранения и обработки данных. В то же самое время все эти ограничения могут привести к тому, что многим разработчикам придётся прилагать дополнительные усилия для адаптации к новой среде, и они предпочтут выбор альтернативных платформ.

За день и за минуту квоты ограничивают пропускную способность и использование центрального процессора, количество запросов служил, количество одновременных запросов, и призывает к различным API-интерфейсов, а также отдельные запросы прекращаются, если они принимают более 60 секунд или возвращать более 32 Мб данных ,

Различия между SQL и GQL

Рисунок 3 - Google App Engine

Хранилищу Google App Engine, имеет SQL -like синтаксис под названием "GQL". GQL намеренно не поддерживает Join заявление, потому что кажется неэффективным , когда запросы занимать более одной машины. Вместо того, чтобы один-ко-многим и многие-ко-многим может быть достигнуто с помощью ReferenceProperty (). Этот общий-ничего подход позволяет диски на провал без отказа системы. Переключение из реляционной базы данных в хранилище данных требует смены парадигмы для разработчиков при моделировании их данных (см. рисунок 3).

Версия Java поддерживает асинхронные неблокируемому запросы , используя Twig Object Datastore интерфейс. Это предлагает альтернативу с использованием потоков для параллельной обработки данных.

Жесткие ограничения

  • Время для каждого запроса - 60 сек на обычный запрос, 10 минут для задач, неограниченное для бэкэндов
  • Размер ответа HTTP - 32 МБ

Пример приложения

Обработчики статических файлов]</ref> загрузки на серверы Google App Engine двух файлов:

  • …/helloworld/app.yaml — конфигурационный файл приложения helloworld в его корневом каталоге
    application: helloworld
    version: 1
    runtime: python
    api_version: 1
    
    handlers:
    - url: /
      static_files: static/index.html
      upload: static/index.html
    
  • …/helloworld/static/index.html
     <html><h1>Hello World !</h1></html>
    

Источники

  1. Programming Google App Engine // Google Cloud [2014-2019]. Дата обновления 7.01.2019.URL: https://cloud.google.com/docs/compare/data-centers/ (дата обращения: 29.01.2019)
  2. What is the Google Cloud Inference API? // Google Cloud [2014-2019]. Дата обновления 8.01.2019.URL: https://cloud.google.com/inference/docs/ (дата обращения: 29.01.2019)
  3. Cloud SQL for MySQL documentation // Google Cloud [2014-2019]. Дата обновления 8.01.2019.URL: https://cloud.google.com/sql/docs/mysql/ (дата обращения: 29.01.2019)