Национальная библиотека им. Н. Э. Баумана Bauman National Library


Heroku

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:11, 23 января 2019.

Авторство
М. К. Концевая
Согласовано: 23.01.2019
Heroku

Разработчики: Джеймс Линденбаум, Адам Уиггинс, Орион Генри
Выпущена: March 2007 ; 15 years ago ( 2007-03 )
Состояние разработки: активное
Операционная система: Кросс-платформенное
Локализация: Английский язык
Тип ПО: PaaS-платформа
Веб-сайт www .heroku .com /home

Heroku — облачная PaaS-платформа, поддерживающая ряд языков программирования. Компанией Heroku владеет Salesforce.com. Heroku, одна из первых облачных платформ, появилась в июне 2007 года и изначально поддерживала только язык программирования Ruby, но на данный момент список поддерживаемых языков также включает в себя Java, Node.js, Scala, Clojure, Python и PHP. На серверах Heroku используются операционные системы Debian или Ubuntu.

Содержание

История компании

Джеймс Линденбаун, Адам Уиггинс и Орион Генри основали Heroku в 2007 году в поддержку проектов, основанных на Rack (англ.). 8 декабря 2010 года компания Salesforce.com купила Heroku, сделав её своей дочерней компанией. 12 июля 2011 года Юкихиро Мацумото, создатель языка программирования Ruby, пришёл в компанию на должность ведущего инженера. В этом же месяце Heroku внедрила поддержку Node.js и Clojure. 15 сентября 2011 года Heroku и Facebook представили новую опцию «Heroku для Facebook». Heroku также предоставляет поддержку таких систем управления базами данных, как Cloudant (англ.), Membase (англ.), MongoDB и Redis, помимо основной — PostgreSQL.

Из-за сильного июньского шторма 2012 года в Северной Америке (англ.) множество приложений, работающих на Heroku, отключились, однако доступ был восстановлен менее, чем через 24 часа.

Обзор платформы

Heroku – это облачная платформа, основанная на управляемой контейнерной системе, с интегрированными службами передачи данных и мощной экосистемой для развертывания и запуска современных приложений. Разработка с Heroku – это ориентированный на приложения подход к доставке программного обеспечения, интегрированный с самыми популярными инструментами и рабочими процессами для сегодняшнего дня. [Источник 1]

Heroku — это классический PaaS хостинг приложений. В отличие от обычных vps хостингов — вам предоставляется не прямой доступ к виртуальной машине с рутовым шеллом, а тулкит для публикации вашего приложения в преднастроенной среде. То есть прозрачно для вас уже настроен какой-то веб сервер, какой то балансировщик, от вас требуется указать тип и версию среды (node.js, python, и т. д.) и залить своё приложение через git. Один web dyno (так у них называется экземпляр приложения) предоставляется бесплатно. Прелесть PaaS в том, что низкоуровневой конфигурацией заморачивается провайдер — вы занимаетесь только приложением. На heroku есть множество т. н. Аддонов — memcached, mongodb, mysql, postgres, rabbitmq, sphinx и прочие радости разработчика. Вам лишь нужно сказать — хочу и оно появится. Рабочее, настроенное, и поддерживаемое. [Источник 2]

Heroku runtime

Heroku запускает приложения внутри диносов [1] – смарт-контейнеров в надежной, полностью управляемой среде выполнения. Разработчики развертывают свой код, написанный в Node, Ruby, Java, PHP, Python, Go, Scala или Clojure, в систему сборки, которая создает приложение, готовое к исполнению. Системные и языковые стеки контролируются, исправляются и обновляются, поэтому они всегда готовы и обновлены. Среда выполнения поддерживает запуск приложений без ручного вмешательства.

Опыт разработки с Heroku

Работа с Heroku – это ориентированный на приложения подход к поставке программного обеспечения, поэтому разработчики могут сосредоточиться на непрерывном создании и предоставлении приложений, не отвлекаясь на серверы или инфраструктуру. Разработчики запускают приложения непосредственно из популярных инструментов, таких как Git, GitHub или системы непрерывной интеграции (CI). Интуитивно понятная веб-панель Heroku Dashboard упрощает управление приложением и повышает видимость производительности.

Услуги передачи данных и экосистемы

