Heroku je cloudová platforma PaaS (Platform as a Service), která podporuje několik programovacích jazyků. Jedná se o jednu z prvních cloudový platforem, protože byla vyvíjena již od června 2007. V té době podporovala pouze Ruby, ale nyní již zahrnuje podporu Javy, Node.js, Scaly, Closure, Pythonu, PHP i Go. Z toho důvodu se jí říká „platforma polyglot“, protože dovoluje vývojářům stavět, spouštět a škálovat aplikace podobným způsobem napříč všemi jazyky. Heroku bylo koupeno v roce 2010 společností Salesforce.com.

Architektura

Aplikace, které běhají na Heroku mají obvykle unikátní doménu, která je využívána k routování http requestů správným kontejnerům. Každý aplikační kontejner, neboli dyno, je rozprostřen v dyno mřížce, která se skládá z několika serverů. Git server Heroku vyhodnocuje push requesty do aplikačního repository a nechá projít jen schválené uživatele.

Všechny služby Heroku jsou hostované na EC2 cloudové platformě od Amazonu.

Deploy

  • Hlavní obsah vývoje je zdrojový kód, navázané závislosti, pokud existují, a Procfile pro příkazy.
  • Aplikace je poslána do Heroku skrze Git, GitHub, Dropbox nebo některé API.
  • Existují packety, které berou aplikaci spolu se všemi závislostmi a runtime jazykem. Těmto packetům se říká build-pack a jsou prostředkem pro kompilační proces.
  • Slug je kombinací nebo sdružením zdrojového kódu, závislostí, runtimu a kompilovaného nebo generovaného výstupu build systému, který je připraven ke spuštění.
  • Konfigurační soubor umožňuje změnu konfiguračních dat bez zásahu do zdrojového kódu.
  • Add-ony jsou služby třetích stran, které jsou specializované a lze je snadno přidružit k aplikaci a tím rozšířit její funkcionalitu.
  • Release je kombinací slugu (aplikace), konfiguračního souboru a add-onů.
  • Heroku udržuje logování releasů, které vývojář nasadí.

Runtime

  • Hlavní jednotkou, která zajišťuje runtime prostředí jsou kontejnery dyno, což jsou izolované, virtualizované unixové kontejnery.
  • Tvorba těchto kontejnerů vychází z počtu spuštěných kontejnerů, rozdělených mezi jednotlivé procesy, které vývojář škáluje.
  • Manažer kontejnerů je zodpovědný za správu kontejnerů napříč všemi aplikacemi, které jsou na Heroku spuštěné.
  • Jednorázové kontejnery jsou dočasné kontejnery, které spouštějí svůj vstup nebo výstup, který je připojený k lokálnímu terminálu. Jsou načteny s posledním release.
  • Každý kontejner má vlastní adresář souborů s čerstvou kopií nejnovějšího release. Může být použit jako dočasný pokusný blok, ale změny adresáře souborů se nereflektují do ostatních kontejnerů.
  • Logplex automaticky spojuje logy všech spuštěných kontejnerů aplikace, stejně jako komponent jako jsou routery, čímž tvoří jediný zdroj informací o aktivitě.
  • Škálování aplikace zahrnuje využití více kontejnerů pro každý typ procesů.

Výhody použití Heroku

  • Jednoduchý začátek. S použitím Heroku je snadné začít. Není potřeba řešit infrastrukturu. Je tak ideální pro startupy, které nechtějí trávit čas a peníze tím, že budou nastavovat konfiguraci.
  • Škálování. Škálování je jednoduché, stačí specifikovat počet kontejnerů, které potřebujete.
  • Použití standardních nástrojů. Případnou migraci na jinou službu zjednodušuje to, že Heroku využívá standardní nástroje.

Nevýhody použití Heroku

  • Abstrakce. Abstrakce jde na úkor kontroly. Heroku neumožňuje přímou kontrolu nad konfigurací aplikace, co se týče hardware, operačního systému, firewallu nebo verzí. Je nutné používat standardy, které Heroku definuje.
  • Cena. Při vyšším trafficu je cena v porovnání s konkurenčními platformami vysoká.
  • Manuální škálování. Škálování na vysoký traffic je nutné řešit manuálně.
  • SSH. Není možné se k serveru přihlásit za pomoci SSH.