GCP: Разбор вычислительного стека Google Cloud Platform
Перевод статьи подготовлен специально для студентов курса «Облачные сервисы».
Интересно развиваться в данном направлении? Смотрите запись профессионального мастер-класса «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 ГБ ОЗУ. Вы также можете создавать виртуальные машины нестандартного размера для своих рабочих нагрузок. Для тех, кто заинтересовался — это виртуальные машины, которые вы можете собрать.
Типы машин | Документация Compute Engine | Google Cloud
3.2. Google Kubernetes Engine (GKE) — (Caas / Kaas)
Рисунок 5: Иконка Google Kubernetes Engine (GKE)
GKE — это уникальное вычислительное предложение от GCP, которое представляет собой абстракцию над Compute Engine. В более общем смысле GKE можно отнести к категории «Контейнер как услуга» (CaaS), иногда называемой «Kubernetes как услуга» (KaaS), который позволяет клиентам легко запускать свои Docker-контейнеры в полностью управляемой среде Kubernetes. Для тех, кто не знаком с контейнерами, контейнеры помогают модульно формировать сервисы/приложения, поэтому разные контейнеры могут содержать разные сервисы, например, один контейнер может размещать интерфейс вашего веб-приложения, а другой может содержать его серверную часть. Kubernetes выполняет автоматизацию, координацию, управление и развертывание ваших контейнеров. Больше информации здесь.
Google Kubernetes Engine | Google Cloud
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 используется для веб-приложений, а не мобильных приложений.
Для ознакомления: App Engine — Создавайте масштабируемые веб- и мобильные бэкенды на любом языке | Google Cloud
3.4 Google Cloud Functions — (FaaS)
Рисунок 7: Иконка Google Cloud Functions (GCF)
Надеюсь, вы заметили тенденцию, проанализировав предыдущие предложения. Чем выше вы поднимаетесь по лестнице вычислительных решений GCP, тем меньше вам нужно беспокоится о базовых технологиях. Эта пирамида завершается наименьшей возможной единицей вычисления, функцией, как показано в разделе 1.
GCF является относительно новым GCP-предложением, которое все еще находится на стадии бета-тестирования (на момент написания этой статьи). Облачные функции позволяют определенным функциям, написанным разработчиком, запускаться по какому-либо событию.
Они управляются событиями и лежат в основе модного слова «безсерверный», то есть не знают серверов. Облачные функции очень просты и имеют много разных применений, которые требуют событийного мышления. Например, каждый раз, когда новый пользователь регистрируется, может быть запущена облачная функция, чтобы предупредить разработчиков.
На фабрике, когда определенный датчик достигает определенного значения, он может запустить облачную функцию, которая выполняет некоторую обработку информации, или уведомляет некоторый обслуживающий персонал и т. д.
Облачные функции — управляемые событиями серверные вычисления | Google Cloud
Заключение
В этой статье мы говорили о различных облачных предложениях, например IaaS, PaaS и т. д., и как стек вычислений Google реализует эти различные уровни. Мы видели, что уровни абстракции при переходе из одной категории услуг в другую, например, IaaS в Paas, требуют меньше знаний о лежащей в основе.
Для бизнеса это обеспечивает критически важную гибкость, которая не только отвечает его оперативным целям, но также удовлетворяет другим ключевым областям, таким как безопасность и стоимость. Обобщая:
Compute Engine — позволяет вам создать свою собственную виртуальную машину, выделяя определенные аппаратные ресурсы, например, ОЗУ, процессор, память. Он так же достаточно практичный и низкоуровневый.
Kubernetes Engine — это шаг выше по сравнению с Compute Engine, который позволяет вам использовать Kubernetes и контейнеры для управления вашим приложением, позволяя при необходимости масштабировать его.
App Engine — это шаг выше по сравнению с Kubernetes Engine, позволяющий вам сосредоточиться только на своем коде, в то время как Google обеспечивает все требования базовой платформы.
Cloud-Functions — это вершина вычислительной пирамиды, позволяющая написать простую функцию, которая при запуске использует всю базовую инфраструктуру для вычисления и возврата результата.
Спасибо за внимание!
Twitter: @martinomburajr