Heroku Elements позволяет разработчикам расширять свои приложения с помощью надстроек, настраивать их стек приложений с помощью Buildpacks и запускать свои проекты с помощью кнопок. Дополнения – это сторонние облачные сервисы, которые разработчики могут использовать для немедленного расширения своих приложений с помощью ряда функций, таких как хранилища данных, протоколирование, мониторинг и многое другое. Heroku предоставляет три полностью управляемых дополнения службы данных: Heroku Postgres, Heroku Redis и Apache Kafka на Heroku.

Опыт эксплуатации Heroku

Управление Heroku является ключевым компонентом платформы. Это помогает разработчикам устранять неполадки и общие проблемы и “обучать” приложения быстро выявлять и устранять негативные тенденции в их работоспособности. Heroku предоставляет набор инструментов, предупреждающих вас, если что-то пойдет не так, или автоматически масштабирующих ваши веб-диноcы, если время отклика для веб-запросов превышает заданный вами порог. Метрики приложений, пороговое оповещение и автомасштабирование – это лишь некоторые из функций, к которым вы получаете доступ, без дополнительных затрат.

Безопасность и соответствие требованиям

Разработчики со всего мира доверяют конфиденциальные данные Heroku, и нет ничего важнее, чем выполнение обязательств по хранению данных. Heroku регулярно проводит аудиты и поддерживает соответствие PCI, HIPAA [2] , ISO и SOC, чтобы еще больше укрепить доверие клиентов.

Динос

Динос – это сердце платформы Heroku. Разработчики приложений полагаются на программные абстракции, чтобы упростить разработку и повысить производительность. Когда дело доходит до запуска приложений, контейнеризация абстрагирует нагрузку на управление оборудованием или виртуальными машинами. Вместо аппаратного управления приложения развертываются в Heroku, которое упаковывает код приложения и его зависимости в контейнеры – в легкие изолированные среды, которые обеспечивают вычисление, память, ОС и эфемерную файловую систему. Контейнеры обычно запускаются на общем хосте, но полностью изолированы друг от друга (рисунок 1).

Рисунок 1 – Динос

Платформа Heroku использует модель контейнера для запуска и масштабирования всех приложений Heroku. Контейнеры, используемые в Heroku, называются «диносы». Динос – это изолированные виртуальные контейнеры Linux, предназначенные для выполнения кода на основе заданной пользователем команды. Приложение может масштабироваться до любого количества диносов на основе требований к ресурсам. Возможности управления контейнерами Heroku предоставляют простой способ масштабирования и управления количеством, размером и типом диносов, которые могут понадобиться вашему приложению в любой момент времени. Диносы – это строительные блоки, которые управляют любым приложением Heroku, от простого до сложного. Развертывание на диносах с опорой на динамическое управление Heroku позволяет создавать и запускать гибкие масштабируемые приложения, освобождая от управления инфраструктурой, поэтому есть возможность сосредоточиться на создании и запуске отличных приложений.

Тип процесса vs динос

Для масштабирования, необходимо понять взаимосвязь между типами процессов и диносами. [Источник 3] [Источник 4] Тип процесса – это прототип, из которого создается один или несколько диносов, по аналогии с объектно-ориентированным программированием, в котором класс является прототипом, из которого создаются один или несколько объектов. На рисунке 2 показана взаимосвязь между диносами (по вертикальной оси) и типами процессов (по горизонтальной оси):

Рисунок 2 – Взаимосвязь между диносами и типами процессов

Динос, по вертикальной оси, это масштаб. Масштабирование в этом направлении происходит, когда необходимо увеличить параллелизм для типа работы, обрабатываемой этим типом процесса. На Heroku это делается с помощью команды масштаба:

Типы процессов на горизонтальной оси – это разнесение рабочей нагрузки. Каждый тип процесса специализируется на определенном типе работы. Например, в некоторых приложениях есть два типа исполнителей: один для срочных заданий, другой – для длительных заданий. Разделяя более специализированных исполнителей,можно лучше реагировать на свои срочные задания и более детально контролировать, как тратить вычислительные ресурсы. Система распределения очередей может использоваться для распределения заданий рабочим диносам.

Продукты

The Heroku Platform Сеть Heroku запускает пользовательские приложения в виртуальных контейнерах, работающих на надежных средах выполнения, Heroku называют эти контейнеры “диносы”. Динос работают с кодом, написанным на Node, Ruby, PHP, Go, Scala, Python, Java, Clojure. Heroku также предоставляет специальные пакеты, с помощью которых разработчик может работать с приложениями на любом другом языке. Heroku позволяет разработчику мгновенно адаптировать приложение, просто увеличивая количество используемых диносов, или меняя динос, используемое приложением.

