



Compute Engine — аналог виртуалок того же vscale, digital ocean, aws.
AppEngine — уже очень интересно.
Там есть бесплатные лимиты.
Но ПО под AppEngine нужно писать специально учитывая особенности работы под AppEngine.
Там есть все что нужно для типичного приложения — процессор, память, очередь, несколько различных СУБД на выбор (Cloud Datastore — NoSQL, Cloud SQL — MySQL, есть специализированная БД для полнотекстового поиска), планировщик, кэш в памяти и т.п. Файлы хранить отдельно — см. ниже.
CloudStorage — аналог S3, то есть это только хранение файлов.
BigQuery — для очень больших данных. Для очень очень очень больших.
Содержание
27 Сентября 2012

Начнем с определения облачных вычислений. Явление это новое, поэтому существует не так много авторитетных источников, где определяется это понятие. Наиболее комплексно и фундаментально подошли к данному вопросу американские специалисты Питер Мелл и Тим Гранс из Лаборатории Информационных Технологий Национального Института Стандартов и Технологий (NIST). В своей работе The NIST Definition of Cloud Computing (Определение облачных вычислений: версия НИСТ) они пишут следующее (перевод автора с английского).
Облачные вычисления – это модель предоставления удобного сетевого доступа в режиме «по требованию» к коллективно используемому набору настраиваемых вычислительных ресурсов (например, сетей, серверов, хранилищ данных, приложений и/или сервисов), которые пользователь может оперативно задействовать под свои задачи и высвобождать при сведении к минимуму числа взаимодействий с поставщиком услуги или собственных управленческих усилий. Эта модель направлена на повышение доступности вычислительных ресурсов и сочетает в себе пять главных характеристик, три модели обслуживания и четыре модели развертывания.
Характеристики облачных вычислений:
- Самообслуживание по требованию
Потребитель, когда это ему необходимо, может самостоятельно задействовать вычислительные возможности, такие как серверное время или сетевое хранилище данных, в автоматическом режиме, без взаимодействий с персоналом поставщика услуг. - Широкая доступность через сеть (Интернет)
Возможности доступны через сеть; доступ к ним осуществляется на основе стандартных механизмов, что обеспечивает использование разнородных тонких и толстых клиентских платформ (например, мобильных телефонов, ноутбуков, КПК). - Объединение ресурсов в пул
Поставщик объединяет свои вычислительные ресурсы в пул для обслуживания большого числа потребителей, используя принцип множественной аренды (Multi-tenancy). Различные физические и виртуальные ресурсы динамически распределяются и перераспределяются в соответствии с потребностями пользователей. Возникает ощущение независимости от местоположения, когда заказчик не знает и не контролирует, где конкретно находятся вычислительные ресурсы, которыми он пользуется, но, возможно, может определить их расположение на более абстрактном уровне (например, страна, регион или дата-центр). Примером ресурсов могут быть хранилище данных, вычислительная мощность, оперативная память, пропускная способность, виртуальные машины. - Способность к быстрой адаптации
Вычислительные возможности могут быстро и гибко резервироваться (часто автоматически) для оперативного масштабирования под задачи заказчика, и также быстро освобождаться. С точки зрения потребителя доступные возможности часто выглядят ничем не ограниченными и могут быть приобретены в любом количестве в любое время. - Измеримая услуга
Облачные системы автоматически контролируют и оптимизируют использование ресурсов через измерение некоторых абстрактных параметров. Параметры варьируются в зависимости от типа услуги. Например, это могут быть: размер хранилища данных, вычислительная мощность, пропускная способность и/или число активных пользовательских записей. Использование ресурсов отслеживается, контролируется; формируются отчеты. Таким образом и поставщик, и потребитель получают прозрачную информацию об объеме оказанных (потребленных) услуг.
- Cloud Software as a Service (SaaS) – облачное программное обеспечение как услуга, далее «ПО как услуга»;
- Cloud Platform as a Service (PaaS) – облачная платформа как услуга;
- Cloud Infrastructure as a Service (IaaS) – облачная инфраструктура как услуга.
Раскроем только первую модель обслуживания как относящуюся к теме данной работы. ПО как услуга (SaaS) – это предоставление потребителю возможности использовать приложения поставщика, функционирующие на облачной инфраструктуре. Доступ к приложениям осуществляется с различных клиентских устройств через интерфейс тонкого клиента, например, веб-браузер. Потребитель не контролирует и не управляет облачной инфраструктурой, на которой запущено приложение, включая сеть, сервера, операционные системы, хранилища данных и даже параметры приложения. Возможное исключение — отдельные пользовательские настройки приложения.
- Private Cloud (Частное облако)
- Community cloud (Облако сообщества)
- Public cloud (Публичное облако)
- Hybrid cloud (Гибридное облако)
Раскроем только третью модель развертывания как относящуюся к теме данной работы. Публичное облако (Public Cloud) – в данной модели облачная инфраструктура доступна всем желающим или широкой отраслевой группе и находится во владении поставщика облачных услуг.
Выше мы дали определение облачных вычислений и описали их главные характеристики. Также мы привели классификацию облачных вычислений по модели обслуживания и модели развертывания, то есть рассказали о том, какие разновидности облачных вычислений существуют. Так что же такое «облачные сервисы для небольших компаний»?
В понятии есть слова «облачные» и «сервисы», а значит, речь идет об услугах, оказываемых из облака, то есть с использованием облачной инфраструктуры.
Поскольку эти услуги предназначены «для небольших компаний», то:
- Эти услуги должны помогать вести бизнес;
- Эти услуги должны быть доступными по цене для небольших компаний;
- Они должны быть массово доступными;
- Они не должны требовать от потребителя специфических знаний (например, в сфере информационных технологий).
Исходя из вышесказанного, дадим следующее определение. Облачные сервисы для небольших компаний – это приложения для автоматизации бизнеса, распространяемые по модели SaaS (ПО как услуга) через Публичное облако и доступные широкому кругу заказчиков по приемлемой цене.
Автор: Кабатов Д. А. (by Dmitry Kabatov)
Перевод статьи подготовлен специально для студентов курса «Облачные сервисы».
Интересно развиваться в данном направлении? Смотрите запись профессионального мастер-класса «AWS EC2 сервис», который провёл Егор Зуев — TeamLead в компании InBit и автор образовательной программы в OTUS.

Google Cloud Platform (GCP) предлагает множество сервисов, и в частности вычислительный стек, который содержит Google Compute Engine (GCE), Google Kubernetes Engine (ранее — Container Engine) (GKE), Google App Engine (GAE) и Google Cloud Functions (GCF). Все эти сервисы имеют крутые названия, но могут быть не совсем очевидными в отношении их функций и того, что делает их уникальными по отношению друг к другу. Эта статья предназначена для тех, кто только знакомится с облачными концепциями, в частности с облачными сервисами и GCP.

1. Вычислительный стек
Вычислительный стек можно рассматривать как многоуровневую абстракцию над тем, что может предоставить компьютерная система. Этот стек восходит (moves up) от «голого железа» (bare metal), относящегося к фактическим аппаратным компонентам компьютера, вплоть до функций (functions), которые представляют собой наименьшую единицу вычисления. Что важно отметить в отношении стека, так это то, что сервисы агрегируются при перемещении вверх по стеку, например, раздел «приложения» (apps), показанный на рисунке 1 ниже, должен содержать все базовые компоненты контейнеров (containers), виртуальных машин (virtual machines) и железа. Таким же образом компонент виртуальных машин должен содержать железо внутри для работы.

Рисунок 1: Вычислительный стек | Изображение получено из Google Cloud
Эта модель, показанная на рисунке 1, является основой для описания предложений от облачных провайдеров. Таким образом, некоторые провайдеры могут предоставлять только, например, контейнеры и услуги ниже качеством по стеку, а другие — все, что показано на рисунке 1.
— Если вы знакомы с облачными сервисами, переходите к разделу 3, чтобы ознакомиться с эквивалентом GCP
— Если вам нужна только сводка по облачным сервисам, переходите к разделу 2.4
2. Облачные сервисы
Мир облачных вычислений очень разнообразен. Облачные провайдеры предлагают множество услуг, адаптированных к различным требованиям клиентов. Возможно, вы слышали о таких терминах, как IaaS, PaaS, SaaS, FaaS, KaaS и т.д. со всеми буквами алфавита, за которыми следует «aaS». Несмотря на странное соглашение об именовании, они образуют набор сервисов облачных провайдеров. Я констатирую, что есть 3 основных предложения «как услуга» (as a Service), которые облачные провайдеры почти всегда предоставляют.
Это IaaS, PaaS и SaaS, которые обозначают соответственно инфраструктуру как услугу (Infrastructure as a Service), платформу как услугу (Platform as a Service) и программное обеспечение как услугу (Software as a Service). Важно визуализировать облачные сервисы как уровни предоставляемых услуг. Это означает, что когда вы поднимаетесь или спускаетесь с уровня на уровень, вы, как клиент, пересекаете различные варианты обслуживания, которые либо добавляются, либо убираются из основного предложения. Лучше всего рассматривать это как пирамиду, как показано на рисунке 2. 
Рисунок 2: Пирамида «aaS» | Изображение получено из Ruby Garage
2.1 Инфраструктура как услуга (IaaS)
Это самый низкий уровень, который может предложить поставщик облачных услуг, и он включает провайдера облачных вычислений, поставляющего «голую» инфраструктуру, включая промежуточное программное обеспечение, сетевые кабели, процессоры, графические процессоры, оперативную память, внешнее хранилище, серверы и образы базовых операционных систем, например, Debian Linux, CentOS, Windows и т. д.
Если закажите у поставщика облачных услуг IaaS предложение, то это то, что вы должны ожидать получить. За вами, как за клиентом, остается сборка этих частей для ведения вашего бизнеса. Степень того, с чем вам придется работать, может варьироваться от поставщика к поставщику, но, как правило, вы просто получаете аппаратное обеспечение и ОС, а остальное за вами. Примерами IaaS являются AWS Elastic Compute, Microsoft Azure и GCE.
Некоторым людям может не понравиться тот факт, что им приходится устанавливать образы ОС и заниматься сетью, балансировкой нагрузки или заботиться о том, какой тип процессора идеально подходит для их рабочей нагрузки. Именно здесь мы двигаемся вверх по пирамиде к PaaS.
2.2 Платформа как услуга (PaaS)
PaaS включает в себя только поставщика облачных услуг, предлагающего определенную платформу, на которой пользователи могут создавать приложения. Это абстракция над IaaS, означающая, что поставщик облака берет на себя все детали типов ЦП, памяти, ОЗУ, хранилища, сетей и т. д. Как показано на рисунке 2, вы, как клиент, имеете небольшой контроль над реальной платформой, поскольку облачный провайдер занимается всеми деталями инфраструктуры за вас. Вы запрашиваете выбранную платформу и собираете на ней проект. Примерам PaaS являютс Heroku.
Для кого-то это может быть слишком высокий уровень, так как он не обязательно хочет собирать проект на указанной платформе, а скорее нуждается в наборе сервисов непосредственно от поставщика облачных услуг. Здесь на сцену выходит SaaS.
2.3 Программное обеспечение как услуга (SaaS)
SaaS представляет собой наиболее распространенные сервисы, предоставляемые поставщиками облачных услуг. Они предназначены для конечных пользователей и доступны главным образом через веб-сайты, например Gmail, Google Docs, Dropbox и т. д. Что касается Google Cloud, есть несколько предложений вне их вычислительного стека, которые являются SaaS. К ним относятся Data Studio, Big Query и т. д.
2.4 Сводка по облачным сервисам
| Составляющие | IaaS | PaaS | SaaS |
|---|---|---|---|
| Что вы получаете | Вы получаете инфраструктуру и платите соответственно. Свободу использовать или устанавливать любое ПО, ОС или их композицию. | Здесь вы получаете то, что вы запрашиваете. ПО, железо, ОС, веб-среду. Вы получаете готовую к использованию платформу и платите соответственно. | Здесь вам не нужно ни о чем беспокоиться. Вам предоставляется предустановленный настроенный в соответствии с вашими требования пакет, и вам остается только заплатить соответственно. |
| Значение | Базовый уровень вычислений | Верхушка IaaS | Это по сути полный пакет услуг |
| Технические сложности | Необходимы технические знания | Вам дана базовая конфигурация, но все еще необходимы знания предметной области. | Не нужно заморачиваться с техническими деталями. Поставщик SaaS предоставляет все. |
| С чем работает | Виртуальные машины, хранилища, серверы, сеть, балансировщики нагрузки и т.д. | Среды выполнения (как java runtime), базы данных (как mySQL, Oracle), веб серверы (как tomcat и т. д.) | Приложения наподобие почтовых сервисов (Gmail, Yahoo mail и т. д.), сайтов социального взаимодействия (Facebook и т. д.) |
| Граф популярности | Популярно среди высококвалифицированных разработчиков, исследователей, которым требуется индивидуальная настройка в соответствии с их требованиями или областью исследований | Наиболее популярно среди разработчиков, поскольку они могут сосредоточиться на разработке своих приложений или скриптов. Им не нужно беспокоиться о загрузке трафика или управлении сервером и т. д. | Наиболее популярно среди обычных потребителей или компаний, которые используют программное обеспечение, такое как электронная почта, файлообменники, социальные сети, так как им не нужно беспокоиться о технических деталях |
Рисунок 3: Сводка основных облачных предложений | Изображение предоставлено Amir at Blog Specia
3. Вычислительный пакет Google Cloud Platform
Рассмотрев типичные предложения облачных провайдеров в разделе 2, мы можем сопоставить их с предложениями Google Cloud.
3.1 Google Compute Engine (GCE) — IaaS

Рисунок 4: Иконка Google Compute Engine (GCE)
GCE — это IaaS предложение от Google. С GCE вы можете свободно создавать виртуальные машины, распределять ресурсы процессора и памяти, выбирать тип хранилища, например SSD или HDD, а также объем памяти. Это почти так же, как если бы вы создали свой собственный компьютер/рабочую станцию и занимались всеми деталями его работы.
В GCE вы можете выбрать от микро инстанций с 0,3-ядерным процессорами и 1 ГБ ОЗУ до 96-ядерных монстров с более чем 300 ГБ ОЗУ. Вы также можете создавать виртуальные машины нестандартного размера для своих рабочих нагрузок. Для тех, кто заинтересовался — это виртуальные машины, которые вы можете собрать.
3.2. Google Kubernetes Engine (GKE) — (Caas / Kaas)

Рисунок 5: Иконка Google Kubernetes Engine (GKE)
GKE — это уникальное вычислительное предложение от GCP, которое представляет собой абстракцию над Compute Engine. В более общем смысле GKE можно отнести к категории «Контейнер как услуга» (CaaS), иногда называемой «Kubernetes как услуга» (KaaS), который позволяет клиентам легко запускать свои Docker-контейнеры в полностью управляемой среде Kubernetes. Для тех, кто не знаком с контейнерами, контейнеры помогают модульно формировать сервисы/приложения, поэтому разные контейнеры могут содержать разные сервисы, например, один контейнер может размещать интерфейс вашего веб-приложения, а другой может содержать его серверную часть. Kubernetes выполняет автоматизацию, координацию, управление и развертывание ваших контейнеров. Больше информации здесь.
3.3 Google App Engine (GAE) — (PaaS)

Рисунок 6: Иконка Google App Engine (GAE)
Как упомянуто в разделе 2.2, PaaS находится выше IaaS, и в случае GCP его также можно рассматривать как предложение над GKE. GAE — это специализированный Google PaaS, и как они сами лучше всего описывают себя — «несите ваш код, а мы позаботимся обо всем остальном».
Это гарантирует, что клиенты, использующие GAE, не должны иметь дело с базовым аппаратным/промежуточным программным обеспечением, и уже могут иметь предварительно настроенную платформу, готовую к работе; все, что им нужно сделать, это предоставить код, необходимый для его запуска.
GAE автоматически обрабатывает масштабирование, чтобы удовлетворить нагрузку и спрос со стороны пользователей, что означает, что если ваш сайт, продающий цветы, внезапно достигнет пика, потому что приближается день святого Валентина, GAE будет обрабатывать масштабирование базовой инфраструктуры, чтобы удовлетворить спрос и гарантировать, что ваш веб-сайт не упадет из-за возросшего спроса. Это означает, что вы платите именно за те ресурсы, которые требуются вашему приложению в данный момент.
GAE использует Kubernetes или его встроенную версию, чтобы справиться со всем этим, чтобы вам не пришлось об этом заботиться. GAE лучше всего подходит для компаний, которые не заинтересованы в базовой инфраструктуре и заботятся только о том, чтобы их приложение было доступно наилучшим образом.
По моему мнению, GAE — это лучшее место для старта, если вы разработчик с отличной идеей, но не хотите заниматься рутинной работой по настройке серверов, балансировкой нагрузки и всей другой трудоемкой devops/SRE работой. Со временем вы могли бы попробовать GKE и GCE, но это только мое мнение.
Дисклеймер: AppEngine используется для веб-приложений, а не мобильных приложений.
3.4 Google Cloud Functions — (FaaS)

Рисунок 7: Иконка Google Cloud Functions (GCF)
Надеюсь, вы заметили тенденцию, проанализировав предыдущие предложения. Чем выше вы поднимаетесь по лестнице вычислительных решений GCP, тем меньше вам нужно беспокоится о базовых технологиях. Эта пирамида завершается наименьшей возможной единицей вычисления, функцией, как показано в разделе 1.
GCF является относительно новым GCP-предложением, которое все еще находится на стадии бета-тестирования (на момент написания этой статьи). Облачные функции позволяют определенным функциям, написанным разработчиком, запускаться по какому-либо событию.
Они управляются событиями и лежат в основе модного слова «безсерверный», то есть не знают серверов. Облачные функции очень просты и имеют много разных применений, которые требуют событийного мышления. Например, каждый раз, когда новый пользователь регистрируется, может быть запущена облачная функция, чтобы предупредить разработчиков.
На фабрике, когда определенный датчик достигает определенного значения, он может запустить облачную функцию, которая выполняет некоторую обработку информации, или уведомляет некоторый обслуживающий персонал и т. д.
Заключение
В этой статье мы говорили о различных облачных предложениях, например IaaS, PaaS и т. д., и как стек вычислений Google реализует эти различные уровни. Мы видели, что уровни абстракции при переходе из одной категории услуг в другую, например, IaaS в Paas, требуют меньше знаний о лежащей в основе.
Для бизнеса это обеспечивает критически важную гибкость, которая не только отвечает его оперативным целям, но также удовлетворяет другим ключевым областям, таким как безопасность и стоимость. Обобщая:
Compute Engine — позволяет вам создать свою собственную виртуальную машину, выделяя определенные аппаратные ресурсы, например, ОЗУ, процессор, память. Он так же достаточно практичный и низкоуровневый.
Kubernetes Engine — это шаг выше по сравнению с Compute Engine, который позволяет вам использовать Kubernetes и контейнеры для управления вашим приложением, позволяя при необходимости масштабировать его.
App Engine — это шаг выше по сравнению с Kubernetes Engine, позволяющий вам сосредоточиться только на своем коде, в то время как Google обеспечивает все требования базовой платформы.
Cloud-Functions — это вершина вычислительной пирамиды, позволяющая написать простую функцию, которая при запуске использует всю базовую инфраструктуру для вычисления и возврата результата.