Heroku Postgres — облачная база данных (DBaaS) от Heroku основанная на PostgreSQL. Heroku Postgres предоставляет продолжительную защиту, восстановление данных, высокую доступность.

Heroku Redis — модифицированный Redis от Heroku, предоставляющий лучшие условия разработки, он полностью управляется и предоставляется как сервис Heroku.

Heroku Teams — устройство тимменеджмента, предоставляющее средства для объединения разработчиков, процессов и устройств, для разработки более качественного ПО. С помощью Heroku Teams, команды могут самоорганизовываться, добавлять участников и управлять ими.

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

Heroku Connect позволяет приложениям Heroku взаимодействовать с разработками Salesforce. Это делается с помощью бесшовной синхронизации данных между базами данных Heroku Postgres и Salesforce.

Heroku Elements предоставляет сервисы для разработки, расширения и оперирования приложением; сервисы для автоматизации построения программы на предпочитаемом языке и фреймворке и прочее.

Реализация статического сайта

Сервисы

Бэкенд

Приложения в Heroku представляют собой комбинацию исходного кода и зависимостей, таких как пакеты, модули и библиотеки, которые должны быть доступны в среде выполнения. Зависимости описаны в конкретных языках, декларативных форматах. Например, Java задает зависимости в файлах pom.xml, Ruby использует gemfiles, а приложения Python определяют зависимости в файлах требований.txt. Если ваше приложение зависит от широко используемой структуры, такой как Django или Ruby on Rails, Heroku может определить, как ее запустить. В других случаях вам нужно будет указать процессы, которые должны выполняться, путем перечисления команд в файле процесса. В файле процесса перечисляется командная строка для вызова вашего процесса, а также указание типа процесса, такого как веб-процесс или процесс на основе очереди. Heroku хорошо интегрирован с Git, поэтому одна команда может запушить ваше приложение в удаленный репозиторий Heroku. [Источник 5]

Интеграция данных

Приложения, для которых требуется постоянное хранилище, имеют доступ к Heroku Postgres. Базы данных Postgres в Heroku доступны из любого клиента Postgres, будь то в облаке или на локальном устройстве. Heroku также предоставляет удобную утилиту соединения для создания конкретных команд подключения к вашей базе данных. Пара особенно полезных функций – это команды fork и follow. Команда fork клонирует базу данных и позволяет разработчикам тестировать изменения в коде базы данных, не рискуя внести нежелательные изменения в данные, используемые другими. Follow более полезна в производстве, поскольку она создает реплики только для чтения базы данных. Это особенно полезно для анализа данных и выполнения больших пакетных запросов без ухудшения производительности частей обработки транзакций в приложении. В среде Postgres есть журналы повтора [3] , которые содержат информацию обо всех транзакциях. Журналы повтора копируются в несколько центров обработки данных, так что в случае сбоя оборудования состояние базы данных может быть восстановлено.

Дополнения

Платформа Heroku включает в себя управление процессами и услуги базы данных, но этого не всегда достаточно. Приложения сторонних разработчиков, называемые надстройками, также доступны в качестве сервисов на платформе Heroku. Типы надстроек варьируются от хранилищ данных и поисковых сервисов для поддержки мобильных устройств и обмена SMS-сообщениями. Если реляционная база данных Postgres не подходит для постоянных потребностей в хранилище данных, есть возможность использовать Amazon RDS, который предлагает версии Oracle, Microsoft SQL Server и MySQL; пара услуг MongoDB; Neo4j, база данных графов; а также трех разных поставщиков Redis. На рынке аддонов Heroku в настоящее время перечислены девять поисковых сервисов, включая службы поиска Solr, четыре службы управления журналом, девять сервисов очереди, 10 предложений аналитики и другие типы компонентов.

Награды и достижения

Heroku утверждает, что предоставляет наибольшее количество разнообразных решений NoSQL на рынке информационных технологий, а также считается «платформой-полиглотом». Heroku оказалась в списке «Dow Jones FASTech 50 Start-ups to Watch». В апреле 2010 года Gartner присвоил Heroku статус «Cool Vendor in Application Platforms as a Service». Heroku также попала в список «Top 10 Cloud Computing Services for 2010», опубликованный ReadWriteWeb (англ.).


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *